aicswitch pixel logo: WiFi waves above a USB plug

aicswitch

Make AIC8800 / AIC8800D80 WiFi 6 and Bluetooth USB dongles work on Linux.

Cheap WiFi 6 USB dongles built on the AICSemi AIC8800D80 chip show up on Linux as a tiny USB disk (1111:1111 Pandora International Ltd. 88M80) holding a Windows installer, instead of a network card. aicswitch sends the dongle the same vendor command the Windows tool uses, so it turns into a real WiFi + Bluetooth adapter. A udev rule does this automatically every time you plug it in.

Install GitHub Downloads

Install

Switcher plus the WiFi/Bluetooth driver (recommended):

curl -fsSL https://limitedio.github.io/aicswitch/install.sh | sudo sh -s -- --driver

Only the switcher, if you already have an AIC8800 driver:

curl -fsSL https://limitedio.github.io/aicswitch/install.sh | sudo sh

Then unplug the dongle and plug it back in. To remove aicswitch, run curl -fsSL https://limitedio.github.io/aicswitch/uninstall.sh | sudo sh (add -s -- --driver to also remove the driver).

Is this my dongle?

$ lsusb
Bus 001 Device 120: ID 1111:1111 Pandora International Ltd. 88M80

After switching, it shows up as a69c:8d80 aicsemi AIC Wlan, and as a69c:8d81 AICSemi AIC 8800D80 once the driver has loaded its firmware.

Packages

Debian / Ubuntu.deb, then sudo apt install ./aicswitch_*.deb
Fedora / openSUSE.rpm, then sudo dnf install ./aicswitch-*.rpm
Arch Linux.pkg.tar.zst, then sudo pacman -U aicswitch-*.pkg.tar.zst
Alpine.apk, then sudo apk add --allow-untrusted aicswitch_*.apk
Any distroStatic tar.gz for x86_64, i686, aarch64, armv7, armv6, riscv64, ppc64le
From sourcemake && sudo make install, using only a C compiler and libc

All downloads →

How it works

  1. The dongle starts in "driver CD" mode as a USB mass-storage device.
  2. udev sees the 1111:1111 SCSI device and runs aicswitch /dev/sgN.
  3. aicswitch sends the vendor SCSI command FD 00 … 00 F2 through SG_IO. This command was found by disassembling Usb_Driver.dll from the dongle's own Windows installer.
  4. The dongle reconnects as a69c:8d80, and the AIC8800 driver loads its firmware.

FAQ

Why does my USB WiFi adapter show up as 1111:1111 Pandora International Ltd. 88M80?

The dongle uses an AICSemi AIC8800D80 chip and starts in a fake driver-CD mode, a small USB disk labelled "Wifi Driver" that holds a Windows installer. Linux sees mass storage, not a network card, until the dongle is told to switch.

Why doesn't eject or usb_modeswitch fix it?

These units ignore the standard SCSI eject. They only switch on the vendor command FD 00 … 00 F2, which aicswitch sends. A plain eject just removes the virtual media until you replug.

Which Linux driver does the AIC8800D80 need?

After switching, the dongle appears as a69c:8d80 and needs the out-of-tree AIC8800 driver plus firmware. The installer's --driver option builds shenmintao/aic8800d80 with DKMS, so it keeps working after kernel updates.

Does it work on Raspberry Pi, Ubuntu, Debian, Fedora and Arch?

Yes. aicswitch ships static binaries and deb, rpm, apk and Arch packages for x86_64, i686, aarch64, armv7, armv6, riscv64 and ppc64le.

Does Bluetooth work too?

Yes. With the AIC8800 driver loaded, the dongle provides both a WiFi interface (wlx…) and a Bluetooth controller (hci).