the hardware

you can get the ODROID with HDMI (monitor/screen) output: https://www.pollin.de/p/odroid-xu4-einplatinen-computer-samsung-exynos-5422-2-gb-2x-usb-3-0-810409 for 80€.

or the NAS/SATA variation (headless, no GPU, no HDMI, no screen/monitor) : https://www.pollin.de/p/odroid-hc1-einplatinen-computer-fuer-nas-und-cluster-anwendungen-810766 for 60€.

What SoC are you using?
The SoC is a Samsung Exynos5422 Octa.

What GPU does it include?
An ARM Mali-T628 6 Core.

heat

Complex components such as the XU4 processor may reach temperatures as high as 95°C. At high temperatures, the processor will throttle itself and operate slower so that temperatures do not continue to increase.

robotics

The 30-pin GPIO port can be used as GPIO/IRQ/SPI/ADC, and the 12-pin GPIO port can be used as GPIO/I2S/I2C for electronics and robotics. The GPIO pins on an ODROID-XU4 are a great way to interface with physical devices like buttons and LEDs using a lightweight Linux controller. If you’re a C/C++ or Python developer, there’s a useful library called WiringPi that handles interfacing with the pins, which is described in Chapter 4. Note that all of the GPIO ports are 1.8Volt, and the ADC inputs are limited to 1.8Volt. If a sensor or peripheral
needs higher voltage, the GPIO ports may be level-shifted to 3.3V or 5V using the XU4 Level Shifter Shield.

Serial console port

Connecting to a PC gives access to the Linux console. You can monitor the boot process, or to log in to the XU4 to perform root maintenance.

Note that this serial UART uses a 1.8 volt interface, and it is recommended to use the USB-UART module kit available from Hardkernel.

A Molex 5268-04a (2.5mm pitch) is mounted on the PCB, and its mate is Molex 50-37-5043 Wire-to-Board Crimp Housing.

RTC (Real Time Clock) backup battery connector

If you want to add a RTC functions for logging or keeping time when offline, just connect a Lithium coin backup battery (CR2032 or equivalent). All of the RTC circuits are included on the ODROID-XU4 by default. It connects with a Molex 53398-0271 1.25mm pitch Header, Surface Mount, Vertical type (Mate with Molex 51021-0200).

Gigabit Ethernet

The Realtek RTL8211F is a highly intergrated 10/100/1000M Ethernet transceiver that complies with 10Base-T, 100Base-TX, and 1000Base-T IEEE 802.3 standards.

USB MTT hub controller

The Genesys GL3521 is a 2-port, low-power, and configurable
USB 3.0 SuperSpeed hub controller.

documentation

community support forum: https://forum.odroid.com/

https://wiki.odroid.com/odroid-xu4/odroid-xu4

https://wiki.odroid.com/odroid-xu4/application_note/software/headless_setup

https://magazine.odroid.com/wp-content/uploads/odroid-xu4-user-manual.pdf

download the software

http://com.odroid.com/sigong/blog/blog_list.php?tag=ODROID-XU4

leads to:

