Allwinner H2 Linux & Android SDK, and Allwinner XR819 WiFi Driver Released

Orange Pi Zero is an interesting little ARM Linux board thanks to its low price, but also because it features a new Allwinner H2 / H2+ quad core Cortex A7 processor very similar to Allwinner H3 minus the 4K video decoding part, as well as Allwinner XR819 WiFi module, which I have not seen on any other boards so far.

allwinner-h2-linux-android

But hardware without software is pretty much useless, so developers will be happy to find out that Allwinner H2 SDK with Linux (lichee) and Android has been released or leaked, and it also includes the Allwinner XR819 WiFi driver.

You’ll find the SDK on Zoobab server with three main directory / files:

  • Android folder – Android 4.4.2 SDK
  • lichee folder – Linux 3.4.39 source code. However you’d probably better use Linux 3.4.113 currently released by sunxi-linux, or Linux mainline. The latter does have some limitations, and may or may not be suitable for your project.
  • H2-V1.2.tar.bz2 – The tar file with both Android and lichee folder in case you want to download the full SDK on your computer

If another hardware comes with Allwinner XR819 WiFi module and you just need the Linux driver, you’ll find it in linux-3.4/drivers/net/wireless/xradio directory.

tkaiser managed to enable XR819 on armbian after disabling dhd driver:

Support CNX Software - Donate via PayPal or become a Patron on Patreon

24
Leave a Reply

avatar
24 Comment threads
0 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
9 Comment authors
WojtekRKJerrycyk Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
tkaiser
Guest
tkaiser

Really, the only interesting thing in the leaked H2+ SDK is driver/firmware for this new Wi-Fi module (which is not that great compared to 8189FTV as on older Orange Pi boards but will easily outperform every 2.4 Ghz Wi-Fi dongle while consuming less).

And there’s also not much need to fiddle around with the horribly outdated 3.4.39 kernel contained in this SDK, better use linux-sunxi community’s 3.4 sun8i kernel (3.4.113 currently and with tons of fixes) or mainline.

Already tested Orange Pi Zero with megous’ 4.7 branch (since I failed to get his 4.8 and 4.9 branches working). Combined with Martin Ayotte’s DT overlay patches almost everything already works (Wi-Fi being one exception and audio/display stuff the other). USB, Ethernet, SPI, I2C, generic GPIO stuff, dvfs/cpufreq/throttling. Everything’s already working with mainline kernel 🙂

IIRC when Orange Pi Lite was released it took Martin a day or two to port 8189FTV BSP driver to mainline. AFAIK a dev sample is on its way to him so I hope next week Wi-Fi will work with mainline kernel already. And maybe we sorted out the few remaining problems in Armbian also then and can soon switch from beta state to production.

zoobab
Guest

So much useless garbage for an “SDK”.

megous
Guest
megous

@tkaiser
In 4.8, there’s is a new sunxi-ng clock driver. You may need to enable it in comparison to 4.7 kernel configuration, to make the newer kernels work. Otherwise, everything else is quite similar to 4.7.

Also, 4.9 branch contains HDMI driver from http://moinejf.free.fr/opi2/index.html, which is pretty exciting, because that means a limited desktop experience with mainline kernel on H3.

megous
Guest
megous

@tkaiser
I’ve uploaded working configs here: https://files.megous.com/orange-pi-dvfs/

cyk
Guest
cyk

Honestly, who wants Android 4 anymore? Most likely with open stagefreight and shellshock vulnerabilities?

tkaiser
Guest
tkaiser

@megous
Thank you, highly appreciated. I first tried 4.9-hdmi and got it working but only when I used wrong DT (dvfs then failing). With correct DT used we ran in freezes with both 4.8 and 4.9.

Benjamin Hojnik
Member

@tkaiser

what about mali driver ? Would it be ever possible to get that working on a 4.9 kernel ?

tkaiser
Guest
tkaiser

