Orange Pi 2G IoT board was released a couple of weeks ago, shortly followed by Android and Ubuntu images, but since it was not based on Allwinner, but an RDA Micro 8810PL processor, we did not have any source code so far, which can be a real problem for a development board… Shenzhen Xunlong has now managed to upload a 6.7GB Android SDK to MEGA, with the link published via Orange Pi Resources page.
sudo apt install megatools
Once the download is done, none of the files have extension, but the first file is a gzip compressed files, while others are just raw data, so I concatenated all 6 files into a gzip file before uncompressing it, at which point I realized it was a tar file too:
OrangePi_2G-IOT00: gzip compressed data, last modified: Fri Apr 14 11:11:49 2017, from Unix
cat OrangePi_2G-IOT00 OrangePi_2G-IOT01 OrangePi_2G-IOT02 OrangePi_2G-IOT03 OrangePi_2G-IOT04 OrangePi_2G-IOT05 OrangePi_2G-IOT06 > OrangePi_2G-IOT.gz
OrangePi_2G-IOT: POSIX tar archive (GNU)
tar xvf OrangePi_2G-IOT
The company has made it unnecessary difficult for that part, but I was finally successful, and that’s what the content of the SDK looks like.
The Android SDK relies on Linux 3.10.62, and I’ve been told while the Android part is quite poor, the Linux part looks better, even though the version is not quite the latest. U-boot source code is also included, and part of the 2G modem code can be found in the modem directory.
I got the news through ParrotGeek1 who plans to rebase the code to Linux 3.10.105, and release a Debian image. He has setup a RDA8810 github account (update September 21. 2018: now deleted, see comments) with the Linux kernel. So you’ll have to be patient, or join the fun to get a better Linux image. There’s no clear roadmap for Orange Pi 3G-IoT or 4G-IoT based on other RDA Micro processors, but that would certainly help motivating a few more people if such boards were planned.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
43 Replies to “RDA Micro RDA8810 Android SDK with Linux & U-boot Source Code for Orange Pi 2G IoT Board Released”
*rebase to 3.10.105
And the code’s not there yet. If you look, the branches are all the same
You should also add that there are absolutely no proprietary blobs or GPL violations in the whole kernel!
Their Wi-Fi driver is significantly worse then all of the other kernel code and smells of being ported from Windows CE. It will be made into a separate repository to be fixed.
Also about 3G iot or 4G iot, RDA only seems to make a 3G processor, the RDA 8850. They don’t have a 4G processor in their roadmap nor code.
I’m having significant issues with their WiFi driver, it keeps crashing the board. I’ve only been able to connect it once using tethering from my phone (would crash when trying to connect to my home router) and only _after_ setting up the audio (that didn’t work, at least for me). But setting up audio, then WiFi to my Android phone in tethering mode worked .. once.. now I’m trying to replicate this on a second board and it no longer works.
If anyone else is wondering, removing alsa-utils and all its dependencies made WiFi work … don’t ask me why but I now have a stable WiFi connection. The magic command was “sudo apt-get purge –auto-remove alsa-utils” – it appears the audio driver is crappy and crashes the board. Without it, it works just fine. I have no need for sound here.
CNX — create a random, new gmail account which comes with 7GB free storage, then push this up to the associated G-Drive. Free, fast distribution for all!
Also — there is zero need to push these 7GB snapshots of Android around. All you need is the delta from whatever public Android release this is based on. Those deltas usually compress down to a few hundred MB. Pine is using this technique to distribute Android source, do you hear anyone complaining about Pine downloads?
Nothing beats MEGA for download speed though, at least in my location, but I only found out about the transfer limit yesterday. The limit is apparently gone if you use command line tools.
U-boot sources (require 4.9.x arm-linux-gnueabi soft float toolchain) mirrored: https://github.com/zador-blood-stained/u-boot-orangepi2g
The ‘full’ SDK seems to contain some funny things (eg. full or partial libMali.so sources) so it might be worth to mirror the tarcall even for people who are not interested in RDA at all.
Do you play around with Xunlong’s ‘0.5 Ubuntu server’ image?
What makes you think there are libmali sources there?
That’d be nice if the Linux kernel and u-boot were kept in two repo in the same account. Edit: I can see zador-blood-stained has both.
Some hints somewhere else and looking through the contained readme files, eg. https://pastebin.com/zbrgpA56 (I’m not going to extract this tarball, just threw it in an archive)
Yes, I’m trying to make the Ubuntu Server 0.5 image work (thought it would be a good start, I’ve only received the boards yesterday). WiFi appears to work ok now (with sound disabled) but I couldn’t find a way to access the GSM/GPRS radio at all (I do get 3 serial ports – ttyS0 (console) and two others, ttyS1 and ttyS2 but none appear to respond to any AT commands at any speed).
I’m guessing some sort of driver is needed to expose the 2G modem but I honestly have no clue where to start with that.
I have found the exact point where the Android official kernel was 3.10.62, forked it, and started to clean and compare RDA code to the original. Currently there are (excluding the WiFi driver) about 280 files added and 90 files changed from official kernel, after reverting a lot of Android kernel_common patches. I have also reverted a large number of changes from RDA’s backport of newer ubifs and zram and kernel same page merging.
Before I upload it I am going to put all of their machine specific changes behind #ifdef CONFIG_ARCH_RDA.
Here are some of the things I am trying to figure out with the kernel:
Why does the sound driver break wifi? It seems like a problem specific to this OS image… In Android it would be so immediately noticed that RDA would have to fix it!
Relatedly, the sound driver is a giant pile of redundant, although well structured, code. I’ve started working on this already.
What is going on with the MTD subsystem? They have made dozens of patches to apparently round transfer lengths to a multiple of some value. Is this even necessary?
USB appears to be limited by a patch to musb driver, to USB 1.1 host mode but 2.0 device. Why? A hardware bug?
There are a few more things, but I typed this on my phone so I’ll add them later.
Well, if you follow the first link above in the comments there you find some impressions from looking at this OS image (eg. bash history confirming that this userland has been already used on OPi Zero too). I’ve two of these boards now lying around but won’t touch them until at least a clean OS image can be built. Still hoping that interested parties join development efforts now that an SDK is available (see the github link above).
Just FYI: github.com/igorpecovnik/lib/commit/e1f6b953437a3491933ce078f172601695ffc0c8
Here it is:
Thank you for your effort! Please let me know if you’d like me to test anything.
Regarding the sound/WiFi interference, it’s not that the sound driver kills WiFi, it kills the entire board! On first boot, the sound driver is not loaded and I can mess around and do the initial WiFi setup, etc. However, on second boot, I get a kernel panic in the sound driver and the board stops working. So the first thing I did on subsequent tries was to remove alsa-utils on first boot and now it’s stable.
For the modem part, there appears to be a module for GSM access under vendor/3rdparty/misc/driver_test/test_mdcom . It’s supposed to expose 3 serial ports
ttyRda0 – AT command channel
ttyRda1 – Sys command channel
ttyRda2 – Trace channel
I don’t have a working toolchain (yet) to compile it, maybe @parrotgeek1 would like to give it a try.
Thank you (again)!
Oh, if anyone’s interested, USB doesn’t work either in their Ubuntu Server 0.5 image… it doesn’t detect anything plugged into that port, not even a bus-powered 4-port USB hub. I have the feeling that nobody at Xunlong has actually tested that image (other than a first boot…).
i cant get serial console on ubuntu img
Suspending console(s) (use no_console_suspend to debug)
I only get that message when booting Android from the internal NAND. Are you sure you are booting Ubuntu? Ubuntu should switch to 115200bps as it boots up, if you get console output at 921600bps continuously, you’re booting Android from internal Flash, check the boot source jumper and make sure that the SD card is seen (it’s very picky, I was only able to make it work with a 2GB card).
Armbian booting on this board: https://pastebin.com/AwN5bJ5i
Will you do the boring job to throw in all the patches/commits to get the kernel version up to 3.10.105?
Thanks for the help, without knowing that it is necessary to disable the audio could not have used the card. I have managed to connect to the GSM modem: /dev /modem0, i use Orange Spain and almost have it configured, this afternoon I will try to finish it. I have done this tutorial thais is based in others tutorials fron the web:
Great work! I had not noticed /dev/modem0 and /dev/modem1 … feeling kinda silly now … I kept looking for the ttyRda* devices mentioned in Android. I am able to talk to the modem now, thank you!
I have configured a GSM data conection witch Freedompop, this is a GSM modem and is necesary to enable it before conect to carrier:
can u do sms with this gsm? i always failed to do at+cmgs with this gsm
AFTER the audio driver works without kernel panic
where is this image that you are using?
Can you get a log of a kernel panic when you try to use alsamixer
Sorry, I did not even try to boot this board. Someone else used the WiP configuration in Armbian’s build system to let a preliminary OS image build. More information where I got the boot log from: https://forum.armbian.com/index.php?/topic/3232-orange-pi-2g-iot/&page=2
Has anyone here being able to build modem.img? For whatever reason it tries to build /modem-2g instead of /modem-dualmode-2g and ask for MIPS cross compiler.
Is that caused by the RISC cores?
.2 MODEM FEATURES
♦RDA RISC Core 32×32 bits
♦16/32 bit instruction set
♦4KB I-cache and 4KB D-cache
lBase Band CPU (BCPU)
♦RDA RISC Core32x32 bits
♦16/32 bit instruction set
♦1KB I-cache and 1KB D-cache
♦GSM/GPRS Dedicated accelerators
♦RF Interface (RF IF)
♦DigRF interface for communication with the integrated transceiver
♦EGPRS class 12
♦Quad bands integrated transceiver
♦Integrated RF transceiver, Saw-Less, only needs external PA.
♦Digital low-IF receiver
♦Direct modulation transmitter
♦Integrated VCO, loop filters, etc.
♦DigRF interface between digital baseband and transceiver
♦RF FEM control
lVoice and Modem codec
♦Supports HR, FR, EFR, AMR voice codec
♦Integrated microphone bias
♦DTMF and Comfort Tone generator
♦4 samples In and Out Fifos
♦I2S / DAI Interface
♦Serial Input / Output at 8/16 ks/s
♦Can be used for test purpose in DAI mode
♦Audio Interface To ABB
♦13 bit RX Data from audio ADC
♦16 bit TX Data to stereo DAC
Has anyone managed to re-build this? Can you share the recipe? Was this modem-2g or modem-dualmode-2g?
As an update to my earlier post, I was able to enable USB Host by switching all the tiny DIP switches next to the USB host adapter to ON (1-8, all in the up/ON position). However, either this setup is wrong or there’s a driver issue – the device plugged into the port doesn’t appear to work correctly (it gets power and is listed in lsusb but I cannot interact with it at all and when I remove it, the board doesn’t notice (it continues to list it in lsusb ) ). Even inserting a new device doesn’t trigger a refresh, it still lists the old one. Any idea what the correct position is to enable USB host? Page 6 of their schematics shows the correct setup but the comments are in Chinese :(.
Did some one know that is this i search alot but i dont find and solution about this problem can some one help me please
Thanx in andvance
[ 938.337219] [RDAWLAN_ERR]:: ss_list[ 945.387207] [RDAWLAN_ERR]:: ss_list[ 952.437194] [RDAWLAN_ERR]:: ss_list->count ==0
WLAN should be a WiFi error. I would guess the error is shown because it can’t find any access points. Maybe that’s normal where you are… You will probably not find what the problem is through a web search. Instead look for RDAWLAN_ERR in the source tree, and study the code to find out.
hi @cnxsoft can you delete the link to rda8810 github, we gave up
Done. Sad it did not work out.
Hi I recently got a 2g-IoT board and I have tried all different kinds of linux images (official latest images from their website, old version of images from archives, other peopl’s custom images form forums for ubuntu/debian/armbian) on it, but it doesn’t boot up at all. I I don’t connect USB-serial port to the board the LED turns on but I can’t tell if anything else is happening. If I connect serial port after LED turns on, sometimes I get a few garbage characters on Putty, and sometimes nothing at all. If I connect the USB-serial cable before connecting power, the 8810PL chip gets hot but nothing else happens. Can someone please help me troubleshoot this? At this point I don’t even know if the board itself is broken, I am using wrong images or I am doing something else wrong.
Also, I can boot the board using Android. I have an LCD screen but the touch function is completely unusable. Only thing this has told me that the board at least boots up if I use the android image. In the serial terminal I get a continuous stream of random garbage values. I have tried every possible serial port speed settings but the result is the same.
I am using a 5V 3A power adaptor that the seller said should work with raspberry pi and orange pi boards. I am using 8GB class 4 sdcard. What else can I try, or is there any way to tell for sure if the board is broken?
If you get random garbage values in both Linux and Android that’s usually because the baud rate speed set in your computer does not match the one from the board.
Alternatively, it could be Tx and Rx are inverted. Normally, the TX pin of the SBC must be connected to the Rx pin of the debug board, and vice-versa.
I’ve checked various baud rates and I’ve also tried inverting the tx/rx pins. Everything gives the same response. My board version is Z.19.10 2G-IoT v2.0
The baud rate should be 921600. Better try with Android first since it boots.
I’ve done it with Android. It at least boots up, but that’s the best I have to say about it. The LCD touch is completely unreliable, and I get continuous random values in the serial port no matter what baud rate I try.
Let’s say software support on Orange Pi 2G-IoT is not optimal, so it does not surprise me some features are not working.
But Linux should at least boot, and the serial console work, so it could be the board is faulty after all. I’m not sure what else to try.
It turned out the serial message problem was because my USB-serial port did not support 3.3 V mode operation. There’s apparently other problems with this board as well, but for the seial port message part, it worked as soon as I used a new USB-serial device that supports 3.3V. Thank you for your help.
I’m wondering if the board itself is faulty but I have also seen tens of forum posts where people have described that each board shows different behaviour. My main problem is the board does not even seem to boot up, while lots of forum posts that I have seen are about people having problem with the wifi or sound. Other forum posts seem to show they are at least getting something legible in the serial port, while I’m not getting anything, so I can’t tell if I’m the one doing something wrong or if the board is broken.