Configuring Dual-Band Dual-Concurrent (DBDC) Operation on the Sona MT320

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

  • 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 down

Verify Hardware Support

Check the physical radio index assigned by the kernel (usually phy0 or phy2):

iw dev

Inspect the radio's capability matrix (replace phy0 with your active phy index):

iw phy phy0 info

Look 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 up

Verify 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        0

Testing 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=US

Launch hostapd on wlan0 in background mode:

hostapd -B /etc/hostapd-5g.conf

Configure 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.conf

Verification

Run iw 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 wlan1

Ping an external gateway while simultaneously streaming data from a client connected to MT320-5G-AP:

ping -I wlan1 8.8.8.8 -c 5

Result: Ping latency on wlan1 will remain stable (<10 ms) without packet drops or channel switching interruptions, proving true hardware-level DBDC execution.