First Tests with UDOO Quad

Serial Communication from UDOO to builtin Arduino Due

stty -F /dev/ttymxc3 cs8 115200 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts

Specs for the UDOO Quad


Freescale i.MX6Quad, 4 x ARM® Cortex™-A9 core @ 1GHz with ARMv7A instruction set
GPU Vivante GC 2000 for 3D + Vivante GC 355 for 2D (vector graphics) + Vivante GC 320 for 2D (composition)
Atmel SAM3X8E ARM Cortex-M3 CPU (same as Arduino Due)
76 fully available GPIO with Arduino compatible R3 1.0 pinout
HDMI and LVDS + Touch
2 Micro USB (1 OTG)
2 USB 2.0 type A and 1 USB 2.0 internal pin header (requires adapter cable)
Analog Audio and Mic jacks
CSI Camera Connection
on board Micro SD card reader (boot device)
Power Supply (6-15V) and External Battery connector
Ethernet RJ45 (10/100/1000 MBit)
WiFi Module
SATA connector with power header

Component Details inspected using Linux

Installing Linaro Ubuntu 12.04 LTS and

mkdir ~/Downloads
cd ~/Downloads
unzip unzip
# Plug in the micro-SD card and check which device it gets...
dmesg | tail
sudo dd bs=1M if=udoo_quad_ubuntu1204_v2.0.img of=/dev/sdc
sudo sync
# done

Installing Arch Linux ARM

umount ${SDCARD}*
dd if=/dev/zero of=$SDCARD bs=1M count=4
parted -s $SDCARD mktable msdos
parted -s $SDCARD mkpart primary 8192s 100%
parted -s $SDCARD unit s print
mkfs.ext4 ${SDCARD}1
mount ${SDCARD}1 /mnt
# Download and extract the root filesystem:
mkdir ~/Downloads
cd ~/Downloads
rm ArchLinuxARM-udoo-latest.tar.gz
tar -xf ArchLinuxARM-udoo-latest.tar.gz -C /mnt
umount /mnt
# Download and install the U-Boot bootloader:
rm u-boot-quad.imx
dd if=u-boot-quad.imx of=$SDCARD bs=512 seek=2

Insert the SD card into the UDOO, connect ethernet, and apply 6-12V power.

Use the serial console (CN6 micro USB connector) to watch the boot process or get into the boot loader cmdline (there, you can run ls mmc 0 /boot for a list of file in the /boot dir).

After a successfull boot, use the serial console or connect via SSH (to the IP address given to the board by your router) to get the linux shell. The default root password is 'root'.

screen /dev/ttyUSB0 115200


pacman -Sy uboot-udoo-quad
pacman -S htop lsof strace
pacman -S vim
pacman -S screen


pacman -S alsa-utils alsa-firmware alsa-lib alsa-plugins sox

to specify which soundcard to use when playing back via sox, do:

export AUDIODEV=hw:2,0
play file.wav

This will play back with sound card #2 as found by cat /proc/asound/cards.

To record with the built-in mic-jack:

AUDIODEV=plughw:0 rec -r 44100
# record with the built-in mic-jack and play back at the same time:
AUDIODEV=hw:0,0 rec -r 44100 -t wav - | tee file.wav | AUDIODEV=hw:0,0 play -

To record with the built-in mic-jack and play back with an external USB audio card:

AUDIODEV=hw:0,0 rec -r 44100 -t wav - | tee file.wav | AUDIODEV=hw:2,0 play -
# or:
AUDIODEV=plughw:0 rec -r 44100 -t wav - | tee file.wav | AUDIODEV=plughw:2 play -

Setting the profile for a UCA202 with pulseaudio:

pacmd set-card-profile alsa_card.usb-Burr-Brown_from_TI_USB_Audio_CODEC-00-CODEC output:analog-stereo+input:analog-stereo

Record audio with arecord from built-in soundcard:

arecord -D plughw:0 -v --fatal-errors --buffer-size=192000 file.wav

Adding an SATA HDD and Formatting it with BTRFS

ls /dev/sd?
ls /dev/sd??
fdisk -l
parted -s /dev/sda mktable gpt
parted -s /dev/sda mkpart primary 2GiB 100%
parted -s /dev/sda unit GiB print
pacman -Sy btrfs-progs
mkfs.btrfs -L udoo-hdd /dev/sda1

btrfs filesystem show /dev/sda1
ls -la /dev/disk/by-uuid/

mount /dev/disk/by-uuid/9162b213-8ce4-4d71-b417-6dcc6b1c700b /mnt

vim /etc/fstab
# enter:
# <file system>                                 <dir>   <type>  <options>           <dump>  <pass>
UUID=9162b213-8ce4-4d71-b417-6dcc6b1c700b       /mnt    btrfs   defaults,autodefrag    0      1

External SATA Disk / Spindown

So what can you do when the noise of the external drive is annoying you? It could spin down and if you don't write a lot to the disk, write changes into a RAM disk. This is what aufs could provided. Every other day you could then let the disk spin up and sync the filesystem with brsync.

Also read Manipulation Safe Linux Account.

Of course, this is only good if you could live with a (possibly big) data loss in case of a power failure.

For the spindown, add the following line to /etc/udev/rules.d/11-sda-spindown.rules and reboot or run sudo udevadm trigger:

ACTION=="add", SUBSYSTEM=="block", KERNEL=="sda", RUN+="/usr/bin/hdparm -S 24 /dev/$kernel"

Also refer to my newer blog post dedicated to HDD spin-down: HDD Spindown on Arch Linux for more information.

mjpg_streamer with Logitech QuickCam Pro 9000 on Arch Linux


pacman -S mjpg_streamer


mjpg_streamer -i " -d /dev/video1 -y -f 5 -r 1600x1200" -o " -p 8081" &

and go to http://udoo-hostname:8081/?action=stream

Also see this and that on my previous posts. Or read this on motion with ALARM.

Installing packages from AUR

pacman -S --needed base-devel
pacman -S pkgfile
su philipp
tar -xf amtterm-git.tar.gz
cd amtterm-git
# arch=('i686' 'x86_64' 'armv7h')
makepkg -s
pacman -U ~philipp/amtterm-git/amtterm-git-20130222-1-armv7h.pkg.tar.xz