6 minutes
Building a Access Point from scratch
The intro
A few moons ago, when I started building out my home network, I bought an AsiaRF AW7916-NPD miniPCIe card as a way to build my own wifi router. The initial idea was to use one of my HP microservers with a miniPCI to PCIe adapter as a wifi router/homeserver combo and run everything on that manually with Debian, as the centerpiece of my home network. I quickly realized that the AW7916-NPD was so fresh of the fabrication line that the linux kernel drivers where still buggy, so after a while I gave up and went with the Banana PI R3 as a wifi router and the brain of my home network. This was also my intro into OpenWRT, which is now also officially supported on the Banana Pi R3. The AW7916-NPD was put into a drawer and shelved until I had another idea for what to use it.
The idea
When I moved around a few rooms in my rather small apartment, I realized that I needed another access point to cover the whole apartment with fast wifi, as the main router was behind two walls. Looking at buying another AP of the likes of TP-Link or Ubiquiti, I realized that I had the AW7916-NPD laying around and that I could use that as an AP, maybe even with OpenWRT. The card itself was useless as I needed a board that would support miniPCIe, so I started looking for a board that would support the card and would be small enough to fit into a small 3D printed case.
The shopping
Looking around AliExpress didn’t bring up a lot of results especially with the requirement of running OpenWRT, but I soon found the Mikrotik RBM11G, which is a small board with a miniPCIe slot and a 800Mhz CPU. The best part about the board is that it is officially supported by OpenWRT, so I ordered one and waited for it to arrive. Although the board is quite expensive and my total access point cost is basically 200€ now (AsiaRF AW7916-NPD 130€ & Mikrotik RBM11G 70€), which would have been enough for a decent AP from Ubiquiti, I was still excited to try it out.
The setup
Getting the board up and running at first was quite easy. Power it on, plug in the ethernet cable and connect to the default IP address. It was running routerOS from Mikrotik with a proper license, so I could have used it as a router, but I wanted to run OpenWRT on it. Flashing the OpenWRT image proved to be difficult and took me two days of trial and error, but I finally got it to work.
Big thanks also to Daniel Wood for his great article.
- Download both OpenWRT images to you local machine
- Run a TFTP server on your computer
- You can use TFTPd64 on Windows, make sure to run it as administrator
- Set the OpenWRT initramfs image as the boot image
- Connect the RBM11G to your computer via ethernet
- Start or power the RBM11G on & wait for the TFTP server to serve the image
- This will boot OpenWRT in RAM but won’t flash it to the internal storage
- Connect to the RBM11G via SSH, copy and flash the sysupgrade image to the internal storage
scp openwrt-ramips-mt7621-mikrotik_rbm11g-squashfs-sysupgrade.bin root@<ip-address>:/
sysupgrade openwrt-ramips-mt7621-mikrotik_rbm11g-squashfs-sysupgrade.bin
- Shutdown the TFTP server and reboot the RBM11G and connect to it via SSH
- OpenWRT should now boot on it’s own from the internal storage
- Install the necessary OpenWRT packages for the AW7916-NPD
opkg update
opkg install kmod-mt7915e kmod-mt7916-firmware
The problems
This seems to be a pretty straight forward way of flashing OpenWRT onto the RBM11G, but I ran into a few problems along the way and kept bashing my head in for a while. There are also very little ressources on the internet about the RBM11G and OpenWRT, so I hope this article will help someone in the future.
Some specific problems I had were:
The TFTP server
TFTPd64 wouldn’t work for me in the beginning, as it would always fail to serve the image to the RBM11G or assign a proper IP address to it. After a day of trying I switched to pxeserv, which also would not work in the beginning. As I haven’t been on windows in a while, I didn’t realize that I had to run it as administrator. So after running it as administrator, it worked and I could flash the initramfs image to the RBM11G. I don’t know if it would have worked with TFTPd64 as well, but I didn’t try it again.
The missing UART
There are no soldered UART pins on the RBM11G, so you can’t connect to it via UART without some work. This is a problem if you want to debug the boot process or if you want to flash OpenWRT. I tried to solder some pins to the board, but I couldn’t get it to work. I found which pins to solder in this really helpful OpenWRT issue. Only later I found out that MikroTik has deactivated the UART Bootlog in the firmware “for security reasons”, so even if you solder the pins, you won’t get any output.
GND: pin 2
TX: pin 7
RX: pin 6
0 = screw hole
* = some pin
T = TX pin
R = RX pin
G = GND pin
+---------------
|O
| __
| / \
| \__/
|
|
|
| +---+
| |RAM|
| +--+ | |
| |**| <- unpopulated header with UART
| |*T| +---+
| |R*| +--------+
| |**| | |
| |G*| | CPU |
| +--+ | |
| +--+ | |
| | | +--------+
| +--+ <- flash chip
|O
| +-----+
| | |
|+--+ | |
|| | | |
+---------------------
After flashing OpenWRT, I found out that the UART pins are actually working, so after you got OpenWRT to be loaded via the BootP/TFTP server, you can connect to the RBM11G via UART and it will happily output the bootlog.
In my case the screen command was:
screen /dev/tty.usbserial-AB0JKC9P 115200 cs8 ixoff
The generic MAC80211
After you installed the correct packages for the AW7916-NPD, you will notice that the card is not recognized by OpenWRT, but will show as generic MAC80211 802.11 ax/b/g/n (2.4Ghz) or ac/ax/n (5Ghz). This doesn’t mean the card is not working but just that the OpenWRT iwinfo doesn’t know this card and can’t display the correct information. I opened a pull request to add the AW7916-NPD to the iwinfo package, but it hasn’t been merged yet.
The result
I am really happy with the combo of the RBM11G and the AW7916-NPD. The RBM11G is a really small board and fits into a small 3D printed case, which I found here. The RBM11G is the same dimension as the RB411 and will fit into the case as well. I modded the case a bit to close the serial port off, other than that it works fine.
The performance is what I expected and is good enough for a single user office AP. Having OpenWRT as a firmware is a big plus for me as I have basically unlimited configurability and trumps everything else. I haven’t pushed to hard on the performance side of the AW7916-NPD, but I am sure it will be able to handle a few users at the same time.