Odroid U3
Shopping List
All items on this list are needed.
- Odroid U3 eMMC card (at least 16 GB version)
- Power supply:
- Variant A: Odroid UPS kit. Makes up a neat onboard solution (recommended).
- Variant B: Normal power supply + extra cable:
- Cooling fan: A 5V type with 2pos Molex PicoBlade connector
- Backup battery – needed to keep the system clock consistent
- 2nd serial console cable (see above, will be salvaged) or alternatively Molex SPOX 4 pin cable made from parts:
- For pros: Mini-SPOX Hand crimper
Optional parts
- USB webcam (recommended, optional):
- Odroid U3 case (optional)
Overview
Flashing the eMMC card with Ubuntu
Instructions on how to run the tool and the latest downloads can be found here.
Download the most recent server image from the Odroid website:
We recommend the 14.04 LTS server version as it is very small and stripped down to bare essentials, which is good for us as we don't want unnecessary clutter.
Connect the eMMC card to its adapter, insert the microSD card into a card reader (e.g. via a microSD to SD adapter).
Windows
Please refer to these instructions:
Linux
Install pv so that we can see the progress of the flashing:
sudo apt-get install pv
Note: you can flash without pv but it is nice because it takes a long time. To flash without pv just remove “| pv” from the flash commands below.
Find out the filename of the sdcard by using the command:
Remove the device first and type:
ls -al /dev/sd*
Now plug the device in and see which device is new in the list.
For this example we found “/dev/sdb”
ls -al /dev/sdb* brw-rw---- 1 root disk 8, 16 Jan 30 01:51 /dev/sdb brw-rw---- 1 root disk 8, 17 Jan 30 01:51 /dev/sdb1 brw-rw---- 1 root disk 8, 18 Jan 30 01:51 /dev/sdb2
Unmount all files beginning with the device name and ending with a number for example (sdb1, sdb2):
umount /dev/sdX# umount /dev/sdX#
Extract the image:
xz -d ubuntu-COMPLETE-NAME-HERE.img.xz
Now we are going to clear the media, this takes a long time and is optional. If you get the device name wrong it could wipe out your hard drive.
sudo dd bs=4M if=/dev/zero | pv | sudo dd of=/dev/sdX
Flash the new image:
sudo dd bs=4M if=ubuntu-COMPLETE-NAME-HERE.img | pv | sudo dd of=/dev/sdX
Finally call sync to make sure the write is finished:
sync
Complete Linux Example
$ ls -al /dev/sdb* brw-rw---- 1 root disk 8, 16 Jan 30 01:51 /dev/sdb brw-rw---- 1 root disk 8, 17 Jan 30 01:51 /dev/sdb1 brw-rw---- 1 root disk 8, 18 Jan 30 01:51 /dev/sdb2 $ sudo umount /dev/sdb1 $ sudo umount /dev/sdb2 $ cd Downloads/ $ sudo dd if=ubuntu-14.04lts-server-odroid-u-20140604.img | pv | sudo dd of=/dev/sdb (3.4 GB) copied, 659.065 s, 5.1 MB/s $ sync
If you are using the lubuntu graphical desktop image, this will give you a rough idea of how long it takes to upload:
(5.5 GB) copied, 947.739 s, 5.8 MB/s
Mac OS
Find out which volume is the microSD card:
diskutil list
You should get output similar to this:
/dev/disk0 #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *1.0 TB disk0 1: EFI EFI 209.7 MB disk0s1 2: Apple_CoreStorage 405.5 GB disk0s2 3: Apple_Boot Recovery HD 650.0 MB disk0s3 /dev/disk3 #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *62.5 GB disk3 1: DOS_FAT_32 BOOT 134.2 MB disk3s1 2: Linux 62.4 GB disk3s2
Now in this case /dev/disk3
is the right one - it has ~64GB, which is the size of our eMMC card in this example. Unmount the disk:
diskutil unmountDisk /dev/disk3
Clear the media (this will take a while)
sudo dd if=/dev/zero of=/dev/rdisk3 bs=4m
Unzip the image:
xz -d xubuntu-COMPLETE-NAME-HERE.img.xz
And finally flash it:
sudo dd if=image.img of=/dev/rdisk3 bs=4m
Ensure everything has been written out to the card:
sync
Do NOT forget to properly eject it:
diskutil eject /dev/disk3
And now connect it to your board and boot it! The blue LED should illuminate within seconds and start blinking shortly after that.
Getting the console up and running
Is is highly recommended to buy the console cable along with the kit. In case you do not have one, see below for how to connect to it via a network connection.
Download the SILabs drivers:
And install them according to the instructions on your personal computer.
If on a Mac, run:
screen /dev/tty.SLAB_USBtoUART 115200 8N1
Wifi Setup
In case you do not have a serial console cable, you can simply connect the odroid to a network via Ethernet and SSH into it. Afterwards, you can set up a WiFi adapter and connect to the board via it, untethering your setup. This makes it easy for using the board when mounted in a MAV.
Get a SSH connection to the board first via Ethernet.
TODO : mhkabir
First Boot Configuration
Connect to the Odroid via either of the two above options. Make sure your Odroid is connected to internet. Configure your Odroid (root password is 'odroid'):
odroid-utility.sh
Pick these options:
- Resize your root partition
On ubuntu server odroid-utility doesn't come pre-installed and can be installed as follows:
sudo -s wget -O /usr/local/bin/odroid-utility.sh https://raw.githubusercontent.com/mdrjr/odroid-utility/master/odroid-utility.sh chmod +x /usr/local/bin/odroid-utility.sh odroid-utility.sh
Get the System Up to Date
sudo apt-get update sudo apt-get upgrade
System Timezone
Check that the correct timezone is set:
sudo dpkg-reconfigure tzdata
Check Locale
Verify that the correct locales are set by viewing/editing:
/etc/default/locale
If you make any changes reboot the Odroid for them to take effect. Note this doesn't apply to the ubuntu server version.
If you don't have a locale yet, you can generate one:
sudo apt-get install language-pack-en sudo locale-gen en_US sudo update-locale
Install Useful Packages (Not Shipped with Ubuntu Server)
bash-complection (allows auto completion in command line) ssh (allows you to ssh from the board) apt-file (finds files in apt packages)
Install the packages that you want:
sudo apt-get install bash-completion ssh apt-file
Ubuntu Server Power Button Fix
On ubuntu server the power button fails to halt the system, but this fixes it:
sudo apt-get install acpid /etc/acpi/powerbtn.sh @@ -8,9 +8,9 @@ # If logind is running, it already handles power button presses; desktop # environments put inhibitors to logind if they want to handle the key # themselves. -if pidof systemd-logind >/dev/null; then - exit 0 -fi +#if pidof systemd-logind >/dev/null; then +# exit 0 +#fi
Now restart the daemon:
sudo restart acpid