Mali GPU accelerated Qt5 on Ubuntu 18.04

Ubuntu 18.04 Bionic comes with Qt 5.9.5 by default.
But, Canonical has built it without considering the ARM Mali GPU detection and Qt5 didn’t work on Ubuntu 18.04 at all.
So we have to build the Qt5 source code manually.

Here is a quick and dirty build guide. I tested on the latest XU4 Ubuntu 18.04 Bionic image.
Update.
sudo apt update && sudo apt upgrade && sudo apt dist-upgrade
Install build-depends and source code.
sudo apt build-dep qt5-default
apt source qtbase5-dev
cd qtbase-opensource-src-5.9.5+dfsg
Edit a file for correct detecting the ARM’s Mali GPU.
Line 86 : src/platformsupport/eglconvenience/qxlibeglintegration.cpp
to : if (vendor && (strstr(vendor, "Vivante") || strstr(vendor, "ARM"))) {
from : if (vendor && strstr(vendor, "Vivante")) {
Another file should be edited to avoid a compile error. I wasted several hours to find this simple solution.
src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevice.cpp
http://code.qt.io/cgit/qt/qtbase.git/commit/?h=dev&id=9a640e7bc67b0a1ff5c61c63703b669e6f24521e
Create two symlinks for proper OpenGL-ES detection. This fix will be included in the next update probably.
sudo rm /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0
sudo rm /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0
sudo ln -s /usr/lib/arm-linux-gnueabihf/mali-egl/libmali.so /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0
sudo ln -s /usr/lib/arm-linux-gnueabihf/mali-egl/libmali.so /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0
Build Qt5
sudo dpkg-buildpackage -b
I met this error when I ran it on a SSH session.
Project ERROR: QtDBus is enabled but session bus is not available. Please check the installation.
When I built it on the Mate desktop terminal instead of the remote ssh access, the build had no issue. It is still not understandable.After 2~3 hours of boring build time, the “debian packaging” failed due to a missing PGP key.
But all the Qt5 libraries with examples were generated correctly and I could install them with sudo make install command.Qt-OpenGL example works beautifully now.

 

We will test the stability and functionality for a couple of weeks.
If there is no critical issue, we will release it officially.
 
Feel free to post your idea on the forum thread.
 
A few interesting Qt5 base applications for Linux users
 
OpenCV (Open Source Computer Vision Library) is an open source computer vision and machine learning software library.
Qt5 framework is used with OpenCV for image processing visualization as well as interactive user interface.

Calligra : It offers a comprehensive set of 8 applications which satisfies the office, graphics and management needs.
Word, Presentation, Spreadsheet and many more. Simply run “sudo apt install calligra-libs” command to play with it.


 
 
Calibre : It is a powerful and easy to use e-book manager.
Simply run “sudo apt install calibre” command to read tons of great e-books.
Stellarium is a free open source planetarium for your computer.
It shows a realistic sky in 3D, just like what you see with the naked eye, binoculars or a telescope.

Running “sudo apt install stellarium” is enough to enjoy the virtual sky on your ODROID-XU4.

Krita is a professional and open source painting program. It is made by artists that want to see affordable art tools for everyone.
Unfortunately, Krita for ARM platform in Ubuntu 18.04 PPA was broken and it will be fixed by Canonical soon. It is available in Ubuntu 16.04 PPA only.

Ubuntu 18.04 for ODROID-XU4

  • We’ve proudly released a new Ubuntu 18.04 image for XU4 series with many useful features. This LTS version will be supported until April of 2023.
  • Ubuntu 18.04 LTS Bionic Beaver with Mate Desktop
  • Kernel 4.14.37 LTS (the latest LTS Kernel version at this moment)
  • OpenGL ES 3.1 and OpenCL 1.2 drivers for Mali T628MP6 GPU
  • X11 armsoc display driver with full-screen VSYNC implementation
  • Kernel header package is improved to support the DKMS driver build
  • FFMPEG with hardware accelerated H.264 decoder
  • SDL patched with OpenGL ES Support
  • GPU accelerated Chromium browser
  • Kodi 17.6 playback 1080p/60fps H.264 files without tearing
  • CPU performance-counter feature works with big and little cores for more efficient HMP program development
  • WiringPi and other GPIO/SPI/I2C/ADC/IRQ tinkering libraries are available
  • KVM feature is ready to run
  • Docker feature is ready to run
  • And many other features

 

Very powerful ARM streamline performance analyzer feature was included too.

 

You can download the OS image from this link.
https://wiki.odroid.com/odroid-xu4/os_images/linux/ubuntu_4.14/20180501

We want to test this image with our forum members for a couple of weeks.
After fixing some issues, we will prepare a minimal image too.

ODROID-C2 and C1 Ubuntu 18.04 images will be available in early June hopefully.

SuperTuxKart on ODROID-XU4

Karts. Nitro. Action! SuperTuxKart(STK) is a 3D open-source arcade racer with a variety characters, tracks, and modes to play.
SuperTuxKart is a free kart racing game. It focuses on fun and not on realistic kart physics.

Recently, STK developers updated their source code to support the OpenGL-ES 3.x and we can play the nice game on the ODROID-XU4 natively.

Let’s try to compile the source code and build it! This instruction was tested on the official Ubuntu 16.04 image version 20171212.
If you are an OGST image user, simply install it with “apt-get install supertuxkart-odroid”.

1. Install required packages to build the source code.

sudo apt install git build-essential cmake libbluetooth-dev libcurl4-gnutls-dev libfreetype6-dev libfribidi-dev libgl1-mesa-dev libjpeg-dev libogg-dev libopenal-dev libpng-dev libvorbis-dev libxrandr-dev mesa-common-dev pkg-config zlib1g-dev libtool subversion

2. Download the latest STK source code from the official Github.

git clone https://github.com/supertuxkart/stk-code stk-code

You have to download the game assets too from SVN. It took quite long time.

svn co https://svn.code.sf.net/p/supertuxkart/code/stk-assets stk-assets

3. Apply a patch to fix the color depth issue and OpenGL ES 3.x support.

cd stk-code
wget -O supertuxkart.patch https://pastebin.com/raw/ZpB2CjZy
patch -p0 < supertuxkart.patch

The patch was made by @AreaScout forum member.

4. Compiling

mkdir cmake_build
cd cmake_build
cmake .. -DUSE_GLES2=1
make -j8

Compiling took around 30 minutes.

5. Test and install
Run the game with this command since 720p mode shows much better performance than 1080p.

DISPLAY=:0.0 ./bin/supertuxkart --screensize=1280x720 --fullscreen

You can install your build system-wide:

sudo make install

OpenGL ES 3.x shows more detail and beautiful 3D rendering than 2.0. Look at the racing circuit floor.

OpenGL ES3.x
Image

OpenGL ES2.0
Image

References.
Source code : https://github.com/supertuxkart/stk-code
Discussion   : https://forum.odroid.com/viewtopic.php?f=98&t=29319
deb package : https://forum.odroid.com/viewtopic.php?f=91&t=29366

How to control ODROID-XU4 Cooling fan

ODROID-XU4 CPU has four 2Ghz big cores and four 1.4Ghz LITTLE cores.

It also has six GPU cores as well as 2GByte DRAM on the SoC with a package on package(PoP) process.

So this tiny SoC power consumption can be up to 10 Watt and it generates a lot of heat.
Therefore, we had to attach a cooling fan to the SoC to minimize the thermal throttling.
Exa_fan_comvec_cmyk_300.jpg
 
Once the system boots, the cooling fan runs at full speed by the u-boot(bootloader) initialization code.
When the Linux Kernel runs, the thermal management driver controls the fan speed automatically.
There are three threshold points 60°C, 70°C and 80°C.

Trip point 0 1 2
Temperature 60°C 70°C 80°C
Fan speed 120 180 240





The fan speed value is connected to 8bit(0~255) PWM control register.

When the SoC temperature is lower than 60°C, the fan doesn’t rotate.

If you need to adjust the temperature threshold values, just modify the thermal control nodes in sysfs.

For example, if you want to set trip point 1 to be activated at 30°C, you can just write a value on them.

$ echo 30000 | sudo tee /sys/devices/virtual/thermal/thermal_zone{0,1,2,3}/trip_point_0_temp
$ cat /sys/devices/virtual/thermal/thermal_zone{0,1,2,3}/trip_point_0_temp
# results
30000
30000
30000
30000

Then the fan starts spinning at 30°C.

If you want to do that automatically, write some code in the /etc/rc.local file.
Copy the following codes and paste.

# Target temperature: 30°C, 50°C, 70°C
TRIP_POINT_0=30000
TRIP_POINT_1=50000
TRIP_POINT_2=70000

echo $TRIP_POINT_0 > /sys/devices/virtual/thermal/thermal_zone0/trip_point_0_temp
echo $TRIP_POINT_0 > /sys/devices/virtual/thermal/thermal_zone1/trip_point_0_temp
echo $TRIP_POINT_0 > /sys/devices/virtual/thermal/thermal_zone2/trip_point_0_temp
echo $TRIP_POINT_0 > /sys/devices/virtual/thermal/thermal_zone3/trip_point_0_temp

echo $TRIP_POINT_1 > /sys/devices/virtual/thermal/thermal_zone0/trip_point_1_temp
echo $TRIP_POINT_1 > /sys/devices/virtual/thermal/thermal_zone1/trip_point_1_temp
echo $TRIP_POINT_1 > /sys/devices/virtual/thermal/thermal_zone2/trip_point_1_temp
echo $TRIP_POINT_1 > /sys/devices/virtual/thermal/thermal_zone3/trip_point_1_temp

echo $TRIP_POINT_2 > /sys/devices/virtual/thermal/thermal_zone0/trip_point_2_temp
echo $TRIP_POINT_2 > /sys/devices/virtual/thermal/thermal_zone1/trip_point_2_temp
echo $TRIP_POINT_2 > /sys/devices/virtual/thermal/thermal_zone2/trip_point_2_temp
echo $TRIP_POINT_2 > /sys/devices/virtual/thermal/thermal_zone3/trip_point_2_temp

Reboot and check if the changes applied well or not.

If you want to change the fan speed values in trip points, modify this system node.

/sys/devices/platform/pwm-fan/hwmon/hwmon0/fan_speed

You can check current fan speed scaling.

$ cat /sys/devices/platform/pwm-fan/hwmon/hwmon0/fan_speed
# results
0 120 180 240

You can adjust these values by writing value set to the file.
If you want to make your fan more aggressively, you can write like below.

$ echo "0 204 220 240" | sudo tee /sys/devices/platform/pwm-fan/hwmon/hwmon0/fan_speed
# results
0 204 220 240

If you want to do that automatically, write some code in the /etc/rc.local file.
Copy the following codes and paste.

# Target fan speed (PWM): 0, 204, 220, 240
echo "0 204 220 240" > /sys/devices/platform/pwm-fan/hwmon/hwmon0/fan_speed

You can also control the fan speed fully manually.

# Set fan to manual mode
$ echo 0 | sudo tee /sys/devices/platform/pwm-fan/hwmon/hwmon0/automatic
# Set speed to 100%
$ echo 255 | sudo tee /sys/devices/platform/pwm-fan/hwmon/hwmon0/pwm1

 

If you need further information, refer this WiKi page.
https://wiki.odroid.com/odroid-xu4/application_note/manually_control_the_fan#fully_manual_way_to_control_the_fan_speed

Android 8.1 Oreo for ODROID-XU4

Voodik has been porting Android 8.1(based on LineageOS 15.1) for ODROID-XU4 from last October.
Finally, he has released the first Alpha version for Debug Party.

oreo.jpg

What works
– Hardware accelerated GPU driver for 3D rendering
– Hardware accelerated VPU/MFC driver for video playing
– Ethernet
– GPS receiver
– USB sound card
– WiFi (including AP mode)
– Bluetooth Source mode
– Navigation bar

Known issues
– Bluetooth Sink mode doesn’t work.
– Some problems with Play Store(when App download stuck with “Download pending” message, just kill Play Store from recent apps and open again).
– Also not all ODROID specific features are ported at this point (e.g. Mouse wheel to zoom etc). Works in progress.

Antutu benchmark score looks great.
AnTuTu_7.x_Oreo_Performance.png

Feel free to join the Debug party.
Development thread: https://forum.odroid.com/viewtopic.php?f=94&t=28622
Kernel source Github: https://github.com/voodik/android_kernel_hardkernel_odroidxu3_beta/tree/lineage-15.1_5422

oreo.jpg

 

Newer LTS Kernel for ODROID-C2

We’ve used Kernel 3.14 for ODROID-C2 almost two years.
Originally, version 3.14 was an LTS(Long Term Support) Kernel.
But it reached End of Life in late ‘2016.

From late last year, we’ve internally tested 4.14 LTS and 4.16 mainline Kernel on the ODROID-C2 platform.
Basic functionality was acceptable including the GPU 3D acceleration.
But there was no hardware video acceleration(VPU) driver in the mainline kernel yet.
Therefore, we couldn’t enjoy 2K/4K videos and we have to wait until the VPU driver is implemented in Kernel 4.18 or 4.19.
You can monitor the mainline kernel development status in this forum thread.
https://forum.odroid.com/viewtopic.php?f=135&t=22717

In late January ‘2018, a forum member ‘scpcom’ posted an amazing news about very promising LTS Kernel port.
He made a tons of great patches against vanilla Kernel 3.16. Almost everything worked out of the box including GPU and VPU on ODROID-C2.
You might be disappointed with such Kernel version number.
But this 3.16 LTS will be updated until April 2020 by official Linux maintainers.
Yes! Its life cycle is longer than 4.9 as well as 4.14.

Our members also joined the Kernel 3.16 Dev party and we’ve implemented many missing drivers and fixed a lot of issues.
Finally, we uploaded the source code into our official GitHub after re-base the latest 3.16.55 .
You can download the Kernel 3.16 LTS source from this branch.
https://github.com/hardkernel/linux/tree/odroidc2-v3.16.y

There was a critical issue with mmap/ump drivers which crashed OpenGL-ES applications from time to time.
Yesterday, the great user “scpcom” has fixed the very complicated problem again.
If you want to see this amazing story, please visit this forum thread.
https://forum.odroid.com/viewtopic.php?f=140&t=29735

We have a plan to update Kernel to 3.16.56 with other minor bug fixes within a week.
If you are willing to test the newer LTS Kernel, please join the development thread.

I hope we can see Ubuntu 18.04 image in May or June with the actively managed 3.16 LTS Kernel.
Really appreciate scpcom‘s hard work. His Kernel development skill has been very impressive.

The Next ODROID!

Introduced in 2014, the Samsung Exynos5422 used for the XU4 is still very competitive against other single board computers.
We currently plan to keep producing the XU4, HC1, MC1 and HC2 with continuous Kernel update for a few more years.

Many forum members are inquiring about a new ODROID board, and the time to talk about the next ODROID has arrived.
The major features requested are:
–    Faster CPU
–    More DRAM memory
–    Faster GPU
–    Faster storage IO
–    More Linux friendly

We have internally evaluated the S912, RTD1295, and RK3399 in 2017.
Only the RK3399 meets the requirements from our community and will be used as the basis of a new ODROID.
We call it ODROID-N1. The “N” stands for Next.

ODROID-N1 key features:
–    Rockchip AArch64 RK3399 Hexa-core processor
–    Dual-core ARM Cortex-A72 2Ghz processor and Quad-core ARM Cortex-A53 1.5Ghz processor, big-LITTLE architecture
–    Mali-T860MP4 GPU, support OpenGL ES1.1/2.0/3.0, OpenCL 1.2
–    4Gbyte DDR3-1866 RAM, Dual channel interface for 64bit data bus width
–    2 x SATA3 port, native SATA implementation via PCIe-gen2 to SATA3 interface
–    eMMC 5.0 (HS400) Flash storage and a UHS capable micro-SD slot.
–    2 x USB 3.0 host port
–    2 x USB 2.0 host port.
–    Gigabit Ethernet port
–    HDMI 2.0 for 4K display
–    40-Pin GPIO port
–    OS: Ubuntu 18.04 or Debian Stretch with Kernel 4.4 LTS, Android 7.1
–    Size: 90 x 90 x 20 mm approx. (excluding cooler)
–    Power: 12V/2A input (Attaching two 3.5inch HDD requires a 12V/4A PSU)
–    Price: US$110 (To be adjusted based on DRAM market price changes)
–    Mass production schedule: TBD

In the next several days, we will send 30 pre-selected members of our community a free N1 engineering sample board to test. We call it a “Debug Party”.
We hope that mass production will begin in May or June if the “Debug Party” is successful.
However, if the N1 board is not affordable, or there are too many unresolved issues then mass production will be delayed.
If there is enough demand, we can consider an ODROID-N1-Lite model.  It will have 2GByte RAM and omit the SATA ports at a $75 price point.

N1 block diagram and GPIO pin maps

 

CPU and DRAM performance
We have run a few basic benchmark tests on N1 with Ubuntu 18.04 nightly build.

All cores
When we ran UnixBench with all the CPU cores in parallel. The performance was not significantly different from XU4.
If your application software uses all the cores in parallel, the performance difference between XU4 and N1 will likely be minimal.

Single, Big Core
The single core Nbench and memory-bandwidth benchmark show a larger difference in the ODROID-N1 performance.
Due to significant improvements in the newer ARM architecture, the N1’s Cortex-A72 CPUs are much faster than the XU4’s Cortex-A15 CPUs.
When we ran the same benchmarks with only one big-core, we see this in the results. Therefore, we can say A72 is 20~30% faster than A15.

Single, Little Core
The FPU performance in A53 is much better than A7, as expected.

Thermal Throttling Characteristics
There will be two different N1 models. One will have an active heatsink while the other will have a passive heatsink like the previous ODROID-XU4 and ODROID-XU4Q.

We ran some thermal tests with the following conditions:
Big Cluster – Cortex-A72, 1.992Ghz 2cores (Performance governor)
Little Cluster – Cortex-A53, 1.512Ghz 4cores (Performance governor)
Fan – ODROID-XU4 Fan
Heatsink – ODROID-XU4Q Heatsink
Default test time – over 30 min

Test Case 1: Stress test with a passive cooler

•    Blue – Big cluster frequency : 2Ghz clock downs to 1.8Ghz or 1.6Ghz from time to time due to the thermal throttling
•    Red – Temperature (maximum : 81.6 °C, minimum : 47.5 °C, Average : 74.5 °C)

Test Case 2: Stress test with an active cooler fan

•    Blue – Big cluster frequency: 2Ghz stock frequency doesn’t change.
•    Red – Temperature ( maximum : 55.5 °C, minimum: 43.3 °C, Average: 53.6 °C)

If you want to keep run your heavy software continuously, consider using an active cooling fan.
Otherwise,  a passive heatsink should be enough for many use cases.

GPU performance
The N1’s GPU is 1.5~1.8 times faster than XU4’s.
XU4 has six shader units while N1 has four, but the N1’s Mali-T860 has a much more advanced architecture than XU4’s Mali-T628.
We ran the Android Antutu 3D GPU benchmark on XU4 and N1 with the same 1080p resolution for the comparison.

SATA interface performance
There are two native SATA3 ports on the N1 board. The SATA3 interface is implemented using 1 x PCIe link in the RK3399.

Two SATA3 storage devices can connect to the N1 board via standard SATA data and power cables.  The PCIe host can be configured in Gen1or Gen2 mode.
When we ran the IOZONE test with a SSD, we could get around 380MB/sec with Gen2 mode even though we expected more than 450MB/sec.
We suspect that the SoC internal bus connection has a bottleneck. Further investigation is needed to find any room for improvement.
Despite this, 380MB/sec is not a bad number in the ARM SBC world.

USB 3.0 Performance
As expected, the JMS578 UAS bridged SSD showed around 380MB/sec transfer speed just as on the XU4 board.

Gbit Ethernet Performance
With the iperf test, we achieved the expected Ethernet performance results. All the ODROID boards consistently have over 920Mbps of bidirectional transfer speed.

Samba/CIFS network storage performance is also reasonably fast with a HDD/SSD on the SATA ports.

Linux Support
We tested Linux platform support with Debian Stretch 9.3 in addition to Ubuntu 18.04 nightly build.
Because Ubuntu 18.04 is still under very active development (tons of updates every day), we decided to wait until Canonical’s official release in late April before supporting it.
Therefore, our “Debug Party” will use Debian instead of Ubuntu for the initial few months.

LXDE based simple Debian runs quite well.
Mali T860 GPU runs with r13p0 driver on X11.  The “es2gears” OpenGL-ES2 test application works with ~60FPS due to VSYNC.

1080p video playback on Youtube in Chromium Browser is also accelerated with well-implemented VDPAU and V4L2 video codec drivers and libraries.
VPU acceleration on Gstreamer and VLC seems to be a high possibility too.

WebGL GPU acceleration on Chromium Browser is also working reasonably well.

Linux Kernel version
We’ve ported and tested Kernel 4.14 as well as 4.4.  The latest Kernel 4.14 works fine except for some VPU/GPU driver glitches.
Due to this, we may keep using Kernel 4.4 until Rockchip releases a stable 4.14 BSP.  Kernel 4.4 LTS will be maintained until Feb, 2022 by Greg Kroah-Hartman.


“Debug Party”

The engineering sample gift box will contain the following items:
– N1 board (4GB RAM + SATA + Active Cooler)
– 16GB Orange eMMC with pre-installed Debian image.
– 12V/2A PSU with proper AC power cable for your region.
– SATA power cable
– Laser cut acrylic case for evaluation. (We will design an official case based on community member’s feedback later)

Known issues in the engineering sample PCB:
– Because the SATA power connector has no 12Volt rail, only 2.5” SSD/HDD storage devices can be used.  The 12V rail will be added to the mass production version PCB for 3.5” HDD support.
– The UART port on the 40pin GPIO header doesn’t work due to a missing power line in the level-shifter circuit.  We will solder a wire on the PCB to solve this issue which will be corrected on the mass production version.
– A 128Mbit(16MB) SPI flash memory chip will be added if our SPI boot implementation is successful.
– Other unidentified issues likely exist.

You can join the N1 discussion here.
https://forum.odroid.com/viewtopic.php?f=29&t=29932

Linux Kernel 4.14 for ODROID-XU4/XU3/HC1/MC1

Linus Torvalds has announced the release of Linux 4.14, the latest stable release of the Linux kernel. Linux 4.14 features a number of new features and changes, and is set to become the next long term support (LTS) release backed for the next several years. We proudly announce the ODROID series on the same boat, ODROID-XU4 / ODROID-XU4Q / ODROID-HC1 / ODROID-MC1 / ODROID-XU3.

New Ubuntu OS image for the ODROID series has the following features:

– Linux Kernel LTS 4.14.0
– U-Boot 2017.05
– FFMPEG fully supports hardware acceleration, both encoded and decoded
– Kodi 17.6 (1080p video playback issue fixed)
– GPU/WebGL acceleration is enabled in Chromium browser
– CPU performance-counter feature works with big and little cores
– Removed broken Firefox
– Fixed mouse cursor blink issue

With each Linux kernel development cycle, it is getting easier to get updates to the latest mainline kernel due to the efforts of Samsung and the community. Some device drivers are added in the kernel which is not included in the mainline version.

Long Term Support (LTS) kernel support will get support until Jan, 2020. This is great news for the owners of small, extensible, powerful and inexpensive boards such as the ODROIDs.

Download it from this link.
https://wiki.odroid.com/odroid-xu4/os_images/linux/ubuntu_4.14/20171212

You can upgrade from 4.9 to 4.14 with following commands. You need to backup your important data first.

sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
sudo apt install xserver-xorg-video-armsoc ffmpeg
sudo apt install linux-image-xu3 
sync
sudo reboot

When you install “linux-image-xu3” package, you will meet a dialogue box and you have to choose “No” to proceed Kernel update.

After update, you can check Kernel version.

odroid@odroid:~$ uname -a
Linux odroid 4.14.0-83 #1 SMP PREEMPT Thu Nov 23 14:07:46 UTC 2017 armv7l armv7l armv7l GNU/Linux

Please note that we will no longer support Kernel 4.9 due to our limited resources. We will keep updating Kernel 4.14 LTS only.

If you have any issues, please post it on the Kernel 4.14 development sub-forum.
https://forum.odroid.com/viewforum.php?f=146

How to install ExaGear Desktop Trial on Odroid

Thank to Eltechs for the great instruction and giving ODROID users a trail. This article is written by Eltechs team.
Please share your experience on ODROID forum.

ExaGear Desktop is a powerful emulator for porting almost any x86 applications to ARM-based devices. In a nutshell, if you need some Windows apps or on your Odroid for any specific purpose (e.g. Notepad++ or even MS Word), ExaGear is the best solution to make it happen. Not mentioning the fact, that some native Linux applications, such as Skype and TeamViewer, when launched within ExaGear run even faster than launched via Wine on Linux. If you need more information visit our product page!

Install ExaGear Desktop Trial on Odroid
Our ExaGear Odroid Trial is kept on Odroid repos and is available for the following ODROID models:

ODROID-XU4 / XU3
ODROID-C2
ODROID-C1+ / C1
ODROID-U3 / U2 / X2 / X

Within the following OS images on:

Ubuntu 16.04
Debian Jessie
ODROID GameStation Turbo
DietPi

 

Within the following OS images on:
1. Connect a keyboard and a mouse to your Odroid device, or connect to it remotely – whatever you got used to.
2. Call for the command line and input the following commands to update the system.
 $ apt-get update
3. After a few minutes of auto-updating, you need to proceed with the following command:
 $ apt-get install exagear-desktop
4. As soon as the installation is finished, simply switch on the ExaGear software:
 $ exagear
5. The pop-up window will appear for you to provide your name and e-mail address. After you are done with that your ExaGear Odroid Trial will be activated and will last for 3 days from the moment of activation.

You might want to check if ExaGear is properly installed on you Odroid device. You can do it the following way:

 $ uname -a
You should get the output like:
Linux odroid 4.9.51-64 #1 SMP PREEMPT Sat Sep 23 03:28:28 UTC 2017 i686 i686 i686 GNU/Linux
6. Finally, we recommend to check that everything is OK by running the “arch” command (it should result in “i686” output):

$ arch
i686
 
 
Playing Windows Games on Odroid
Well, you are done with the installation and activation of your trial, so it’s the very time to enjoy the full power of ExaGear Desktop emulator by playing different famous Windows games on your Odroid device. Of course, gaming on Odroid is just a very small part of what ExaGear software can really do, but this user case is very representative and after all simply cool!
Tobias Schaaf from Odroid Magazine has prepared an outstanding article, covering some of the most popular PC games to be installed and played on Odroid, using ExaGear Desktop as an emulation machine and PlayOnLinux app. Read the ultimate tutorial here or watch a detailed video-guide below!
Moreover, as a bonus, he has prepared a list of games compatibility for Odroid, tested by him personally on Odroid XU4 model. See the table bellow:

 

Linux x86 Compatibility list for ODROID XU3/XU4 running ExaGear 2.1 Desktop

 

Game Rating Notes
Airline Tycoon Deluxe Perfect Uses Desktop resolution, up to 720p should run fine

Windows x86 Compatibility list for ODROID XU3/XU4 running ExaGear 2.1 Desktop

Game Rating Notes
7th Legion Perfect 640×480 only
8th Wonder of the World Very Good no music, long loading times, many resolutions, very demanding
Age of Empires 1 + The Rise of Rome Very Good No Music (no MIDI support in ExaGear)
Age of Wonders Perfect Requires IndeoVideo, offers many in game resolutions
Airline Tycoon Deluxe Broken Fonts don’t work can’t be played that way (else perfect)
Alien Nations Perfect requires: amstream, quartz, icodecs/iv5setup
Alpha Centaruri + Alien Crossfire Perfect use PlayOnLinux installer
Anno 1602 Perfect Requires NoCD patch
Arcanum: Of Steamworks and Magick Obscura Perfect 800×600 only
Atrox Very Good Very similar to Starcraft, supports 800×600 and 640×480 resolution, Videos are not working
Balls of Steel Perfect 800×600 max resolution
Caesar III Perfect runs in 640×480, 800×600, or 1024×768 resolution
Call to Power 2 Good Videos are not working, game supports many resolutions.
Capitalism II Fair Graphical glitches in game (known issue with the game)
Civilization III Very Good 1024×768 only, has some known sound issues.
Dark Colony Very Good requires Linux PC to install, 640×480 only, minor sound issues
Diablo 1 Very Good 640×480 only, requires ddraw patch
Diablo II Complete Edition 1.13d Very Good Videos don’t work, runs in 640×480 or 800×600
Dune 2000 Perfect use high resolution patcher for all kind of resolutions
Earth 2140 Perfect GoG classic Windows versions is only 800×600, reduce sound volume.
Emperor – Rise of the Middle Kingdom Good runs in window mode, annoying sound issues.
Gangsters: Organized Crime Good graphical issues in menu, game is fine, requires gdi rendering
Homeworld: Cataclysm Perfect 3D rendering in software mode, complicated resolution switch
Jack Orlando: A Cinematic Adventure (Director’s Cut) Good 640×480 only, often keyboard input issues
KKND: Krush Kill ‘n Destroy Xtreme Poor 640×480 only, Everything except New Game will crash the game (would be “perfect” otherwise)
KKND2 Krossfire Perfect supports 640×480, 800×600 and 1024×768 as resolution.
Larry 7: Love for Sail Perfect runs in ALL resolutions, you can NOT use “System” wine version
Lionheart: Legacy of the Crusader Very Good 800×600 only, can slow down at times, especially with special effects
Mech Commander Gold Perfect Must be installed on another PC, supports 640×480, 800×600, 1024×768, and 1280×1024 resolution.
Microsoft Office 2007 Perfect Runs directly on your Desktop
Pharaoh and Cleopatra Good runs in 640×480, 800×600 or 1024×768 resolution, suffers from sound issues (echoing)
Rollercoaster Tycoon Deluxe Very Good only minor sound issue, offers window mode which allows to start it on any desktop resolution (without virtual desktop)
Rollercoaster Tycoon 2: Triple Thrill Pack Very Good 800×600 only
Starcraft Very Good 640×480 only, can have slowdowns
Stronghold Crusader HD + Stronghold Crusader Extreme HD Very Good Some sound issues similar to Pharaoh and other games where sounds are played twice, many different resolutions supported including 1080p and 720p
The Tone Rebellion Perfect only runs in 640×480, needs to be installed on another PC
Tropico Gold Perfect offers different resolutions from 640×480 to 1600×1200
Unreal Very Good runs in software mode only, supports many different resolutions

New Ubuntu OS image released for XU4 and HC1

kernel4.9.44.jpg
https://wiki.odroid.com/odroid-xu4/os_images/linux/ubuntu_4.9/20170824

Upgrade your OS to the latest Ubuntu 16.04.3. There has been huge update archived that improve the system and stability.

1. Canonical announced a point release of Ubuntu 16.04.3 a couple of weeks ago.

2. Kernel has changed to 4.9.44 from 4.9.27. There are tons of patches to improve system features.

3. Modern Uboot-2017 has been ported to support the KVM virtualization as well the PXE/TFTP features.

We are happy to release a new OS image with all these improvements.

You can find a release note and a download link in this WiKi page.

https://wiki.odroid.com/odroid-xu4/os_images/linux/ubuntu_4.9/20170824

If you need a headless server image without heavy desktop GUI for your Home Cloud One , refer this page.

https://wiki.odroid.com/odroid-xu4/os_images/linux/ubuntu_4.9/minimal

If you have any issue, feel free to post it on our community forum. https://forum.odroid.com/viewforum.php?f=92

ODROID-HC1 Power consumption measurement

We could assume the total cost of electricity bill using ODROID-HC1 : Home Cloud One Server 24hours/7days at home.

 

We installed the Ubuntu 16.04 minimal image(Kernel 4.9.44) and FTP, SAMBA, NFS, Plex-Media, Seafile, Serviio,
Transmission and WebDAV server applications were running in background.
It consumes 3.6Watt (average) when it is idle and the attached hard disk drive is in spin-down mode.

Here is the detail analysis of power consumption.
Booting : A peak pulse up to 5V/3A(~15Watt) when the HDD starts to run.
Idle, HDD is still spinning : Around 5-6Watt.
Transferring some big files with SAMBA via Gbit Ethernet interface : 7~9Watt approximately.
Idle, HDD spin-down : Average 3.6Watt.
We believe we can make it even lower if we tweak the CPU governor and scaling frequency options.

We’ve measured the power consumption of the ODROID-HC1 with SmartPower2.

Upstream u-boot for ODROID-XU4.

We are working on the new u-boot porting for XU4 boards.

Here is the source code of the new u-boot.
https://github.com/hardkernel/u-boot/tree/odroidxu4-v2017.05


What we can do with the new u-boot !
1. Enabling the HYP mode for the KVM virtualization with Kernel 4.9 LTS.
2. Enabling the Ethernet device to support the TFTP/PXE remote booting.
3. Booting from various new eMMC chipsets.
4. fatload / ext4load commands are available natively.
5. And many other new features.

We will release a update package in next week for Linux/Ubuntu users.
We are implementing a few more functions(for example, the fastboot protocol) for Android 4.4 and Android 7.1 now.

u-boot booting log from the serial console output.

U-Boot 2017.05-12186-gf98cc91-dirty (Aug 08 2017 – 12:16:58 +0900) for ODROID XU4

CPU:   Exynos5422 @ 800 MHz
Model: Odroid XU4 based on EXYNOS5422
Board: Odroid XU4 based on EXYNOS5422
Type:  xu4
DRAM:  2 GiB
MMC:   EXYNOS DWMMC: 0, EXYNOS DWMMC: 1
MMC Device 0 (eMMC): 14.7 GiB
Info eMMC rst_n_func status = enabled
Card did not respond to voltage select!
mmc_init: -95, time 11
*** Warning – bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   No ethernet found.
Press quickly ‘Enter’ twice to stop autoboot:  0
reading boot.ini
9088 bytes read in 4 ms (2.2 MiB/s)
cfgload: applying boot.ini…
cfgload: setenv initrd_high “0xffffffff”
cfgload: setenv fdt_high “0xffffffff”
cfgload: setenv macaddr “00:1e:06:61:7a:39”
cfgload: setenv vout “hdmi”
cfgload: setenv cecenable “false” # false or true
cfgload: setenv disable_vu7 “false” # false
cfgload: setenv governor “performance”
cfgload: setenv ddr_freq 825
cfgload: setenv external_watchdog “false”
cfgload: setenv external_watchdog_debounce “3”
cfgload: setenv HPD “true”
cfgload: setenv bootrootfs “console=tty1 console=ttySAC2,115200n8 root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro fsck.repair=yes net.ifnames=0”
cfgload: fatload mmc 0:1 0x40008000 zImage
reading zImage
4793144 bytes read in 135 ms (33.9 MiB/s)
cfgload: fatload mmc 0:1 0x42000000 uInitrd
reading uInitrd
5327028 bytes read in 143 ms (35.5 MiB/s)
cfgload: if test “${board_name}” = “xu4”; then fatload mmc 0:1 0x44000000 exynos5422-odroidxu4.dtb; setenv fdtloaded “true”; fi
reading exynos5422-odroidxu4.dtb
61570 bytes read in 9 ms (6.5 MiB/s)
cfgload: if test “${board_name}” = “xu3”; then fatload mmc 0:1 0x44000000 exynos5422-odroidxu3.dtb; setenv fdtloaded “true”; fi
cfgload: if test “${board_name}” = “xu3l”; then fatload mmc 0:1 0x44000000 exynos5422-odroidxu3-lite.dtb; setenv fdtloaded “true”; fi
cfgload: if test “${fdtloaded}” != “true”; then fatload mmc 0:1 0x44000000 exynos5422-odroidxu4.dtb; fi
cfgload: fdt addr 0x44000000
cfgload: setenv hdmi_phy_control “HPD=${HPD} vout=${vout}”
cfgload: if test “${cecenable}” = “false”; then fdt rm /cec@101B0000; fi
cfgload: if test “${disable_vu7}” = “false”; then setenv hid_quirks “usbhid.quirks=0x0eef:0x0005:0x0004”; fi
cfgload: if test “${external_watchdog}” = “true”; then setenv external_watchdog
“external_watchdog=${external_watchdog} external_watchdog_debounce=${external_watchdog_debounce}”; fi
cfgload: setenv bootargs “${bootrootfs} ${videoconfig} ${hdmi_phy_control} ${hid_quirks} smsc95xx.macaddr=${macaddr} ${external_watchdog} governor=${governor}”
cfgload: bootz 0x40008000 0x42000000 0x44000000
Kernel image @ 0x40008000 [ 0x000000 – 0x492338 ] ## Loading init Ramdisk from Legacy Image at 42000000 …
Image Name:   uInitrd
Image Type:   ARM Linux RAMDisk Image (uncompressed)
Data Size:    5326964 Bytes = 5.1 MiB
Load Address: 00000000
Entry Point:  00000000
Verifying Checksum … OK
## Flattened Device Tree blob at 44000000
Booting using the fdt blob at 0x44000000
Using Device Tree in place at 44000000, end 44012081

Starting kernel …