Odroid

From 太極
Revision as of 16:44, 29 February 2016 by Brb (talk | contribs) (→‎Benchmark)
Jump to navigation Jump to search

XU4 + Ubuntu 15.10

OdroidUbuntu.png

My first impression

  • I am using Ubuntu mate 15.10 image on my 32G microSD
  • Need to switch the boot lever (next to the HDMI port) from eMMC to microSD
  • The graphical desktop is VERY sharp on my 1920x1080 Samsung lcd. But for some reason, my 9" lcd screen (1024x600) shows a black screen. Its gpu is Mali-T628 6 cores.
  • The cpu fan gets a little annoying (see the cpu fan control below)
  • youtube.com doesn't work:(
  • the processor (Samsung Exynos5422 Cortex™-A15 2Ghz and Cortex™-A7 Octa core CPUs) has 4 1.4GHz cores and 4 2.0GHz cores.
  • Configure my bluetooth keyboard is easy. I am using a wired mouse.
  • no need to run resize (the microSD) as it was automatically done

Complaints

Sorry I have to move this section to the top.

USB ports and keyboard

(Odroid xu4 + Ubuntu15.10) When I plug a usb3.0 flash drive, my usb wifi keyboard seems not working anymore. It is fine if I use a usb wired keyboard. Google: odroid keyboard problem. http://forum.odroid.com/viewtopic.php?f=112&t=7641

Slowness

