This topic is for ConnectCore 6 SOMs that have an Atheros AR6233 wireless MAC. If you are using a ConnectCore 6N SOM that has a Qualcomm QCA6564 wireless MAC, see this topic for ConnectCore 6 Plus, which uses the same Wi-Fi chip. |
Concurrent mode shares the Wi-Fi interface between multiple functionalities — for example station, access point, and Wi-Fi Direct — using different virtual interfaces for each. By default, Digi Embedded Yocto configures the Wi-Fi interface in client infrastructure mode. Refer to [{XREF_bsp-wifi-access-pt_r_hostapd}] or Wi-Fi Direct to enable that interface.
Maximum performance is achieved on the physical wlan0 when the Wi-Fi interface is not shared between multiple functionalities.
Digi recommends you always use the physical wlan0 interface and only configure virtual interfaces when using concurrent modes.
|
Digi programs one MAC address for the Wi-Fi interface during manufacturing of the SOM.
This is the MAC address used for the wlan0 interface.
The Wi-Fi chip supports up to three other virtual MAC addresses that you must program before use (otherwise they have default values).
See Wireless virtual MAC addresses for instructions.
|
Inspecting valid combinations
To determine the supported modes and combinations (STA, AP, P2P, AP+P2P, etc), run the iw phy
command.
# iw phy
.....
valid interface combinations:
* #{ managed, AP, monitor, P2P-client, P2P-GO } <= 4,
total <= 4, #channels <= 1
* #{ managed } <= 2, #{ P2P-device } <= 1, #{ P2P-client, P2P-GO } <= 1,
total <= 3, #channels <= 2
In this generic example:
-
Combination 1 can work simultaneously with up to four interfaces as STA, AP or P2P; additionally, those interfaces are restricted to work in the same channel.
-
Combination 2 can work simultaneously with up to two STA interfaces plus one P2P interface, and they can work in different channels.
Multi client station
You can configure the ConnectCore 6 as two simultaneous client stations in infrastructure mode: one Wi-Fi interface connected to an access point and another Wi-Fi interface connected to a different access point.
NetworkManager cannot manage access points, so DEY configures it not to manage wlan1
by default.
Create the virtual interface wlan1
with the following command:
# iw dev wlan0 interface add wlan1 type managed
Create a new configuration file /etc/wpa_supplicant_wlan1.conf
for the second Wi-Fi interface.
To create the file, use the following command and add the necessary information.
# vi /etc/wpa_supplicant_wlan1.conf
ctrl_interface=/var/run/wpa_supplicant
update_config=1
network={
ssid="SSID"
scan_ssid=1
key_mgmt=WPA-PSK
psk="PASSWORD"
}
Now configure the interface to load the configuration file.
To do so, modify the /etc/network/interfaces
with the information of the wlan1 interface.
# vi /etc/network/interfaces
auto wlan1
iface wlan1 inet static
address 192.168.46.30
netmask 255.255.255.0
wpa-driver nl80211
wpa-conf /etc/wpa_supplicant_wlan1.conf
Now bring the interface up to load the configuration. Reboot the system to load the new configuration.
# ifup wlan1
This causes the second Wi-Fi interface to connect to the AP specified in the wpa_suplicant_wlan1
file.
Multi access point
You can configure the ConnectCore 6 as two simultaneous access points working on the same band.
To do this, you must disable the default STA behavior of wlan0
. Bring the interface down with:
# nmcli con down wlan0
Since NetworkManager cannot manage access points, you must configure it not to manage wlan0
, which will now work as another access point.
Add wlan0
to the list of unmanaged-devices in the configuration file /etc/NetworkManager/NetworkManager.conf
.
After the change, the file will look like this:
[main]
plugins=ifupdown,keyfile
no-auto-default=type:ethernet
[ifupdown]
managed=false
[keyfile]
unmanaged-devices=interface-name:p2p*;interface-name:wlan1;interface-name:wlan0
Now configure the /etc/network/interfaces
file as follows:
-
Configure
wlan0
to work as access point, with a static IP. -
Assign a second post-up service to launch the hostapd instance. Make sure to pass the correct interface name to the service; in this case, it should be
hostapd@wlan0.service
. -
Assign one pre-down service to stop the hostapd instance.
auto wlan0
iface wlan0 inet static
address 192.168.43.30
netmask 255.255.255.0
post-up systemctl start hostapd@wlan0.service
pre-down systemctl stop hostapd@wlan0.service
auto wlan1
iface wlan1 inet static
address 192.168.46.30
netmask 255.255.255.0
post-up systemctl start hostapd@wlan1.service
pre-down systemctl stop hostapd@wlan1.service
Create a /etc/wpa_suplicant_wlan0.conf
file with your desired SoftAP configuration for wlan0.
For example:
# -- SoftAP mode
ap_scan=2
network={
ssid="ath6kl-ap_wlan0"
mode=2
frequency=2412
key_mgmt=WPA-PSK
proto=RSN
pairwise=CCMP
psk="12345678"
}
Create another /etc/wpa_suplicant_wlan1.conf
file with your desired SoftAP configuration for wlan1.
For example:
# -- SoftAP mode
ap_scan=2
network={
ssid="ath6kl-ap_wlan1"
mode=2
frequency=2412
key_mgmt=WPA-PSK
proto=RSN
pairwise=CCMP
psk="12345678"
}
Bring up the wlan0
and wlan1
interfaces:
# ifup wlan0
# ifup wlan1