Introduction
This guide describes how to configure and demonstrate Dual-Band Dual-Concurrent (DBDC) operation on the MediaTek MT320 platform running Linux.
DBDC allows a single MT320 module to operate on two distinct frequency bands (e.g., 5 GHz Access Point and 2.4 GHz Station/Client) simultaneously on separate hardware MAC/PHY pipelines, eliminating the latency and throughput penalties associated with single-MAC time-slicing (Multi-Channel Concurrent / MCC).
This guide was created using the Ezurio Tungsten 510 SMARC SOM platform equipped with the optional Sona MT320 m.2 1420 solder-down module with two MHF4L antenna ports (453-00176). This guide also applies to the m.2 1420 RF trace variant (453-00177) or the m.2 2230 variant (453-00178) connected to a MediaTek EVK.
Requirements
- Tungsten510 SMARC with MT320 (T510_SMARC_SOM_8r16e_MT320_2M)
- Universal SMARC Carrier Board Kit (SMARC_CAR)
Custom Yocto Scarthgap image
- The scarthgap-mtk-v25.1 version of yocto manifest was used for this demo
- Terminal software to communicate with the SOM (e.g., Minicom, Tera Term, PuTTY)
- Antennas connected to both MHF4L ports (MIMO/Dual-Band antennas)
- External 2.4 GHz Access Point (or Smartphone Hotspot) for client association testing
- Wireless client device to associate with the MT320 5 GHz Access Point
DBDC Architecture & Performance Mechanics
Airtime Efficiency vs. Spatial Stream Allocation
Understanding how DBDC splits internal hardware resources is key to managing expectations for link rates and throughput:
- No Airtime Penalty: Unlike Multi-Channel Concurrent (MCC) modes that rapidly time-slice a single MAC between channels (causing massive latency spikes), DBDC allocates dedicated MAC and RF processing chains to each band. Both bands transmit and receive at the exact same time.
- Spatial Stream Reduction (2x2 to 1x1): The MT320 is a 2x2 MIMO Wi-Fi 6 (802.11ax) chip. In single-band mode, both streams unite on one frequency. In DBDC mode, the internal architecture divides the 2x2 radio into two independent 1x1 single-stream radios: MAC 0 (wlan0): Dedicated 1x1 stream for 5 GHz (AP mode, up to 40/80 MHz channel width). MAC 1 (wlan1): Dedicated 1x1 stream for 2.4 GHz (STA mode, 20 MHz channel width).
System Setup & Interface Configuration
Stop Background Services and Reset Driver
Before instantiating virtual interfaces, stop background network managers that may lock interface states:
systemctl stop NetworkManager wpa_supplicant connman hostapd 2>/dev/null
killall NetworkManager wpa_supplicant connman hostapd 2>/dev/null
#Bring physical link down
ip link set wlan0 downVerify Hardware Support
Check the physical radio index assigned by the kernel (usually phy0 or phy2):
iw devInspect the radio's capability matrix (replace phy0 with your active phy index):
iw phy phy0 infoLook for the valid interface combinations section at the bottom of the output:
valid interface combinations:
* #{ managed, P2P-client } <= 2, #{ AP, P2P-GO } <= 1, #{ P2P-device } <= 1,
total <= 3, #channels <= 2 {code}Key Indicator The presence of #channels <= 2 alongside #{ AP... } <= 1 and #{ managed... } <= 2 explicitly confirms that the kernel driver and MediaTek firmware support running an Access Point and a Station concurrently on two independent frequency channels. {info}
Instantiate the Secondary Virtual Interface
By default, the driver only exposes wlan0. Create a secondary virtual interface (wlan1) tied to the same physical radio (phy0), and assign it a unique MAC address:
# Create secondary managed interface wlan1 on phy0 (replace phy0 with your active phy index)
iw phy phy0 interface add wlan1 type managed
# Assign a unique MAC address to wlan1 (required by MediaTek driver)
ip link set wlan1 address e8:cb:f5:00:01:8f
# Bring both interface link states UP
ip link set wlan0 up
ip link set wlan1 upVerify that both interfaces are enumerated under the same radio:
root@tungsten-510-smarc:/etc# iw dev
phy#0
Interface wlan1
ifindex 6
wdev 0x3
addr e8:cb:f5:00:01:8f
type managed
txpower 3.00 dBm
multicast TXQ:
qsz-byt qsz-pkt flows drops marks overlmt hashcol tx-bytes tx-packets
0 0 0 0 0 0 0 0 0
Interface wlan0
ifindex 4
wdev 0x1
addr e8:cb:f5:00:01:8e
type managed
txpower 3.00 dBm
multicast TXQ:
qsz-byt qsz-pkt flows drops marks overlmt hashcol tx-bytes tx-packets
0 0 0 0 0 0 0 0 0Testing the Setup
Configure and Launch 5 GHz Access Point (wlan0)
Create a basic 5 GHz hostapd configuration file (/etc/hostapd-5g.conf):
interface=wlan0
driver=nl80211
ssid=MT320-5G-AP
hw_mode=a
channel=36
country_code=USLaunch hostapd on wlan0 in background mode:
hostapd -B /etc/hostapd-5g.confConfigure and Connect 2.4 GHz Station (wlan1)
Create a wpa_supplicant configuration file targeting a 2.4 GHz network or mobile hotspot (/etc/wpa_supplicant-2g.conf):
ctrl_interface=/var/run/wpa_supplicant
update_config=1
ap_scan=1
network={
ssid="YOUR_2G_HOTSPOT"
psk="YOUR_PASSWORD"
key_mgmt=WPA-PSK SAE
ieee80211w=1
}Connect wlan1 to the 2.4 GHz Access Point:
wpa_supplicant -B -i wlan1 -c /etc/wpa_supplicant-2g.confVerification
Runiw dev to confirm both interfaces are actively linked across different frequency bands:root@tungsten-510-smarc:/etc# iw dev
phy#0
Unnamed/non-netdev interface
wdev 0x5
addr ea:cb:f5:00:01:8e
type P2P-device
txpower 3.00 dBm
Interface wlan1
ifindex 6
wdev 0x3
addr e8:cb:f5:00:01:8f
ssid LairdTest
type managed
channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
txpower 3.00 dBm
multicast TXQ: qsz-byt qsz-pkt flows drops marks overlmt hashcol tx-bytes tx-packets
0 0 0 0 0 0 0 0 0
Interface wlan0
ifindex 4
wdev 0x1
addr e8:cb:f5:00:01:8e
ssid MT320-5G-AP
type AP
channel 36 (5180 MHz), width: 20 MHz (no HT), center1: 5180 MHz
txpower 3.00 dBm
multicast TXQ:
qsz-byt qsz-pkt flows drops marks overlmt hashcol tx-bytes tx-packets
0 0 0 0 0 0 0 0 0 {code}Sending and Receiving Data
To complete runtime verification:
Obtain an IP address on wlan1 via DHCP:
dhcpcd wlan1Ping an external gateway while simultaneously streaming data from a client connected to MT320-5G-AP:
ping -I wlan1 8.8.8.8 -c 5Result: Ping latency on wlan1 will remain stable (<10 ms) without packet drops or channel switching interruptions, proving true hardware-level DBDC execution.
/filters:background_color(white)/2024-03/Sona%20MT320%20Family%281%29.png)
/filters:background_color(white)/2024-09/Tungsten%20510%20-%20MT320%20M2.2-1420%20-%20Front.png)