@Benjamin
Well, I’m not really qualified since I don’t care about Mali at all (since it’s only necessary for OpenGL ES stuff and where’s the use case for this? Retro gaming mostly, at least that’s what http://orange314.com/RetrOrangePi is about, the only known use case for Armbian overclocking Mali400 on H3 devices 😉 )

But if I understood correctly the Mali kernel driver bits can be used with mainline kernel (out-of-tree) as long as the userland blobs are available (which might be the case or not, some are floating around but with unclear license).

Jerry
Guest
Jerry

@Benjamin
No. ARM Holdings plc doesn’t want you to be able to use it.

tkaiser
Guest
tkaiser

Orange Pi Zero booting with latest mainline kernel version: http://sprunge.us/LSUb (well, not that surprising since fortunately H2+ is just a H3 without 2 features so all the hard work done by linux-sunxi community within the last year can be used directly for H2+ too)

tkaiser
Guest
tkaiser

Breaking news: Allwinner’s H2+ is faster than the Broadcom SoC used on RPi 3 !!!1!11! https://hackaday.com/2016/11/07/orange-pi-releases-two-boards/#comment-3265290

Benjamin Hojnik
Member

@Jerry

Thats pretty pathetic. Pretty scummy of them not to provide drivers for newer kernels.

Benjamin Hojnik
Member

@tkaiser

Is it possible to get hardware accelerated desktop and video decoding without mali driver ? Eg general desktop usage.

tkaiser
Guest
tkaiser

@Benjamin
Sure, all this Mali hype is soooooo useless. You don’t need 3D acceleration for 2D and video. This whole GPU thing is most probably just the result of people misinterpreting the word ‘GPU’. On x86 systems GPU means 2D, 3D and video but on ARM it means only 3D. And since almost no software makes use of old boring Mali’s OpenGL ES (no OpenGL!) it simply doesn’t matter.

Some projects like Kodi see this differently (they want GPU support to draw the UI and if that’s not possible drop the whole SoC support) but for a normal desktop and HW accelerated video decoding (also encoding possible on Allwinner SoCs!) this Mali thingie is of exactly no use.

If you’re the type of retro gamer keen on high Quake fps then Mali is for you, otherwise it doesn’t matter that much.

But apart from that I just learned today in linux-sunxi IRC that there are more recent Mali 400 blobs around (6p0-01rel0-0581113) and useable with mainline kernel (blob provided by NextThing for the CHIP)

tkaiser
Guest
tkaiser

While porting xradio driver to mainline (more of a hack now, needs a rewrite to be included upstream) MoeIcenowy spotted that XR819 has an own ARM core. So OPi Zero is in reality a hexa core machine if we apply Allwinner marketing standards 😉

4 Cortex-A7 and 1 OpenRISC inside H2+ and most probably a Cortex-M0 inside XR819. ‘iw list’ mentions

I don’t think WoWLAN being that useful with OPi Zero since idle consumption is already pretty low but pin H2+ PG10 used on this board is there to wake up the board via WiFi from suspend to RAM. Would be interesting to measure consumption in this mode (Cortex-A7 cores being shut down, clocks halted, only OpenRISC core in H2+ active and the M0 inside XR819). Will try that later but am currently running into driver issues.

Will take some time also since I’ve to disassemble my ‘PoE powered AP’ setup first to do more precise consumption measurement while powering through Micro USB: http://linux-sunxi.org/File:OPi_Zero_preparing_Access_Point.jpg

I’m still curious how long it will take until tinkerers discover that ARM cores can be shut off on these small H2+/H3 boards and code can be executed just on the AR100 OpenRISC core. This here might help: https://github.com/megous/h3-ar100-firmware-decompiler

tkaiser
Guest
tkaiser

@megous
Megi, I’m now running with 4.9 and everything works except of thermal readouts (therefore also no throttling). Sunxi-ng clock driver is activated (I used lib/config/kernel/linux-sun8i-dev.config from github.com/igorpecovnik/lib) so maybe I just have to tweak DT? Will look into it as soon as mainline Wi-Fi driver is ready 🙂

Anyway: Did you succeed running code on the AR100? IMO this is still one of the most interesting use cases: Turning H2+/H3 boards into MCU like devices with ARM cores powered off, consuming less than 50mW while running solely on the OpenRISC core and activating the 4 x 1.2 GHz Cortex-A7 power only when really needed.

tkaiser
Guest
tkaiser

@cnxsoft
What a beast! Nonacore, that’s one core per dollar! 😉

But to be honest this little gem looks really capable, especially the new Wi-Fi chip. I saw that it also supports mesh networks, maybe I buy two more and start to play around with open80211s and stuff like that.

And regarding core count: Let’s forget about Mali and the 4 Cortex-A7. It would open up a whole world of new use cases if this board could also run with just the AR100 OpenRISC core and maybe XR819’s M0 active (low power mode). And maybe bringing up from time to time 1 to 4 A7 cores to do some fancy stuff 🙂

zoobab
Guest

@tkaiser
Do you know if the Xradio supports ad-hoc mode? Most mesh protocols works over ad-hoc mode.

tkaiser
Guest
tkaiser

@zoobab
Seems so (can’t test any further since it seems I killed Wi-Fi yesterday on this board). ‘iw list’:

Full ‘iw list’ output: https://forum.armbian.com/index.php/topic/2808-orange-pi-zero-went-to-the-market/?p=19517

RK
Guest
RK

@tkaiser

The RasPi is likely more aggressive in throttling frequencies then the Allwinner which saves power but reduces performance.

tkaiser
Guest
tkaiser

@RK
Hmm… I don’t understand what you’re saying, so just as a hint: what ‘the RasPi’ does is controlled by the firmware (or a few folks who have access to this properietary stuff and are able to adjust dvfs settings for all the millions of users out there). AFAIK you can only control one thermal treshold?

At least with Allwinner it’s more complicated: you have everything under your own control (requires some knowledge) or you have to trust. When you trust in hardware vendors (Allwinner and Xunlong in this case) you get an Orange Pi that performs low but heats up a lot (no idea why, maybe they deal differently with killed CPU cores in Android) but when you trust in community the devices should perform better.

But you can adjust this to your needs if you prefer more performance or fear high temperatures (SD card slot is right next to the SoC on OPi Zero and some people think SD cards shouldn’t exceed low temperatures for reasons unknown to me) then you can adjust the thermal trip points in so called fex files or device tree with mainline kernel. I did this just recently for OPi Zero: https://github.com/igorpecovnik/lib/commit/ed4dd944fc04f9a83461729182762cb1b409fb6a

Wojtek
Guest
Wojtek

I have created the Buildroot configuration working on Orange Pi Zero, that supports WiFi.
It is available in the usenet post https://groups.google.com/forum/#!topic/alt.sources/thi51Py7-6g
Of course I have just integrated the work of others. Many thanks to all who contributed to XR-819 support.
Unfortunately, the current driver does not support the Ad-hoc mode, which is crucial for me, as the devices should be used as nodes of the BATMAN based wireless mesh network.
Is anybody working on ad-hoc support in the XR-819?
The CW-1200 driver seems to support it.
I’ve made some trivial changes (e.g. enforced transmission of packets in the NL80211_IFTYPE_ADHOC mode in the wsm_handle_tx_data function), but it is not sufficient.

Regards,
Wojtek