For some reason, the machine is getting slow.

  • when I type something, it does not respond after a few seconds (either directly or through ssh)
  • when I mount an nfs partition and try to run 'tar xz XXXX'. The extraction stops and goes:(

My conclusions: 1. Use wired keyboard 2. Use my own USB to ethernet adapter. This solve the issue that ssh connection is too slow and response is unacceptable.

Now I am now using ubuntu 14.04 instead of 15.10.

Some people have a bad luck getting a flawed power adapter (5V, 4A).

Download links

  • Ubuntu. Be sure to read the Release Note too. It teaches how to get gpu acceleration on the chromium browser.

Black screen, blue light is off

In my case, I need to unplug the HDMI cable and power first. Then apply the power (so the fan will spin and blue light will flash) and then connect the HDMI cable.

Forum

The forum is very active!!

Chromium and youtube

The artifacts problem in the Chromium + youtube of Ubuntu 15.10 can be fixed by following the release note.

Edit /etc/chromium-browser/default

CHROMIUM_FLAGS=" --use-gl=egl --ignore-gpu-blacklist --disable-accelerated-2d-canvas --num-raster-threads=2"

We can open the web page chrome://gpu to check hardware acceleration status.

Mali gpu

$ sudo apt-cache showpkg mali-x11

cpu fan control

odroid@odroid:~$ ls /sys/devices/odroid_fan.13/
driver    fan_speeds  power     pwm_enable  temp_levels
fan_mode  modalias    pwm_duty  subsystem   uevent
odroid@odroid:~$ cat /sys/devices/odroid_fan.13/fan_speeds
1 51 71 91
odroid@odroid:~$ cat /sys/devices/odroid_fan.13/temp_levels
68 73 85
cd
git clone https://github.com/mad-ady/odroid-cpu-control.git
sudo ~/odroid-cpu-control/odroid-cpu-control -s -g "powersave" -m 600M  # fixed freq at 600MHz
# or
sudo ~/odroid-cpu-control/odroid-cpu-control -s -g "conservative" -M 1.2G # conservative governor
~/odroid-cpu-control/odroid-cpu-control -l    # current cpu freq setting
~/odroid-cpu-control/odroid-cpu-control -l -t # temperature

Note that

$ # Original freq came with Ubuntu OS
$ sudo ./odroid-cpu-control -l
CPU0: governor performance	current 1.40GHz	min 200.00MHz [200.00MHz]	max 1.40GHz [1.40GHz] 	
CPU1: governor performance	current 1.40GHz	min 200.00MHz [200.00MHz]	max 1.40GHz [1.40GHz] 	
CPU2: governor performance	current 1.40GHz	min 200.00MHz [200.00MHz]	max 1.40GHz [1.40GHz] 	
CPU3: governor performance	current 1.40GHz	min 200.00MHz [200.00MHz]	max 1.40GHz [1.40GHz] 	
CPU4: governor performance	current 2.00GHz	min 200.00MHz [200.00MHz]	max 2.00GHz [2.00GHz] 	
CPU5: governor performance	current 2.00GHz	min 200.00MHz [200.00MHz]	max 2.00GHz [2.00GHz] 	
CPU6: governor performance	current 2.00GHz	min 200.00MHz [200.00MHz]	max 2.00GHz [2.00GHz] 	
CPU7: governor performance	current 2.00GHz	min 200.00MHz [200.00MHz]	max 2.00GHz [2.00GHz] 
$ # Use 'Conservative' governor as above
$ cpufreq-info | grep -i current | grep CPU
  current CPU frequency is 200 MHz.
  current CPU frequency is 200 MHz.
  current CPU frequency is 200 MHz.
  current CPU frequency is 200 MHz.
  current CPU frequency is 300 MHz.
  current CPU frequency is 300 MHz.
  current CPU frequency is 300 MHz.
  current CPU frequency is 300 MHz.
$ ~/odroid-cpu-control/odroid-cpu-control -l # not exactly the same as above
CPU0: governor conservative	current 300.00MHz	min 200.00MHz [200.00MHz]	max 1.20GHz [1.40GHz] 
CPU1: governor conservative	current 300.00MHz	min 200.00MHz [200.00MHz]	max 1.20GHz [1.40GHz] 
CPU2: governor conservative	current 300.00MHz	min 200.00MHz [200.00MHz]	max 1.20GHz [1.40GHz] 
CPU3: governor conservative	current 300.00MHz	min 200.00MHz [200.00MHz]	max 1.20GHz [1.40GHz] 
CPU4: governor conservative	current 600.00MHz	min 200.00MHz [200.00MHz]	max 1.20GHz [2.00GHz] 
CPU5: governor conservative	current 600.00MHz	min 200.00MHz [200.00MHz]	max 1.20GHz [2.00GHz] 
CPU6: governor conservative	current 600.00MHz	min 200.00MHz [200.00MHz]	max 1.20GHz [2.00GHz] 
CPU7: governor conservative	current 600.00MHz	min 200.00MHz [200.00MHz]	max 1.20GHz [2.00GHz] 
$ ls /sys/devices/system/cpu/
cpu0  cpu2  cpu4  cpu6  cpufreq  kernel_max  online    power    uevent
cpu1  cpu3  cpu5  cpu7  cpuidle  offline     possible  present
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors 
interactive conservative ondemand powersave performance
odroid@odroid:~$
watch grep \"cpu MHz\" /proc/cpuinfo
  • Google: odroid cpu governor

cpu temperature

~/odroid-cpu-control/odroid-cpu-control -l -t
# or to watch in real time (ctrl C to stop)
watch ~/odroid-cpu-control/odroid-cpu-control -l -t

Lost ethernet connection

It seems there is a hardware/software issue with many Odroid devices. Google: odroid ethernet not working. (Not a solution was found). My current solution is to use a USB-ethernet adapter.

My experience is I need to replug the microSD card. Replugging ethernet, hdmi does not help.

From time to time, the ethernet connection is lost. Normally the ifconfig should return like

odroid@odroid:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr 00:1e:06:32:03:ac  
          inet addr:192.168.1.189  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::21e:6ff:fe32:3ac/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:26 errors:0 dropped:0 overruns:0 frame:0
          TX packets:67 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3488 (3.4 KB)  TX bytes:9730 (9.7 KB)

ip6tnl0   Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          UP RUNNING NOARP  MTU:1452  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:243 errors:0 dropped:0 overruns:0 frame:0
          TX packets:243 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:22777 (22.7 KB)  TX bytes:22777 (22.7 KB)

sit0      Link encap:IPv6-in-IPv4  
          UP RUNNING NOARP  MTU:1480  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

When there is a network problem, the 'eth0' will not appear there.

Ideally, we should see something

odroid@odroid:~$ lsusb -t
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=r8152, 5000M
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/2p, 480M
        |__ Port 1: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 2: Dev 4, If 0, Class=Wireless, Driver=btusb, 12M
        |__ Port 2: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=exynos-ohci/3p, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=s5p-ehci/3p, 480M
odroid@odroid:~$ lsusb
Bus 006 Device 002: ID 0bda:8153 Realtek Semiconductor Corp. 
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 003 Device 003: ID 045e:00d1 Microsoft Corp. Optical Mouse with Tilt Wheel
Bus 003 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
odroid@odroid:~$ dmesg | grep -i smsc
[    0.000000] [c0] Kernel command line: console=tty1 console=ttySAC2,115200n8 root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro fsck.repair=yes net.ifnames=0 smsc95xx.macaddr=00:1e:06:61:7a:39 governor=performance hdmi_tx_amp_lvl=31 hdmi_tx_lvl_ch0=3 hdmi_tx_lvl_ch1=3 hdmi_tx_lvl_ch2=3 hdmi_tx_emp_lvl=6 hdmi_clk_amp_lvl=31 hdmi_tx_res=0 HPD=true vout=hdmi
odroid@odroid:~$ lsmod
Module                  Size  Used by
joydev                  9134  0
hidp                   13711  1
rfcomm                 33609  14
bnep                   11192  2
btusb                  16475  0
bluetooth             227857  41 bnep,hidp,btusb,rfcomm
rfkill                 13122  5 bluetooth
ina231_sensor           9040  0
spi_s3c64xx            14770  0
ppdev                   6506  0
lp                      8869  0
parport                22257  2 lp,ppdev

And

odroid@odroid:~$ sudo grep -i eth0 /var/log/syslog | tail
Feb  6 20:52:30 odroid avahi-daemon[642]: Registering new address record for 192.168.1.189 on eth0.IPv4.
Feb  6 20:52:30 odroid NetworkManager[646]: <info>  (eth0): device state change: ip-config -> ip-check (reason 'none') [70 80 0]
Feb  6 20:52:30 odroid NetworkManager[646]: <info>  (eth0): device state change: ip-check -> secondaries (reason 'none') [80 90 0]
Feb  6 20:52:30 odroid NetworkManager[646]: <info>  (eth0): device state change: secondaries -> activated (reason 'none') [90 100 0]
Feb  6 20:52:30 odroid avahi-daemon[642]: Joining mDNS multicast group on interface eth0.IPv6 with address fe80::21e:6ff:fe32:3ac.
Feb  6 20:52:30 odroid avahi-daemon[642]: New relevant interface eth0.IPv6 for mDNS.
Feb  6 20:52:30 odroid avahi-daemon[642]: Registering new address record for fe80::21e:6ff:fe32:3ac on eth0.*.
Feb  6 20:52:30 odroid NetworkManager[646]: <info>  Policy set 'Wired connection 1' (eth0) as default for IPv4 routing and DNS.
Feb  6 20:52:31 odroid NetworkManager[646]: <info>  (eth0): Activation: successful, device activated.
Feb  6 20:52:31 odroid nm-dispatcher: Dispatching action 'up' for eth0
odroid@odroid:~$ 

Turn off/on blue light

The command is (must log in as root first, sudo does not work??)

sudo su

echo "heartbeat" > /sys/class/leds/blue\:heartbeart/trigger
echo "none"      > /sys/class/leds/blue\:heartbeart/trigger

The commands can be put in a cron job. See this message.

RRDTool

fix date/zone

sudo dpkg-reconfigure tzdata

Bluetooth keyboard

See Raspberry bluetooth keyboard. The blueman utility does not work for some reason. I have to temporarily plug in a regular/RF wireless keyboard and do some work on the command line.

# Press the 'connect' button on the bluetooth keyboard first!
$ bluetoothctl # no sudo is needed
[bluetooth] default-agent
[bluetooth] scan on
[bluetooth] pair 90:7F:61:8F:D0:38        # it will ask to enter a pin code
           # type the pin number shown on pop-up windows in the top-right corner
[bluetooth] connect 90:7F:61:8F:D0:38
[bluetooth] quit

Lock screen

Go to control panel -> Screensaver -> Uncheck 'Lock screen when screensaver is active'.

I2C write error on boot

See XU4 tip. It is because XU4 and XU3-Lite have no energy sensor on board.

sudo nano /etc/modprobe.d/blacklist-odroid.conf
# insert a line
blacklist ina231_sensor

Boot Linux over NFS

http://odroid.com/dokuwiki/doku.php?id=en:nfsboot

/etc/apt/sources.list

$ cat /etc/apt/sources.list
deb http://ports.ubuntu.com wily restricted universe multiverse main
deb-src http://ports.ubuntu.com wily restricted universe multiverse main

deb http://ports.ubuntu.com wily-backports restricted universe multiverse main
deb-src http://ports.ubuntu.com wily-backports restricted universe multiverse main

deb http://ports.ubuntu.com wily-proposed restricted universe multiverse main
deb-src http://ports.ubuntu.com wily-proposed restricted universe multiverse main

deb http://ports.ubuntu.com wily-security restricted universe multiverse main
deb-src http://ports.ubuntu.com wily-security restricted universe multiverse main

deb http://ports.ubuntu.com wily-updates restricted universe multiverse main
deb-src http://ports.ubuntu.com wily-updates restricted universe multiverse main

And the /etc/apt/ directory

odroid@odroid:~/preprocessgui$ ls /etc/apt/
apt.conf.d     sources.list   sources.list.d  trusted.gpg~
preferences.d  sources.list~  trusted.gpg     trusted.gpg.d
odroid@odroid:~/preprocessgui$ cat /etc/apt/sources.list.d/odroid.list
deb http://deb.odroid.in/5422/ wily main
odroid@odroid:~/preprocessgui$ ls /etc/apt/sources.list.d/
odroid.list

Kodi

Ubuntu 15.10 image preloads Kodi. One cool thing is the 'Display Mode' option in the System > Settings > System > Video Output is available. So Kodi can coexist with my Ubuntu. So next time when I exit Kodi, I won't need to click Ctrl-Alt-F7 to get back to Ubuntu OS.

Testing gigabit ethernet

Use iperf -The network bandwidth measurement tool.

See

OTG gadget

http://forum.odroid.com/viewtopic.php?f=112&t=9111

Qt Creator

When I use sudo apt-get install qtcreator, everything looks fine. But I couldn't open it.

odroid@odroid:~$ qtcreator
No tool chain set from kit "Desktop".
No tool chain set from kit "Desktop".
Unable to find an X11 visual which matches EGL config 9
Could not initialize OpenGL for RasterGLSurface, reverting to RasterSurface.
Unable to find an X11 visual which matches EGL config 10
Could not initialize OpenGL
Aborted
odroid@odroid:~$ qtcreator -version

Qt Creator 3.5.0 based on Qt 5.4.2

A solution is

odroid@odroid:~$ qtcreator -noload Welcome

Then Qt Creator will pop up even the 'Unable to find an X11 visual which matches EGL' message still appeared.

R

See Build R from source.

In summary,

sudo apt-get build-dep r-base
wget https://cran.rstudio.com/src/base/R-3/R-3.2.3.tar.gz
tar xzvf R-3.2.3.tar.gz
cd R-3.2.3
./configure --enable-R-shlib
make -j6
sudo make install

Qt

Binary

$ sudo apt-get install aptitude
$ aptitude search qt5 -F "%c %p %d %V"
$ sudo apt-get update
$ sudo apt-get install qt5-default  # 5.4.2
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libqt5opengl5-dev qtbase5-dev
Suggested packages:
  libmysqlclient-dev libpq-dev libsqlite3-dev unixodbc-dev
The following NEW packages will be installed:
  libqt5opengl5-dev qt5-default qtbase5-dev
0 upgraded, 3 newly installed, 0 to remove and 2 not upgraded.
Need to get 831 kB/874 kB of archives.

$ dpkg -L qt5-qmake
/.
/usr
/usr/lib
/usr/lib/arm-linux-gnueabihf
/usr/lib/arm-linux-gnueabihf/qt5
...
/usr/lib/arm-linux-gnueabihf/qt5/bin
/usr/lib/arm-linux-gnueabihf/qt5/bin/qmake
...
$ dpkg -L qt5-default
/.
/usr
/usr/lib
/usr/lib/arm-linux-gnueabihf
/usr/lib/arm-linux-gnueabihf/qtchooser
/usr/share
/usr/share/doc
/usr/share/doc/qt5-default
/usr/share/doc/qt5-default/copyright
/usr/lib/arm-linux-gnueabihf/qtchooser/default.conf
/usr/share/doc/qt5-default/changelog.Debian.gz
/usr/share/doc/qt5-default/LGPL_EXCEPTION.txt
$ qmake -v
QMake version 3.0
Using Qt version 5.4.2 in /usr/lib/arm-linux-gnueabihf

Build from source

$ cat /media/odroid/toshiba/qt-5.5.1/qtbase/mkspecs/linux-g++/qmake.conf
#
# qmake configuration for linux-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

#QMAKE_INCDIR += /usr/include
#QMAKE_LIBDIR += /usr/lib

#QMAKE_INCDIR_OPENGL = /usr/include/GL
#QMAKE_LIBDIR_OPENGL = /usr/lib/arm-linux-gnueabihf/mesa
QMAKE_INCDIR_EGL        = /usr/include/EGL
QMAKE_LIBDIR_EGL        = /usr/lib/arm-linux-gnueabihf
QMAKE_INCDIR_OPENGL_ES2 = /usr/include/GLES2
QMAKE_LIBDIR_OPENGL_ES2 = /usr/lib/arm-linux-gnueabihf/
#QMAKE_INCDIR_OPENVG    = $QMAKE_INCDIR_EGL
#QMAKE_LIBDIR_OPENVG    = /usr/lib/arm-linux-gnueabihf/mali-egl

QMAKE_LIBS_EGL += -lEGL
#QMKAE_LIBS_GL  += -lGL
QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL

#QMAKE_LFLAGS += -Wl,-rpath-link,/usr/lib/arm-linux-gnueabihf

QMAKE_CFLAGS   +=  -mcpu=cortex-a15 -mfpu=neon-vfpv4 -mtune=cortex-a15.cortex-a7  -mfloat-abi=hard
QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
QMAKE_CFLAGS_RELEASE   +=  -mcpu=cortex-a15 -mfpu=neon-vfpv4 -mtune=cortex-a15.cortex-a7 -mfloat-abi=hard
DISTRO_OPTS += "hard-float"
QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CXXFLAGS -O2

QT_INSTALL_PREFIX="/usr/local/Qt5.5.1/"  ## Edit this if you have a preference

# Preferred eglfs backend
EGLFS_DEVICE_INTEGRATION = eglfs_linuxfb
load(qt_config)

$ sudo find /usr/lib -name libGLES*
[sudo] password for odroid: 
/usr/lib/arm-linux-gnueabihf/libGLESv1_CM.so
/usr/lib/arm-linux-gnueabihf/libhybris-egl/libGLESv2.so.2
/usr/lib/arm-linux-gnueabihf/libhybris-egl/libGLESv2.so.2.0.0
/usr/lib/arm-linux-gnueabihf/mali-egl/libGLESv1_CM.so
/usr/lib/arm-linux-gnueabihf/mali-egl/libGLESv1_CM.so.1.1
/usr/lib/arm-linux-gnueabihf/mali-egl/libGLESv2.so.2.0
/usr/lib/arm-linux-gnueabihf/mali-egl/libGLESv1_CM.so.1
/usr/lib/arm-linux-gnueabihf/mali-egl/libGLESv2.so.2
/usr/lib/arm-linux-gnueabihf/mali-egl/libGLESv2.so
/usr/lib/arm-linux-gnueabihf/mesa-egl/libGLESv1_CM.so
/usr/lib/arm-linux-gnueabihf/mesa-egl/libGLESv2.so.2
/usr/lib/arm-linux-gnueabihf/mesa-egl/libGLESv2.so
/usr/lib/arm-linux-gnueabihf/libGLESv2.so

At the end of running .configure, I got

Creating qmake...
Done.
Running configuration tests...
The OpenGL ES 2.0 functionality test failed!
 You might need to modify the include and library search paths by editing
 QMAKE_INCDIR_OPENGL_ES2, QMAKE_LIBDIR_OPENGL_ES2 and QMAKE_LIBS_OPENGL_ES2 in
 /media/odroid/toshiba/qt-5.5.1/qtbase/mkspecs/linux-g++.
./configure \
-opensource \
-developer-build \
-confirm-license \
-prefix /usr/local/qt5.4 \
-skip qtwebkit \
-no-gtkstyle \
-nomake examples \
-nomake tests \
-opengl es2 
make -j 7
sudo make install

Unfortunately I got an error

Running configuration tests...
The OpenGL ES 2.0 functionality test failed!
 You might need to modify the include and library search paths by editing
 QMAKE_INCDIR_OPENGL_ES2, QMAKE_LIBDIR_OPENGL_ES2 and QMAKE_LIBS_OPENGL_ES2 in
 /home/odroid/qt-everywhere-opensource-src-5.4.2/qtbase/mkspecs/linux-g++.

qt directories

$ ls -l /usr/lib/arm-linux-gnueabihf/
...
drwxr-xr-x  4 root root     4096 Jan 31 15:31 qt4
drwxr-xr-x  7 root root     4096 Feb 14 10:36 qt5
drwxr-xr-x  2 root root     4096 Feb 20 18:35 qtchooser
drwxr-xr-x  3 root root     4096 Feb 14 10:37 qtcreator
drwxr-xr-x  3 root root     4096 Jan 31 15:31 qt-default
...

Create swap

Boot stages

The stages are Boot ROM -> Boot loader -> UBoot -> Linux Kernel.

Benchmark

odroid@odroid:~$ sysbench --num-threads=1 --test=cpu --cpu-max-prime=20000 --validate run
sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 1
Additional request validation enabled.


Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 20000


Test execution summary:
    total time:                          372.6624s
    total number of events:              10000
    total time taken by event execution: 372.6445
    per-request statistics:
         min:                                 37.02ms
         avg:                                 37.26ms
         max:                                151.63ms
         approx.  95 percentile:              37.39ms

Threads fairness:
    events (avg/stddev):           10000.0000/0.00
    execution time (avg/stddev):   372.6445/0.00

Note that cpu governor and speed have been modified (to reduce the cpu fan) when I ran the test

odroid@odroid:~$ ~/odroid-cpu-control/odroid-cpu-control -l
CPU0: governor conservative     current 300.00MHz       min 200.00MHz [200.00MHz]max 1.20GHz [1.40GHz]
CPU1: governor conservative     current 300.00MHz       min 200.00MHz [200.00MHz]max 1.20GHz [1.40GHz]
CPU2: governor conservative     current 300.00MHz       min 200.00MHz [200.00MHz]max 1.20GHz [1.40GHz]
CPU3: governor conservative     current 300.00MHz       min 200.00MHz [200.00MHz]max 1.20GHz [1.40GHz]
CPU4: governor conservative     current 400.00MHz       min 200.00MHz [200.00MHz]max 1.20GHz [2.00GHz]
CPU5: governor conservative     current 400.00MHz       min 200.00MHz [200.00MHz]max 1.20GHz [2.00GHz]
CPU6: governor conservative     current 400.00MHz       min 200.00MHz [200.00MHz]max 1.20GHz [2.00GHz]
CPU7: governor conservative     current 400.00MHz       min 200.00MHz [200.00MHz]max 1.20GHz [2.00GHz]

Odroid Magazine

Running Linux programs under Android

A guide to Linux chroot. Jan 2014

IO ports on U3

You can use any generic C/C++ or Python libraries to access the GPIOs in your program. Firma can be used to make an interactive interface between U3 and ATmega328P. Jan 2014.

Playing youtube on Linux

Jan 2014

Use as a Wifi router

by using hostapd. Feb 2014.

IO/O Shield access & Arduino

Feb 2014

Game emulator

Feb 2014

From least powerful to most powerful: GB < GBC < NES < SMS < GAMEGEAR < GENESIS < SNES < GBA < PSI < PSP

Communicate Odroid with PC via USB

The following 3 functions may be used simulaneously

  • Emulate a mass storage device
  • Emulate a serial link
  • Emulate a ethernet link - the speed can be faster than 100Mbps

Feb 2014

Sensors and Odroid xu

Mar 2014

Portable Linux tablet

Apr 2014

Build Android from source

Apr 2014

Build Ubuntu from scratch

Cross compile. Apr 2014

Install oracle JDK version 8

Apr 2014

Monitor your Linux with NMON

sudo apt-get install nmon
nmon -f -s 30 -c 120  # ~/<hostname>_date_time.nmon will be created

May 2014

Introduction to Odroid-show

Using bash scripts to show texts or images. May 2014

Sort by file size

find . -type f -exec ls -s {} \; | sort -n -r | head -5

Find fils that are larger than 100MB

find - -size +100M

Dual boot Android and Ubuntu

  1. Modify the Android source code for the MTP.
  2. Copy the Xubuntu root file system
    1. Modify the odroid-config script
    2. Check the u-boot version
  3. Generate a new partition table
  4. Format the partitions
  5. Install the Ubuntu rootfs
    1. Replace UUID in boot.scr
  6. Install the Android system files
  7. Using the prebuilt image
  8. Switching between Android and Ubuntu

May 2014

Pipe viewer and dd

See the progress of your operation.

sudo apt-get install pv
dd if=/dev/sdX bs=4M | pv | dd of=/dev/sdY

May 2014

Android boot process

May 2014.

Openbox

Openbox can be run by itself or within another desktop environment. The main focus of Openbox is speed. It comes with only a terminal and web browser, and is perfect for embedded systems. Jun 2014.

Lego case for Odroid U3

Jun 2014

Step motor and Odroid U3

using a bash script. Jun 2014

Resize Android partitions

with gparted. Jun 2014.

Explore Android img files

Jun 2014

If X11 stops working

Ctrl + Alt + F1[1-6] to switch to a resident framebuffer terminal console.

To switch back to X11, click Ctrl + Alt + F7.

Create deb files - checkinstall

Jun 2014

Using wiimote

Jun 2014

High performance computing at home

Jan 2014, Feb 2014, Mar 2014, Apr 2014, Jul 2014.

LDAP, NFS/AutoFS. With LDAP (Lightweight Active Directory Protocol) configured, we will be able to have users log into any node of the cluster with the same credentials and permissions whcih, when combined with NFS/AutoFS, will permit us to configure network mounted home directories and shares, creating a uniform user experience when connecting to any node in our cluster.

Using Xbox 360 controllers with Android

Jul 2014.

Control your bandwidth

Jul 2014.

sudo apt-get install nload

Deny some users to access your machine via SSH

Jul 2014.

OS: GameStation Turbo

which is a Linux frontend for both games and media playback.

Jul 2014.

Portable solar computing

Jul 2014

Odroid weather board + Qt application

Odroid-show + PC/Odroid host. Jul 2014

Building native Android applications with RED

Jul 2014

Remote Desktop Connection

using x11vnc server. If we also want to use Microsoft RDP to access, you will need to also install the xrd service.

Jul 2014.

Robotic Operating System

Jul 2014.

Mupen64 and Retroarch

Pocket rocket and couch potato. Aug 2014

ODROID-VU 9 inch 1280x800 touchscreen lcd

for android, linux and windows. Aug 2014

Home web server

using lighttpd & nginx. Aug 2014

Youtube player alternative

Tampermonkey. Aug 2014

Linux kernel compilation

The article provides details on starting with natively building a kernel using only the odroid itself. It does not addres cross-compiling.

Aug 2014

All about emmc modules

Aug 2014

Fix android overscan

Aug 2014.

ODROID-W

a miniature raspberry pi compatible wearable computer. A diy smartwatch was used as an example. It can run a full raspbian desktop environment on its own. Qt 4 and applications were used to display he clock and sms/mail/call notification.

Aug 2014

Mouting sd card as extra storage when booting from emmc

instead of a USB drive.

Aug 2014

Android development using the linux kernel

Aug 2014

Pepperflash chrome plugin

Aug 2014

Robot

Sep 2014

Wicd - network manager

Sep 2014

Freedomotic - home automation

Sep 2014

Bash script

  • do something every time the os boots
  • do math and concatenate strings
  • accept arguments
  • run a loop
  • launch a bunch of child processes with different arguments

Sep 2014.

Linux Gaming

Sep 2014

Conky

Oct 2014

I2C connection between U3 and Arduino module

Oct 2014.

KVM

Really, with 1GB memory! Nov 2014.

Node.js

Nov 2014.

Odroid C1 vs Raspberry Pi B+

Including an introduction to C1. Dec 2014.

Manage your software packages with automatic updates using apt-get

Kernel updates using apt-get.

Jan 2015.

ownCloud

Jan 2015.

Remote Desktop

Using Guacamole. All you need is a web browser with HTML5 support since no plugin or client-side software is required. Guacamole supports VNC, SSH and RDP.

Feb 2015.

Docker on ARMv7

Jan, Feb and March 2015.

Android Kitkat and Odroid C1

March 2015.

Android Development

Dissecting and modifying the APK file

Sep 2014, March 2015.

Installing Linux on an external USB drive

Mar 2014 & April 2015 issue. The boot partition is required to reside on a microSD card or emmc module. However, the root partition can be moved to a USB drive.

GPIO shutdown

April 2015 issue.

Triple boot Odroid C1

Pack Ubuntu, Android and Openelec.

April 2015 issue.

Dashing

May 2015 issue.

USB GPS and OBDII to track vehicles

June 2015.

Nintendo 64 emulation

Jun 2015.

3.2" touchscreen driver installation

Jun 2015.

Karaoke

Jun 2015

Popcorn time

Popcorn Time uses sequential downloading to play copies of films listed by the website yts.to (YIFY). Jul 2015.

PS3 controller

Aug 2015

Building Android Kitkat on Odroid C1

Aug 2015

Stepmania

Dancing entertainment. Aug 2015

Netflix under Linux + Odroid C1

Chromium is used. Sep 2015

Android Debian

Sep 2015

Qt5

Sep 2015

ownCloud

Oct 2015.

apt-get

  • Kernel update
  • Package list

Oct 2015

Zygote and Android development

Oct 2015

Seafile

A cloud service that allows you to create and share a private cloud library of files with friends or colleagues. Files get synced for all users. Oct 2015.

Docker

Oct 2015

Get more out of U-boot

It include boot rootfs from different partition or USB drive. Nov 2015

Logical volume management

Sep 2015, Nov 2015

Linux Gaming using GLshim, OpenGL

ODroid devices do not support OpenGL but only OpenGL ES, which is an optimized subset of OpenGL designed for embedded systems.

GLshim is a OpenGL to OpenGL ES wrapper, which means it's possible to translate certain OpenGL functions into OpenGL ES functions. Nov 2015

http://forum.odroid.com/viewtopic.php?f=95&t=13424

LFTP and CRON

LFTP allows segmented & parallel downloads. Nov 2015

Cloudshell home server

Oct 2015, Nov 2015

RuneAudio music player

  • LXDE auto-login
  • Setup kiosk
  • Auto-start Chromium
  • Remote control is used.

Nov 2015

ODroid-VU7 800x480 multi-touch screen for C1+

boot.ini file needs to be configured to support 800x480 resolution and DVI output mode. Nov 2015