ubuntu-16.04.2-mate-odroid-xu4-20170510.img.md5sum 2017-05-10 21:10 78
[ ] ubuntu-16.04.2-mate-odroid-xu4-20170510.img.xz 2017-05-10 21:14 1.2G
[ ] ubuntu-16.04.2-mate-odroid-xu4-20170510.img.xz.md5sum 2017-05-10 21:14 81
[ ] ubuntu-16.04.2-minimal-odroid-xu4-20170516.img.md5sum 2017-05-17 21:18 81
[ ] ubuntu-16.04.2-minimal-odroid-xu4-20170516.img.xz 2017-05-17 21:18 257M
[ ] ubuntu-16.04.2-minimal-odroid-xu4-20170516.img.xz.md5sum 2017-05-17 21:19 84
[ ] ubuntu-16.04.3-4.9-mate-odroid-xu4-20171025.img.md5sum 2017-10-30 07:28 82
[ ] ubuntu-16.04.3-4.9-mate-odroid-xu4-20171025.img.xz 2017-10-30 07:28 1.2G
[ ] ubuntu-16.04.3-4.9-mate-odroid-xu4-20171025.img.xz.md5sum 2017-10-30 07:28 85
[ ] ubuntu-16.04.3-4.9-minimal-odroid-xu4-20170824.img.md5sum 2017-08-24 14:01 85
[ ] ubuntu-16.04.3-4.9-minimal-odroid-xu4-20170824.img.xz 2017-08-24 14:03 280M
[ ] ubuntu-16.04.3-4.9-minimal-odroid-xu4-20170824.img.xz.md5sum 2017-08-24 14:03 88
[ ] ubuntu-16.04.3-4.14-mate-odroid-xu4-20171212.img.md5sum 2017-12-13 15:59 83
[ ] ubuntu-16.04.3-4.14-mate-odroid-xu4-20171212.img.xz 2017-12-13 15:59 1.3G
[ ] ubuntu-16.04.3-4.14-mate-odroid-xu4-20171212.img.xz.md5sum 2017-12-13 15:59 86
[ ] ubuntu-16.04.3-4.14-minimal-odroid-xu4-20171213.img.md5sum 2017-12-15 16:17 86
[ ] ubuntu-16.04.3-4.14-minimal-odroid-xu4-20171213.img.xz 2017-12-15 16:17 302M
[ ] ubuntu-16.04.3-4.14-minimal-odroid-xu4-20171213.img.xz.md5sum 2017-12-15 16:17 89

load it onto sdcard

warning! POTENTIAL DATALOSS! selecting the wrong device can OVERWRITE DATA ON YOUR COMPUTER ATTACHED HARDDISKS!

insert sdcard into your sdcard reader..

wget http://de.eu.odroid.in/ubuntu_16.04lts/ubuntu-16.04.3-4.14-minimal-odroid-xu4-20171213.img.xz; # download image
lsblk; # make sure you identify the right hardware. 
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 119.2G 0 disk 
├─sda1 8:1 0 49G 0 part /projects
├─sda5 8:5 0 67.4G 0 part /
└─sda6 8:6 0 2.9G 0 part [SWAP]
sr0 11:0 1 1024M 0 rom 
mmcblk0 179:0 0 14.9G 0 disk 
└─mmcblk0p1 179:1 0 14.9G 0 part
# mmcblk0p1 is the first partition on device mmcblk0 (the sdcard)
apt-get install xz-utils; # install maybe missing unpacking software md5sum ubuntu-16.04.3-4.14-minimal-odroid-xu4-20171213.img.xz; # check if md5sum matches unxz ubuntu-16.04.3-4.14-minimal-odroid-xu4-20171213.img.xz; # unpack the image
umount /dev/mmcblk0p1; # unmount sdcard time
# write directly
md5sum -c ubuntu-16.04.3-4.14-minimal-odroid-xu4-20171213.img.xz.md5sum; # verify downloaded file has no errors 
ubuntu-16.04.3-4.14-minimal-odroid-xu4-20171213.img.xz: OK

# two possible ways to continue
# write directly unpack on the fly
xzcat /download/folder/ubuntu-16.04.3-4.14-minimal-odroid-xu4-20171213.img.xz | sudo dd bs=41 of=/dev/mmcblk0 &
watch kill -USR1 $(pgrep ^dd); # watch progress, it will copy 1.8GByte
sync; # run this to write disk cache to disk

# or
# unpack first
un-xz ubuntu-16.04.3-4.14-minimal-odroid-xu4-20171213.img.xz; # unpack 1.8GByte
# then write
dd bs=1M if=/download/folder/ubuntu-16.04.3-4.14-minimal-odroid-xu4-20171213.img of=/dev/mmcblk0; # write image to sdcard
sync; # run this to write disk cache to disk

setup

