how to setup Odroid.

Embeded : 2014. 2. 8. 23:52



What SoC are you using? 

The SoC is a Samsung Exynos 4412 Prime ARM Cortex-A9 Quad Core 1.7GHz.  

What RAM does it include? 

Low-Power DDR2 440MHz clock which brings 880Mhz Data rate.

What GPU does it include?  

ARM Mali-400 Quad Core 440MHz  

Will the SoC overclock? 

There’s a little overclocking headroom  

Will the GPU overclock?  

There’s a little overclocking headroom  

How can I power on the board? 

It doesn't support the USB power in any case. Please use the power supply to the DC-Jack. 
We recommend 5V 2A adaptor. Inner diameter is 0.8mm, outer diameter is 2.5mm. Center is Positiver and Outer is Negative. Normally ODROID-U3 consumes about 1A - 1.5A in most cases. 

How does it boot? 
You have to boot from MicroSD card or eMMC Module.  

오드로이드 odroid C1, U2, U3 우분투 서버 설치 가이드입니다.

이미지 다운로드 



여기에서 다운 받는다.

요즘은 옛날에 쓰던 Win32DiskImager 는 안쓰고 

라즈베리파이에서 쓰는 Etcher 로 이미지를 다운로드 해준다.

etcher 에서 이미지 고르고, 대상 sdcard 골라서 이미지 다운로드가 완료 되면 꼽아서 부팅을 해준다.

해상도가 안맞고 짤릴 때가 있는데 이때는 갖가지 방법으로 
/media/boot/boot.ini 파일을 열어서 해당하는 해상도로 설정값을 바꿔준다.


sudo dpkg-reconfigure tzdata 로 타임존을 맞춘다.

dpkg-reconfigure locales 도 해주고 ko_KR.EUC-KR 이랑 ko_KR.UTF-8 로 설치해준다.

출처 :

우분투 서버는 거의 안쓰시는 듯 해서 정보를 정리 후 올려봅니다.

완전 초보 기준으로 작성하였으므로
중수 이상이신 분들은 안보셔도 될 듯 합니다.

오드로이드 U2, U3 우분투 서버 설치 가이드

MicroSD, eMMC EXT4 파티션 크기 조절하는 방법

오드로이드 U2, U3 FTP 서버 설치 가이드

오드로이드 U2, U3 삼바 서버 설치 가이드

오드로이드 U2, U3 트랜스미션 설치 가이드

오드로이드 U2, U3 웹서버 (Nginx + PHP5 + Mysql) 설치 가이드

오드로이드 U2, U3 홈페이지(그누보드5) 설치 가이드


eth0      Link encap:Ethernet  HWaddr 06:ec:ef:14:7c:8f  

          UP BROADCAST MULTICAST  MTU:1500  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:1000 

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  

          inet addr:  Mask:

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:572 errors:0 dropped:0 overruns:0 frame:0

          TX packets:572 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0 

          RX bytes:45368 (45.3 KB)  TX bytes:45368 (45.3 KB)

lxcbr0    Link encap:Ethernet  HWaddr 6e:a0:03:37:9b:33  

          inet addr:  Bcast:  Mask:

          inet6 addr: fe80::6ca0:3ff:fe37:9b33/64 Scope:Link


          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:85 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0 

          RX bytes:0 (0.0 B)  TX bytes:13692 (13.6 KB)

여기에 있는 맥 읽어들인다.

cat /etc/smsc95xx_mac_addr 


정리할 내용들

Rootfs 만드는 법

Odroid 잘 정리되어 있는 Wiki

자료는 여기에서 받으면 됨

오드로이드U2, U3를 동영상 재생 머신으로 만들기

[Ubuntu] SD카드에 쓰는 방법

ODROID [X/X2/U/U2] Flashing Images on Windows


ODROID [X/X2/U/U2] Flashing Images on Linux


The Kernel 3.8 source code and development discussion is here.



WARNING: Ubuntu and some other distributions, auto-mount the media when inserted. This can cause inconsistency and errors! You can umount all using: umount /dev/sdX*

1. Download the selected image (Android/Ubuntu/...).

2. Unpack it. (If its a .xz extension you can use xz -d image.img.xz on cmd line).

3. A good step is always to clear your destination media first! dd if=/dev/zero of=/dev/sdX bs=4M

4. Flash your image: sudo dd if=image.img of=/dev/sdX bs=4M

5. Always type sync before removing the media to make sure that all data is written.

eMMC recovery tool for ODROID-U2/U3

=============== Update 24-Jan-2014 =======================

Added boot.ini support for better compatibility and easier maintainance.


Few people have an issue of dead eMMC with ODROID-U2/U3.

We thought there is possibility of some portion of hidden boot sector in eMMC can be corrupted.

