The spec used the pinned commit hash as Version, and rpm does not order hashes by commit history:51b7b6esorts afterc8327ea, and13baa9baftere93a7d2, so a newer snapshot could be treated as an older package. Version snapshots as 1.0.0^<date>git<commit>, where 1.0.0 is the DKMS PACKAGE_VERSION, and add Epoch 1 so every snapshot sorts after all of the earlier hash versions. Checked with rpm 4.18: the spec parses and the new EVR compares newer than every previous Version. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
AIC8800 Linux Wi-Fi and Bluetooth Driver
This driver supports AIC8800-family chipsets used by devices such as the Tenda U11, AX913B, and TP-Link Archer TX1U Nano.
Legacy MCU revision 1 branch: You are viewing
legacy-mcu1. This branch is only for AIC8800D80 or AIC8800DC/DW devices that reportchip_id=7, chip_mcu_id=1. It provides complete matched V3 firmware and loader profiles for the D80 upload-limit failure validated in issue #58 and the DC/DW V5 main-application timeout validated in issue #71. Usemainfor newerchip_mcu_id=0hardware or when the MCU revision is unknown. See the D80 and DC/DW support notes before installing.After switching branches, rerun
sudo ./install.shand reboot; switching the Git branch alone does not replace firmware already installed under/lib/firmware.
Added support for devices with Vendor ID 368B (tested).
Tested on Linux kernel 6.16 with Ubuntu 25.04 and 6.1.0.27 with Debian 12.
The same driver supports Wi-Fi-only adapters and Wi-Fi/Bluetooth combo
adapters. On combo devices, aic_load_fw uploads the AIC firmware and the
standard Linux btusb driver handles the Bluetooth HCI interface. The obsolete
custom aic_btusb module is not used.
USB device 368b:8d81 also uses the bundled aic_zlp_quirk companion module.
It adds the Bluetooth ACL bulk TX zero-length-packet behavior validated in
issue #63, while leaving
the distribution's original btusb.ko installed and bound to the device. The
quirk is filtered to that VID:PID and fails closed when the required kernel
probe support is unavailable.
Note
Maintained branches: This repository now maintains only
mainandlegacy-mcu1. You are viewing the branch forchip_mcu_id=1; do not switch this hardware to the former separatebluetoothbranch, which is retired. Wi-Fi, the kernel's standardbtusbBluetooth path, and the device-scoped368b:8d81ZLP support are integrated here. The ZLP module remains inactive on other VID:PID combinations.
Disclaimer
I did not develop this software, The code is sourced from the Tenda U11 driver. I only made some modifications to the code to adapt it to newer kernel versions. Apart from compilation issues, I am unable to address other problems.
Attention
Before installing the driver, delete all aic8800-related folders under /lib/firmware. Using an incorrect firmware version may cause the system to freeze.
Pandora 88M80 mode switching
Pandora 88M80 adapters that initially appear as USB device 1111:1111 are
automatically switched to a69c:8d80 by sending the required F3 then F2
commands. Existing users must rerun sudo ./install.sh to replace the installed
usb_modeswitch configuration, then unplug the adapter completely and plug it
back in.
If automatic switching does not occur, try the same sequence manually:
sudo usb_modeswitch -v 1111 -p 1111 \
-M "555342438765432100000000000010fd0000000000000000000000000000f3" \
-2 "555342438765432100000000000010fd0000000000000000000000000000f2"
This only addresses switching from 1111:1111 to a69c:8d80. If the device
has reached a69c:8d80 but firmware startup still fails, see
issue #79.
Installation Steps
Method 1: Quick Installation (Recommended)
Method 2: Manual Installation
Copy udev rules:
Copy the aic.rules file to /usr/lib/udev/rules.d/:
sudo cp aic.rules /usr/lib/udev/rules.d/
Copy firmware:
Copy the firmware directories from ./fw to /lib/firmware/:
sudo cp -r ./fw/aic8800* /lib/firmware/
Navigate to the driver directory:
Change to the drivers/aic8800 directory:
cd ./drivers/aic8800
Compile and Install the Driver:
First, compile the driver:
make
Then, install the driver:
sudo make install
For any kernel updates, you'll need to reinstall the driver:
make clean
make
sudo make install
Load the Driver
After installation, load the driver with the following command:
sudo modprobe aic8800_fdrv
Verify the Module is Active
Check if the module is loaded correctly:
lsmod | grep aic
You should see output similar to:
aic8800_fdrv 536576 0
cfg80211 1146880 1 aic8800_fdrv
aic_load_fw 69632 1 aic8800_fdrv
usbcore 348160 10 xhci_hcd,ehci_pci,usbhid,usb_storage,ehci_hcd,xhci_pci,uas,aic_load_fw,uhci_hcd,aic8800_fdrv
After that, plug in your USB wireless network card.
Verify Wi-Fi Device is Active
To check if the Wi-Fi interface is recognized, run:
iwconfig
If the device is still not active, check the kernel logs for any errors related to the driver:
sudo dmesg
Bluetooth on Combo Adapters
Bluetooth support does not require a separate AIC transport module. After
aic_load_fw initializes a combo adapter, the kernel automatically binds its
Bluetooth interface to btusb. A Wi-Fi-only adapter does not expose that
interface, so the Bluetooth path remains inactive.
Verify the expected modules and controller with:
lsmod | grep -E 'aic_load_fw|aic8800_fdrv|aic_zlp_quirk|btusb'
lsusb -t
bluetoothctl list
To scan after a controller appears:
bluetoothctl
power on
scan on
If Bluetooth is missing or reports HCI timeouts, run the read-only diagnostic script and attach its output together with the current boot log:
chmod +x diagnose_bt.sh
sudo ./diagnose_bt.sh
sudo journalctl -k -b --no-pager
The installer removes active references to the retired aic_btusb integration.
It does not force-load btusb or globally change the Bluetooth rfkill state;
normal kernel device matching and the user's system policy remain in control.
For 368b:8d81, verify the ZLP hook and its injection counter while Bluetooth
traffic is active:
cat /sys/module/aic_zlp_quirk/parameters/hook
cat /sys/module/aic_zlp_quirk/parameters/injections
The Wi-Fi-reset recovery behavior tracked in issue #53 remains a known limitation: after an airplane-mode or hotspot reset, Bluetooth may require a physical unplug/replug of the adapter.