Odroid: Difference between revisions
Line 169: | Line 169: | ||
* [http://www.hardkernel.com/main/products/prdt_info.php?g_code=G146648458113 40 x 40 x 25 mm Tall Blue Heat Sink] | * [http://www.hardkernel.com/main/products/prdt_info.php?g_code=G146648458113 40 x 40 x 25 mm Tall Blue Heat Sink] | ||
* [http://www.hardkernel.com/main/products/prdt_info.php?g_code=G141637555371 C1 Heatsink] | * [http://www.hardkernel.com/main/products/prdt_info.php?g_code=G141637555371 C1 Heatsink] | ||
* https://www.amazon.com/Gdstime-Aluminum-Heatsink-Computer-Northbridge/dp/B00ZRDRX8M | |||
* http://forum.odroid.com/viewtopic.php?f=97&t=15252 | * http://forum.odroid.com/viewtopic.php?f=97&t=15252 | ||
Revision as of 21:42, 23 June 2016
XU4 + Ubuntu 15.10
- http://www.hardkernel.com/main/products/prdt_info.php and FAQ
- http://odroid.com/dokuwiki/doku.php?id=en:odroid-xu4
- http://www.bitkistl.com/2015/08/odroid-xu4-features-in-detail.html
- https://plus.google.com/+MauroRibeiro-mdrjr/posts (Google+ from Mauro Ribeiro, filled with news)
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
firstrun
# chmod +x ./firstrun sudo /home/$USER/odroid-cpu-control/odroid-cpu-control -s -g "conservative" -M 1.4G sudo su - -c "echo none > /sys/class/leds/blue\:heartbeart/trigger"
Question: how to run the script at boot?
Answer: Follow this post. Edit /etc/rc.local to add the desired commands. It looks like
echo none > /sys/class/leds/blue\:heartbeart/trigger sleep 60; /home/odroid/odroid-cpu-control/odroid-cpu-control -s -g "conservative" -M 1.4G exit 0
Systemd/systemctl - an alternative boot manager
odroid@odroid:~$ ps -ef | grep system root 366 1 0 20:25 ? 00:00:00 /lib/systemd/systemd-udevd --daemon message+ 500 1 0 20:25 ? 00:00:01 dbus-daemon --system --fork root 533 1 0 20:25 ? 00:00:00 /lib/systemd/systemd-logind odroid 1344 1221 0 20:25 ? 00:00:00 upstart-dbus-bridge --daemon --system --user --bus-name system odroid 2383 1724 0 20:34 pts/6 00:00:00 grep --color=auto system
cpu fan control
- Tip: Do not leave a browser page with lots of flash/ads on.
- Control automatic fan settings on XU3/XU4 (posted on 9/22/2015). Documentation about fan settings.
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
- See Jan 2016 Odroid Magazine
- the original post
- https://github.com/mad-ady/odroid-cpu-control
- Maybe I should consider to use conservative instead of powersave. See http://forum.odroid.com/viewtopic.php?f=112&t=18461
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 /home/$USER/odroid-cpu-control/odroid-cpu-control -s -g "conservative" -M 1.6G # conservative governor, max freq 1.6G, less noise sudo /home/$USER/odroid-cpu-control/odroid-cpu-control -s -g "conservative" -M 2.0G -c 4-7 # conservative governor, reset max freq. /home/$USER/odroid-cpu-control/odroid-cpu-control -l # current cpu freq setting /home/$USER/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:~$
- https://wiki.archlinux.org/index.php/CPU_frequency_scaling#Scaling_governors (it also teaches a command to watch the cpu speed in real time. But it seems the command works only on my x86 ubuntu, not my Odroid ubuntu desktop.)
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
Heatsink method
- 40 x 40 x 25 mm Tall Blue Heat Sink
- C1 Heatsink
- https://www.amazon.com/Gdstime-Aluminum-Heatsink-Computer-Northbridge/dp/B00ZRDRX8M
- http://forum.odroid.com/viewtopic.php?f=97&t=15252
But you will meet the thermal throttling frequently. Change the governor to "Interactive" or "OnDemand" to make XU4 generate lower heat.
Turn off/on blue light
The command is (must log in as root first, sudo does not work??)
sudo su - -c "echo heartbeat > /sys/class/leds/blue\:heartbeart/trigger" sudo su - -c "echo none > /sys/class/leds/blue\:heartbeart/trigger"
The commands can be put in a cron job. See this message.
Lost ethernet connection
- http://forum.odroid.com/viewtopic.php?f=95&t=19034 & http://forum.odroid.com/viewtopic.php?f=95&t=19034&start=50#p136499 (ethernet sleep)
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 (r8152 should be detected)
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:~$
ethtool -s eth0 speed 100 duplex full to /etc/rc.local to force 100 MBit
RRDTool
- http://www.rechenkraft.net/wiki/index.php?title=Hardwaremonitoring_Odroid_U2/U3_Android
- Google: rrdtool odroid
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
- http://forum.odroid.com/viewtopic.php?f=112&t=18158
- http://openmaniak.com/iperf.php
- https://advanxer.com/blog/2012/06/installing-iperf-on-ubuntu/
- http://xenserver.org/discuss-virtualization/virtualization-blog/entry/basic-network-testing-with-iperf.html
Printer
Adding a networked printer 'Brother-HL-5250DN' works (Main menu -> System Tools -> Printers). I don't need to go through some hassle like in this case.
Note that though only one printer is added, when I try to print, the Print dialog shows 'BRN_EE70EF (Online)' and 'Brother-HL-5250DN-series'(default) printers. Just pick up the default.
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.
Build 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.5.tar.gz tar xzvf R-3.2.5.tar.gz cd R-3.2.5 ./configure --enable-R-shlib time make -j8 # 23 minutes 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
- http://forum.odroid.com/viewtopic.php?f=77&t=14923.
- http://odroid.com/dokuwiki/doku.php?id=en:opengleslinux ODroid Mesa software rendering and Mali hardware rendering
$ 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.
Run from USB drive
We still need to boot from microSD or eMMC.
To run from USB drive,
- install os on microSD
- clone the rootfs to your hard disk or USB drive
- change the rootfs UUID located in /boot/boot.ini to match the new one from your root device.
Then all you need is reboot.
odroid@odroid:~$ cat /media/boot/boot.ini | grep UUID setenv bootrootfs "console=tty1 console=ttySAC2,115200n8 root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro fsck.repair=yes net.ifnames=0 " # Find UUID https://help.ubuntu.com/community/UsingUUID odroid@odroid:~$ sudo blkid /dev/mmcblk0p1: SEC_TYPE="msdos" LABEL="boot" UUID="5F78-D927" TYPE="vfat" PARTUUID="0008aae4-01" /dev/mmcblk0p2: LABEL="rootfs" UUID="e139ce78-9841-40fe-8823-96a304a09859" TYPE="ext4" PARTUUID="0008aae4-02" /dev/mmcblk0: PTUUID="0008aae4" PTTYPE="dos" odroid@odroid:~$ ls -l /dev/disk/by-uuid/ total 0 lrwxrwxrwx 1 root root 15 Feb 23 19:26 5F78-D927 -> ../../mmcblk0p1 lrwxrwxrwx 1 root root 15 Feb 23 19:26 e139ce78-9841-40fe-8823-96a304a09859 -> ../../mmcblk0p2 odroid@odroid:~$ ls -l /media/boot total 8086 -rwxr-xr-x 1 root root 8563 Dec 20 09:20 boot.ini -rwxr-xr-x 1 root root 50908 Feb 22 21:25 exynos5422-odroidxu3.dtb -rwxr-xr-x 1 root root 4907768 Feb 22 21:26 uInitrd -rwxr-xr-x 1 root root 3308224 Feb 22 21:26 zImage odroid@odroid:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 743M 0 743M 0% /dev tmpfs 200M 12M 189M 6% /run /dev/mmcblk0p2 30G 5.7G 24G 20% / tmpfs 996M 80K 996M 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 996M 0 996M 0% /sys/fs/cgroup /dev/mmcblk0p1 128M 7.9M 120M 7% /media/boot cgmfs 100K 0 100K 0% /run/cgmanager/fs tmpfs 200M 24K 200M 1% /run/user/1000
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]
Other distributions
Ubuntu 14.04.01
This is the Ubuntu version used in the demonstration video (Web Browsing and XMBC on Linux) where the LXTerminal can be dragged freely without too much delay. We can watch youtube on Chromium.
Note that the disk space is not extended by default. So don't hurry to run sudo apt-get update and then update all packages.
odroid@odroid:~$ uname -a Linux odroid 3.10.69 #1 SMP PREEMPT Thu Feb 12 15:22:14 BRST 2015 armv7l armv7l armv7l GNU/Linux
Sharing ethernet internet through wifi
- http://forum.odroid.com/viewtopic.php?f=112&t=9321
- https://www.quora.com/How-do-I-create-hotspots-in-Ubuntu-14-04
Now
- right click the network applet on the Odroid desktop and click 'Enable Wi-Fi'
- left click the network applet and choose 'Create New Wi-Fi Network...'
- Select 'Odroid' (the connection name you just created) for the connection and the 'Create' button
Now the other devices can use wifi to have an internet access through the wifi hotspot (Odroid).
Minimal Debian Jessie
Also known as Odroid GameStation Turbo or OGST.
Luckily, the gigabit network works out of box. I install LXDE desktop by following here. (Update: the gigabit is unstable. I have to go back to use my usb-ethernet adapter)
The default browser in Debian Jessie (8.4) is Iceweasel which looks very similar to Firefox.
The initial username/password for the minimal debian is root/odroid.
The uSD card has 2 partitions (boot in fat16 and GameStationTurbo in ext4).
Debian is a little different from Ubuntu. For example,
- sudo does not work at first. See here to add new users to /etc/sudoers file.
- I need to use 'sudo ifconfig' instead of 'ifconfig'
- change the hostname from odroid-jessie to odroid.
- Run apt-get dist-upgrade to fix kodi cannot launch problem.
And again, the following commands need to be run when we reboot the computer (to take care of the cpu fan and blue led, just my opinion):
sudo ~/odroid-cpu-control/odroid-cpu-control -s -g "conservative" -M 1.4G sudo su - -c "echo none > /sys/class/leds/blue\:heartbeart/trigger"
Xu4 + Debian
Too bad the gigabit network adapter still does not work stable. I have to use my own usb-ethernet adapter.
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
- Modify the Android source code for the MTP.
- Copy the Xubuntu root file system
- Modify the odroid-config script
- Check the u-boot version
- Generate a new partition table
- Format the partitions
- Install the Ubuntu rootfs
- Replace UUID in boot.scr
- Install the Android system files
- Using the prebuilt image
- 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.
X86 emulation on ARM
Eltechs ExaGear desktop is a virtual machine that implements a software-based x86 Linux container on ARM and allows you to run Intel x86 applications directly.
Feb 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