# Getting a USB WiFi dongle working on the UNO Q

**URL:** <https://forum.arduino.cc/t/getting-a-usb-wifi-dongle-working-on-the-uno-q/1456444>\
**Category:** UNO Q\
**Created:** [August 19, 2026, 3:35pm UTC](https://forum.arduino.cc/t/getting-a-usb-wifi-dongle-working-on-the-uno-q/1456444 "2026-08-19T15:35:31Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![BitSeeker](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/bitseeker/32/1241632_2.png) [@BitSeeker](https://forum.arduino.cc/u/BitSeeker)\
**Post date:** [August 19, 2026, 3:35pm UTC](https://forum.arduino.cc/t/getting-a-usb-wifi-dongle-working-on-the-uno-q/1456444/1 "2026-08-19T15:35:31Z")

</div>

(TLDR; - sorry for the rather long post but I wanted to provide all the gory detail)

I have been trying to get an external USB WiFi dongle working on a UNO Q that has faulty WiFi.

Initially I tried this with a TP-Link TL-WN722N which has been my testing go-to for any Linux machine. It uses the ath9k driver and is just plug-n-play pretty much on any Linux distro without any configuration. Well it doesn't work on the UNO Q. I am currently using the official Arduino USB-C hub to connect the dongle, monitor, mouse and keyboard to the UNO Q.

As for the process that I have followed:

- install the required tools (some were already present)

- Disable the broken internal WiFi

```arduino
     - edit: sudo nano /etc/modprobe.d/blacklist.conf
     - add:

       blacklist wcn36xx

     - save the file

```

- sudo nmcli device set wlan0 managed no

- Configure the external adapter

```arduino
     sudo nano /etc/network/interfaces

     Add:

     allow-hotplug wlan1
     iface wlan1 inet dhcp
         wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

     Save the file.

```

- set up the wifi credential in the wpa\_supplicant file

- ip -br a

This did not show a wlan1 device, so I tried modprobing the ath9k driver but got:

```arduino
modprobe: FATAL: Module ath9k not found in directory /lin/modules/6.16.7-g0dd6551ae96b

```

A little Googling suggested that this was because the kernel on the UNO Q was compiled without this driver. Given the space constraints, reducing the number of compiled-in drivers makes sense.

I therefore had a look at what other drivers were available on the UNO Q using the following command:

```arduino
ls -R /lib/modules/$(uname -r)/kernel/

```

This does list the mt7921 and files called mt7921-common.ko and mt7921e.ko are present in the 'net' sub-directory in the kernel drivers directory. I also Googled it and got this re-assurance from its AI:

> **Yes, an external MediaTek MT7921U (USB) dongle will work on the [Arduino UNO Q](https://www.google.com/search?ibp=oshop&prds=pvt:hg,pvo:29,mid:576462900875660467,imageDocid:12210862145864195526,gpcid:4237743770266595165,headlineOfferDocid:17671621779452570547,catalogid:1675067371931264161,productDocid:7530301519569613337,rds:CSS_PC_4237743770266595165%7CPC_4237743770266595165%7CPROD_CSS_PC_4237743770266595165%7CPROD_PC_4237743770266595165&q=product&sa=X&ved=2ahUKEwily7zu7qqWAxUpVkEAHaI5DLkQxa4PeggIAggBCFYQAg)**, but you should keep a few critical setup requirements in mind regarding its Debian Linux environment, hardware configuration, and built-in features.

I therefore went ahead and purchased a generic dongle (cost 11gbp) based on the mt7921 chip. It supports WiFi 6 and would be an upgrade to the 2.4GHz only TL-WN722N. Sure enough if I plug the mt7921 dongle into either of the Linux computer I have here, it works immediately without configuration. Unfortunately plugging it into the UNO Q does not produce the same result. So much for the AI reply.

I ran modprobe and loaded the mt7921e driver, which did load up along with mt7921-common:

```arduino
 $ sudo modprobe mt7921-common

Module Size Used by
mt7921e 16384 0
mt7921_common 65536 1 mt7921e
mt792x_lib 49152 2 mt7921e,mt7921_common

```

However, nmcli does not show a wireless interface. Furthermore, after a restart, it does not load up automatically and has to be modprobed again.

I compared this to what happens on my Linux machine and found that plugging in the dongle there loads the mt7921 **u** driver. A quick comparison between mt7921e and mt7921u reveals that the 'e' variant supports the PCI bus, but the 'u' variant, which is **not** present on the UNO Q, supports USB devices. It seems I am back to square one again.

I have had a look at the wireless drivers directory using this command:

```arduino
$ ls -R /lib/modules/$(uname -r)/kernel/drivers/net/wireless/
/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/:
ath broadcom intel marvell mediatek rsi ti

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/ath:
ath10k ath11k ath12k ath.ko wcn36xx

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/ath/ath10k:
ath10k_core.ko ath10k_pci.ko ath10k_sdio.ko ath10k_snoc.ko

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/ath/ath11k:
ath11k_ahb.ko ath11k.ko ath11k_pci.ko

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/ath/ath12k:
ath12k.ko

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/ath/wcn36xx:
wcn36xx.ko

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/broadcom:
brcm80211

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/broadcom/brcm80211:
brcmfmac brcmutil

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac:
bca brcmfmac.ko cyw wcc

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bca:
brcmfmac-bca.ko

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw:
brcmfmac-cyw.ko

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/wcc:
brcmfmac-wcc.ko

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/broadcom/brcm80211/brcmutil:
brcmutil.ko

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/intel:
iwlwifi

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/intel/iwlwifi:
dvm iwlwifi.ko mvm

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/intel/iwlwifi/dvm:
iwldvm.ko

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/intel/iwlwifi/mvm:
iwlmvm.ko

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/marvell:
mwifiex

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/marvell/mwifiex:
mwifiex.ko mwifiex_pcie.ko mwifiex_sdio.ko

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/mediatek:
mt76

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/mediatek/mt76:
mt76-connac-lib.ko mt76.ko mt7921 mt792x-lib.ko

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/mediatek/mt76/mt7921:
mt7921-common.ko mt7921e.ko

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/rsi:
rsi_91x.ko rsi_sdio.ko rsi_usb.ko

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/ti:
wl18xx wlcore

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/ti/wl18xx:
wl18xx.ko

/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/ti/wlcore:
wlcore.ko wlcore_sdio.ko

```

Unfortunately, I don't know by looking at the file names whether all of them are PCI drivers? Some are clearly labelled as such with a '\_pci' suffiix, but not all. I Googled the ath10k, ath11k and ath12k and they all seem to be PCI only, so am beginning to suspect that perhaps the others are also? Will have to Google a few more I guess.

Has anyone succeeded connecting any kind of USB WiFi dongle to the UNO Q? If so, then which one?

The other "sledge hammer" option apparently is to recompile the kernel adding in the relevant driver flags so they get compiled in. At the moment I am not sure how I would go about this, but also wondering whether a subsequent update would wipe any changes I make anyway? Furthermore, I doubt there would be enough space on the UNO Q itself, so would probably require cross-compiling on a PC, which I have not done before. I would also need help setting up the toolchain for the UNO Q. Is there a FAQ or guide on this anywhere?

(I did get some info from Google's AI, but not sure how accurate it is. I am hoping that someone from Arduino can help me with this?)

---

<div class="post-metadata">

**Author:** ![ptillisch](https://avatars.discourse-cdn.com/v4/letter/p/ad7895/32.png) [@ptillisch](https://forum.arduino.cc/u/ptillisch)\
**Post date:** [August 21, 2026, 8:05am UTC](https://forum.arduino.cc/t/getting-a-usb-wifi-dongle-working-on-the-uno-q/1456444/2 "2026-08-21T08:05:03Z")

</div>

> [@BitSeeker](#):
>
> Has anyone succeeded connecting any kind of USB WiFi dongle to the UNO Q? If so, then which one?

Not what you are asking for, but I just had a quick try with the dongle I happened to have on hand. No luck. Mine is the MT7601, so perhaps even less likely to work than yours.

> [@BitSeeker](#):
>
> I would also need help setting up the toolchain for the UNO Q. Is there a FAQ or guide on this anywhere?

You may find this useful:

> **[GitHub - arduino/arduino-deb-images: \[Continuously rebased, don't use as upstream\]...](https://github.com/arduino/arduino-deb-images)**
>
> \[Continuously rebased, don't use as upstream\] Arduino Debian Linux build scripts, based on Qualcomm Linux Debian

And here is the kernel source:

> **[GitHub - arduino/linux-qcom: Linux kernel source tree (Arduino fork to mainline...](https://github.com/arduino/linux-qcom)**
>
> Linux kernel source tree (Arduino fork to mainline UNO Q)

---

<div class="post-metadata">

**Author:** ![BitSeeker](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/bitseeker/32/1241632_2.png) [@BitSeeker](https://forum.arduino.cc/u/BitSeeker)\
**Post date:** [August 21, 2026, 5:09pm UTC](https://forum.arduino.cc/t/getting-a-usb-wifi-dongle-working-on-the-uno-q/1456444/3 "2026-08-21T17:09:19Z")

</div>

> [@ptillisch](#):
>
> > [@BitSeeker](#):
> >
> > Has anyone succeeded connecting any kind of USB WiFi dongle to the UNO Q? If so, then which one?
> 
> Not what you are asking for, but I just had a quick try with the dongle I happened to have on hand. No luck. Mine is the MT7601, so perhaps even less likely to work than yours.

Thank you for trying that. I was wondering about the MT76xx and suspected that the two MT76 files in the Mediatek driver directory are the driver shell and the PCI driver, but couldn't be sure from the file names. I guess your test proves its not a USB driver.

I suspect, since the board already has an onboard WiFi chip, that Qualcomm didn't envisage the need for any USB WiFi drivers so they stripped them out and only included certain PCI drivers to keep the footprint a small as possible.

Thanks for the other links. I will check them out.

---

<div class="post-metadata">

**Author:** ![mokxsh](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/mokxsh/32/1281426_2.png) [@mokxsh](https://forum.arduino.cc/u/mokxsh)\
**Post date:** [August 23, 2026, 4:56am UTC](https://forum.arduino.cc/t/getting-a-usb-wifi-dongle-working-on-the-uno-q/1456444/5 "2026-08-23T04:56:37Z")

</div>

# How to Cross-Compile & Load Missing Wi-Fi / USB Kernel Modules on Arduino Uno Q (or any Armbian SBC) using WSL2

Minimal embedded Linux images (like Armbian or Debian on the **Arduino Uno Q** ) often ship without on-board kernel headers or build trees. If your USB Wi-Fi dongle or peripheral driver is missing, you cannot compile it directly on the board.

Here is a step-by-step guide to **extract your running board's kernel config, cross-compile only the missing `.ko` driver modules in WSL2 (taking seconds), fix version-magic (`vermagic`) errors, and load them successfully.**

* * *

### Phase 1: Identify Device & Extract Config (On the Board)

Run these commands on your board's terminal:

**1. Identify your USB Dongle Chipset**

```arduino
lsusb

```

_Note down the device ID (e.g., `0bda:8179 Realtek RTL8188EUS` or `0cf3:9271 Atheros AR9271`)._

**2. Check the Kernel Release and Suffix**

```arduino
uname -r

```

_Example output: `7.0.0-g122c2c22d838` (note the `-g122c2c22d838` localversion)._

**3. Extract the Running Kernel Config**

```arduino
zcat /proc/config.gz > ~/board.config

```

**4. Find the Board's IP Address**

```arduino
hostname -I

```

* * *

### Phase 2: Setup WSL2 Cross-Compilation Environment (In WSL2)

In your WSL2 (Ubuntu) terminal:

**1. Install Cross-Compiler & Build Dependencies**

```arduino
sudo apt update
sudo apt install -y build-essential bc bison flex libssl-dev libelf-dev gcc-aarch64-linux-gnu git

```

**2. Clone Matching Kernel Source (Shallow Clone)**

```arduino
cd ~
git clone --depth 1 --branch v7.0 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git linux-board
cd linux-board

```

_(Make sure `--branch v7.0` matches the major.minor version from `uname -r`)_

**3. Copy the Config from the Board**

```arduino
scp arduino@<BOARD_IP>:~/board.config .config

```

* * *

### Phase 3: Match Vermagic & Enable Driver (In WSL2)

To prevent `modprobe: ERROR: Exec format error`, the kernel localversion must match `uname -r`.

```arduino
cd ~/linux-board

# 1. Set ARM64 cross-compile environment
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-

# 2. Set the exact localversion suffix from uname -r
./scripts/config --set-str CONFIG_LOCALVERSION "-g122c2c22d838"
./scripts/config --disable CONFIG_LOCALVERSION_AUTO

# 3. Enable the required driver (Example for Realtek RTL8188EU / 0bda:8179):
./scripts/config --enable CONFIG_RTL8XXXU
./scripts/config --module CONFIG_RTL8XXXU
./scripts/config --enable CONFIG_RTL8XXXU_UNTESTED

# 4. Prepare kernel build tree
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- olddefconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_prepare

```

* * *

### Phase 4: Compile Only the Specific Module (In WSL2)

Instead of compiling the whole kernel (which takes hours), compile only the specific driver target (~5–10 seconds):

```arduino
# Compile targeted driver module
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- KBUILD_MODPOST_WARN=1 -j$(nproc) drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.ko

# Verify vermagic matches your board:
modinfo drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.ko | grep vermagic

```

**Copy the compiled module to the Board:**

```arduino
scp drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.ko arduino@<BOARD_IP>:~/

```

* * *

### Phase 5: Install Module & Firmware (On the Board)

Switch back to the **Board terminal** :

**1. Place the Module in the Kernel Tree**

```arduino
sudo mkdir -p /lib/modules/$(uname -r)/kernel/drivers/net/wireless/realtek/rtl8xxxu
sudo cp ~/rtl8xxxu.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless/realtek/rtl8xxxu/
sudo depmod -a

```

**2. Download the Required Firmware Binary**

```arduino
sudo mkdir -p /lib/firmware/rtlwifi
sudo wget -O /lib/firmware/rtlwifi/rtl8188eufw.bin https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/rtlwifi/rtl8188eufw.bin

```

**3. Load the Driver & Verify Interface**

```arduino
# Load module
sudo modprobe rtl8xxxu

# Verify in dmesg
dmesg | tail -n 25

# Check if wlan0 appears
ip link

```

* * *

### Quick Troubleshooting

- **`Exec format error`** : `vermagic` mismatch. Check `dmesg | tail` to see what version string the kernel expected, set `CONFIG_LOCALVERSION` to match, and recompile.
- **`Unresolved symbols / missing vmlinux.o`** : Pass `KBUILD_MODPOST_WARN=1` when running `make`.
- **`Firmware failed to load / device timeout`** : Check `dmesg` for missing `.fw` or `.bin` files and download the exact file to `/lib/firmware/`.

```arduino
Also Use Claude its lowk really helpful in troubleshooting :)
```

---

<div class="post-metadata">

**Author:** ![mokxsh](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/mokxsh/32/1281426_2.png) [@mokxsh](https://forum.arduino.cc/u/mokxsh)\
**Post date:** [August 23, 2026, 5:00am UTC](https://forum.arduino.cc/t/getting-a-usb-wifi-dongle-working-on-the-uno-q/1456444/6 "2026-08-23T05:00:20Z")

</div>

also I was using this dongle for wifi

```arduino
https://www.amazon.in/dp/B008IFXQFU

```

and this for Bluetooth

```arduino
https://www.amazon.in/dp/B098K3H92Z 

```

cuz both Bluetooth and Wifi were dead on my board!

---

<div class="post-metadata">

**Author:** ![BitSeeker](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/bitseeker/32/1241632_2.png) [@BitSeeker](https://forum.arduino.cc/u/BitSeeker)\
**Post date:** [August 23, 2026, 7:32pm UTC](https://forum.arduino.cc/t/getting-a-usb-wifi-dongle-working-on-the-uno-q/1456444/7 "2026-08-23T19:32:17Z")

</div>

Thank you for the detailed guide for the cross-compilation. I will give this a try at some point.

I think both WiFi and Bluetooth are provided by the same WCBN3536A mounted on the corner of the board, so it makes sense that both services might be affected by a fault on that module. Bluetooth doesn't work on mine either.

I did notice that this particular corner on my board is slightly warped and consequently the module sits unevenly and that some of the solder balls at one end had become detached from the PCB. I tried to fix this by re-flowing the module which worked twice for a short while, but the third attempt failed and I have not been able to get it to work since. At this point I don't know whether the module has failed or something else has happened. I was thinking of removing the module altogether. Unfortunately replacement modules are not available for consumer purchase, so its not possible to solve the problem that way. But even if they were, its a tricky job to solder a BGA device on and with an uneven PCB, the chances are that it wouldn't sit level anyway. Having an external dongle would be something of an inconvenience, but at least it might make the board usable again.

Since there is a handful of other WiFi drivers present in the kernel, this raises the possibility of a substituting a module from another manufacturer. However, such a module would have to have the exact same pinout for it to be a drop-in replacement. My research has not gone that far yet though.

Glad you got the TL-WN725N working. I don't require Bluetooth yet, but glad to know that there is a solution out there. I will be working natively on Linux rather than WSL, but I expect that the process will be the same. I will report back once I have had a change to try it.

---

<div class="post-metadata">

**Author:** ![BitSeeker](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/bitseeker/32/1241632_2.png) [@BitSeeker](https://forum.arduino.cc/u/BitSeeker)\
**Post date:** [August 25, 2026, 12:14pm UTC](https://forum.arduino.cc/t/getting-a-usb-wifi-dongle-working-on-the-uno-q/1456444/8 "2026-08-25T12:14:58Z")

</div>

I have managed to complete nearly all the steps including the compile and copying the .ko files to the board and modprobe seems to have been successful:

```arduino
$ sudo modprobe mt792x-usb
arduino@UnoQ2Gb:~$ 

```

But there seems little in dmesg except this:

```arduino
[267.095398] usb 1-1.4.4: new high-speed USB device number 8 using xhci-hcd

```

I added only these three additional files:

```arduino
mt76-usb.ko
mt792x-lib.ko
mt792x-usb.ko

```

At the top of the lsmod output I have this:

```arduino
mt792x_usb 12288 0
mt76_usb 24576 1 mt792x_usb
mt792x_lib 49152 1 mt792x_usb
mt76_connac_lib 73728 1 mt792x_lib
mt76 106496 4 mt792x_lib,mt792x_usb,mt76_usb,mt76_connac_lib

```

But no wifi device.

I had a little more success with the TP Link dongle:

```arduino
[1724.733451] usb 1-1.4.4: USB disconnect, device number 8
[1731.588430] usb 1-1.4.4: new high-speed USB device number 9 using xhci-hcd
[1731.823958] usb 1-1.4.4: ath9k_htc: Firmware ath9k_htc/htc_9271-1.4.0.fw requested
[1731.831926] usbcore: registered new interface driver ath9k_htc
[1732.124172] usb 1-1.4.4: ath9k_htc: Transferred FW: ath9k_htc/htc_9271-1.4.0.fw, size: 51008
[1732.377138] ath9k_htc 1-1.4.4:1.0: ath9k_htc: HTC initialized with 33 credits
[1732.635073] ath9k_htc 1-1.4.4:1.0: ath9k_htc: FW Version: 1.4
[1732.640926] ath9k_htc 1-1.4.4:1.0: FW RMW support: On
[1732.646056] ath: EEPROM regdomain: 0x809c
[1732.646068] ath: EEPROM indicates we should expect a country code
[1732.646080] ath: doing EEPROM country->regdmn map search
[1732.646089] ath: country maps to regdmn code: 0x52
[1732.646100] ath: Country alpha2 being used: CN
[1732.646111] ath: Regpair used: 0x52
[1732.652779] ieee80211 phy1: Atheros AR9271 Rev:1

```

```arduino
$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enx00e01b284206: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:e0:1b:28:42:06 brd ff:ff:ff:ff:ff:ff
3: br-6275020ca3b8: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default 
    link/ether 02:42:9a:69:cd:e2 brd ff:ff:ff:ff:ff:ff
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default 
    link/ether 02:42:d0:f9:09:3f brd ff:ff:ff:ff:ff:ff
5: wlxec086b16d627: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DORMANT group default qlen 1000
    link/ether fa:86:16:f3:a7:8c brd ff:ff:ff:ff:ff:ff permaddr ec:08:6b:16:d6:2

```

I have also successfully made a WiFi connection using the WiFi icon on the SBC desktop. AppLab on the PC now "sees" the board over the network.

Getting one of them working is good progress. I would like to get the other working if possible.

---

<div class="post-metadata">

**Author:** ![mokxsh](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/mokxsh/32/1281426_2.png) [@mokxsh](https://forum.arduino.cc/u/mokxsh)\
**Post date:** [August 25, 2026, 1:07pm UTC](https://forum.arduino.cc/t/getting-a-usb-wifi-dongle-working-on-the-uno-q/1456444/9 "2026-08-25T13:07:26Z")

</div>

Thanks for testing this and reporting back — that's great progress!

The TP-Link result looks completely successful. The `ath9k_htc` driver detected the AR9271, loaded `htc_9271-1.4.0.fw`, initialized the HTC firmware, and created the wireless interface (`wlxec086b16d627`). The fact that you were able to connect through the Uno Q desktop and that AppLab can now see the board over the network confirms that the external Wi-Fi solution works.

For the MediaTek adapter, the interesting part is that `modprobe mt792x-usb` succeeds and the modules appear correctly in `lsmod`, but no wireless interface is created. That suggests the modules themselves are loading, but the USB device may not actually be binding to `mt792x_usb`, or there may be another dependency or firmware/device-specific component missing.

I think the next useful checks would be to capture the exact USB ID with:

```bash
lsusb

```

and then, with the MediaTek adapter plugged in:

```bash
dmesg | grep -iE "mt76|mt79|firmware|usb"

```

It would also be useful to check:

```bash
lsusb -t

```

and:

```bash
iw dev

```

The exact `lsusb` vendor/product ID should tell us whether `mt792x-usb` is actually the correct driver for that particular MediaTek adapter.

Really glad the AR9271/TP-Link adapter is working though — that's a solid workaround for anyone whose onboard WCBN3536A Wi-Fi/Bluetooth module has failed.

---

<div class="post-metadata">

**Author:** ![mokxsh](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/mokxsh/32/1281426_2.png) [@mokxsh](https://forum.arduino.cc/u/mokxsh)\
**Post date:** [August 25, 2026, 1:09pm UTC](https://forum.arduino.cc/t/getting-a-usb-wifi-dongle-working-on-the-uno-q/1456444/10 "2026-08-25T13:09:25Z")

</div>

Same here! The side/corner of my board is also slightly warped, so I’m wondering if that could be what’s causing the problem with the WCBN3536A module. It seems like the uneven PCB could be putting stress on the BGA solder joints or causing some of them to lose contact.

---

<div class="post-metadata">

**Author:** ![BitSeeker](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/bitseeker/32/1241632_2.png) [@BitSeeker](https://forum.arduino.cc/u/BitSeeker)\
**Post date:** [August 25, 2026, 1:26pm UTC](https://forum.arduino.cc/t/getting-a-usb-wifi-dongle-working-on-the-uno-q/1456444/11 "2026-08-25T13:26:46Z")

</div>

The interesting thing is that with my Linux PC, when I plug the adapter in, the lsmod output looks like this:

```arduino
$ lsmod |grep mt79*
mt7921u 16384 0
mt792x_usb 16384 1 mt7921u
mt7921_common 86016 1 mt7921u
mt792x_lib 69632 3 mt792x_usb,mt7921_common,mt7921u
mt76_connac_lib 98304 3 mt792x_lib,mt7921_common,mt7921u
mt76_usb 49152 2 mt792x_usb,mt7921u
mt76 139264 6 mt792x_lib,mt792x_usb,mt76_usb,mt7921_common,mt76_connac_lib,mt7921u
mac80211 1454080 5 mt792x_lib,mt76,iwlmvm,mt7921_common,mt76_connac_lib
cfg80211 1404928 7 wl,mt76,iwlmvm,iwlwifi,mac80211,mt7921_common,mt76_connac_lib
usbcore 409600 11 xhci_hcd,mt792x_usb,usbhid,mt76_usb,btmtk,evdi,uvcvideo,btusb,xhci_pci,mt7921u,vhci_hcd

```

So the module that's being loaded is 'mt7921u', although 'mt792x-usb' is also present.

The lsusb output is:

```arduino
 Bus 002 Device 002: ID 0e8d:7961 MediaTek Inc. Wireless_Device

```

So it looks like I need to compile 7961 modules, but there aren't any files for either 7921u or 796x in the kernel tree, although there is an mt7921 directory..

PS, I also tried an older Netgear MT76 dongle (mt76x02 driver) which I had to compile and add in, but couldn't get this to work either. Will have to come back to this later and have another look at what may be missing.

---

<div class="post-metadata">

**Author:** ![BitSeeker](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/bitseeker/32/1241632_2.png) [@BitSeeker](https://forum.arduino.cc/u/BitSeeker)\
**Post date:** [August 25, 2026, 10:08pm UTC](https://forum.arduino.cc/t/getting-a-usb-wifi-dongle-working-on-the-uno-q/1456444/12 "2026-08-25T22:08:20Z")

</div>

> [@mokxsh](#):
>
> lsusb
> 
> `dmesg | grep -iE "mt76|mt79|firmware|usb"`
> 
> lsusb -t
> 
> iw dev

Ok, so I have two Mediatek dongles:

1. Netgear A6210
2. Fenvi AX1800

So for the dongle 1 - Netgear:

lsusb:

```arduino
Bus 001 Device 010: ID 0846:9053 NetGear, Inc. A6210

```

sudo dmesg | grep -iE "mt76|mt79|firmware|usb":

```arduino
[sudo] password for arduino: 
[0.000000] psci: PSCIv1.0 detected in firmware.
[0.000000] psci: [Firmware Bug]: failed to set PC mode: -3
[0.835250] qcom_scm firmware:scm: qseecom: found qseecom with version 0x1402000
[0.835277] qcom_scm firmware:scm: qseecom: untested machine, skipping
[0.850283] platform 4e00000.usb: Adding to iommu group 7
[8.038133] systemd[1]: systemd-hibernate-clear.service - Clear Stale Hibernate Storage Info skipped, unmet condition check ConditionPathExists=/sys/firmware/efi/efivars/HibernateLocation-8cf2644b-4b0b-428f-9387-6d876050dc67
[9.522626] usb 1-1.4.4: ath9k_htc: Firmware ath9k_htc/htc_9271-1.4.0.fw requested
[12.314941] r8152 1-1.4.1:1.0: skip request firmware

```

lsusb -t:

```arduino
/: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/1p, 480M
    |__ Port 001: Dev 002, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 001: Dev 003, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 001: Dev 003, If 1, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 003: Dev 004, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 004: Dev 005, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 001: Dev 006, If 0, Class=Vendor Specific Class, Driver=r8152, 480M
            |__ Port 004: Dev 010, If 0, Class=Vendor Specific Class, Driver=[none], 480M
/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/1p, 5000M

```

iw dev:

```arduino
$ sudo iw dev
sudo: iw: command not found

```

For dongle 2 - Fenvi AX1800:

lsusb

```arduino
Bus 001 Device 011: ID 0e8d:7961 MediaTek Inc. Wireless_Device

```

sudo dmesg | grep -iE "mt76|mt79|firmware|usb":

```arduino
$ sudo dmesg | grep -iE "mt76|mt79|firmware|usb"
[0.000000] psci: PSCIv1.0 detected in firmware.
[0.000000] psci: [Firmware Bug]: failed to set PC mode: -3
[0.041813] /soc@0/phy@1615000: Fixed dependency cycle(s) with /soc@0/usb@4ef8800/usb@4e00000
[0.042170] /soc@0/geniqup@4ac0000/i2c@4a84000/encoder@58/connector: Fixed dependency cycle(s) with /soc@0/usb@4ef8800/usb@4e00000
[0.042284] /soc@0/usb@4ef8800/usb@4e00000: Fixed dependency cycle(s) with /soc@0/geniqup@4ac0000/i2c@4a84000/encoder@58/connector
[0.042319] /soc@0/usb@4ef8800/usb@4e00000: Fixed dependency cycle(s) with /soc@0/phy@1615000
[0.047368] /soc@0/phy@1615000: Fixed dependency cycle(s) with /soc@0/usb@4ef8800/usb@4e00000
[0.052525] /soc@0/geniqup@4ac0000/i2c@4a84000/encoder@58/connector: Fixed dependency cycle(s) with /soc@0/usb@4ef8800/usb@4e00000
[0.053112] /soc@0/usb@4ef8800/usb@4e00000: Fixed dependency cycle(s) with /soc@0/geniqup@4ac0000/i2c@4a84000/encoder@58/connector
[0.053152] /soc@0/usb@4ef8800/usb@4e00000: Fixed dependency cycle(s) with /soc@0/phy@1615000
[0.067094] usbcore: registered new interface driver usbfs
[0.067131] usbcore: registered new interface driver hub
[0.067158] usbcore: registered new device driver usb
[0.215521] usbcore: registered new interface driver usb-storage
[0.240168] usbcore: registered new interface driver usbhid
[0.240195] usbhid: USB HID core driver
[0.835250] qcom_scm firmware:scm: qseecom: found qseecom with version 0x1402000
[0.835277] qcom_scm firmware:scm: qseecom: untested machine, skipping
[0.850283] platform 4e00000.usb: Adding to iommu group 7
[0.850470] /soc@0/geniqup@4ac0000/i2c@4a84000/encoder@58/connector: Fixed dependency cycle(s) with /soc@0/usb@4ef8800/usb@4e00000
[0.850553] /soc@0/phy@1615000: Fixed dependency cycle(s) with /soc@0/usb@4ef8800/usb@4e00000
[0.850650] /soc@0/usb@4ef8800/usb@4e00000: Fixed dependency cycle(s) with /soc@0/geniqup@4ac0000/i2c@4a84000/encoder@58/connector
[0.850682] /soc@0/usb@4ef8800/usb@4e00000: Fixed dependency cycle(s) with /soc@0/phy@1615000
[0.864961] /soc@0/geniqup@4ac0000/i2c@4a84000/encoder@58/connector: Fixed dependency cycle(s) with /soc@0/usb@4ef8800/usb@4e00000
[4.187017] qcom-qusb2-phy 1613000.phy: Registered Qcom-QUSB2 phy
[5.195590] xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 1
[5.233402] xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 2
[5.241154] xhci-hcd xhci-hcd.2.auto: Host supports USB 3.0 SuperSpeed
[5.248764] hub 1-0:1.0: USB hub found
[5.258105] hub 2-0:1.0: USB hub found
[5.508726] usb 1-1: new high-speed USB device number 2 using xhci-hcd
[5.728257] hub 1-1:1.0: USB hub found
[6.040716] usb 1-1.1: new full-speed USB device number 3 using xhci-hcd
[6.210777] input: SINO WEALTH Gaming KB as /devices/platform/soc@0/4ef8800.usb/4e00000.usb/xhci-hcd.2.auto/usb1/1-1/1-1.1/1-1.1:1.0/0003:258A:01A0.0001/input/input2
[6.437615] hid-generic 0003:258A:01A0.0001: input,hidraw0: USB HID v1.11 Keyboard [SINO WEALTH Gaming KB] on usb-xhci-hcd.2.auto-1.1/input0
[6.454736] input: SINO WEALTH Gaming KB System Control as /devices/platform/soc@0/4ef8800.usb/4e00000.usb/xhci-hcd.2.auto/usb1/1-1/1-1.1/1-1.1:1.1/0003:258A:01A0.0002/input/input3
[6.529598] input: SINO WEALTH Gaming KB Consumer Control as /devices/platform/soc@0/4ef8800.usb/4e00000.usb/xhci-hcd.2.auto/usb1/1-1/1-1.1/1-1.1:1.1/0003:258A:01A0.0002/input/input4
[6.546469] input: SINO WEALTH Gaming KB Keyboard as /devices/platform/soc@0/4ef8800.usb/4e00000.usb/xhci-hcd.2.auto/usb1/1-1/1-1.1/1-1.1:1.1/0003:258A:01A0.0002/input/input5
[6.563135] hid-generic 0003:258A:01A0.0002: input,hidraw1: USB HID v1.11 Keyboard [SINO WEALTH Gaming KB] on usb-xhci-hcd.2.auto-1.1/input1
[6.648911] usb 1-1.3: new low-speed USB device number 4 using xhci-hcd
[6.787459] input: USB Optical Mouse as /devices/platform/soc@0/4ef8800.usb/4e00000.usb/xhci-hcd.2.auto/usb1/1-1/1-1.3/1-1.3:1.0/0003:0461:4D22.0003/input/input6
[6.803025] hid-generic 0003:0461:4D22.0003: input,hidraw2: USB HID v1.11 Mouse [USB Optical Mouse] on usb-xhci-hcd.2.auto-1.3/input0
[6.884899] usb 1-1.4: new high-speed USB device number 5 using xhci-hcd
[7.040710] hub 1-1.4:1.0: USB hub found
[7.340988] usb 1-1.4.1: new high-speed USB device number 6 using xhci-hcd
[7.560731] usb 1-1.4.4: new high-speed USB device number 7 using xhci-hcd
[8.038133] systemd[1]: systemd-hibernate-clear.service - Clear Stale Hibernate Storage Info skipped, unmet condition check ConditionPathExists=/sys/firmware/efi/efivars/HibernateLocation-8cf2644b-4b0b-428f-9387-6d876050dc67
[9.522626] usb 1-1.4.4: ath9k_htc: Firmware ath9k_htc/htc_9271-1.4.0.fw requested
[9.533725] usbcore: registered new interface driver ath9k_htc
[9.817192] usb 1-1.4.4: ath9k_htc: Transferred FW: ath9k_htc/htc_9271-1.4.0.fw, size: 51008
[11.888537] usbcore: registered new device driver r8152-cfgselector
[12.096340] r8152-cfgselector 1-1.4.1: reset high-speed USB device number 6 using xhci-hcd
[12.314941] r8152 1-1.4.1:1.0: skip request firmware
[12.368551] usbcore: registered new interface driver r8152
[12.436755] usbcore: registered new interface driver cdc_ether
[33.760103] usb_vbus: disabling
[2167.168268] usb 1-1.4.4: USB disconnect, device number 7
[2167.519973] usb 1-1.4.4: ath9k_htc: USB layer deinitialized
[2181.703228] usb 1-1.4.4: new high-speed USB device number 8 using xhci-hcd
[2444.672568] usb 1-1.4.4: USB disconnect, device number 8
[2696.006790] usb 1-1.4.4: new high-speed USB device number 9 using xhci-hcd
[2696.832413] usb 1-1.4.4: USB disconnect, device number 9
[3065.416201] usb 1-1.4.4: new high-speed USB device number 10 using xhci-hcd
[3551.873031] usb 1-1.4.4: USB disconnect, device number 10
[3558.984703] usb 1-1.4.4: new high-speed USB device number 11 using xhci-hcd

```

lsusb -t:

```arduino
$ lsusb -t
/: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/1p, 480M
    |__ Port 001: Dev 002, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 001: Dev 003, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 001: Dev 003, If 1, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 003: Dev 004, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 004: Dev 005, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 001: Dev 006, If 0, Class=Vendor Specific Class, Driver=r8152, 480M
            |__ Port 004: Dev 011, If 0, Class=Vendor Specific Class, Driver=[none], 480M
/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/1p, 5000M

```

---

<div class="post-metadata">

**Author:** ![BitSeeker](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/bitseeker/32/1241632_2.png) [@BitSeeker](https://forum.arduino.cc/u/BitSeeker)\
**Post date:** [August 26, 2026, 5:31pm UTC](https://forum.arduino.cc/t/getting-a-usb-wifi-dongle-working-on-the-uno-q/1456444/13 "2026-08-26T17:31:19Z")

</div>

I have both of the Mediatek (Netgear A6210 and Fenvi AX1800) WiFi dongles working!

It was necessary to take a slightly different approach to the compile. This is what I did:

- enabled ALL of the MT76 drivers in .config by directly editing `.config`, finding the MT76 section and un-commenting each of the entries under that heading. The line was then edited to replace the 'is not set' text with '=m' to match the other enabled modules.

- compiled ALL the Mediatek modules using the following modified command:

```arduino
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- KBUILD_MODPOST_WARN=1 -j$(nproc) M=drivers/net/wireless/mediatek/mt76

```

- created a temporary directory with the following structure:

```arduino
mediatek
    mt76
        mt76x2
        mt7921

```

- copied the driver module files I required as follows:

```shell
cp drivers/net/wireless/mediatek/mt76/mt76x02-lib.ko /home/johnc/src/UnoQKernel/mediatek/mt76/
cp drivers/net/wireless/mediatek/mt76/mt76x02-usb.ko /home/johnc/src/UnoQKernel/mediatek/mt76/
cp drivers/net/wireless/mediatek/mt76/mt792x-lib.ko /home/johnc/src/UnoQKernel/mediatek/mt76/
cp drivers/net/wireless/mediatek/mt76/mt792x-usb.ko /home/johnc/src/UnoQKernel/mediatek/mt76/
cp drivers/net/wireless/mediatek/mt76/mt76-sdio.ko /home/johnc/src/UnoQKernel/mediatek/mt76/
cp drivers/net/wireless/mediatek/mt76/mt76-usb.ko /home/johnc/src/UnoQKernel/mediatek/mt76/

cp drivers/net/wireless/mediatek/mt76/mt7921/*.ko /home/johnc/src/UnoQKernel/mediatek/mt76/mt7921/
cp drivers/net/wireless/mediatek/mt76/mt76x2/*.ko /home/johnc/src/UnoQKernel/mediatek/mt76/mt76x2/

```

- created a .tar.gz archive of the temporary mt76 directory

- copied the archive to the UNO Q home folder and unpacked it.

- manually created the `mt76x2` and `mt7921` directories in `/lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/mediatek/mt76`

- copied the unpacked archive:

```shell
cp -R mt76/* /lib/modules/6.16.7-g0dd6551ae96b/kernel/drivers/net/wireless/mediatek/mt76/

```

- ran the depmod command:

```arduino
sudo depmod -a

```

- then ran the modprobe command for the two drivers:

```arduino
sudo modprobe mt7921u
sudo modprobe mt76x2u

```

lsmod for the Netgear A6210:

```arduino
mt76x2u 20480 0
mt76x2_common 24576 1 mt76x2u
mt76x02_usb 20480 1 mt76x2u
mt76x02_lib 69632 3 mt76x02_usb,mt76x2u,mt76x2_common

```

dmesg:

```arduino
[5720.832634] usbcore: registered new interface driver mt76x2u
[5755.693354] usb 1-1.4.4: new high-speed USB device number 7 using xhci-hcd
[5755.862017] usb 1-1.4.4: reset high-speed USB device number 7 using xhci-hcd
[5755.960846] mt76x2u 1-1.4.4:1.0: ASIC revision: 76120044
[5756.018588] mt76x2u 1-1.4.4:1.0: ROM patch build: 20141115060606a
[5756.167994] mt76x2u 1-1.4.4:1.0: Firmware Version: 0.0.00
[5756.173636] mt76x2u 1-1.4.4:1.0: Build: 1
[5756.177723] mt76x2u 1-1.4.4:1.0: Build Time: 201507311614 ____
[5756.950730] ieee80211 phy1: Selected rate control algorithm 'minstrel_ht'
[5757.036263] mt76x2u 1-1.4.4:1.0 wlxa06391bbce87: renamed from wlan0

```

ip link:

```arduino
$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enx00e01b284206: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:e0:1b:28:42:06 brd ff:ff:ff:ff:ff:ff
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default 
    link/ether 02:42:01:04:79:06 brd ff:ff:ff:ff:ff:ff
4: br-6275020ca3b8: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default 
    link/ether 02:42:6e:cf:25:5f brd ff:ff:ff:ff:ff:ff
5: wlxa06391bbce87: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DORMANT group default qlen 1000
    link/ether 5a:1e:ed:b4:3d:96 brd ff:ff:ff:ff:ff:ff permaddr a0:63:91:bb:ce:87

```

This has required quite a bit of work but means that I can now connect this faulty UNO Q to my home WiFi by plugging in the USB hub and either of the WiFi dongles I have available. No doubt, if the kernel ever gets updated, then the drivers will have to be re-compiled and updated as well.
