This project provides a Linux driver for the AIC8800 chipset, supporting both USB and SDIO interfaces.
The AIC8800 Linux Driver supports the AIC8800 chipset for wireless communication, enabling functionality on devices using Linux-based operating systems. This driver is compatible with various kernel versions and can be used with different hardware configurations, such as USB or SDIO interfaces.
The driver has been tested and builds cleanly against kernels from the 3.x series through 7.1.x, including:
- Kernel 6.x (
in_hardirq()/ timer API changes) - Kernel 7.1+ (
cfg80211_opscallbacks such asadd_key,add_station,get_station, etc. now takestruct wireless_dev *instead ofstruct net_device *;struct ieee80211_mgmtaction-frame union layout changed)
Version-specific differences are handled internally via LINUX_VERSION_CODE guards, so a single source tree supports all of the above without manual patching.
- Support for USB interface
- FullMAC driver with 802.11ac capabilities
- WPA/WPA2 encryption
- MAC randomization support
- Power management features (DCDC_VRF mode)
- WPA3 compatibility (for kernels supporting it)
- MU-MIMO support (requires compatible firmware)
- Wireless extensions support
- USB combo Wi-Fi + Bluetooth devices (via
aic_load_fwandCONFIG_USB_BT)
To compile and install this driver, ensure the following dependencies are installed:
- Linux kernel headers and development files
- GCC or Clang/LLVM (auto-detected based on kernel build)
- Make
- Git (for cloning the repository)
- checkinstall (for creating DEB/RPM packages)
# Debian/Ubuntu/PikaOS example
sudo apt install linux-headers-$(uname -r) build-essential git checkinstall
# Fedora example
sudo dnf install kernel-devel kernel-headers gcc make git rpm-buildNote: The build system automatically detects which compiler (gcc or clang) was used to build your kernel and uses the same compiler for building the driver. This ensures compatibility.
-
Clone the repository:
git clone git@github.com:goecho/aic8800_linux_drvier.git cd aic8800-linux-driver -
Compile the driver:
make
This will automatically detect whether your kernel was built with gcc or clang and use the appropriate compiler. The necessary kernel modules (
aic8800_fdrv.koandaic_load_fw.ko) will be generated.Manual compiler override (optional):
If you need to override the auto-detection, you can manually specify the compiler:
# Force clang make LLVM=1 LLVM_IAS=1 CC=clang # Force gcc make CC=gcc
-
Install the compiled driver:
sudo make install
This will:
- Install the kernel modules
- Copy firmware files to
/lib/firmware/aic8800D80/ - Install udev rules for USB mode switching
- Configure auto-load on boot via
/etc/modules-load.d/aic8800.conf
-
Load the driver (or reboot for automatic loading):
sudo modprobe aic8800_fdrv
For USB combo Wi-Fi + Bluetooth devices, also load:
sudo modprobe aic_load_fw
Note: After installation, the modules will automatically load on every boot. Manual loading is only needed for the first time before rebooting.
-
To verify the driver is loaded, run:
lsmod | grep aic8800_fdrv
Installing via DKMS keeps the driver working automatically across kernel upgrades — it rebuilds and reinstalls the modules for every new kernel via apt hooks, instead of requiring a manual rebuild each time.
-
Ensure
dkmsis installed:sudo apt install dkms
-
Register and build the driver with DKMS:
sudo bash scripts/dkms-setup.sh
This syncs the source to
/usr/src/aic8800-1.2.1, registers it with DKMS, and builds/installs the modules for your currently running kernel. -
To (re)build for a specific installed kernel (e.g. after installing new kernel headers):
sudo dkms build -m aic8800 -v 1.2.1 -k <kernel-version> sudo dkms install -m aic8800 -v 1.2.1 -k <kernel-version> --force
-
Verify the module status:
dkms status
For easier installation and management, you can create distribution-specific packages. The build system automatically detects your compiler and includes auto-load configuration.
-
Create the DEB package:
make deb
-
Install the package:
sudo dpkg -i aic8800-driver_1.2.1-1_amd64.deb
Note: If you encounter dependency warnings about linux-headers, you can safely ignore them with:
sudo dpkg -i --force-depends aic8800-driver_1.2.1-1_amd64.deb
-
Create the RPM package:
make rpm
-
Install the package:
sudo rpm -i aic8800-driver-1.2.1-1.x86_64.rpm # or sudo dnf install aic8800-driver-1.2.1-1.x86_64.rpm
-
Create the Arch package:
make arch
-
Install the package:
sudo pacman -U aic8800-driver-1.2.1-1-x86_64.pkg.tar.zst
make packageThis will automatically detect your distribution and create the appropriate package type.
All packages automatically:
- Install the kernel modules
- Copy firmware files
- Configure udev rules
- Set up auto-load on boot via
/etc/modules-load.d/aic8800.conf - Run depmod to update module dependencies
- Use the correct compiler (auto-detected)
If you need to remove the driver:
# If installed from source
sudo make uninstall
# If installed from DEB package
sudo dpkg -r aic8800-driverOnce the driver is installed and loaded, the AIC8800 chipset will be automatically recognized by the Linux system. You can verify the wireless device is working by checking the network interfaces:
ip linkYou can also manage the wireless device using standard Linux network management tools like iwconfig, ifconfig, or nmcli.
This project is licensed under the MIT License. See the LICENSE file for more details.