In order to compile the driver, the base development package must be installed. This can be skipped if the package was already installed during the ArchLinux setup. To install the package, run:
# pacman -S base-devel
The version of the kernel header files to compile the driver against must match the version of the kernel that is currently running on the BBBs:
# uname -a Linux mybeaglebone 3.8.13-35-ARCH #1 SMP Thu Sep 25 20:15:28 MDT 2014 armv7l GNU/Linux
This device is running 3.8.13-35.
Now verify that the correct version of the headers is available in the repository. We use am33x as a search string, because that is the BBB’s processor type.
# pacman -Ss am33x core/linux-headers-am33x-legacy 3.8.13-35
Here, a matching version of the legacy headers is available. If the only package headers available are for versions newer than the one you are running, then you need to update your kernel first:
# pacman -Syu # reboot
We can now install the header files and scripts for building am33x kernel modules. We will use
wget to download the driver’s PKGBUILD file, so let’s install it as well:
# pacman -S linux-headers-am33x-legacy wget
Build & Install Kernel Module
Now acquire the PKGBUILD for the AX88179 driver and unpack it:
# wget https://aur.archlinux.org/packages/as/asix-ax88179-dkms/asix-ax88179-dkms.tar.gz # tar -xvf asix-ax88179-dkms.tar.gz
By default, the ARM processor architecture is not enabled in the PKGBUILD. We have to enable it manually by adding
armv7h to the existing architecture setting:
# cd asix-ax88179-dkms # nano PKGBUILD arch=('i686' 'x86_64' 'armv7h')
Save the file and close nano (press ‘Ctrl+X’ and ‘Y’).
Finally, the driver module can be compiled:
# makepkg -s
-s will automatically pull in any required package dependencies. You can append
–asroot when compiling as the root user (not recommended).
After compilation finishes successfully, the module can be installed:
# pacman -U asix-ax88179-dkms-x.xx.x-x-armv7h.pkg.tar.xz
Plug the adapter and Ethernet cable into the BBB, then reboot the device:
After the BBB rebooted, check the system logs for any problems:
# dmesg | grep ax88179 [ 2.396519] usbcore: registered new interface driver ax88179_178a [ 122.760539] ax88179_178a 1-1:1.0: usb_probe_interface [ 122.760562] ax88179_178a 1-1:1.0: usb_probe_interface - got id [ 123.067981] ax88179_178a 1-1:1.0 (unregistered net_device): MAC [00-50-b6-0f-21-9d] [ 123.069435] ax88179_178a 1-1:1.0 (unregistered net_device): Monitor mode = 0x64 [ 123.079976] ax88179_178a 1-1:1.0 (unregistered net_device): mtu 1500 [ 123.082341] ax88179_178a 1-1:1.0 eth1: register 'ax88179_178a' at usb-musb-hdrc.1.auto-1, ASIX AX88179 USB 3.0 Gigabit Ethernet, 00:50:b6:0f:21:9d
Everything looks good. Now bring up the link:
# ip link set eth1 up
At this point we can set up a static IP address for the network interface, or we can do a quick connectivity test by acquiring an IP address via DHCP:
# dhcpcd eth1 # ifconfig
Verify that the network interface received a valid IP address.
To enable DHCP permanently, create a systemd configuration file for the interface:
# nano /etc/systemd/network/eth1.network [Match] Name=eth1 [Network] DHCP=both
If you ever need to remove the package, you can do so easily via
# pacman -R asix-ax88179-dkms