1

I am in the process of creating some access points and have bought three RPi2.

Before this purchase I've followed this tutorial and managed to create an AP. For that I used 1 Raspberry Pi 2, Raspbian Jessie (date 150505) kernel 4.1.13-v7+ (using uname -r) and a Asus USB Adapter Model USB-N53. Everything worked really fine and I went out to but 3 more RPis.

The stores didn't have 3 more of the same Asus USB adapter, so I bought three other from Asus in hope of that they would work out of the box just like the first one I tested.

The three adapters are:

  • Asus USB-N53_B1
  • Asus USB-AC56
  • Asus USB-AC51

None of them work using the drivers already installed (nl80211) but it worked great with the first adapter (Asus USB-N53).

Now I've been trying to get this to work for an entire day but without luck. I'm not that good at Linux in general, but from what I've understand, I need to install other drivers to make these adapters work. I have tried both drivers from Asus webpage (selecting Linux as OS) as well as drivers such as a fork of the Realtek 802.11ac (rtl8812au) v4.2.2 which is altered to build on Linux kernel v >=3.10.

The first problem I encountered was that I got an error similar to this (Note that I have kernel version 4.1.13-v7+). When I go to /lib/modules and then ls this is the result: 4.1.13+ 4.1.13-v7+. None of these folder have a build folder in them, so I get an error when doing make using any of the drivers.

So now I continued to try to fix that problem, going further down the rabbit hole. After reading even more threads I understood that the drivers can't be compiled if I don't also compile myself a new kernel. Please stop me if this is overkill and I've got this all wrong.

So I read up on compiling a kernel on RPi (can't link which ones, I don't have enough rep for >2 links) and also found Raspberry Pi's GitHub page.

To try to wrap this up: I have yet not been able to get these listed WiFi adapters to be listed by the Raspberry when checking ifconfig or ip list. All of them are, however, listed using lsusb.

This is the output for lsusb for all the adapters (same order as above):

  • Bus 001 Device 010: ID 0b05:180b ASUSTek Computer, Inc.
  • Bus 001 Device 011: ID 0b05:17d2 ASUSTek Computer, Inc.
  • Bus 001 Device 012: ID 0b05:17d1 ASUSTek Computer, Inc.

I guess my questions are:

  • Am I on the right track?
  • Are these adapters even possible to be used with the RPi? I have seen the the elinux.org RPi USB Wi-Fi Adapters page has the USB-AC51.
  • How come the Raspbian Jessie build does not have a build folder? Is this folder even needed? (are there other workarounds when using make perhaps?

Thank you for all kinds of help! Right now I feel very much beaten by something that is very small...

2 Answers 2

1

You will have to build the drivers from source. I was able to get an Asus USB-AC51 working on an old rpi today (2014 model). I do not have the other devices available but expect the solution will be the same.

The rest of this answer will describe compiling and installing the ac51 driver.

The driver source for AC51 ASUS wifi usb device is available on ASUS site: https://www.asus.com/ca-en/Networking/USBAC51/. File name is UT_USB_AC51_3001_Linux.zip

You should check that site for the other devices you mentioned.


Driver Compilation:

Download kernel headers for pi via apt-get install raspberrypi-kernel-headers. Then extract the driver package.

Root of driver package contains instructions on configuration. Follow them carefully.

  • Additionally I had to make 2 small source code changes where an int was changed for a struct containing an int. You will see these lines when you try to compile. Also had to add a couple "-Wno-error="s.

Driver installation:

Once make succeeds, run make install and reboot device.


At this point the device should appear as ra0 in ifconfig and be usable.

1
  • cameron, did you change maybe IEEE80211_NUM_BANDS by something? I am getting the following error: /include/cfg80211.h:35:49: error: 'IEEE80211_NUM_BANDS' undeclared here (not in a function); did you mean 'IEEE80211_NUM_TIDS'? struct ieee80211_supported_band Cfg80211_bands[IEEE80211_NUM_BANDS];
    – CarlosYev
    Oct 23, 2018 at 13:18
0

I don't have any of these specific adapters but I do use an rtl8812au Edup adapter which uses the same chipset as the USB-AC56 I think and it took a few attempts to get through the installation.

ASUS is kind enough to have a download which sounds like you grabbed. The key you are looking for is you need to install the kernel-headers package specifically for raspberry pi using apt (apt-get install raspberrypi-kernel-headers). As of this answer 4.9 kernel headers are available (beginning a couple of days ago). Actually you just need to match the version of the kernel-headers to the version of the kernel you're running. But if you're like me and you run bleeding edge then that will be 4.9.

OK, so you now have the kernel-headers which will allow you to build kernel modules. Deep down in the driver download package (untar a bunch of crap to something like RTL8812AU_linux_v4.3.13_14061.20150505/driver/rtl8812AU_linux_v4.3.13_14061.20150505) and you'll see a Makefile. On Raspberry Pi I always have to do export ARCH=arm && make. Otherwise if ARCH is unset I think Makefile will parse uname which will be something like armv6l and won't compile or won't find the kernel-header sources.....or something.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.