I have a bad habit of testing things whenever a “good” idea pops into my head. This is a short overview of one of them.
The Orange Pi Zero is a SBC (single board computer) that has a slow 32-bit ARM 4 core CPU, 512MB of RAM and no display output. It’s actually quite OK for many tasks, such as reverse proxy (assuming 100Mbit/s is enough for you), low-performance NAS (assuming you are fine with 10-12MB/s file transfer speeds) or a Syncthing relay. Oh, and you can also turn it into a Wi-Fi access point.
Because Armbian made it really easy to test out and I was interested in seeing what kind of performance an old USB Wi-Fi dongle could offer. This cheap AP could also come into handy in situations where my main access point dies for some reason.
Go to the Armbian device page for your SBC and download the latest image, then write it to your microSD card using the tool of your choice, start your SBC and finish the initial setup.
After all that is done, start
armbian-config as root. This tool allows you to do many things over a terminal UI, including
a no-hassle method of setting up an Wi-Fi AP.
The option you are looking for is under
Network -> Hotspot.
Follow the on-screen instructions to set everything up. After the initial setup is done, make sure to navigate to the same menu again to change the SSID and the Wi-Fi password because the defaults are horribly insecure.
After all this you should be good to go!
Issues and troubleshooting tips
It would not be a proper project if something didn’t go wrong in the process.
Before starting this configuration, run
ip a to see if your Wi-Fi device is present. In my case the Orange Pi Zero also
has onboard Wi-Fi, but that particular one has poor support, so I use an USB Wi-Fi dongle instead.
If your Wi-Fi device is not showing up, make sure that the correct firmware is present. In my case I had to install
firmware-atheros package so that my
ath9k_htc based Wi-Fi adapter would start working.
lsusb -v can help determine
what chip your Wi-Fi adapter is using and what driver it needs.
The Orange Pi Zero that I have could set everything up, but it would crash hard with the logs not really showing much.
After testing the USB Wi-Fi adapter in all the different USB ports with no success, I opted to use
System -> CPU
to limit the CPU clock speed to 480MHz and set the CPU governor to
performance to rule out power delivery issues that might be caused by
variations in CPU power usage. That seems to have done the trick, because after that change the Wi-Fi AP has been rock solid.
Testing and conclusions
After setting it up and tweaking it a bit I started testing this thing out. The AP had no major issues throughout the day and did not crash.
The performance, however, isn’t anything to write home about. Speed maxes out at 30Mbit/s and is generally lower than that, especially when more than one client is connected. You can do things like Steam Remote Play (stream your game over your home network), but the quality will suffer. It was still quite fun to mess around in GTA V regardless of the image quality and during ~1h of play time there were only 4-5 stutters that were caused by the network.
Would I use this as my main Wi-Fi access point?
Definitely not. Any half-decent router will out-perform this setup.
Can it still be useful?
Definitely. A crappy Wi-Fi AP is better than no AP.
- Orange Pi Zero SBC (512MB RAM)
- Orange Pi Zero expansion board (adds two USB 2.0 ports)
- Cheap case for the Orange Pi Zero
- 32GB Sandisk microSD card
- TP-Link WN-722N USB Wi-Fi adapter
- Official Raspberry Pi microUSB power adapter
It’s still working and is happily serving as a temporary Wi-Fi access point.
During additional testing I could also hit 40 Mbps speeds when testing in an environment with far fewer competing Wi-Fi access points nearby.
It’s still running well and it seems that it won’t be a simple temporary solution after all.
Update (2020-11-30, approximately)
This setup has now been retired. It had 0 issues throughout its lifespan as a Wi-Fi access point, but I replaced it with a more standard Wi-Fi access point so that this board can be used somewhere else.
The setup did surprisingly well and even survived nightly automated updates and restarts, which can be attributed to the good work that the Armbian project has done.