Difference between revisions of "ODROID"

From AIRWiki
Jump to: navigation, search
(Added new tested OS; added Unresolved Issues, How-Tos, and Monitors sections;)
 
(18 intermediate revisions by 3 users not shown)
Line 1: Line 1:
There are two [http://www.hardkernel.com/ ODROID] U2 for development of small robots. Here are details and suggestions for their use.
+
There are some [http://www.hardkernel.com/ ODROID] U2 and two U3 for development of small robots. Here are details and suggestions for their use.
  
 
=== Useful How-Tos ===
 
=== Useful How-Tos ===
 
* [http://forum.odroid.com/viewtopic.php?f=52&t=81 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.
 
* [http://forum.odroid.com/viewtopic.php?f=52&t=81 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.
 
 
=== Unresolved issues ===
 
 
==== Wireless Networking ====
 
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 RTL 8191SU chipset).
 
 
===== Realtek RTL8192CU =====
 
This chipset seems not to be even detected by the stock HK kernel, but it is possible to use it after recompiling the kernel, disabling the in-kernel module for the NIC, and integrating [http://www.realtek.com/downloads/downloadsView.aspx?Langid=1&PNid=21&PFid=48&Level=5&Conn=4&DownTypeID=3&GetDown=false&Downloads=true Realtek's official driver] for this chipset inside it (instructions are included in the package).
 
  
  
 
=== Tested OS and versions ===
 
=== Tested OS and versions ===
 +
* [http://odroid.in/ubuntu-server-13.05/ Lubuntu 13.05 Server] does not have a graphical interface. It has already installed ssh. To install ROS, please follow these [http://wiki.ros.org/hydro/Installation/UbuntuARM instructions]
 
* [http://forum.odroid.com/viewtopic.php?f=8&t=1193 Xubuntu 13.04]  for armhf architectures, released by HardKernel with their [https://github.com/hardkernel/linux 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).
 
* [http://forum.odroid.com/viewtopic.php?f=8&t=1193 Xubuntu 13.04]  for armhf architectures, released by HardKernel with their [https://github.com/hardkernel/linux 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).
 +
* [http://forum.odroid.com/viewtopic.php?f=8&t=12 Linaro Ubuntu 12.11] with HardKernel's Linux kernel, version 3.0.60. Grab [http://dn.odroid.com/Ubuntu_U2/20130125/ 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 ===
 
=== 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 [http://forum.odroid.com/viewtopic.php?f=52&t=1674 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:
 +
iwconfig
 +
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 ====
 
==== Monitors ====
Line 29: Line 43:
  
 
=== Tested wireless communication ===
 
=== Tested wireless communication ===
 
+
See problems below.
  
 
=== Tested wired communication ===
 
=== Tested wired communication ===
 +
 +
 +
=== Unresolved issues ===
 +
 +
==== 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
 +
 +
 +
===== Realtek RTL8192CU =====
 +
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 [http://forum.odroid.com/viewtopic.php?f=29&t=1516 recompiling the kernel], disabling the in-kernel module for the NIC, and integrating [http://www.realtek.com/downloads/downloadsView.aspx?Langid=1&PNid=21&PFid=48&Level=5&Conn=4&DownTypeID=3&GetDown=false&Downloads=true 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
 +
 +
=== Solved issues ===
 +
 +
==== 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:
 +
 +
update-rc.d xx.sh

Latest revision as of 12:30, 10 November 2014

There are some ODROID U2 and two U3 for development of small robots. Here are details and suggestions for their use.

Useful How-Tos


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:

iwconfig

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

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

Unresolved issues

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


Realtek RTL8192CU

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

Solved issues

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:

update-rc.d xx.sh