Ubuntu 18.04 LTS for ODROID-C1

We’ve released a new Ubuntu 18.04 image for C1 with many useful features. This LTS version will be supported until April of 2023.


Ubuntu 18.04 LTS Bionic Beaver with Mate Desktop
OpenGL ES 2.0 driver for Mali 450MP2 GPU
Kernel header package is improved to support the DKMS driver build
OpenGL ES enabled Qt5 library
OpenGL ES enabled SDL library
Kodi 17.6 playback Full-HD H.264 and H.265 video files
“c2play” command line video player compatible
WiringPi GPIO/SPI/I2C/ADC/IRQ library
And many other features

Click this image to see the OS information in detail.  This shows a nice GPU accelerated Qt5 Widget example.

Ubuntu 18.04 LTS for ODROID-C1

You can find the OS image link from this official release note.
https://wiki.odroid.com/odroid-c1/os_images/ubuntu/v3.0

Ubuntu Minimal image will be available in two weeks later hopefully.

If you are interested in running the mainline Kernel 4.17 or higher, visit this forum thread.

https://forum.odroid.com/viewtopic.php?f=111&t=19292#p226181
As far as I heard, there are some critical issues with display output.

So it is useful only for headless application like a server or IoT area,

Note that we couldn’t find any way to upgrade to 18.04 from 16.04 due to very complicated dependencies.
So you have to backup your important data and freshly flash the OS image.

Ubuntu 18.04 for ODROID-C2

We’ve released a new 64bit Ubuntu 18.04 image for C2 with many useful features. This LTS version will be supported until April of 2023.

Ubuntu 18.04 LTS AARCH64 Bionic Beaver with Mate Desktop
Linux Kernel 3.16.57 LTS updated from discontinued 3.14 (this 3.16 LTS Kernel was ported by user scpcom and other forum members)
OpenGL ES 2.0 driver for Mali 450MP3 GPU
Kernel header package is improved to support the DKMS driver build
OpenGL ES enabled Qt5 library
OpenGL ES enabled SDL library
GPU accelerated Chromium WebGL browser
Kodi 17.6 playback 4K/60fps H.265 files
c2play command line video player compatible
WiringPi GPIO/SPI/I2C/ADC/IRQ library
And many other features

Click this image to see the OS information in detail.

In fact, we released this image a couple of weeks ago. But there was a critical issue with OpenGL-ES applications due to the malfunction of mmap driver.
Recently, a developer tobetter made a nice workaround and patched the kernel source.
So you must update the kernel after installing the OS image with “sudo apt update && sudo apt dist-upgrade” command.

You can find the OS image link from this WiKi page.
https://wiki.odroid.com/odroid-c2/os_images/ubuntu/v3.0

Ubuntu Minimal image is available in this link too.
https://wiki.odroid.com/odroid-c2/os_images/ubuntu/minimal_image

If you are interested in running the mainline Kernel 4.17 or higher, visit this forum thread.
https://forum.odroid.com/viewtopic.php?f=135&t=22717&start=850#p226092
As far as I heard, most of key features are working well including the Mali OpenGL acceleration.
But the video decoding HW acceleration still has some issues.
I hope we can run the mainline kernel officially before Christmas.

BTW, we couldn’t find any way to upgrade to 18.04 from 16.04 due to very complicated dependencies.
So you have to backup your important data and freshly flash the OS image.

C1/C1+/C0 compatible Ubuntu 18.04 image will be ready in a few weeks.
Stay tuned.

Visual Studio Code on XU4 Ubuntu 18.04

When I was a student around 25 years ago, I had to spend over $200 to buy a Microsoft Visual Studio C++ software package.
At that time, I used Windows 3.1 on a blazing fast Intel 80286 8Mhz 16bit processor with 1MB RAM to build a small commercial software as a part-time job.

Today, we can run the Visual Studio on the XU4 Ubuntu Linux.
Visual Studio Code is a source code editor developed by Microsoft for Windows, Linux and macOS.
It includes support for debugging, embedded Git control, syntax highlighting, intelligent code completion, snippets, and code refactoring.
It is also customizable, so users can change the editor’s theme, keyboard shortcuts, and preferences.
It is free and open-source, although the official download is under a proprietary license.

From the VS Code GitHub : https://github.com/Microsoft/vscode/wiki/How-to-Contribute#prerequisites
You need following items.
– Git
– Node.JS, >= 8.9.1, < 9.0.0
– Yarn >= 1.5.0
– Python, >=  2.7 (version 3 is not supported)
– npm
– libx11-dev and libxkbfile-dev for native-keymap
– libsecret-1-dev for keytar

Let’s install the required packages.

sudo apt install git nodejs libx11-dev libxkbfile-dev libsecret-1-dev npm 

And check the versions of key components.

odroid@odroid:~$ yarn --version
0.32
odroid@odroid:~$ python --version
Python 2.7.15rc1
odroid@odroid:~$ nodejs --version
v8.10.0
odroid@odroid:~$ npm --version
3.5.2

“yarn” command in “cmdtest” package was too old which was compatible with npm.
So you have to install “yarn” package manually.

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt
sudo apt update
sudo apt install yarn

And I had the latest “yarn” version.

odroid@odroid:~$ yarn --version
1.7.0

