Picuntu and Linuxium Linux on Measy U4A Android dongle

Measy U4A is a typical Android HDMI dongle. This one and many more are made in China in great quantities and in low prices. Just check you local stores, ebay or Chinese shops like dx.com. Such dongles when attached to a HDMI TV or display and powered will run Android allowing you to watch videos, play music, browse the web and what not.

Android gives a lot of apps but it's not Linux. Makers/hackers/developers often want to use a small embedded PC for some other tasks and would really want to have plain Linux instead of Android. The dongle I've picked is one of dongles based on a quad core RK3188 SoC. This one is quite popular and there are various development tools for Rockchip based devices. There are also Linux distributions that can be installed on them (Picuntu) or booted from SD card (Linuxium). So in this article I'll give a quick look at the Measy U4A dongle with Android 4.4.2 and then I'll go to installing and testing Picuntu and Linuxium.

Measy is one of better known brands in the dongle business. They offer a wide range of such devices and accessories. U4A dongle is good, but it's not a latest model. It has 1 GB or RAM while newer come with 2GB. Aside of that it has the same RK3188 SoC, USB host and HDMI connectors. The RK3188 used well known quad core Mali 400 GPU unit (MP4) which can handle some less demanding games and a lot of multimedia.

By default the dongle was sold with Android 4.2, but now Android 4.4 is available as an upgrade that you can install on it using a PC and some apps (more on that later). Cheapest RK3188 dongle on dx.com is priced at around $50. If you want to install Picuntu or Linuxium on it be sure to pick the one that has a recognizable name and there are reports on the web about installing one of those distributions on them. Less known dongles may have some differences that can make it harder to install or run those Linux distributions on them (like for example unsupported wifi module).

There are newer dongles based on Amlogic S802 with much more powerfull Mali 450 and soon there will be RK3288 with even more computing powers. The Amlogic SoC isn't compatible with Picuntu or Linuxium although there are tutorials on how to install Linux on such devices. I'll stick to RK3188 here.

The dongle I got (second hand) was already updated to one of Android 4.4.2 ROMs. It offered basic apps, including Google Play and SuperSU. I've run some benchmarks and installed few other apps just to check how it's working. In Antutu it got 13463 points, which is quite good for a such device. In Futuremark Ice Storm Unlimited got 2637, and Ice Storm Extreme 1951 (18 and 10 FPS). Vellamo in multicore benchmark gave 1057 points, 478 in Metal benchmarks and 1219 in browser benchmarks.

The system was quite responsive, no lags or other issues were found during this short usage. One thing was strange - the OS was configured to save energy and unneeded cores were shutdown. In some cases like starting a move at start the playback was bit slow but after few seconds it would be normal. Other dongles I played with didn't had such behavior (or it was unnoticeable).

What surprised me was FTDI UART support out of the box. Such UART devices are used by some USB devices like GPS dongles or RFID readers/writers. The most important usage is providing a USB interface in some microcontroller boards - like pyMCU. I could connect to that board using one of Android apps for serial communications, but still in QPython I got permission problems as QPython application didn't asked for the USB permissions like the serial apps did.

Picuntu is a Linux distribution that supports dual core RK3066 devices and quad core RK3188 devices. It replaces the Android installed on the device.

There is a compleate installation package with Picuntu 4.5 and all the Windows applications needed to install it on the device. For Linux users there is rkflashkit application that can burn Picuntu system images from that package onto the device. For MS Windows you will have to install Rockchip USB drivers first, and then use the applications provided in the package.

Extract the archive and go to rk_flash_1_37 and run RKAndroidTool. The application will report that the device is missing. You have to connect the dongle using the USB OTG port with the PC. The device must be connected in recovery mode for it to work. In most cases the device will have a small hole for this where a metal pin, needle can be used to push a small button inside. You have to connect the device to the PC while having that button pressed. When you do so the RKAndroidTool will see the device (at first Windows will try to match the drivers).

By default RKAndroidTool will have all partitions selected to burn. Pick only: loader, parameter, kernel, boot, system. Click Erase NAND and then Flash ROM. That will start the Picuntu installation on the dongle. It may take few minutes. After that you can disconnect the device.

Connect the dongle to the display, connect power and in few moments you should get Picuntu booted and ready for action. The user is picuntu and the password is 12qwaszx.

Depending on dongle the WiFi module may or may not work. In the case of Measy U4A it did work. Most Android hardware doesn't full hardware support mainlined into the official Kernel or uses binary blobs and other nasty stuff that works best under Android. In the case of RK3188 devices we can run Linux on them but not everything will perform as good as on Android - for example video acceleration (VPU support). Mali 400 3D acceleration is also not easy to get. You can forget about performance available on weak x86 integrated graphics. In many cases it will be much worse.

On the bright side things that do not need GPU magic will work quite nicely, like LibreOffice start quickly and doesn't lag when using it. Linaro-Ubuntu repositories provide quite rich package collection.

