It’s been nearly ten days since I make ODROID-XU3 Lite unboxing, and my plans to first test Linux on the board were thwarted due a problem with HDMI. Luckily, after several attempts I managed to boot the board with Android. So today, I’ll show how to install or update Android on the board, and run a few benchmarks. But since there’s always a silver lining, I’ll start buy writing a bit about the HDMI issue, as I learned a few things on the way.
HDMI Output Tribulations
ODROID-XU3 Lite looks like a nice and powerful kit, and it may be one of the most cost effective ARM board on the market since it comes to performance to price ratio, so I was excited to try it, but as you know if you’ve read my unboxing post I did not work quite as planned, as all I got was a black screen on my HDMI TV.
Here are some of the steps I followed to try to find out the cause or a workaround.
I usually connect the HDMI cable to an HDMI switcher as it’s more convenient to me. I got the connection light on the switcher but no image. Some devices won’t work with the switcher, so I decided to connect it directly to my Panasonic television instead, trying HDMI1 (DVI) and HDMI2 ports, but the result remained the same. I also connected the UART Debug board I got with ODROID-X board, and I could only see three lines related to HDMI in the log:
root@odroid:~# dmesg | grep -i hdmi [ 0.417692] [c6] hdmi-en: no parameters [ 2.753215] [c7] exynos-drm exynos-drm: bound 14530000.hdmi (ops hdmi_component_ops) [ 4.787478] [c6] hdmi-en: disabling
So I tried with a Philips monitor, a slowly dying Samsung TV. Same results. So I decided to try with another micro HDMI cable, which I got with the older ODROID-X board. Still no luck. I was also instructed to try this Ubuntu image on a fast micro SD card, and after changing the boot switch position, the board booted from the micro SD “successfully”, but I still had a black screen. I also play around with boot.ini in the micro SD card to force various HDMI modes, but It did not work either.
Hardkernel decided to send me another ODROID-XU3 Lite board, and a few days later I tried again, and unfortunately I got the same issue. The company told me they sold several thousand ODROID-XU3 boards, and they did not get the same report before, so we even considered shipping my TV to Hardkernel office in South Korea. But, since I had troubles with three monitors/TVs, I thought it must have been another issue, and I wanted to try a few other things.
In the meantime, one reader informed me he had a similar issue with his ODROID board, the reason being the ground was not connected in the HDMI cable,and he fixed it by connecting one of the USB host port of the board to his TV. So I tried with both my ODROID-XU3 Lite board, but the problem persistently remained. Out of desperation I also tried a different power supply (SMPS), but it did not work.
Finally, I flashed Android 4.4.4 instead to the eMMC module, and using the “new” micro HDMI cable I got the same black screen, but switching to the “old” ODROID-X micro HDMI cable, I could finally get video output at 720p60, and see the Android home screen. Yeah!!! So finally, it looked like an HDMI cable issue, but there may also be a software issue, as Android works, but Ubuntu does not work (yet). It’s something I’ll have to check again.
I talked with one of Hardkernel’s developer on #odroid IRC channel, and they told me some HDMI cables lack a ground connection, and/or lines are mixed. They’ll check with their supplier(s) to make sure the problem does not occur again. There’s actually an interesting thread on odroid forum that explains various issues related to HDMI (cables).
Installing and Setting Up Android on ODROID-XU3 (Lite) Board
There are three images to install Android 4.4.4 Alpha on ODROID-XU3 (Lite), which can currently be downloaded @ http://dn.odroid.com/5422/ODROID-XU3/Android/:
- android-4.4.4-alpha-1.3-emmc_installer-odroidxu3-20141105.img.zip – Zipped image to install Android from eMMC to eMMC
- android-4.4.4-alpha-1.3-sd2emmc_installer-odroidxu3-20141105.img.zip – Zipped image to install Android from micro SD card to eMMC
- android-4.4.4-alpha-1.3-sd_installer-odroidxu3-20141105.img.zip – Zipped image to install Android from micro SD card to micro SD card.
Since I have an eMMC pre-installed with Linux, and the microSD eMMC reader, eMMC I used the first image. I connected the eMMC reader to my PC using my USB card reader’s micro SD slot, and unzipped the image, and flashed it as follows:
unzip android-4.4.4-alpha-1.3-emmc_installer-odroidxu3-20141105.img.zip dd if=android-4.4.4-alpha-1.3-emmc_installer-odroidxu3-20141105.img | pv | sudo of=/dev/sdX bs=1M sync
where X is the letter for the eMMC drive. Check with lsblk command before you run dd, to make sure of the letter, or you may wipe out the data on your hard drive. Some system with built-in micro SD slot may show as /dev/mmcblk01 instead of /dev/sdX. If you want to boot from micro SD card, the procedure is the same, but use the “sd_installer” image instead. You can also do that in Windows using Win32DiskImager.
Now connect the eMMC to the board, and other item you may need. I’ve connected most ports with a USB 3.0 hard drive, a USB 2.0 webcam to the USB 3.0 OTG port via the blue adapter, HDMI to my TV, Ethernet, two USB RF dongle, a Bluetooth dongle, a USB flash drive, and the serial debug board to access the console.
Finally I connected the 5V/4A power supply to boot the board. In the console, it takes about 12 seconds to boot to the command line, but I had to wait a total of 1 minute 20 seconds for Android user interface to be displayed on my TV screen. I noticed in the console that between 12 and 65 seconds I did not get any message, and the first subsequent message was related to USB audio… My USB webcam comes with a built-in microphone, so I disconnected it, and boot time dropped to a more normal 29 seconds.
The default resolution is 1280×720, and my TV output resolution was also set to 720p60. So I went to Android Settings->Display, and… wait… nothing there to change the video output. You actually have to go to the list of apps.
There should can change the (framebuffer) resolution to 1280×800 (for ODROID-VU only?), 1280×720, or 1920×1080, and the HDMI phy, i.e. the actual video output mode. to 720p 50/60, 800p/59, 1080i 50/60, or 1080p 30/50/60. You can also select the orientation (portrait / landscape) which is very useful for digital signage applications. So I selected 1920×1080, and 1080p60, clicked on Save, and Apply and Reboot. The framebuffer resolution was properly changed, but for some unknown reasons, my TV will always fall back to 720p60. The Android image is currently in Alpha stage, so it still have a few bugs that will be fixed by Hardkernel and/or the community.
You may have noticed Google Play Store is not part of the pre-installed apps. That’s because in theory you need to have a certified device to install Google Mobile Services, and contrary to most Chinese vendors, Hardkernel rightly followed Google’s T&C. However, apparently nothing legally prevents the user from installing GMS by himself/herself. You could do so by downloading Gapps from goo.im, but there’s also GAppsInstaller_kitkat.apk that will easily and automatically do that for you. For full details read universal 1 click gapps installer for ODROID post.
So that’s all for the setup. Next time Hardkernel announces a new Android firmware update on their forums, you should not need to use an installer image, instead you can simply start ODROID Update app, which will automatically download and update the firmware.
ODROID-XU3 Lite System, Storage, and Network Benchmarks
Before running actual benchmarks, I’ve started CPU-Z. The first surprised that is it can detect big.LITTLE configuration with four Cortex A7 cores @ 1.6 GHz, and four Cortex A15 cores @ 2.2 GHz. ODROID-XU3 Lite is supposed to have Exynos 5422 processor but clocked at a lower frequency (1.8 GHz) compared to ODROID-XU3 board (2.2 GHz). So maybe my processor is overclocked, or I got lucky. The GPU is also detected correcly as being an ARM Mali-T628. Internal storage is only shown to be 1.94 GB out of the 16GB eMMC, because there are two partitions with the other one having a 11GB+ capacity. So let’s get to the actual benchmark results, starting with Antutu 5.3.
As expected ODROID-XU3 Lite is a real beast with 45,815 points in Antutu, being one of the most powerful ARM Android platform currently available. It’s the highest verified score I’ve ever got on all the devices I tested. The only higher score was achieved by Tronsmart Draco AW80 mini PC with Allwinner A80 SoC (49,657 points), but it’s an unverified score.
ODROID-XU3 Lite got 9,256 points in Quadrant way ahead of last generation devices. It looks like Quadrant us not really up-to date so that’s probably the last time I use this benchmark.
Vellamo 3.1 scores are also very good. Metal score is 1,519 against 1,138 points for Allwinner A80 and 1,457 points for Rockchip RK3288, Multicore score is 1,449 against 1,352 points for Allwinner A80, and 2,003 points for RK3288, and the ODROID-XU3 Lite gets 2,868 points in the browser score against 2,109 points for Allwinner A80, and 2,549 points for RK3288. It does not make much sense for the quad core Cortex A12/A17 RK3288 to outperform the octa core Cortex A15 + A7 processor in the multi-core benchmark, and I’m not sure why that is. You can get comparison with other platform with the screenshots for Metal, Multicore, and Browser tests.
I’ve also tried to run 3DMarks Ice Storm Extreme to compare with A80 and RK3288, but unfortunately none of my three attempts could complete, either because of a kernel panic, or a problem with Mali driver (See log). So I switched to Ice Storm Unlimited test which runs at 720p, and could complete with a score of 15,184 points. That puts it close to flagship devices like like the iPhone 6 Plus, Samsung Galaxy S5, which score between 16,000 and 18,000 points.
Beside standard benchmarks, I’ve also tested storage and network performance.
I used A1 SD benchmark to test the eMMC module, my class 10 SD card, and USB 3.0 + NTFS performance. The app also made the system unstable with kernel panic ensuing, but after a few tries I could complete all benchmarks.
ODROID-XU3 Lite is clearly ahead of the competition with its USB 3.0 port when it comes to NTFS read speed which reaches 47.90 MB/s. and that’s the only device that supports USB 3.0 type of performance, although not quite as good as as on my PC (100+ MB/s), but it was with another benchmark tool (Bonnie++) in Linux.
I’ve included both eMMC and a class 10 micro SD card used with ODROID-XU3 Lite in the chart above (ODROID results on right side), and for some reasons the eMMC 5.0 module only got 47.02MB/s read speed, which is very good but still far from the 180+MB/s advertised with another benchmark. Write speed (32.42 MB/s) however is much faster than any other platforms tested so far. The class 10 micro SD used as comparison reads at 34.26 MB/s and writes at 10.81 MB/s which is not too bad compared to most other solutions.
ODROID-XU3 is capable of great I/O performance as we’ve seen above, so it would be nice if we had a fast network interface to leverage fast I/Os. Hardfkernel does provide a USB 3.0 to Gigabit dongle, but it was not included in my kit, so I’m limited to the 10/100Mbit interface which is shown to provide a good transfer rate with iperf (Command line: iperf -t 60 -c 192.168.0.104 -d).
Client connecting to 192.168.0.106, TCP port 5001 TCP window size: 212 KByte (default) ------------------------------------------------------------ [ 6] local 192.168.0.104 port 54914 connected with 192.168.0.106 port 5001 [ ID] Interval Transfer Bandwidth [ 6] 0.0-60.0 sec 656 MBytes 91.7 Mbits/sec [ 4] 0.0-60.0 sec 631 MBytes 88.2 Mbits/sec
So overall, ODROID-XU3 Lite has outstanding performance in almost all aspects, but Android 4.4.4, which is still considered Alpha, required some more work to make it stable. There’s also an Android 4.4.2 image which may be more stable (TBC).
Android SDK for ODROID-XU3 (Lite)
I haven’t tried the SDK this time, but with each firmware release, Hardkernel provides a BSP.
To get and build the latest source code, you simply need to type these four commands, provided you’ll already setup your build machine for Android development:
repo init -u https://github.com/hardkernel/android.git -b 5422_4.4.4_master repo sync repo start 5422_4.4.4_master --all ./build.sh odroidxu3
If you want the code for a specific release, for example November 5 release (Android 4.4.4 Alpha 1.3), the repo init command line would become:
repo init -u https://github.com/hardkernel/android.git -b 5422_4.4.4_master -m manifeset-5422_4.4.4_v1.3
With the other three commands remaining the same.
That’s all for today, and Android. The next step will be to check out Ubuntu / Linux. If you are interested in this board, you can purchase it directly from Hardkernel, or through distributors like Ameridroid (USA) or Pollin Electronics (Germany).