ODROID-N2

Forum : https://forum.odroid.com/viewtopic.php?f=176&t=33781

ODROID-N2 is a new generation single board computer that is more powerful, more stable, and faster performing than N1.
The main CPU of the N2 is based on big.Little architecture which integrates a quad-core ARM Cortex-A73 CPU cluster and a dual core Cortex-A53 cluster with a new generation Mali-G52 GPU.
Thanks to the modern 12nm silicon technology, the A73 cores runs at 1.8Ghz without thermal throttling using the stock metal-housing heatsink allowing a robust and quiet computer.
The CPU multi-core performance is around 20% faster and the 4GByte DDR4 RAM is 35% faster than the N1. The N2’s DDR4 RAM is running at 1320Mhz while N1’s DDR3 was running at 800Mhz.
The large metal housing heatsink is designed to optimize the CPU and RAM heat dissipation and minimize throttling. The CPU is placed on the bottom side of the PCB to establish great thermal characteristics.

Board Detail


N2 block diagram

CPU performance
Dhrystone-2, Double-Precision Whetstone, Sysbench and Memory bandwidth benchmark results show the N2 system performance comes out ahead of other popular ARM SBCs.

GPU performance
The Mali-G52 runs at 846Mhz and is ~10% faster than Mali-T860MP4 in ODROID-N1.
The Mali-G52 is the second Bifrost-based mainstream GPU from Arm.
There are two Shader Processors in the GPU and each core has three Execution Engines. This is sometimes referred to as MP6.
GPU performance was measured with glmark2-es2 “–off-screen” option.

RAM performance
Why does DDR4 matter? 1320Mhz-DDR4 is 35% faster than 800Mhz-DDR3.
ODROID-N2 DDR4 RAM runs at 1320Mhz.

CPU frequency vs performance
Some ODROID users may recall the lower than expected clock speed in S905.
We ran a test to double check the ratio between CPU clock frequency and performance.
cmd : sysbench cpu –max-cpu-prime=100000 –time=10 –threads=6 run

Thermal characteristics 
To check the thermal throttling, we ran some heavy CPU and GPU loads together on the SoC and monitored temperature. We ran the test within a chamber that keeps the ambient temperature at 35°C.
cmd : stress-ng –cpu 6 –cpu-method matrixprod && glmark2-es2-fbdev –off-screen –run-forever

Gbit Ethernet
According to our iperf test result, the throughput performance was near 1Gbps.

USB 3.0 hosts
We measured the USB transfer speed with a UAS capable SSD.
The average ~340MB/s of throughput should be acceptable for many application.
Since four USB host ports share a single root hub, the transfer rate must be lower if you use multiple USB devices at the same time.

eMMC storage performance
Sequential read and write speed is over 150MB/s and 125MB/s respectively.
4K random access performance is reasonably fast too. iozone test result are as follows.

Micro-SD UHS performance
Using properly implemented UHS dynamic voltage scaling, the sequential read and write speed is over 70MB/s and 55MB/s respectively.

The previous S905 SoC couldn’t activate the UHS mode once the system boots from eMMC. But S922X can keep using the UHS mode with the eMMC module simultaneously.

Sound DAC
ODROID-N2 has an on-board high quality 384Khz/32bit stereo audio line output.
Dynamic range and SNR is near 100dB and Total-Harmonic-Distortion is lower than 0.006%. You can enjoy Hi-Fi sound quality without an external expensive audio DAC.

Signal to Noise Ratio : 1KHz (384KHz, 32bit, 2-ch)

THD + N Ratio : 1KHz (384KHz, 32bit, 2-ch)

Frequency Response : 20Hz – 20KHz(384KHz, 32bit, 2-ch)

SPI Flash memory boot
ODROID-N2 can boot from on-board SPI memory instead of uSD memory or eMMC cards.
The on-board SPI memory is 8MB in size and can include the bootstrap binaries, U-boot, bare minimum Linux kernel, and a ramdisk that includes “Petitboot”. The “Petitboot” software provides a user friendly interface and allows users to select a boot media.
Unfortunately, since the SPI bus on S922X shares the hardware interface with eMMC, the SPI flash memory on ODROID-N2 is only accessible at boot until the eMMC hardware block is activated. So you have to remove eMMC module and boot from a SD card to update firmware in the SPI flash easily.

RTC
ODROID-N2 has an on-board RTC component, NXP PCF8563, interfaced to the I2C bus and can use a backup battery as an alternative power source while the main power source is absent. Since the actually measured power consumption is less than 1uA, the RTC can run for over 10 years with a CR2032 backup battery. Also, this will let your ODROID-N2 wake up at a certain time once you set an alarm time and shutdown it.

Crypto Engine
The ARMv8 architecture supports hardware accelerated crypto extensions for building a secure system. As expected, we could see very decent openSSL performance with ODROID-N2.
cmd: openssl speed sha256 (8KByte)

GPIO (40Pin header)

The N2 GPIO interface is similar to C2 and fully supports a 3.3Volt interface while N1 could only support 2.8Volt IO. This is beneficial for using various peripherals without complicated level shifters.
Another big improvement is a faster SPI bus interface. Its maximum frequency is over 150Mhz, and we will try to implement a DMA driven SPI driver for faster LCD display.

Power consumption
Idle state: 1.6~1.8 Watt
Heavy load state: 5.2~5.3 Watt (stress-ng –cpu 6 –cpu-method matrixprod)
No cables are attached except DC power input and USB-UART debug console cable.

Software support

Linux
An Ubuntu 18.04 LTS image is available with Kernel version 4.9.152 LTS at this moment. This kernel version will be officially supported until Jan, 2023.
A hardware accelerated video decoder (VPU) driver is ready. We have c2player and kplayer examples which can play 4K/UHD H.265 60fps videos smoothly on the framebuffer of ODROID-N2 HDMI output.
The Mali G52 GPU Linux driver works only on the framebuffer. We tested the latest PPSSPP emulation and it can handle x3 scaling on a 4K display nicely with well implemented VSYNC.
There will be a Linux Wayland driver a few months later. We are intensively working on it together with Arm and Amlogic.
Unfortunately, there is no X11 GPU driver since Arm has no plan to support X11 for Bifrost GPUs anymore.
We hope that the Panfrost open source driver can be ported to ODROID-N2 soon.

Android
Android 9 Pie is ready, and we will release a full source code BSP and pre-built image together.
At this moment, Android user land supports only a 32bit system while the Kernel runs in 64bit mode.
We will eventually try to support a 64bit Android system with Vulkan capable GPU driver in a few months.

Availability and price
We will start to sell from very late March and the first shipment will start early April. There is no plan to accept any pre-order.
2GB model: $63
4GB model: $79

Debugging Party
We will send some engineering samples to our friendly community members very soon.
I hope we can ship the samples in this week.

WiKi pages: https://wiki.odroid.com/odroid-n2/odroid-n2
Github Kernel: https://github.com/hardkernel/linux/tree/odroidn2-4.9.y
Github u-boot: https://github.com/hardkernel/u-boot/tr … 2-v2015.01

Specification

You can choose between two colors: semi-transparent dark black and clear white.
The price will be only $4. :D

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.