Some other Mali 400 devices, like Radxa Rock or Cubieboard, Cubietruck single board computers do have OS images with full Mali 400 acceleration enabled. Those seems to perform bit better, but still not that much better and with the same multimedia limitations.

To get some performance numbers I've run Phoronix benchmarks to compare it against Raspberry Pi, Odroid X2, Cubieboard and others. You can check the first and second set of benchmarks. You can also run comparison benchmark on you PC.

Here are few results from those benchmarks:

C-Ray, pybench an Pi calculation

RAMSpeed and mp3 encoding

RK3188 is quite close to Samsung Exynos 4412 found in Odroid X2. Picuntu is noticeably slower in RAM speed, but that may vary between dongle model. Old single core Raspberry Pi and PcDuino are much much slower.

We can also look at Chromium GPU acceleration under chrome://gpu URL:

Canvas: Software only, hardware acceleration unavailable

Compositing: Hardware accelerated

3D CSS: Hardware accelerated

CSS Animation: Accelerated

WebGL: Hardware accelerated

WebGL multisampling: Hardware accelerated

Flash 3D: Hardware accelerated

Flash Stage3D: Unavailable. Hardware acceleration unavailable

Texture Sharing: Hardware accelerated

Video Decode: Software only, hardware acceleration unavailable

Video: Hardware accelerated

Panel Fitting: Unavailable. Hardware acceleration disabled.

Force Compositing Mode: Unavailable. Hardware acceleration disabled.

Linuxium is a combination of Android ROM and a bootloader with support of booting additional OS from a bootable SD card. So in comparison to Picuntu we can have Android on NAND and Linux on bootable SD/MicroSD card. Installation is described in linked forum thread as well as on Google+. Download bin.7z archive, extract it and flash images using RKAndroidTool just like we did with Picuntu. After that you should get a working dongle with Android. To get Linux on SD/MicroSD you will have to burn it on that SD card using different tools (dd under Linux) or scripts provides with given image. Under Linux it would be:

dd if=linuxium-ubuntu1204-desktop-rfs.img of=/dev/SD_CARD_DEVICE_NAME bs=4M

And when it ends run sync and you are done. The device name will be next /dev/sd* device (like /sda will be you HDD and after plugging the SD card sdb will show up) or /dev/mmcblk0 and alike.

when you put the SD card and boot the dongle you should be able to pick an option (usually 1 ) to boot Linuxium Linux from that card. In the OS there is linuxium user with password p. Root has no password and you can set it if needed (sudo passwd root).

On Measy U4A the Xubuntu boots from SD card, but the Android does not run correctly. It was designed for Rikomagic devices and in my case I got a black screen with not very responsive interface.

Linuxium Xubuntu may look better but it works just like Picuntu. The OS is in an old version and it prompts to update to 13.10 Saucy Salamander. Using do-release-upgrade in terminal I've updated it to that version and one more time to update it to current 14.04 Trusty Tahr. First upgrade did work, the second one ended with few X.org packages with a dependency conflict (so not fully configured system in the end). That may have some negative implications as the OS did seem to be less responsive.

Chromium in 12.04 was in 31.0.1650.63 version and reported:

Canvas: Software only, hardware acceleration unavailable

Compositing: Hardware accelerated

3D CSS: Hardware accelerated

CSS Animation: Accelerated

WebGL: Hardware accelerated

WebGL multisampling: Hardware accelerated

Flash 3D: Hardware accelerated

Flash Stage3D: Unavailable. Hardware acceleration unavailable

Flash Stage3D Baseline profile: Unavailable. Hardware acceleration unavailable

Texture Sharing: Hardware accelerated

Video Decode: Software only, hardware acceleration unavailable

Video: Hardware accelerated

In Trusty Tahr it was at 34.0.1847.116 and reported the same thing, although without listing few options. The Kernel doesn't upgrade and we are stuck with 3.0.36+.

I've made some benchmarks for Linuxium before and after upgrade. As you can see the upgrade did affect X.org as x11perf results were lower after upgrade. Nginx benchmark get a better result, while other didn't change noticeably.

Linuxium multi-booting idea is quite handy. Sadly not all hardware performance is available under Linux. I assume that on Intel Atom based tables that should look much better. There are also AMD low power SoCs but they aren't available now in such devices. If Rockchip wants to put incoming RK3288 in Chromebooks it ought to provide better classical Linux/X.org support for its chips... unless they will make it more closed project.

For makers/hackers such Linux running on a very cheap dongle may be quite handy It has 1-2GB of RAM, has four CPU cores and should handle webcams (with OpenCV?), and other USB devices (like microcontroller boards). The dongles are quite small unless you need those bigger ones with Ethernet and multiple USB ports.

There is also Radxa Rock development board. It costs more than the cheapest dongles but it gives dual Android/Linaro Xubuntu OS configuration, WiFi, Ethernet, and GPIO ports not to mention some other smaller goodies and full Mali 400 support.

RkBlog