Let’s download Visual Studio Code source from MS Github and build it.

git clone --depth 1 https://github.com/microsoft/vscode
cd vscode
./scripts/npm.sh install --arch=armhf

Then, run your instance with ./scripts/code.sh from that same folder.
You must force to reinstal libgconf2 manually to fix a runtime error.

sudo apt -y install libgconf2-4

The first launching took quite a long time. Be patient.
The performance of source code editor was very good and look-and-feel was very similar to the original Visual Studio.
It’s time to learn how to configure the gcc and gdb command in the integrated development environment.

ODROID 10th anniversary

Hardkernel was founded in 2008 and ODROID(Open-Droid) is 10 years old.

10th anniversary에 대한 이미지 검색결과

This is our first official product, the original ODROID.
It was the world’s first Android based portable gaming device for the real world developers in ‘2009.

When we designed the device, we thought three basic slogans.
– Of the developers, By the developers, For the developers
– Fun and interesting devices for developers
– Development board in pocket. (To Go!)
 
 
To celebrate 10th birthday, we decided to build a new device for developers again from last October.
The first prototype was born in November.
The shape was very similar to our SHOW2 board, but it had a separated joypad board.

A Li-Ion 18650 battery could be installed to the rear side.

It looked like a sandwich. So the thickness was too tough.

The small and cheap Arduino MCU ESP32 performance was very good to run NES, GBC and SMS emulators amazingly.
But the sandwich style was not good to play games over a couple of hours. The stacked PCB was inconvenient and cannot hold for a long time. We couldn’t put it into our back pocket either.
So we had to abandon the first design and constructed a plastic mould design with more sleek and comfortable shape from the scratch again.

 
Finally, Here we Go! We call it ODROID-GO.Now we can put this nice development board in back pocket and play with it everywhere.

You can find more information about ODROID-GO in this link.

PUBG on ODROID-XU4 and how to play with keyboard/mouse

PlayerUnknown’s Battlegrounds is a multiplayer online battle royale game developed and published by PUBG Corporation, a subsidiary of publisher Bluehole. The last person or team left alive wins the match.

Thanks to Unreal Engine 4, mobile version was released for Android devices on February 9, 2018.

This guide shows the configuration for Android OS on ODROID-XU4. In detail, it includes how to control with keyboard and mouse. Everything to be the kings of the stage and eat the chicken.

Let’s check the hardware compatibility with PUBG on Android.

The company responsible for PUBG MOBILE has made a smart move using Unreal Engine 4 (UE4) for all versions of their games, they can apply the same content to all our platforms and continue with the same play experience on any devices.
The minimum requirements of the games are imposed by the UE4. This type of games can only be compiled with a profile that supports these features;
– Have a GPU with OpenGL support ES 3.1 or higher
– System with at least 2 GB of RAM
– Android 5.1.1
– Minimum free storage 2 GB
– Requires mouse or pointer emulator to select menus
ODROID-XU4 Android 7.1 (LineageOS port) meets the requirements. GPU on ODROID-XU4 supports OpenGL-ES 3.1, 2GB of RAM is stacked on the CPU, storage is expandable and USB ports are good enough for mouse.
Once you successfully install the Android 7.1 Nougat LineageOS-14.1, you can easily install the PUBG MOBILE from Google Play store.
관련 이미지
Before playing PUBG, you have to tweak the Android performance mode for smoother game rendering speed.
Set CPU and DRAM governor to “Performance” mode, and overclock the DRAM speed slightly (866Mhz to 933Mhz).
It can be done with ODROID Utility App. After setting, you have to reboot ODROID.

Keyboard and mouse in PUBG MOBILE
If we want to be the kings of the game, certainly the use of keyboard and mouse in PUBG MOBILE will give us a substantial advantage, the ability to perform strafe (lateral movement), point with the mouse and manage all the functions of the game with the keyboard is a differential point, something that can be seen playing where our opponents with touch controls are very limited in movements.  None of these methods is officially supported by the game but we have a very simple alternative.

Install Octopus to play with keyboard and mouse in PUBG MOBILE, this app already comes with profiles for these controls for the game by default with what not we will have to configure anything.
Octopus app is available in Google Play too.
Run Octopus and as we see in the upper part we have the types of control that we have connected to our ODROID, we can use them all indifferently. In the lower part we have the list of installed games, by default we will start PUBG MOBILE, although we can use this program for other games.
Inside game the use is simple, we have defined by default the keys in the action areas so it is very simple, we can move them or change them as we are interested. On the left we have the Octopus icon that we can press to show the advanced options and change drivers, in ODROID we need a connected mouse.
Within the Octopus settings menu we can switch between Keyboard and Gamepad, we can see the two systems already have a template configured, in the case of the Gamepad we have few buttons available for all the actions that a game like PUBG has. But we didn’t try a Gamepad yet.
An important point in this app are the settings, the level of transparency of the keys on the screen can be lowered when we already have them memorized to have the cleanest screen, the POV Sensivility level is critical to control the character’s rotation speed which by default is somewhat slow.

Don’t forget to allow a root access to the Octopus app for activating the functionality.

Once you launch PUBG game via Octopus app, you need to check the Graphics settings. It must be something like this.

It was quite playable with $59 ODROID-XU4 board even we met short period of choppy scenes randomly.

 

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