Theoretically, the PCE-AC88 pci wifi card is capable of 1000MB over 802.11n, and 2167MB over 802.11ac. In other words — apart from some latency — no need to run a cable for normal work. That is, when it has a working driver. Without, it's not even a worthy as a paperweight.
Even though ASUS doesn't really provide Linux drivers, they seem to be using this exact hardware in their AC3100 router. Since routers usually run some kind of minimised version of Linux, there might just be a way to get the driver out of the routers latest firmware, at least that's what Tabre and n3roj2 thought.
Even though this idea originates from 2017, the problem remains unresolved: no working drivers by default. Therefore, I wrote a script to extract the firmware from the AC3100 firmware and tested that against all other firmware I could find.
Extracting driver from AC3100 router firmware
As stated before, the main idea to extract the driver came from Tabre and n3roj2, I coudn't have ever tought of that myself. Nonetheless, I've created a simple script that extracts the driver from the firmware package. Have a look at their posts, or this visual post, to find how it exactly works. Mainly, it extracts the binary driver from the trx file by looking for matching start and end bytes.
First, download the latest firmware from the AC3100 download page by choosing "Others" in the dropdown and extract the zip file, this result in a .trx file
This results in a file named brcmfmac4366c-pcie.bin.fromtrx
, which should be the working driver. Using the script below we can load the driver without restarting your computer to see if it actually works.
Loading drivers without restarting
Installing the driver is actually not much more than copying the file to the firmware directory and telling the kernel to reload the brcmfmac module:
Your system should automatically reload the Wifi network card, otherwise manually restarting the network manager might help:
If it doesn't work, have a look at the comparison results below, there might be a driver that actually works for you.
Firmware comparison results
Extracting a binary driver using the method from above feels janky at best, so I tried all other sources I could find for a working replacement. First, I made a simple script to load a specific driver, connect to Wifi and test the speed:
I did this for every bin file I could find on the web, these are my findings. your mileage may vary:
File(s) | Md5sum | Version | 2G Down/Up (Mbit/s) | 5G Down/Up (Mbit/s) | Comments |
---|---|---|---|---|---|
brcmfmac4366c-pcie.bin.20210710 | f04425 | 10.10.122.18 | 76/42 | 73/21 | extracted version 3.0.0.4_386 |
brcmfmac4366c-pcie.bin.69027 | 18eeff | 10.10.69.16 | 50/25 | 79/30 | doesn't load on boot |
brcmfmac4366c-pcie.bin_ac88 brcmfmac4366c-pcie.bin.ac88u brcmfmac4366c-pcie.bin.tabre |
b95d65 | 10.10.69.26 | 67/44 | 79/30 | doesn't load on boot |
brcmfmac4366c-pcie.bin_ac88_2 | cad5e4 | 10.10.122.18 | 81/49 | 79/39 | doesn't load on boot |
brcmfmac4366c-pcie.bin_ac88_3 | 32e0e8 | 10.10.122.18 | 65/24 | 77/40 | doesn't load on boot |
brcmfmac4366c-pcie.bin.asus-dhd24 | 2cb1d4 | 10.10.69.16 | 68/37 | 75/33 | unstable |
brcmfmac4366c-pcie.bin.ea9500 brcmfmac4366c-pcie.bin_u_da_third | 647bee | 10.10.69.69 | 92/61 | 78/29 | |
brcmfmac4366c-pcie.bin_ea9500 | 5bbefc | 10.10.122.18 | 90/61 | 80/36 | |
brcmfmac4366c-pcie.bin.20210312 | cad5e4 | 10.10.122.18 | 87/51 | 79/39 | extracted version 3.0.0.4_384 |
brcmfmac4366c-pcie.bin.k3 brcmfmac4366c-pcie.bin_k3 | 7efed0 | n/a | n/a | n/a | doesn't work |
brcmfmac4366c-pcie.bin.picchietti | 8dbff4 | n/a | n/a | n/a | doesn't work |
brcmfmac4366c-pcie.bin_u_da_first | 5efe8f | 10.10.69.117 | 81/53 | 77/32 | |
brcmfmac4366c-pcie.bin.v10.28.2 brcmfmac4366c-pcie.bin.kernel_org | e3bb44 | 10.28.2 | n/a | n/a | latest from kernel.org, doesn't work |
Current situation
Even though there has been some recent activity by the kernel developers trying to solve the wifi driver issues, the problem still remains. Some kernel updates even break the driver you manually installed. So, my advice is to keep some binary driver files on your harddisk so you'll be able to try a few if it all breaks again.
Sometimes 5Ghz, always 2Ghz: check your channels
Long story short, check if you're WiFi is on an Indoors-only channel, avoid DFS channels.
The 5Ghz band uses DFS to share it's vast amount of channels with multiple purposes. Even though your router supports these shared channels, it has to drop connectivity or switch to a different channel if it detects other activity on these frequencies, to ensure there's no interference. The exact channels differ per country, Linux uses the wireless-regdb package to determine what channels are allowed and not. Currently it seems you can only connect using channels specifically designated for Indoor use.
Check which channels your card supports here, even though usually crowded, try to stick to the lower channels (32-46).
Finally, ensure there's no conflicting packages running on your machine:
Will Linux ever be ready for consumers?
More and more device manufacturers slowly start to understand there is a growing Linux user base who desperately need working drivers, preferably open source. But this realisation seems slow. The result is that 5G for this Wifi card is unstable and 2G only is stable if you manually find the drivers somewhere.
This'll keep users in bloated and spying Windows and OS X land, because Linux is just too difficult for them. I'll put my bets on Steam OS for now :)
Sources
Finding hardware / Firmware id
The brcmfmac module should support the AC88 device using bcm4366 driver.