There are some ODROID U2 and two U3 for development of small robots. Here are details and suggestions for their use.
- 1 Useful How-Tos
- 2 Tested OS and versions
- 3 Tested I/O devices
- 4 Tested wireless communication
- 5 Tested wired communication
- 6 Unresolved issues
- 7 Solved issues
- 8 Configuring a Network
- 9 Communication with Arduino
- Kernel recompiling process for the ODROID-U2; it is necessary to do this if you ever wish to install external/out-of-tree drivers, as the "official package" is missing several critical kernel headers.
Tested OS and versions
- Lubuntu 13.05 Server does not have a graphical interface. It has already installed ssh. To install ROS, please follow these instructions
- Xubuntu 13.04 for armhf architectures, released by HardKernel with their modified Linux kernel, version 3.0.75. The kernel can be recompiled for using 3D video acceleration but this would prevent USB video cameras to work, so it's useless for robot development (even more so since OpenCL can't be even used).
- Linaro Ubuntu 12.11 with HardKernel's Linux kernel, version 3.0.60. Grab this image dated 25-01-2013, flash it on your microSD card and then apply the latest point kernel point update (at the time of writing, it is version 3.0.63, dated 13-02-2013) following the instructions given on the thread's opening post.
All OSes have wireless networking issues, please read below for more information.
Tested I/O devices
TP-LINK WN725n v2
This device is not supported by linux, thus it should be compiled to the desired platform. To do this, you can follow this tutorial.
Sometimes it is not enough just the tutorial, because the system does not add the wlanX to the configuration file. Thus, it is necessary to modify the following file:
sudo vim /etc/network/interfaces
In the file add the following lines:
auto wlanX iface wlanX inet dhap
Where X is the number of the net, that could be found using the this line:
After saving the changes on the file, it should be restart the connection:
sudo /etc/init.d/netwroking restart
If this command does not work reboot the system:
sudo reboot now
To see the available wifii networks:
sudo iwlist wlanX scanning
If this does not work try
sudo ifconfig wlanX up
Then, redo the above steps.
Monitors need a native HDMI interface to work with ODROIDs due to the strict requirements of the Exynos system-on-chip; for the same reason, external HDMI-to-DVI adapters are also not recommended, as you could result having a blank image screen (source )
This is a list of monitors and TV screens with native HDMI ports that are known to work.
- Sony KDL-32V4500
- Samsung Syncmaster XL2370 HD
Tested wireless communication
See problems below.
Tested wired communication
Wireless Networking (all tested OSes)
Wireless communications seem to be very troublesome, as the network interfaces tend to lose or drop a lot of packages, both in RX and TX, to the point that a reliable SSH connection cannot be established. This happens at least with the "officially supported" wireless NIC (with a Realtek RTL8191SU chipset), even if the wifi signal strength is excellent.
A curious aspect of this issue is that only incoming packets get dropped a lot, while outgoing packets are very modestly affected.
This being said, the RTL8191SU adapter loses some packets along the way also while being connected to other computers, so maybe it's really not the best USB wifi adapter ever.
root@odroid:~# ifconfig wlan6 wlan6 Link encap:Ethernet HWaddr **:**:**:**:**:** inet addr:192.168.1.60 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::ee1a:59ff:fe0e:f122/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:453 errors:0 dropped:600 overruns:0 frame:0 TX packets:292 errors:0 dropped:7 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:79264 (79.2 KB) TX bytes:35116 (35.1 KB)
odroid@odroid:~$ iwconfig wlan6 wlan6 IEEE 802.11bg ESSID:"MyWirelessNet" Nickname:"<WIFI@REALTEK>" Mode:Managed Frequency:2.437 GHz Access Point: **:**:**:**:**:** Bit Rate:54 Mb/s Sensitivity:0/0 Retry:off RTS thr:off Fragment thr:off Encryption key:****-****-****-****-****-****-****-**** Security mode:open Power Management:off Link Quality=100/100 Signal level=100/100 Noise level=0/100 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
This chipset seems not to be even detected by the stock HK kernel (all versions of it), but it is possible to use it after recompiling the kernel, disabling the in-kernel module for the NIC, and integrating Realtek's official driver for this chipset inside it (instructions are included in the package).
However, you still get a huge packet loss rate, even if you disable the power saving feature of the driver by loading the kernel module with
sudo modprobe 8192cu rtw_power_mgnt=0
lshw glitches (all tested OSes)
With the stock kernel the lshw command seems to be partly broken, but this is resolved by calling it with
sudo lshw -disable dmi
although this will prevent the detection of certain features of the board. Another way of fixing this issue is to recompile the kernel by hand (see the how-to linked above).
Configuring a Network
This steps are useful when you are working via ssh or just finished to install ubuntu on the sd card.
Open the file /etc/networ/interfaces and add the following lines:
iface wlanX inet static address "ip address" wpa-ssid "name of the network" wpa-psk "password of the network"
Change X for the correct interface.
Communication with Arduino
When the odroid is stated up the port, in which arduino is plug, does not have all the permissions to be access by the odroid's os. To solve this without connect and add the permissions to the proper port, it could be add a script that is executed each time that the odroid is start up. To do this should be created a file xx.sh, where xx is the name of the file. In this file should be written:
echo "odroid" | sudo chmod 777 /dev/ttyACMX
Where X is the number in which arduino is plugged
The file xx.sh should be moved to /etc/init.d/, and then run the following command: