HOWTO: install drivers for the Asus PCE-AC88 on Jessie

Share your own howto's etc. Not for support questions!

HOWTO: install drivers for the Asus PCE-AC88 on Jessie

Postby Bliepo » 2017-03-09 00:51

Introduction
This HOWTO describes how to install drivers for the Asus PCE-AC88 Dual-Band AC3100 Wireless PCIe-adapter on Debian Jessie. Since I bought this card myself and ran into some issues I decided to create this HOWTO, so others will hopefully have an easier time. But before we begin I must give credit to the people at the Fedora forums (http://forums.fedoraforum.org/showthread.php?p=1769999) and especially Hellacopter, without whom I would never have succeeded and this guide would not have existed.

WARNING: This HOWTO is very experimental and 'hackish'. I am merely describing how I installed drivers for the Asus PCE-AC88. I do not guarantee this works for you or that it is safe. It might damage your system. It is highly recommended that you make a back-up before starting!

Required skill level
I have tried to make this HOWTO as easy as possible, but it can be quite hard on beginners. This HOWTO involves installing a kernel and firmware from backports, using squashfs-tools, dd and a lot of command line use, which not everyone might be comfortable with it.

Repositories used
In this HOWTO we will be making use of the backports repository and it also requires packages from non-free archive area. In addition we will download firmware from the ASUS website. Note that packages from Jessie-backports are not as safe. To quote from https://backports.debian.org/:
Backports cannot be tested as extensively as Debian stable, and backports are provided on an as-is basis, with risk of incompatibilities with other components in Debian stable. Use with care!


Step 1: Editing sources.list
Open the file /etc/apt/sources.list with your favourite text editor. Be sure to use root permissions (either by using the root account or making use of sudo)! Add the following two lines at the end of the file if they are not already included:

Code: Select all
# jessie backports
deb http://http.debian.net/debian jessie-backports main non-free


Close the text-editor and update the sources by running (as root):

Code: Select all
apt-get update


Step 2: Upgrading kernel via backports
The Asus PCE-AC88 requires a kernel with version 4.4+, so first we need to check which kernel version we're using and upgrade if necessary. To check the current kernel version open a terminal and enter the following:

Code: Select all
uname -r


In my case this displayed:

Code: Select all
3.16.0-4-amd64


If your version is lower than 4.4+ you will need to upgrade your kernel. If not, you can skip this step and continue with step 3. To upgrade the kernel, we will install a kernel from Jessie-backports. To do so, run the following command as root:

Code: Select all
apt-get install -t jessie-backports linux-image linux-image-amd64


Step 3: Installing the firmware-brcm80211 package from backports
Next, we will need to install the firmware-brcm80211 package from Jessie-backports. To do so, run the following command as root:

Code: Select all
apt-get install -t jessie-backports firmware-brcm80211


Step 4: Extracting the firmware from the ASUS website
Although we have installed the firmware package from Jessie backports, we still need to do the hardest step: extracting the firmware from the ASUS website. But first we need to install the necessary tools. To do so run the following command as root:

Code: Select all
apt-get install unzip squashfs-tools iw


Next we will make a new directory to work in (in the user's home directory), download the firmware to it and unzip the download:

Code: Select all
mkdir ~/AsusPceAc88Driver
cd ~/AsusPceAc88Driver/
wget http://dlcdnet.asus.com/pub/ASUS/wireless/RT-AC88U/FW_RT_AC88U_30043803341.ZIP
unzip FW_RT_AC88U_30043803341.ZIP


WARNING: Do not try to use a newer firmware version, otherwise the HOWTO will not work! (Although it might with some modifications, but you're on your own! But if you manage to get things working, let me know!)

There will now be a new file with the filename 'RT-AC88U_3.0.0.4_380_3341-g25420f5.trx'. We will use dd to extract a squashfs file from it:

Code: Select all
dd if=RT-AC88U_3.0.0.4_380_3341-g25420f5.trx bs=1 skip=1784292 count=40716453 of=AsusPceAc88Driver.squashfs


Almost there! We will now extract the content of the squashfs file into a new directory:

Code: Select all
mkdir squashdir
unsquashfs -f -d squashdir AsusPceAc88Driver.squashfs


Now we can finally extract the firmware! To do this we will use dd:

Code: Select all
dd if=squashdir/lib/modules/2.6.36.4brcmarm/kernel/drivers/net/dhd/dhd.ko skip=1269516 ibs=1 count=935317 of=brcmfmac4366c-pcie.bin


Before we continue we need to verify that the result is correct. Run the following command:

Code: Select all
sha1sum brcmfmac4366c-pcie.bin


The output should be equal to:

Code: Select all
9e5af3ce7ce9c358c773873734ffa5cdf1641de5  brcmfmac4366c-pcie.bin


If not, something went wrong. In this case delete the directory you made before downloading the firmware from Asus and repeat step 4. However, if the output is identical, we can copy the firmware file to the firmware directory. To do so execute the following as root:

Code: Select all
cp brcmfmac4366c-pcie.bin /lib/firmware/brcm/brcmfmac4366c-pcie.bin


Next, we will reload the driver. To do so execute the following as root:

Code: Select all
modprobe -r brcmfmac
modprobe brcmfmac


The card should work now! To verify, check the output of the iw list command:

Code: Select all
$iw list
Wiphy phy0
        max # scan SSIDs: 10
        max scan IEs length: 2048 bytes
        Retry short limit: 7
        Retry long limit: 4
        Coverage class: 0 (up to 0m)
        Device supports roaming.
        Supported Ciphers:
                * WEP40 (00-0f-ac:1)
                * WEP104 (00-0f-ac:5)
                * TKIP (00-0f-ac:2)
                * CCMP (00-0f-ac:4)
                * CMAC (00-0f-ac:6)
        Available Antennas: TX 0 RX 0
        Supported interface modes:
                 * IBSS
                 * managed
                 * AP
                 * P2P-client
                 * P2P-GO
                 * P2P-device
        Band 1:
                Capabilities: 0x1022
                        HT20/HT40
                        Static SM Power Save
                        RX HT20 SGI
                        No RX STBC
                        Max AMSDU length: 3839 bytes
                        DSSS/CCK HT40
                Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
                Minimum RX AMPDU time spacing: 16 usec (0x07)
                HT TX/RX MCS rate indexes supported: 0-31
                Bitrates (non-HT):
                        * 1.0 Mbps
                        * 2.0 Mbps (short preamble supported)
                        * 5.5 Mbps (short preamble supported)
                        * 11.0 Mbps (short preamble supported)
                        * 6.0 Mbps
                        * 9.0 Mbps
                        * 12.0 Mbps
                        * 18.0 Mbps
                        * 24.0 Mbps
                        * 36.0 Mbps
                        * 48.0 Mbps
                        * 54.0 Mbps
                Frequencies:
                        * 2412 MHz [1] (20.0 dBm)
                        * 2417 MHz [2] (20.0 dBm)
                        * 2422 MHz [3] (20.0 dBm)
                        * 2427 MHz [4] (20.0 dBm)
                        * 2432 MHz [5] (20.0 dBm)
                        * 2437 MHz [6] (20.0 dBm)
                        * 2442 MHz [7] (20.0 dBm)
                        * 2447 MHz [8] (20.0 dBm)
                        * 2452 MHz [9] (20.0 dBm)
                        * 2457 MHz [10] (20.0 dBm)
                        * 2462 MHz [11] (20.0 dBm)
                        * 2467 MHz [12] (20.0 dBm)
                        * 2472 MHz [13] (20.0 dBm)
                        * 2484 MHz [14] (disabled)
        Band 2:
                Capabilities: 0x1062
                        HT20/HT40
                        Static SM Power Save
                        RX HT20 SGI
                        RX HT40 SGI
                        No RX STBC
                        Max AMSDU length: 3839 bytes
                        DSSS/CCK HT40
                Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
                Minimum RX AMPDU time spacing: 16 usec (0x07)
                HT TX/RX MCS rate indexes supported: 0-31
                VHT Capabilities (0x0c1b4020):
                        Max MPDU length: 3895
                        Supported Channel Width: neither 160 nor 80+80
                        short GI (80 MHz)
                        MU Beamformer
                        MU Beamformee
                VHT RX MCS set:
                        1 streams: MCS 0-9
                        2 streams: MCS 0-9
                        3 streams: MCS 0-9
                        4 streams: MCS 0-9
                        5 streams: not supported
                        6 streams: not supported
                        7 streams: not supported
                        8 streams: not supported
                VHT RX highest supported: 0 Mbps
                VHT TX MCS set:
                        1 streams: MCS 0-9
                        2 streams: MCS 0-9
                        3 streams: MCS 0-9
                        4 streams: MCS 0-9
                        5 streams: not supported
                        6 streams: not supported
                        7 streams: not supported
                        8 streams: not supported
                VHT TX highest supported: 0 Mbps
                Bitrates (non-HT):
                        * 6.0 Mbps
                        * 9.0 Mbps
                        * 12.0 Mbps
                        * 18.0 Mbps
                        * 24.0 Mbps
                        * 36.0 Mbps
                        * 48.0 Mbps
                        * 54.0 Mbps
                Frequencies:
                        * 5170 MHz [34] (disabled)
                        * 5180 MHz [36] (20.0 dBm)
                        * 5190 MHz [38] (disabled)
                        * 5200 MHz [40] (20.0 dBm)
                        * 5210 MHz [42] (disabled)
                        * 5220 MHz [44] (20.0 dBm)
                        * 5230 MHz [46] (disabled)
                        * 5240 MHz [48] (20.0 dBm)
                        * 5260 MHz [52] (disabled)
                        * 5280 MHz [56] (disabled)
                        * 5300 MHz [60] (disabled)
                        * 5320 MHz [64] (disabled)
                        * 5500 MHz [100] (disabled)
                        * 5520 MHz [104] (disabled)
                        * 5540 MHz [108] (disabled)
                        * 5560 MHz [112] (disabled)
                        * 5580 MHz [116] (disabled)
                        * 5600 MHz [120] (disabled)
                        * 5620 MHz [124] (disabled)
                        * 5640 MHz [128] (disabled)
                        * 5660 MHz [132] (disabled)
                        * 5680 MHz [136] (disabled)
                        * 5700 MHz [140] (disabled)
                        * 5720 MHz [144] (disabled)
                        * 5745 MHz [149] (disabled)
                        * 5765 MHz [153] (disabled)
                        * 5785 MHz [157] (disabled)
                        * 5805 MHz [161] (disabled)
                        * 5825 MHz [165] (disabled)
        Supported commands:
                 * new_interface
                 * set_interface
                 * new_key
                 * start_ap
                 * join_ibss
                 * set_pmksa
                 * del_pmksa
                 * flush_pmksa
                 * remain_on_channel
                 * frame
                 * set_channel
                 * start_p2p_device
                 * crit_protocol_start
                 * crit_protocol_stop
                 * connect
                 * disconnect
        Supported TX frame types:
                 * managed: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
                 * P2P-client: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
                 * P2P-GO: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
                 * P2P-device: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
        Supported RX frame types:
                 * managed: 0x40 0xd0
                 * P2P-client: 0x40 0xd0
                 * P2P-GO: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
                 * P2P-device: 0x40 0xd0
        WoWLAN support:
                 * wake up on disconnect
                 * wake up on magic packet
                 * wake up on pattern match, up to 8 patterns of 1-128 bytes,
                   maximum packet offset 1500 bytes
        software interface modes (can always be added):
        valid interface combinations:
                 * #{ managed } <= 1, #{ P2P-device } <= 1, #{ P2P-client, P2P-GO } <= 1,
                   total <= 3, #channels <= 1
                 * #{ managed } <= 1, #{ AP } <= 1, #{ P2P-client } <= 1, #{ P2P-device } <= 1,
                   total <= 4, #channels <= 1
                 * #{ AP } <= 4,
                   total <= 4, #channels <= 1, STA/AP BI must match
        Device supports scan flush.


Feedback
Feedback is always welcome! If you have suggestions for improvements please leave a post! And please leave a post if this HOWTO helped you! It's always nice to see if a post was of help.

Credits
Special thanks:

Notice
I am also hosting this HOWTO on my own website rhees.nl.
Bliepo
 
Posts: 15
Joined: 2014-01-15 17:17

Return to Docs, Howtos, Tips & Tricks

Who is online

Users browsing this forum: No registered users and 3 guests

fashionable
cron