So we made this utility.

How to use.

1. Prepare a microSD card and flash the attached image.

2. Boot with the microSD without eMMC

3. Turn on U2/U3 and wait a few seconds and blue LED will blink.

4. Plug your eMMC module into U2/U3

5. Plug micro-USB cable into U2/U3 and connect other side to your PC USB host or ODROID's USB host port. (This is a trigger to start the recovery)

6. After recovery process (only a few seconds), the blue LED will turn off automatically.

7. Finish. Install OS on your eMMC with as usual.

Before trying this utility, double check your USB memory reader first.

Because of tolerance issue of reader board, some USB memory reader has the mechanical contact issue.

Please also note that the eMMC needs much more current(power consumption) than normal SD card.

So some reader may not supply enough power for eMMC.

EMMC 에 u-boot 올리기

fastboot로 해도 되지만

emmc나 sd카드나 똑같이 /dev안에 장치로 잡히니 sd카드를 퓨징하는 것처럼 # ./ /dev/mmcblk0 을 하면 sd카드와 마찬가지로 emmc에 uboot가 올라간다.

mmcblk0boot0 mmcblk0boot1을 dd명령어로 이미지로 뽑아낸 다음 다른 emmc에 

#dd if=/root/boot0.img of=/dev/mmcblk0boot0 을 통해서 밀어 넣으면 uboot가 올라갈 것이다

dd: writing to `/dev/mmcblk0boot0': Operation not permitted 라고 나오면서 안될 때에는 

eMMC의 Boot partition에 데이터를 기록하기 전에 unlock하는 ioctl을 넣어주는 부분이 있는데

너무 간단히 부트 파티션이 손상되는 것을 막기 위한 기능이 포함되어 있어서 그렇다.

아래와 같이 시도해보면 할 수 있다.

sudo su -

# echo 0 > /sys/block/mmcblk0boot0/force_ro 

# dd if=/root/boot0.img of=/dev/mmcblk0boot0

[Ubuntu Kernel] 컴파일 하기

#Add this PPA with the following commands:

sudo add-apt-repository ppa:linaro-maintainers/toolchain

sudo apt-get update

#for cross compiler 

sudo apt-get install gcc-arm-linux-gnueabihf

#for native compiler

sudo apt-get install gcc

#Add this script to .profile

export ARCH=arm 

export CROSS_COMPILE=arm-linux-gnueabihf-

export ARCH=arm


#Download and build

sudo apt-get install xz-utils 

git clone    (여기 git에 있는 kernel은 ubuntu용이다. 안드로이드용은 dn.odroid.com에서 별도 배포한다.)

cd linux

# Optional. This line can skip if you want to use "odroid-3.0.y" branch, because it is the default branch.

git checkout odroid-3.8.y -b odroid-3.8.y

make odroidx_ubuntu_defconfig

make zImage -j4

make modules -j4

make modules_install INSTALL_MOD_PATH=/media/rootfs

* for ODROID-U2 * make odroidu2_ubuntu_defconfig

내꺼는 U3니까 U2랑 똑같이하면 된다.(U2랑U3는 완전 호환됨) make odroidu2_ubuntu_defconfig

#install to sdcard

cp arch/arm/boot/zImage /media/boot/

#Changing boot.scr

Change the boot script (boot.txt) then create a u-boot image with:

mkimage -A arm -T script -C none -n "Boot.scr for odroid-x" -d /media/boot/boot.txt /media/boot/boot.scr

#Updating Initramfs

Copy over your kernel configuration file to the /boot directory into a file called config-<kernel-version> like below. (Perform this process on your ODROID-X not host PC)

cp .config /media/boot/config-`uname -r`

The Linaro boot script (boot.scr) passes an initramfs image to the kernel at boot up. This image includes kernel modules that may be used at start up. You may create this image on the target system after you first boot into it with:

# Generate a file named /boot/initrd.img-<kernel-version>

update-initramfs -c -k `uname -r`

# Generate uInitrd and copy it into your boot partition with:

mkimage -A arm -T ramdisk -C none -n "uInitrd" -d /boot/initrd.img-`uname -r` /media/boot/uInitrd

[Android Kernel] 컴파일 할 때 나오는 문제 (u-boot도 마찬가지)

Android Kernel 컴파일 하다가 

/tmp/cc5NwFjg.s: Assembler messages:

/tmp/cc5NwFjg.s:69: Error: selected processor does not support ARM mode `smc 0'

/tmp/cc5NwFjg.s:98: Error: selected processor does not support ARM mode `smc 0'

/tmp/cc5NwFjg.s:121: Error: selected processor does not support ARM mode `smc 0'

