A small step-by-step guide for the UGREEN WiFi dongle that uses the
AIC8800D80 chip. Linux does not ship a driver for it, so we will
install one that works.
Each step is short. Just follow it top to bottom.
How to know this guide is for you
- Plug in the dongle.
- Run this in a terminal:
lsusb
- Look for a line like one of these:
a69c:5723 (shows for the first ~10 seconds, then changes)
a69c:8d80 (this is the one we want)
If you see a69c:8d80 (or it was a69c:57xx a moment ago), this guide
is for you. The dongle pretends to be a small USB stick first, then
switches to WiFi mode. That is normal.
What you need before starting
- A computer with Debian or Ubuntu (or a version of Mint, etc.)
- The password for your user account (for
sudo) - Some way to get online right now — the internal WiFi, a phone USB-tether, or a network cable. We need to download one file.
- About 15 minutes
Step 1 — Install the tools
Copy and paste this whole block, then press Enter:
sudo apt update
sudo apt install -y dkms build-essential git "linux-headers-$(uname -r)"
This installs the compiler tools and the headers for your current
kernel. The last part is written so it works on Debian, Ubuntu and
Mint alike — it picks the right package name automatically.
Check it worked: this command should print a folder path ending in /build:
ls /lib/modules/$(uname -r)/build
If it says "No such file or directory", stop here — the headers for
your running kernel are missing. Fix that first.
Step 2 — Download the driver
git clone https://github.com/shenmintao/aic8800d80.git ~/aic8800d80
cd ~/aic8800d80
You now have the driver code in a folder called aic8800d80 in your
home directory.
Step 3 — Run the installer
sudo ./install.sh
This does everything for you:
- copies the firmware files to the right place,
- builds the driver and installs it,
- sets it to rebuild automatically after future system updates.
Wait until you see INSTALLATION COMPLETED SUCCESSFULLY.
💡 If your computer uses Secure Boot, the tool will ask about it.
If you do not know what that is, just answeryto continue, and if
the driver later fails to load, you will need to turn Secure Boot off
in your BIOS/UEFI settings (out-of-scope of this guide).
Step 4 — Unplug and replug the dongle
This part matters. Do it exactly like this:
- Pull the dongle out.
- Wait 5 seconds.
- Plug it back in.
This gives the chip a clean restart so the new driver can talk to it
from scratch. A reboot also works, but the replug is faster.
Step 5 — Check that it works
Wait about 10 seconds after replugging, then run:
lsusb | grep -i aic
You want to see:
a69c:8d81 (note: 8d81 — different from before, that is good)
Then check the WiFi interface exists:
ip link
Look for a name that starts with wlx followed by a mix of letters
and numbers, for example wlx1234567890ab (the exact letters/numbers
differ per device — that is fine).
Finally, scan for networks:
nmcli device wifi list
If you see nearby networks — done, you have working WiFi! 🎉
Connect to your network:
nmcli device wifi connect "YOUR_WIFI_NAME" password "YOUR_WIFI_PASSWORD"
Replace the text in quotes. Keep the quotes.
Troubleshooting
It fails at step 3 or no WiFi appears after replugging
Your dongle may be an older hardware revision. Check with:
sudo dmesg | grep -E "chip_mcu_id|upload fail"
- If you see
chip_mcu_id = 1orbin upload fail: 170400, switch to the special branch for your hardware:
cd ~/aic8800d80
git fetch origin
git switch legacy-mcu1
sudo ./install.sh
⚠️ Do not skip sudo ./install.sh! Just switching the branch
changes nothing on its own — the installer is what actually replaces
the firmware files on disk. Wrong old firmware files can even make
the whole system freeze, so let the installer do its full job.
- Then unplug, wait 5 seconds, and replug the dongle, and try Step 5 again.
The dongle is completely silent — no errors, no network names
A failed first attempt can leave the chip stuck ("wedged"). The fix is
always the same:
- Unplug the dongle.
- Wait about 10 seconds (not less).
- Plug it back in.
A normal reboot also fixes it. USB-level resets from software are
not enough — the chip needs a real loss of power.
The driver worked yesterday but broke after a system update
System updates install a new kernel, and the driver must be rebuilt
for it. Normally this happens automatically. To check:
dkms status
Good output looks like aic8800/1.0.0, ...: installed (the word
installed is the important bit).
If it says something else, rebuild by hand:
cd ~/aic8800d80
git switch legacy-mcu1 # only if you switched earlier
sudo ./install.sh
The install of system updates fails with a "linux-headers" error
An old, half-removed driver can block system updates. Remove it:
dkms status # note any "aic8800" lines
sudo dkms remove aic8800/1.0.6 --all # use the version number you saw
sudo dpkg --configure -a # un-stick the blocked updates
Then redo this guide from Step 2.
Uninstalling (if you ever need to)
cd ~/aic8800d80
sudo dkms remove aic8800/1.0.0 --all
sudo rm -rf /lib/firmware/aic8800*
Can I delete the ~/aic8800d80 folder afterwards?
Yes, it is safe. During installation, the installer made its own
copy of everything in /usr/src/aic8800-1.0.0, and that is the copy
the system uses to rebuild the driver after future kernel updates.
Your home folder version is not needed for day-to-day use.
The only reasons to keep it:
- you might need to run the installer again while troubleshooting
(for example, switching to the
legacy-mcu1branch), and - re-downloading is one command anyway (
git clonein Step 2), so deleting it costs you nothing.
About this guide
This guide was written by an AI assistant (Claude Code). The steps
come from a real, working installation on one computer: Debian 13,
kernel 6.12, with a UGREEN dongle whose chip turned out to be the older
"MCU1" hardware revision.
Because it was written on one machine, it may contain mistakes or miss
cases that differ on your setup.
Found a mistake?
Please leave a comment to correct it — write your correction below so it can be fixed for everyone.
Tested on Debian 13 (trixie) with kernel 6.12. Driver source:
shenmintao/aic8800d80.
Top comments (0)