depending on if you can connect a monitor or not:

  1. insert micro sdcard…
  2. LAN connect ODROID XU4 to a DHCP-server ((DSL) router/fritzbox with DHCP enabled)
  3. LAN connect PC/Laptop to the same DHCP-server
  4. start wireshark on your laptop and power on ODROID XU4.

networking: dhcp and finding odroid’s ip

can be a little pain in the a….fternoon.

the ubuntu ODROID XU4 image does not come with a fixed IP, so you will have to connect it to some sort of DHCP-server (router) in order to ssh into it, or install the dhcp-server-service under debian 8. (maybe as VirtualBox VM).

you can also use wireshark and to listen to network activity related to the odroid (dhcp-offer) and find it’s IP this way.

you are looking for simething like:

15 2.286036000 Wibrain_30:cf:9b Broadcast ARP 60 Who has 192.168.0.1? Tell 192.168.1.101

or use nmap network scanner to find it’s ip…

nmap -n -v -p 1-255 -n -sS 192.168.10.0/24
Initiating SYN Stealth Scan at 22:21
Scanning 192.168.10.10 [255 ports]
Discovered open port 22/tcp on 192.168.10.1

modify the above line depending in what kind of subnet your router is operating. (192.168.XXX.XXX)

ssh into it

usr: root / usr: odroid
pwd: odroid

root@odroid:~# hostnamectl 
   Static hostname: odroid
         Icon name: computer
  Operating System: Ubuntu 16.04.3 LTS
            Kernel: Linux 4.14.5-92
      Architecture: arm

CONGRATULATIONS! YOU LOGGED IN SUCCESSFULLY THE FIRST TIME TO YOUR EMBEDDED POWERHOUSE!

fix the ip

to not have to hassle with dhcp servers again one can change the ip to fixed via:

nano /etc/network/interfaces

fill it with this content:

# The loopback network interface  
auto lo  
iface lo inet loopback  

# The primary network interface  
auto eth0 
iface eth0 inet static  
address 192.168.0.111
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 192.168.0.1 

modify the orange parts so it fits your LAN settings – then type:

reboot

if everything went straight… you should be able to ping the odroid on 0.111 and ssh into it on 0.111

messing with the odroid

the first thing you probably do with a new system is check for updates…

if your network settings are correct your odroid should be able to access the internet.

ping yahoo.com; # check if internet is working
apt update; # update package index
Hit:1 http://ports.ubuntu.com/ubuntu-ports xenial InRelease
Hit:2 http://ppa.launchpad.net/saiarcot895/myppa/ubuntu xenial InRelease 
Get:3 http://ports.ubuntu.com/ubuntu-ports xenial-updates InRelease [102 kB] 
Hit:4 http://deb.odroid.in/5422-s xenial InRelease 
Get:5 http://ports.ubuntu.com/ubuntu-ports xenial-backports InRelease [102 kB] 
Get:6 http://ports.ubuntu.com/ubuntu-ports xenial-security InRelease [102 kB]
Get:7 http://ports.ubuntu.com/ubuntu-ports xenial-updates/main Sources [286 kB]
Get:8 http://ports.ubuntu.com/ubuntu-ports xenial-updates/main armhf Packages [587 kB]
Get:9 http://ports.ubuntu.com/ubuntu-ports xenial-updates/universe armhf Packages [499 kB]
Fetched 1678 kB in 2s (667 kB/s) 
Reading package lists... Done

apt upgrade; # upgrade system
The following packages have been kept back:
 linux-image-xu3
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

apt install linux-image-xu3; # force upgrade of this package

# what follows is this scary message that one accepts by selecting "No"


# then an output like this should follow...

apt autoremove; # remove packages that have become obsolete