/tmp/cc5NwFjg.s:144: Error: selected processor does not support ARM mode `smc 0'

make[1]: *** [arch/arm/mach-exynos/cpu-exynos4.o] 오류 1

make: *** [arch/arm/mach-exynos] 오류 2

이런  에러메세지가 나오는 경우가 있다. 

sudo add-apt-repository ppa:linaro-maintainers/toolchain
sudo apt-get update
#for cross compiler 
sudo apt-get install gcc-arm-linux-gnueabihf
#for native compiler
sudo apt-get install gcc
이렇게 하라고 되어 있는데 이거는 Ununtu / Linux 커널 컴파일 할때 이렇게 하는거란다. 젠장.

안드로이드 커널 컴파일 할때는 
이 컴파일러를 쓰란다.

안드로이드 컴파일 할때 만들어지는 컴파일러로 해도 될거 같다.
.profile 에 아래처럼 해놓고 쓰면 된다.
 #for build ubuntu kernel
 #export ARCH=arm 
 #export CROSS_COMPILE=arm-linux-gnueabihf-
 #for build android kernel
 export ARCH=arm 
 export PATH=$PATH:/home/messijeon/hoho/odroid/arm-2010q1/bin
 export CROSS_COMPILE=arm-none-eabi-

[Android Kernel 4.2.2_Apr-02-2014 버전 컴파일 하기]
오드로이드는 정말 불친절하다.
아무튼 4.2.2 가 나왔는데 
이 파일을 보면

make odroidu_android_422_defconfing
make -j8
이렇게 써있다.
저 github로 들어가서 clone을 받은다음 odroid-3.0.y-android 로 브랜치를 변경한 다음 
make odroidu_android_422_defconfing make -j8
로 컴파일 하면 된다.

[Android  4.2.2_Apr-02-2014 버전 컴파일 하기]
./ odroidu 하면 된다.

[Android 4.4.4 컴파일하기]
Android 4.2.2_Apr-02-2014 를 받아서 컴파일하고 올렸더니 커널패닉이 난다. 아오 빡쳐.
그래서 4.4.4가 있길래 받아서 올려볼라고 막 뒤적거렸는데 에는 또 4.4.4 BSP는 안올라와있네??
막 검색을 했더니만 github에서 받으란다. 헐.
언제 github에 올리기 시작한거지? 아 짜증나.
아무튼 Android 4.4.4 는
repo init -u -b 4412_4.4.4_master
repo sync -j4
repo start 4412_4.4.4_master --all
이렇게 받으면 된다.
./ odroidu

[Android 4.4.4 Kernel 컴파일하기]
이건 옛날처럼 git에 있는 커널 받아서 build하면 되는데. config가 바꼈다. 
Branch는 odroid-3.0.y-android 로 하고
make odroidu_android_442_defconfig 
로 하면 된다.

[USB IO] 사용에 관한 WIKI

USB IO 의 펌웨어 소스는 에 있다.

[Ubuntu] 처음 굽고 재부팅 되는 이유

mount point를 찾지못하여 watch dog timer에 의한 reset이라고 판단됩니다. 이 경우 boot.ini파일의 root에 해당하는 명령이 정상적이지 않은 경우에 발생합니다.

[Ubuntu] SD 카드에서 raw area, 파티션1, 파티션2 로 나눴는데 각각에 파티션에 콘텐츠는 어떻게 넣는 것인가요?  rootfs 소스는 어디에서 참조해야되나요?

rootfs는 배포하지 않고 있습니다. 최신 우분투 이미지에서 rootfs를 추출하여 사용하여야 합니다. 

리눅스 파티션은 VFAT/EXT4영역으로 나누게 되며, EXT4영역에 있는 파일이 rootfs입니다.

[U-boot] git 주소

u-boot는 android와 ubuntu 공용이다.

[U-boot] Build 안될 때

이것도 한번 읽어보고

u-boot는 [ ] 을 쓰셔야 하는데 혹시 4.6 쓰셨으면 다시해보세요.


빠른 답변에 감사드립니다. 실은 4.4.3으로 했을때 

ubuntu@Ubuntu-13:~/bin/arm-eabi-4.4.3/bin$ ./arm-eabi-gcc -v

bash: ./arm-eabi-gcc: No such file or directory

와 같은 오류가 나와서 게시판 34번 "kernel 컴파일 환경 구축"을 읽어보니 32비트/64비트 문제로 보이던데

저는 우분투 13.04 64비트에서 빌드를 시도했습니다. 그래서 4.4.3을 사용하지 못했었습니다.

혹 빌드에 사용할 장비의 우분투 버전/비트을 뭘로 하면 될지 알려주시면 좋겠습니다.


U-Boot 빌드 오류는 다음과 같이 4.4.3 문제를 수정하니 해결되었습니다.




$ ./arm-eabi-gcc -v

bash: ./arm-eabi-gcc: No such file or directory


$ file arm-eabi-gcc

arm-eabi-gcc: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped


$ ldd arm-eabi-gcc

    not a dynamic executable


와 같이 file 명령으로는 dynamically linked 라이브러리를 사용하지만 ldd 명령으로 연결된 라이브러리가 보이지 않는다.

즉 없다는 파일은 실행파일이 아니라 연결된 라이브러리이다.


[구글 검색 및 프로그램 설치]




(32비트 바이너리를 위한 32비트 라이브러리 설치)


$ apt-get install libc6-dev-i386

$ apt-get install lib32z1




$ ldd arm-eabi-gcc =>  (0xf7749000) => /lib32/ (0xf7583000)

    /lib/ (0xf774a000)


$ ./arm-eabi-gcc -v

Using built-in specs.

Target: arm-eabi



이후 U-Boot 바이너리도 잘 생성이 되었습니다.


아래와 같은 패치를 적용하면 4.6에서도 빌드됩니다.


* CPP type file

  __asm__ volatile (

+ ".arch_extension sec\n"

  "smc 0\n"

  : "+r"(reg0), "+r"(reg1), "+r"(reg2), "+r"(reg3) 

  register u32 reg1 __asm__("r1") = 0;

  __asm__ volatile (

+ ".arch_extension sec\n"

  "smc 0\n"

  : "+r"(reg0), "+r"(reg1)

u-boot 복구하기

먼저 booting되는 SD 카드로 SD 모드에서 booting한 다음 

bootloader상태에서 run copy_uboot_sd2emmc 명령을 통하여 bootloader를

emmc에 복사할 수 있다.

File system 바꿀 때

BTRFS로 바꾼다면.

부트로더에서 setenv bootargs "root=/dev/mmcblk0p2 rootwait rootfsext=btrfs rw"

Android Partition 설정 파일을 보시면 system.img 사이즈를 정하는 곳이 있습니다.







partition 은 u-boot에서 아래와 같이 입력 하시면 됩니다.

# fdisk -c 0 1024 2048 128 

순서는 system | userdata | cache | fat 인데 fat 값은 자동으로 나머지 최대 크기로 만들어 집니다.

USB-UART Module Kit

1.8V 뿐만 아니라 5V 보드에서도 사용 가능한지요..??

Interface가 1.8V용으로 되어있어 기본적으로는 사용이 불가할 것 같습니다. 

RX/TX 앞부분에 별도의 Level shifter를 적용한다면 가능할 수도 있습니다.

XU+E 와 LCD 일때 LCD에 화면 나오게 하기

- 증상

Android 이미지로는 LCD에 출력이 되고

우분투 이미지로는 HDMI는 잘 출력이 되는데 LCD는 반응이다.

X2쪽에 보니 우분투 이미지가 HDMI용이랑 LCD랑 분리가 되어 있던데,

XU쪽에는 이미지 하나 밖에 없네요.

아직 우분투에서 LCD는 지원하지 않는 것인지요?

- 해결

FAT영역의 boot.ini파일을 아래와 같이 수정하셔야 합니다.

setenv fb_x_res     "1920"  ----> setenv fb_x_res "1280"

setenv fb_y_res     "1080"  ----> setenv fb_y_res "800"

setenv vout         "hdmi"   ----> setenv vout "lcd"

mali 400 clock 변경

안드로이드 커널 3.0.51


우분투 커널 3.8.13


ln -r 옵션 문제

안드로이드 컴파일 중에 아래 부분에서 에러가 나지 않았나요?

ln -sr out/target/product/odroidu/system/bin/init out/target/product/odroidu/system/init

여기서 -r옵션 빼고 빌드된 system.img를 다운로드 하면 위와 같은 증상이 발생합니다.

(PC의 절대 경로값이 symbolic link로 잡혀서 죽는겁니다)

터미날에서 ln --version을 치고 버전이 8.13이 나오면 GNU coreutils 의 ln을 업데이트 하셔야 합니다.

우분투 13.04의 ln을 카피해 쓰셔도 될겁니다

[Bluetooth 안되는 문제]

kitkat부터 USB bluetooth dongle을 지원하는 bluez가 없어지고 bluedroid로 바뀌었습니다.

솔루션을 찾고 있지만 쉽지 않습니다.
bluetooth를 꼭 사용하셔야 하시면 4.1.2 버전을 사용 하셔야 합니다.

안된다네. bluez가 없어졌군.


'Embeded' 카테고리의 다른 글

USB vid/pid를 이용해서 장치 연결 상태 확인  (0) 2014.02.20
yagarto, STM32  (0) 2014.01.07
bluetooth 포팅 하면서 본 싸이트들.  (0) 2013.11.29
Posted by Real_G