Orange Pi has not released the WiFi module for the Orange Pi 5 yet which has left some people in a difficult position. While working on this problem I discovered an adapter that claimed to be able to let me use normal E-keyed WiFi adapters (commonly found in laptops and tablets) with the Orange Pi 5 using an adapter.
I received and tested the adapter and I am pleased to report it works perfectly! There are some caveats though such as you need a driver for your WiFi card within your OS (and often firmware as well).
In this guide I’ll show you how to get this working with the Orange Pi 5 using Linux. Let’s get started!
Convert a M.2 Key-E or Key A+E module (such as WiFi, Bluetooth, or Dual Band Wireless Module, etc.) to be used with M Key M.2 Socket. Supports Bluetooth and Dual Band Wireless Modules.
Links: Amazon.com*, AliExpress*, Amazon.ca*, Amazon.co.uk*, Amazon.co.jp*, Amazon.com.au*, Amazon.de*, Amazon.es*, Amazon.fr*, Amazon.it*, Amazon.nl*, Amazon.pl*, Amazon.se*, Amazon.sg*
The Orange Pi official mouse uses 2.4GHz wireless to give you a wireless mouse experience with the Orange Pi
Links: Amazon.com*, AliExpress*
The Orange Pi monitor is meant to be a portable monitor you can take anywhere. It has a resolution of 1080P and features a hinge in the back that folds out to support the monitor.
Links: Amazon.com*, AliExpress*
Custom WiFi Module (Added 1/15/2023)
The Orange Pi 5 official wireless module is designed to fit into a M-keyed M.2 slot (the only one the Orange Pi 5 has). This WiFi adapter will work with both Linux and Android.
The Orange Pi 5 only has a single M.2 slot and is it M-keyed. This is meant for storage devices typically. Because of this Orange Pi is releasing a “custom PCB” wireless adapter for the Orange Pi 5 to allow you to choose between using the M.2 slot for storage or WiFi.
Normal WiFi adapters will not fit into the Orange Pi 5’s M.2 slot basically without using an adapter. It looks like this:
When I first got the adapter I noticed that I could see all of the adapters but it was failing to load the firmware. That is because the Orange Pi 5 does not come with the linux-firmware package installed.
Install the package with:
sudo apt install linux-firmware -y
Tested WiFi Adapters
After installing the linux-firmware package the following adapters worked for me:
Before installing the Linux firmware package I would get errors in dmesg saying that the firmware was missing. After installing the linux-firmware package all of my Intel WiFi adapters became plug and play.
Best Adapter Options
Until I hear more from some of you in the comments that try this I highly recommend using Intel adapters for this. They’re easy to find and almost every one I had in old laptops was an Intel adapter.
There’s an awesome list of Linux supported adapters here from Intel. This list is specifically for the Linux iwlwifi driver and tells you which version of Linux support was added for the WiFi adapter.
The kernel at time of writing was:
orangepi@orangepi5:~$ uname -a
Linux orangepi5 5.10.110-rockchip-rk3588 #1.0.6 SMP Fri Dec 16 15:41:15 CST 2022 aarch64 aarch64 aarch64 GNU/Linux
This means that anything on the above list that is supported in kernel version 5.10 or earlier should be supported!
Diagnosing WiFi Adapter
First see what PCI devices you can see with:
Once you put the WiFi card into the adapter and start up the Orange Pi you should view the WiFi related debug output with:
sudo dmesg | grep -i wifi
This will show you all the hardware related messages related to WiFi. It often will tell you critical information such as a firmware file wasn’t loaded, etc.
You will need this information to diagnose the device if it is not working properly.
Here’s an example for my non-working Broadcom adapter:
orangepi@orangepi5:~$ sudo lspci [sudo] password for orangepi: 0004:40:00.0 PCI bridge: Rockchip Electronics Co., Ltd Device 3588 (rev 01) 0004:41:00.0 Network controller: Broadcom Inc. and subsidiaries BCM4352 802.11ac Wireless Network Adapter (rev 03) orangepi@orangepi5:~$ sudo dmesg | grep -i wifi drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd compiled on Dec 7 2022 at 10:23:12 [ 10.455031] [WLAN_RFKILL]: rockchip_wifi_get_oob_irq: Enter [ 10.455035] [WLAN_RFKILL]: rockchip_wifi_get_oob_irq: rfkill-wlan driver has not Successful initialized [ 10.455047] [dhd] dhd_wifi_platform_load: Enter [ 10.455529] [dhd] dhd_wifi_platform_load_pcie: pcie_register_driver failed [ 10.455533] [dhd] unregister wifi platform drivers [ 10.455537] [dhd] wifi_platform_bus_enumerate device present 0
Here we can see that for this Broadcom adapter it still couldn’t register the driver. It probably needs a driver that isn’t as easily available as getting it from the linux-firmware package. Sometimes the messages are a lot more helpful than this but it’s definitely the place to start if your adapter isn’t working.
Alternative USB Option
Another option is to use a USB WiFi adapter. This is a great option if you want to use your M.2 slot for something else (such as NVMe storage). I’ve tested the ODROID 5BK USB wireless adapter on the Orange Pi 5:
The ODROID 5BK USB WiFi module works plug-and-play with the Orange Pi 5 on Linux
If you know of more adapters that are working plug-and-play let me know in the comments and I can add them to the list
I highly recommend the Intel adapters since I can guarantee they will work. Even the adapters that failed to load a driver or proper firmware were all recognized in lspci.
It’s not pretty but you can snap off the edge of the board if you don’t want it to hang over the edge as much. There are perforations in the board meant to snap for shorter modules. It will still hang over a little though and won’t be a perfect fit.
This is a great adapter and great working solution to use E-key WiFi adapters in the Orange Pi’s M-key slot. I highly recommend it! Hopefully it won’t be too much longer before the official solution is released from Orange Pi.
I’ve also covered how to install Steam on the Orange Pi 5 here
Check out my Orange Pi 5 review here for more important information about the Orange Pi 5
Don’t miss my Orange Pi SSD boot guide to learn how to set up the NVMe drive as the root partition
Where/how would one install firmware for the wifi nvme module that is specifc for the orangepi with the chip model AP6275P?
Hey Boop Snoot,
Great question. So if you are using the official operating systems it’s actually in:
Then go to System > Hardware > wifi-ap6275p.
There will be an option to enable the module in there. Hopefully that helps!
Fantastic work James as I had seen these type of adaptors previously listed on the web and your review but having actual confirmation it will work and the installation guide is greatly appreciated!
Is it super convinient not really because the 2280 size sticks out like a sore thumb but for the price it will do a job until Orange Pi release a proper PCB expansion board like we see for the Pi 4 version and having variety of suitable e keyed cards is great as many can be found for cheap online.
On top of the recent ARMBIAN releases it looks like the Orange Pi 5 will be a great budget SBC (with its limited faults) but overall its a very capable device so big thank you to people such as yourself who dedicate free time testing these boards out and helping them reach their capabilities. Keep up the outstanding work!
Hey Razor Burn,
Thank you so much! I might have been live editing it while you were reading it so I don’t know if you saw this part or not in the version that you read but I actually added a bit at the end that it’s definitely not pretty! You can snap it along the perforations though to make it a lot shorter than it is in my pictures.
I left mine intact because I am legitimately impressed by the adapter and want to use it in other places/settings. If you knew for sure that you were only going to use that small size WiFi adapter with it you could absolutely break the perforations and it would still be hanging over by a little bit but dramatically less. It would basically end where the WiFi adapter does if you broke the perforations so you can kind of eyeball how much it would be hanging over still if you did break them.
It lived up to being plug-and-play. Even the WiFi adapters I have like the Broadcom one that it doesn’t have a Linux driver for I can still completely see the device in lspci (and if I had a proper driver it would work). Some of these drivers may be inside the Linux kernel and may just need to be enabled potentially. Others may have dkms packages available to build them.
This gives people some options at least. I really thought this might have been a long shot because it seemed too easy but after I read all the specifications and did the research I could tell that theoretically this should work no problem. I didn’t dare to recommend anyone buy one though until I had confirmed it. I look forward to seeing what other types of adapters people try that work with them. It won’t just be Intel ones I’m sure but those were the most easily available ones that I had.
Yeah I saw the part about snapping the extra bit off after I sent the post and like you I might just keep it as is for other applications but its a pleasant addition for those looking to use M.2 for wifi/bt with actual cards ready to use!
I’m secretly holding out hope that you discover the PCIe short comings if possible as well as workout the mess that is the USB labelling and it not working well via that USB C port but overall its coming along nicely and as more people start getting their hands on it we should see improvements or maybe I’m just being optimistic as they didn’t help themselves with the poor decisions which is why I keenly await your upcoming Radxa Rock 5B review as that seems to be what everybody was hoping to see from the RK3588 SOC and although not perfect its getting solid reviews but you’re sure to put it through its paces… Take care and keep them honest!
Hey Razor Burn,
Absolutely, I’ll definitely continue to investigate those issues for sure as well as keep them honest on the Radxa 5B!
User Miramax on the OrangePi Discord has shared a translated portion from the latest User Guide in Mandarin V0.6 which demonstrates the steps required to get wifi+bt working on Android 12 as well as a list of dongles that should work for wifi as bluetooth needs to be adapted??? Page 275-278:
RTL8821CU 2.4G/5G + BT 4.2 0bda: c820 – only wifi, bluetooth needs to be adapted… That appears to be based off the Odroid one and shows a green labelled dongle commonly found on Amazon “Chiciris 5 BT + AC600 Driver Free”
RTL8723BU 2.4G wifi + BT 4.0 0bda: b720 -only wifi, bluetooth needs to be adapted… That appears to be the blue 4.0 dongle we see as part of the bundles from Xunlong on Aliexpress
RTL8811CU 2.4G/5G Wifi 0bda: c811 – only has wifi function, already supported. The picture shows a dongle branded “GRiS” and has a detachable antenna
“Known problem: Currently, in order to be compatible with the AP6275P PCIe network card, the Android system of the TF card needs to be connected to the USB. Insert the wireless network card into the development board, and then start the Android system to recognize the USB wireless network card normally.
NVMe and SATA Android systems do not have this problem and support hot swapping.”
Now not sure why they mention the AP6275P PCIe network card as so far this doesn’t exist and they stupidly removed the onboard module but the manual does go into how to set things up and if successful search for wireless networks.
Supposedly at the end of the manual it shows how to compile Android 12 source code but again valuable information like this is missing from the English version dated 08 December 2022 and many people are still searching for different dongles to see if they actually work but now we know of 3 that support wifi but no bluetooth on Android?!
The Mandarin Manual can be found here as its originally behind Baidu.
Hey Razor Burn,
I’ve tried unsuccessfully to flash Android a few times. It’s so annoying that Android is never distributed as a file that can just be written to a disk with something like dd or Etcher. I have to use a virtual machine and USB passthrough to try and use their proprietary Windows flashing tools (which are garbage).
I think the problem I had is that the application says it’s done a long time before it’s actually finished writing to the SD card. My Android flash finished 20 minutes ago but the SD card activity indicator is still blinking. I’m going to let this one sit for a long time until it’s not blinking and then eject and hope that it actually wrote the image through my USB passthrough. I’ve said it before and I’ll say it again here though: shame on Android for requiring proprietary flashing tools to do something as simple as write an image to a SD card! I suppose worst case scenario I can use my wife’s computer to write this Android image if my USB passthrough is somehow breaking it.
As soon as I can get a successful Android flash I will definitely take a look at this. I’m definitely not sure why they’re including the ap6xxx in the source code like that. It’s probably just the default from whatever they forked the Orange Pi 5 source from.
Once I can get in though I won’t be asking Orange Pi how to add wireless drivers to Android though any more than I asked them how to add them to Linux. We have the source code so I’ll probably actually be looking at Google developer references on how to properly add an Android WiFi driver to the source and rebuild it. I’m just not as familiar / experienced with Android as Linux but this is the process I will use once I can get it going.
I can state for a fact that from working on the Orange Pi i96 Linux kernel code and how many problems / mistakes in their kernel both I and many members of the community personally fixed my confidence in their code is limited. I’m not saying this to be mean. I’m saying this because one of the big bugs I fixed in Orange Pi’s source was one of their USB ports was locked to “Full Speed” mode (11Mbps) instead of “High Speed” mode (480Mbps). This was broken like this for years and people had even submitted the fix to the Orange Pi i96 GitHub years ago (it’s still there).
Even yesterday someone asked Orange Pi on GitHub to merge my changes into the official Orange Pi repository. I’m only saying this because I don’t want it to look like I’m just sniping at them or taking easy shots as a blogger who has no clue what it’s like to really develop for these boards or write/fix the code. No. I have personally published real public code as a developer on my GitHub fixing dozens of their bugs and can tell you for a fact that their code is not impressive and neither is their maintenance of it. I think we can absolutely get this done though and fix it for Android as well.
I’ll definitely update when I have some Android news!
EDIT: The problem with my imaging for Android turned out to be the SD card. Apparently the Rockchip tool does not like SanDisk Edge or Edge-V cards (the one that came with my Pi 400). I used a Samsung EVO Plus card and it worked the first time. At least now I can start investigating the WiFi on Android!
My results for Android so far:
Both of my Intel adapters won’t even light up. The blue lights on the adapter don’t come on so those ones aren’t recognized.
The Broadcom one however that *doesn’t* work in Linux is showing:
james@pop-os:~$ adb shell lspci -k
41:00.0 Class 0280: 8086:24f3
40:00.0 Class 0604: 1d87:3588 pcieport
james@pop-os:~$ adb shell lsmod
Module Size Used by
bcmdhd 1613824 0
dhd_static_buf 16384 1 bcmdhd
r8168 528384 0
Here I’m connecting to my Orange Pi 5’s Android using adb to run Linux/Unix commands. You can see that when I do lspci there is no driver for WiFi card (41:00.0). Interestingly we do see the Broadcom modules loaded which is probably why the adapter lights up with the Broadcom (even though I can’t use it as my WiFi adapter within Android still and it’s not showing a driver attached in lspci).
I bet you anything if I had a E-key module that used a chip that was one of the 3 you listed that it would work since the wireless drivers are present (in some form, it sounds like Bluetooth isn’t working still). The Intel ones don’t even light up and when I searched for anyone using an Intel WiFi adapter with Android I couldn’t find any examples so this might just not be a thing for Intel. The Broadcom one is at least recognized but it doesn’t seem to have the right driver / firmware for the module I have here.
Since the lights will come on for the Broadcom though this is possible. It looks like the driver issues are going to be tougher to deal with in Android than in Linux. It might be as simple as changing some of the references in those files you pointed out to something more compatible with what I have for it to be usable as the Android WiFi adapter. It’s harder to find this information than I was hoping though since most Android developer documentation is software and the documentation for hardware developers is harder to find.
The Android source code appears to be 28GB (like the compressed download files). Yikes. That’s probably the next step though!
Thanks again for the dedicated work testing the the software and hardware side of things as its only been a few weeks since these boards started reaching end users and their are bound to be issues but one can’t help but think they rushed the release despite having a protoboard available for testing that they then changed to something that’s cheap but still very buggy. The fact your work on the Orange Pi i96 rekindled interest in that tiny board that its now nearly impossible to find one unless you’re willing to pay insane asking prices deserves to be celebrated so congratulations but it shouldn’t be up to you and a few supporters to fix things yet it seems the manufactures are only in the business to make a quick buck and shuffle off to the next project leaving the community to work things out which sucks but all too common from eastern manufacturers…
Sadly I’m well out of my depth’s with contributing any meaningful testing but once my adaptors and storage card arrive I will glad tryout your recommended benchmark tests and see how I go with getting the usb/s to connect to wifi and bluetooth but I read their are still many issues depending on the software version with suggestions to try out Chinese versions as these seem to have better driver support but unless you know somebody with access to the Baidu folders or rudimentary understanding of Chinese your left troubleshooting which is why its great blogs such as this exist as you guys do the heavy lifting so newbies like myself get to enjoy their shinny new play thing!
Frankly 28GB for Android source code is insane but its to be expected and I hear that the xda developers are starting to get their boards which should see improvements on the Android side to match those of the traditional linux distributions that have been making some progress. I’m not sure if you’ve seen leeepspvideo on youtube as he recently did a video installing Android on his 8GB Pi 5 with success but even he had issues with the sd card being rejected and it crashing 85% of the way through but from what he shows it looks as though this board is really meant for Android as its demonstrating great media and streaming with some issues with gpu acceleration but that’s common on the other RK3588 devices as Rockchip don’t want to share and he also has test videos of other RK3588 boards that seem to share the same issues such as not quite doing 4k60 fps as claimed and other bugs that we now see on the cheaper Pi 5.
He’s more of a Raspberry Pi guy being a Brit but he’s been impressed with the Orange Pi 5 and just shared a sneak peak of the Beta version of Orange Pi OS that’s supposedly available to the Chinese testers so its encouraging to see them working hard but time will tell if they get it stable enough to release to the western audience and judging by reports its only a small team so what can they really do that hasn’t already been fixed knowing that the RK3588 SOC is a few years old already?
I wish you continued success and await new updates with excitement as I feel that we’re almost there with many dedicated people behind the scenes frantically putting this board through its paces so good luck and take care!
Hey Razor Burn,
No problem at all, I did get the Android source downloaded and it looks like it’s about 74GB total extracted. I’m sure the xda developers people will be able to do much more with it than me as well. They are the true Android specialists!
I definitely have enough interest that I’ll keep doing some light investigation and leave the really heavy duty stuff to xda developers. I’m really excited to try Orange Pi OS for the Orange Pi 5 when it comes out.
Thanks and take care!