reboot; # reboot now to load new kernel
Connection to 192.168.0.111 closed by remote host.
Connection to 192.168.0.111 closed.
ping 192.168.0.111; # after round about 30 seconds the odroid xu4 should have rebooted and respond to your pings
PING 192.168.0.111 (192.168.0.111) 56(84) bytes of data.
64 bytes from 192.168.0.111: icmp_seq=27 ttl=64 time=1.12 ms
64 bytes from 192.168.0.111: icmp_seq=28 ttl=64 time=0.513 ms
64 bytes from 192.168.0.111: icmp_seq=29 ttl=64 time=0.480 ms

apt install htop vim rsync; # install cool software task monitor htop, vim, rsync
htop; # and start it

# as you can see the 8x CPUs of the odroid xu4 are pretty bored right now

cpu benchmarking:

apt install sysbench; # let's install them some work
mkdir /scripts
vim /scripts/bench_cpu.sh

#!/bin/bash

NUM_CORES=$(grep -c ^processor /proc/cpuinfo)

echo "============ CPU MIPS and FLOPS"

cat /proc/cpuinfo | grep -ie hardware;
cat /proc/cpuinfo | grep -ie model;
cat /proc/cpuinfo | grep -ie mips;
cat /proc/cpuinfo | grep -ie flops;

echo "============ CPU BENCHMARK"

sysbench --test=cpu --cpu-max-prime=20000 run --num-threads=$NUM_CORES

:wq save and quit or download it.

wget http://dwaves.de/wp-content/uploads/2017/05/bench_cpu.sh_.txt; # download script
mv bench_cpu.sh_.txt bench_cpu.sh; # rename
chmod +x /scripts/bench_cpu.sh; # make script executable
/scripts/bench_cpu.sh; # run it

============ CPU MIPS and FLOPS
Hardware : ODROID-XU4
model name : ARMv7 Processor rev 3 (v7l)
model name : ARMv7 Processor rev 3 (v7l)
model name : ARMv7 Processor rev 3 (v7l)
model name : ARMv7 Processor rev 3 (v7l)
model name : ARMv7 Processor rev 3 (v7l)
model name : ARMv7 Processor rev 3 (v7l)
model name : ARMv7 Processor rev 3 (v7l)
model name : ARMv7 Processor rev 3 (v7l)
BogoMIPS : 84.00
BogoMIPS : 84.00
BogoMIPS : 84.00
BogoMIPS : 84.00
BogoMIPS : 120.00
BogoMIPS : 120.00
BogoMIPS : 120.00
BogoMIPS : 120.00
============ CPU BENCHMARK
sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 8

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 20000

Test execution summary:
total time: 37.4554s
total number of events: 10000
total time taken by event execution: 299.4689
per-request statistics:
min: 23.26ms
avg: 29.95ms
max: 44.59ms
approx. 95 percentile: 40.59ms

Threads fairness:
events (avg/stddev): 1250.0000/327.26
execution time (avg/stddev): 37.4336/0.01

so the benchmark ran in 37 seconds.

on an QuadCore Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz the benchmark run in 14.60 seconds.

so the 8x core ODROID X4U is 2.5 times slower than the 4x core i5 at 1.60 GHZ using all available cores.

while doing this

vim /scripts/cpu_temp.sh
#!/bin/bash

while true ; do

cpu_temp=$(< /sys/class/thermal/thermal_zone0/temp)
cpu_temp=$(($cpu_temp/1000))
echo $cpu_temp C

sleep 1;
clear;

done # executes COMMAND every second

i monitored the temp of the cpu for around 30minutes while running all 8 cores full speed.

the system is PASSIVELY cooled and seems to throttles the CPUs automatically when 80 degrees Celsius are reached.

maximum measured temp was 82 Celsius (179.6 F).

the passively cooled case got warm but not uncomfortably hot. i have heard raspberry had problems with heat.

when the benchmark was over the temps dropped instantly to 53 C.

Introduction Videos:

Real Time Clock: RTC

just as the Raspberry pi, the odroid needs a battery to keep clock when it is turned off.

https://www.hardkernel.com/main/products/prdt_info.php?g_code=G137508214939

admin