ODROID Celebrates 22 Years Of Linux

22 years ago(26-Aug-1991), a young student in Finland announced Unix/Minix based Operating System.
Yes, it is Linux OS and his name is Linus Tovalds.

He released Kernel 3.11-rc7 today with the celebration of 22nd birthday of Linux.
We’ve just ported it to Exynos-5410 based ODROID-XU.

Here is the booting log.

U-Boot 2012.07 (Aug 20 2013 - 18:02:57) for Exynos5410

CPU: Exynos5410 Rev2.3 [Samsung SOC on SMP Platform Base on ARM CortexA15]
APLL = 900MHz, KPLL = 600MHz
MPLL = 532MHz, BPLL = 800MHz
DRAM:  2 GiB
WARNING: Caches not enabled

TrustZone Enabled BSP
BL1 version: 
PMIC VER : 0, CHIP REV : 6
VDD MIF : 1.00000V
VDD ARM : 1.00000V
VDD INT : 1.00000V
VDD G3D : 1.00000V
VDD KFC : 1.00000V

Checking Boot Mode ... EMMC4.41
MMC:   S5P_MSHC0: 0, S5P_MSHC2: 1
MMC Device 0: 58.2 GiB
MMC Device 1: [ERROR] response error : 00000006 cmd 8
[ERROR] response error : 00000006 cmd 55
[ERROR] response error : 00000006 cmd 2
In:    serial
Out:   serial
Err:   serial
Net:   No ethernet found.
Press 'Enter' or 'Space' to stop autoboot:  0 
>>> Load Boot Script from mmc 0:1 <<<
reading boot.scr

530 bytes read
## Executing script at 40008000
reading uImage

2121720 bytes read
reading uInitrd

3169476 bytes read
reading exynos5410-odroidxu.dtb

28603 bytes read
## Booting kernel from Legacy Image at 40007000 ...
   Image Name:   Linux-3.11.0-rc7-00060-g4521a9d
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2121656 Bytes = 2 MiB
   Load Address: 40008000
   Entry Point:  40008000
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 42000000 ...
   Image Name:   Ubuntu ramdisk 3.0.75-odroidx2
   Image Type:   ARM Linux RAMDisk Image (gzip compressed)
   Data Size:    3169412 Bytes = 3 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 41f00000
   Booting using the fdt blob at 0x41f00000
   Loading Kernel Image ... OK
OK
   Using Device Tree in place at 41f00000, end 41f09fba

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 3.11.0-rc7-00060-g4521a9d (ruppi@ruppi-desktop) (gcc version 4.3
[    0.000000] Machine: SAMSUNG EXYNOS5 (Flattened Device Tree), model: Hardkernel Odroid-xu0
[    0.000000] PERCPU: Embedded 7 pages/cpu @c15d2000 s7488 r8192 d12992 u32768
[    0.000000] Kernel command line: console=ttySAC2,115200n8 fb_x_res=1920 fb_y_res=1080 hdmo
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xf0000000 - 0xff000000   ( 240 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xef800000   ( 760 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text : 0xc0008000 - 0xc050bfa0   (5136 kB)
[    0.000000]       .init : 0xc050c000 - 0xc0538d40   ( 180 kB)
[    0.000000]       .data : 0xc053a000 - 0xc0574d40   ( 236 kB)
[    0.000000]        .bss : 0xc0574d40 - 0xc05af300   ( 234 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000] NR_IRQS:16 nr_irqs:16 16
[    0.000000] samsung_clk_register_gate: failed to register clock ac97
[    0.000000] sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 4294967286s
[    0.000000] Console: colour dummy device 80x30
[    0.060000] Calibrating delay loop... 1790.77 BogoMIPS (lpj=8953856)
[    0.060000] pid_max: default: 32768 minimum: 301
[    0.060000] Mount-cache hash table entries: 512
[    0.060000] CPU: Testing write buffer coherency: ok
[    0.060000] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.060000] Setting up static identity map for 0xc03aef10 - 0xc03aef68
[    0.120000] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.200000] CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
[    0.280000] CPU3: thread -1, cpu 3, socket 0, mpidr 80000003
[    0.280000] Brought up 4 CPUs
[    0.280000] SMP: Total of 4 processors activated (7163.08 BogoMIPS).
[    0.280000] CPU: All CPU(s) started in SVC mode.
[    0.280000] devtmpfs: initialized
[    0.290000] pinctrl core: initialized pinctrl subsystem
[    0.290000] regulator-dummy: no parameters
[    0.290000] NET: Registered protocol family 16
[    0.290000] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.310000] EXYNOS: PMU not supported
[    0.310000] EXYNOS: Initializing architecture
[    0.320000] bio: create slab <bio-0> at 0
[    0.330000] usbcore: registered new interface driver usbfs
[    0.330000] usbcore: registered new interface driver hub
[    0.330000] usbcore: registered new device driver usb
[    0.340000] max77xxx 4-0009: device found
[    0.360000] max77xxx 4-0009: no regulator-op-mode property property at LDO2
[    0.360000] max77xxx 4-0009: no regulator-op-mode property property at LDO7
[    0.360000] max77xxx-pmic max77802-pmic: No matching regulator for 'LDO9'
[    0.360000] max77xxx 4-0009: no regulator-op-mode property property at LDO18
[    0.360000] max77xxx-pmic max77802-pmic: No matching regulator for 'LDO19'
[    0.360000] max77xxx 4-0009: no regulator-op-mode property property at LDO21
[    0.360000] max77xxx 4-0009: no regulator-op-mode property property at LDO23
[    0.360000] max77xxx 4-0009: no regulator-op-mode property property at LDO24
[    0.360000] max77xxx 4-0009: no regulator-op-mode property property at LDO25
[    0.360000] max77xxx 4-0009: no regulator-op-mode property property at LDO26
[    0.360000] max77xxx-pmic max77802-pmic: No matching regulator for 'LDO27'
[    0.360000] max77xxx-pmic max77802-pmic: No matching regulator for 'LDO28'
[    0.360000] max77xxx-pmic max77802-pmic: No matching regulator for 'LDO29'
[    0.360000] max77xxx 4-0009: no regulator-op-mode property property at LDO30
[    0.360000] max77xxx 4-0009: no regulator-op-mode property property at LDO32
[    0.360000] max77xxx-pmic max77802-pmic: No matching regulator for 'LDO33'
[    0.360000] max77xxx-pmic max77802-pmic: No matching regulator for 'LDO34'
[    0.360000] max77xxx-pmic max77802-pmic: No matching regulator for 'LDO35'
[    0.360000] max77xxx 4-0009: no regulator-op-mode property property at EN32KHZ_AP
[    0.360000] max77xxx 4-0009: no regulator-op-mode property property at EN32KHZ_CP
[    0.410000] vdd_1v0: 1000 mV 
[    0.460000] vdd_1v2: 1200 mV 
[    0.520000] vdd_1v8_3: 1800 mV 
[    0.580000] vdd_sd: 2800 mV 
[    0.640000] vdd_1v8_5: 1800 mV 
[    0.700000] vdd_1v8_6: 1800 mV 
[    0.740000] vdd_1v8_7: 1800 mV 
[    0.800000] vdd_ldo8: 1000 mV 
[    0.820000] LDO9: at 1800 mV 
[    0.880000] vdd_ldo10: 1800 mV 
[    0.940000] vdd_ldo11: 1800 mV 
[    1.000000] vdd_ldo12: 3000 mV 
[    1.060000] vdd_ldo13: 1800 mV 
[    1.120000] vdd_ldo14: 1800 mV 
[    1.180000] vdd_ldo15: 1000 mV 
[    1.220000] ldo_17: 1200 mV 
[    1.260000] ldo_18: 1800 mV 
[    1.280000] LDO19: at 1800 mV 
[    1.330000] ldo_20: 1800 mV 
[    1.400000] ldo_21: 2850 mV 
[    1.460000] ld0_23: 3300 mV 
[    1.500000] ldo_24: 2800 mV 
[    1.560000] ldo_25: 3300 mV 
[    1.620000] ldo_26: 3300 mV 
[    1.640000] LDO27: at 1200 mV 
[    1.660000] LDO28: at 1800 mV 
[    1.680000] LDO29: at 1800 mV 
[    1.730000] ldo_30: 1200 mV 
[    1.800000] ldo_32: 3300 mV 
[    1.820000] LDO33: at 2200 mV 
[    1.840000] LDO34: at 3000 mV 
[    1.860000] LDO35: at 1200 mV 
[    1.920000] vdd_mif: 800 <--> 1300 mV at 1000 mV 
[    1.980000] vdd_arm: 800 <--> 1500 mV at 1000 mV 
[    2.040000] vdd_int: 800 <--> 1400 mV at 1000 mV 
[    2.100000] vdd_g3d: 800 <--> 1400 mV at 1000 mV 
[    2.140000] vdd_1v2: 800 <--> 1500 mV at 1200 mV 
[    2.150000] vdd_1v2: Failed to create debugfs directory
[    2.200000] vdd_kfc: 800 <--> 1500 mV at 1000 mV 
[    2.250000] vdd_1v35: 1350 mV 
[    2.310000] vdd_emmc: 2850 mV 
[    2.360000] vdd_2v: 2000 mV 
[    2.430000] vdd_1v8: 1800 mV 
[    2.450000] en32khz_ap: no parameters
[    2.450000] en32khz_cp: no parameters
[    2.470000] cfg80211: Calling CRDA to update world regulatory domain
[    2.470000] Switched to clocksource mct-frc
[    2.480000] NET: Registered protocol family 2
[    2.480000] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[    2.480000] TCP bind hash table entries: 8192 (order: 5, 163840 bytes)
[    2.480000] TCP: Hash tables configured (established 8192 bind 8192)
[    2.480000] TCP: reno registered
[    2.480000] UDP hash table entries: 512 (order: 2, 24576 bytes)
[    2.480000] UDP-Lite hash table entries: 512 (order: 2, 24576 bytes)
[    2.480000] NET: Registered protocol family 1
[    2.480000] Trying to unpack rootfs image as initramfs...
[    2.650000] Freeing initrd memory: 3088K (c2001000 - c2305000)
[    2.660000] VFS: Disk quotas dquot_6.5.2
[    2.660000] msgmni has been set to 1474
[    2.660000] io scheduler noop registered
[    2.660000] io scheduler deadline registered
[    2.660000] io scheduler cfq registered (default)
[    2.770000] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    2.770000] 12c00000.serial: ttySAC0 at MMIO 0x12c00000 (irq = 83) is a S3C6400/10
[    2.770000] 12c10000.serial: ttySAC1 at MMIO 0x12c10000 (irq = 84) is a S3C6400/10
[    2.770000] 12c20000.serial: ttySAC2 at MMIO 0x12c20000 (irq = 85) is a S3C6400/10
[    3.450000] console [ttySAC2] enabled
[    3.460000] 12c30000.serial: ttySAC3 at MMIO 0x12c30000 (irq = 86) is a S3C6400/10
[    3.470000] brd: module loaded
[    3.480000] loop: module loaded
[    3.480000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    3.490000] ehci-platform: EHCI generic platform driver
[    3.490000] ehci-s5p: EHCI s5p driver
[    3.500000] unable to find transceiver of type USB2 PHY
[    3.500000] s5p-ehci 12110000.usb: no platform data or transceiver defined
[    3.510000] platform 12110000.usb: Driver s5p-ehci requests probe deferral
[    3.520000] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    3.520000] unable to find transceiver of type USB2 PHY
[    3.530000] exynos-ohci 12120000.usb: no platform data or transceiver defined
[    3.530000] platform 12120000.usb: Driver exynos-ohci requests probe deferral
[    3.550000] usb3503 4-0008: switched to HUB mode
[    3.560000] usb3503 4-0008: usb3503_probe: probed on  hub mode
[    3.560000] samsung-usb3phy 12100000.usbphy: Can't get usb-phy sysreg cfg register
[    3.570000] samsung-usb3phy 12500000.usbphy: Can't get usb-phy sysreg cfg register
[    3.580000] mousedev: PS/2 mouse device common for all mice
[    3.580000] max77xxx-rtc max77802-rtc: max77xxx_rtc_probe
[    3.600000] max77xxx-rtc max77802-rtc: rtc core: registered max77xxx-rtc as rtc0
[    3.610000] sdhci: Secure Digital Host Controller Interface driver
[    3.610000] sdhci: Copyright(c) Pierre Ossman
[    3.620000] Synopsys Designware Multimedia Card Interface Driver
[    3.620000] dwmmc_exynos 12200000.dwmmc0: no vmmc regulator found: -19
[    3.630000] dwmmc_exynos 12200000.dwmmc0: Using internal DMA controller.
[    3.630000] dwmmc_exynos 12200000.dwmmc0: Version ID is 241a
[    3.640000] dwmmc_exynos 12200000.dwmmc0: DW MMC controller at irq 107, 64 bit host data o
[    3.670000] mmc_host mmc0: Bus speed (slot 0) = 100000000Hz (slot req 400000Hz, actual 40)
[    3.690000] dwmmc_exynos 12200000.dwmmc0: 1 slots initialized
[    3.690000] dwmmc_exynos 12220000.dwmmc2: no vmmc regulator found: -19
[    3.700000] dwmmc_exynos 12220000.dwmmc2: Using internal DMA controller.
[    3.700000] dwmmc_exynos 12220000.dwmmc2: Version ID is 241a
[    3.710000] dwmmc_exynos 12220000.dwmmc2: DW MMC controller at irq 109, 64 bit host data o
[    3.740000] mmc_host mmc1: Bus speed (slot 0) = 100000000Hz (slot req 400000Hz, actual 40)
[    3.760000] dwmmc_exynos 12220000.dwmmc2: 1 slots initialized
[    3.760000] usbcore: registered new interface driver ushc
[    3.770000] ledtrig-cpu: registered to indicate activity on CPUs
[    3.770000] TCP: cubic registered
[    3.770000] NET: Registered protocol family 17
[    3.780000] NET: Registered protocol family 15
[    3.780000] mmc0: BKOPS_EN bit is not set
[    3.790000] VFP support v0.3: [    3.790000] mmc_host mmc0: Bus speed (slot 0) = 10000000)
[    3.790000] mmc0: new high speed DDR MMC card at address 0001
[    3.790000] mmcblk0: mmc0:0001 064G93 58.2 GiB 
[    3.790000] mmcblk0boot0: mmc0:0001 064G93 partition 1 4.00 MiB
[    3.790000] mmcblk0boot1: mmc0:0001 064G93 partition 2 4.00 MiB
[    3.790000] mmcblk0rpmb: mmc0:0001 064G93 partition 3 4.00 MiB
[    3.790000]  mmcblk0: p1 p2
[    3.800000]  mmcblk0boot1: unknown partition table
[    3.800000]  mmcblk0boot0: unknown partition table
implementor 41 architecture 4 part 30 variant f rev 0
[    3.850000] ThumbEE CPU extension supported.
[    3.850000] Registering SWP/SWPB emulation handler
[    3.860000] vdd_1v8_7: disabling
[    3.860000] s5p-ehci 12110000.usb: EHCI Host Controller
[    3.870000] s5p-ehci 12110000.usb: new USB bus registered, assigned bus number 1
[    3.870000] s5p-ehci 12110000.usb: irq 103, io mem 0x12110000
[    3.900000] s5p-ehci 12110000.usb: USB 2.0 started, EHCI 1.00
[    3.900000] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    3.910000] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.910000] usb usb1: Product: EHCI Host Controller
[    3.920000] usb usb1: Manufacturer: Linux 3.11.0-rc7-00060-g4521a9d ehci_hcd
[    3.930000] usb usb1: SerialNumber: 12110000.usb
[    3.930000] hub 1-0:1.0: USB hub found
[    3.930000] hub 1-0:1.0: 3 ports detected
[    3.940000] samsung-usb2phy 12130000.usbphy: Already power on PHY
[    3.940000] exynos-ohci 12120000.usb: EXYNOS OHCI Host Controller
[    3.950000] exynos-ohci 12120000.usb: new USB bus registered, assigned bus number 2
[    3.960000] exynos-ohci 12120000.usb: irq 103, io mem 0x12120000
[    4.020000] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
[    4.020000] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    4.030000] usb usb2: Product: EXYNOS OHCI Host Controller
[    4.040000] usb usb2: Manufacturer: Linux 3.11.0-rc7-00060-g4521a9d ohci_hcd
[    4.040000] usb usb2: SerialNumber: 12120000.usb
[    4.050000] hub 2-0:1.0: USB hub found
[    4.050000] hub 2-0:1.0: 3 ports detected
[    4.060000] max77xxx-rtc max77802-rtc: setting system clock to 2013-08-26 05:30:52 UTC (1)
[    4.080000] Freeing unused kernel memory: 176K (c050c000 - c0538000)
Loading, please wait...
[    4.130000] udevd[1174]: starting version 175
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
[    4.260000] usb 1-2: new high-speed USB device number 2 using s5p-ehci
Begin: Running /scripts/local-premount ... done.
[    4.300000] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... done.
[    4.410000] usb 1-2: New USB device found, idVendor=0424, idProduct=9730
[    4.410000] usb 1-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    4.540000] usb 1-3: new high-speed USB device number 3 using s5p-ehci
[    4.550000] init: ureadahead main process (1272) terminated with status 5
[    4.690000] usb 1-3: New USB device found, idVendor=0424, idProduct=3503
[    4.690000] usb 1-3: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    4.700000] hub 1-3:1.0: USB hub found
[    4.700000] hub 1-3:1.0: 3 ports detected
[    4.730000] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)

Last login: Sat Jan  1 01:00:12 UTC 2000 on tty1
Welcome to Linaro 13.07 (GNU/Linux 3.11.0-rc7-00060-g4521a9d armv7l)

root@localhost:~# uname -a 
Linux localhost.localdomain 3.11.0-rc7-00060-g4521a9d #90 SMP PREEMPT Mon Aug 26 14:27:04 KSx
root@localhost:~# 
 </bio-0>

UART/USB2.0/eMMC/Cortex-A15/DRAM/Ethernet are working now.
We need to port USB3.0, GPU and many other devices on the board.

You can download the full Kernel source code via this link.
https://github.com/hardkernel/linux/tree/odroid-3.11-rc7

Antutu Benchmarking on ODROID-XU (Exynos-5410)

We already informed the performance of ODROID-XU (Exynos-5410) as described in below link.
https://staging.hardkernel.com/ko/blog/how-much-faster/
Those tests were performed in Linux/Ubuntu platform.

Many people are also asking us the performance in Android platform.
So we decided to compare the performance of XU with X2/U2(Exynos-4412 Prime).
We used the famouse Antutu benchmarking tool.

This is the test result of ODROID-X2 1.7Ghz default clock.

Antutu_0813_1.7Ghz_X2.png

This is the test result of ODROID-X2 2.0Ghz over clock.

Antutu_0813_2.0Ghz_X2.png

This is the test result of ODROID-XU 1.6Ghz default clock.

Antutu_0813_1.6Ghz_XU.png

This is the test result of ODROID-XU 1.8Ghz over clock.

Antutu_0813_1.8Ghz_XU.png

For easier comparison, I made simpler charts.
XU shows obviously much higher performance than X2. :o

XU vs X2 (Default clock)

chart1.png

XU vs X2 (Over clock)

chart2.png

Please note that above tests were done under Performance Governor mode instead of OnDemand Governor mode to show the maximum peformance.

USB 3.0 on ARM platform

ODROID-XU has 2 x SuperSpeed USB 3.0 interfaces and 4 x HighSpeed USB 2.0 interfaces.

I want to introduce the USB 3.0 feature in ODROID-XU.
There is a standard A-Type 3.0 host connector and a micro A-B OTG 3.0 connector on the board.

If you need additional USB 3.0 host of standard A-type connector,
you can use 2 x USB 3.0 ports simultaneously with a Micro A to Standard A cable.

This item is available in our e-store.
https://staging.hardkernel.com/shop/usb3-0-micro-a-to-standard-a-host-cable/

We performed a benchmarking test with our USB3.0 to SATA3 HDD/SSD interface kit.
http://www.hardkernel.com/main/products/prdt_info.php?g_code=G137448544866
This is the PCB of USB3.0 to SATA3 HDD/SSD interface kit.

 

Tested SSD is OCZ’s Vertex3 128GB SSD.
Image

Test Root File System : Linaro Ubuntu with Linux Kernel 3.4.5
Read Test Command : dd if=./test of=/dev/null bs=1M count=1000 iflag=nocache oflag=nocache
Write Test Command : dd if=/dev/zero of=./test bs=1M count=1000 iflag=nocache oflag=nocache conv=fdatasync

Test result
Write Speed : 190 MB/S
Read Speed : 151 MB/S

We also made a same test with USB 2.0 port.
Wrtie Speed : 25.5 MB/S
Read Speed : 22.8 MB/S

The throughput of storage on USB 3.0 is about 7~8 times faster than USB 2.0 in the real world.

We also tested our USB 3.0 to Gigabit Ethernet adapter performance.
http://www.hardkernel.com/main/products/prdt_info.php?g_code=G137447448698

 

[~]$ iperf -s -f M
Server listening on TCP port 5001
TCP window size: 0.08 MByte (default)
------------------------------------------------------------
[  4] local 220.90.137.114 port 5001 connected with 220.90.137.115 port 43969
[  5] local 220.90.137.114 port 5001 connected with 220.90.137.115 port 43970
[  6] local 220.90.137.114 port 5001 connected with 220.90.137.115 port 43971
[  7] local 220.90.137.114 port 5001 connected with 220.90.137.115 port 43972
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-48.5 sec   743 MBytes  15.3 MBytes/sec
[  5]  0.0-48.5 sec   670 MBytes  13.8 MBytes/sec
[  6]  0.0-48.5 sec   708 MBytes  14.6 MBytes/sec
[  7]  0.0-48.5 sec   690 MBytes  14.2 MBytes/sec
[SUM]  0.0-48.5 sec  2810 MBytes  58.0 MBytes/sec
[  8] local 220.90.137.114 port 5001 connected with 220.90.137.115 port 43973
[  5] local 220.90.137.114 port 5001 connected with 220.90.137.115 port 43975
[  6] local 220.90.137.114 port 5001 connected with 220.90.137.115 port 43976
[  4] local 220.90.137.114 port 5001 connected with 220.90.137.115 port 43974
[  8]  0.0-59.4 sec   887 MBytes  14.9 MBytes/sec
[  5]  0.0-59.4 sec   890 MBytes  15.0 MBytes/sec
[  6]  0.0-59.4 sec   884 MBytes  14.9 MBytes/sec
[  4]  0.0-59.4 sec   889 MBytes  15.0 MBytes/sec
[SUM]  0.0-59.4 sec  3551 MBytes  59.8 MBytes/sec

This iPerf test shows about 60MByte/sec transfer rate. 
It is 5~6 times faster than the 10/100 Ethernet speed.
I think we can improve the device driver and get more speed up to 80~90MByte/sec.

Let’s enjoy the SuperSpeed USB 3.0 performance with our tiny ARM embedded platform.

How Much Faster

How Much Faster ?

The ODROID-XU is based on Samsung Exynos5 Octa processor
Exynos-5410 which has ARM’s big.LITTLE architecture with Cortex-A15 Quad + Cortex-A7 Quad and Samsung’s LPDDR3 2GB.

Every developer wants to know the performance of new platform. The Samsung Exynos5 Octa SoC is mighty competitive as shown by following initial benchmarks compared to a Calxeda quad-core Cortex-A9 SoC, the TI OMAP4460 dual-core A9 1.2GHz SoC, and an Intel Atom D525 1.8GHz dual-core CPU plus Hyper Threading.

The first tests were done with Ubuntu 13.04 Linaro(13.07) server version and Kernel 3.4.5 to feel the speed of ODROID-XU. We used the famous Phoronix test suit for benchmarking on Linux.
Let’s start the bench marking with NAS Parallel Benchmarks which were developed by NASA. The NAS Parallel Benchmarks (NPB) are a small set of programs designed to help evaluate the performance of parallel supercomputers. The benchmarks are derived from computational fluid dynamics (CFD) applications and consist of five kernels and three pseudo-applications in the original “pencil-and-paper” specification (NPB 1). The benchmark suite has been extended to include new benchmarks for unstructured adaptive mesh, parallel I/O, multi-zone applications, and computational grids.

 

 

 

Starting with the scientific NAS Parallel Benchmarks test cases, the ODROID-XU with its Exynos5 Octa totally slams all of the x86 and ARM comparison hardware. The Intel Atom D525 at 1.8GHz that is dual-core plus also has Hyper Threading was also beaten by the ARM Cortex A15 quad core.

The ODROID-XU system had greater performance of 7-Zip compression.

The x264 video encoding also was found best on the ARM Cortex A15 Quad. It is getting closed to a real time encoding system.

 

The Smallpt is a global illumination renderer. It is 99 lines of C++, is open source, and a famous benchmarking tool.
Less is better ! ODROID-XU is better.

The Samsung Exynos5 Octa performance is quite compelling. Being found in a $149 ODROID-XU that can be loaded with Android or Linux distributions is also a very attractive bargain.
For those looking to get into ARM Linux/Android development, the ODROID-XU will prove to be a world’s best performance.

We also want to introduce a real time energy monitoring feature.
When the system performance is increasing, the power consumption and heat are also increasing. So we need to find the best balanced points of performance vs. low-energy racing.
ODROID XU+E model has 4 separated current/voltage sensors between PMIC and SoC to collect the power consumption of A15 cores, A7 cores, GPU and DDR3-RAM in parallel to optimize system energy consumption.
The real time monitor window is always visible if you enable the option. The window is transparency and overlay display. It is showing the CPU/GPU DVFS data, temperature, CPU load, voltage, current, power and other valuable information for system developers.

 

If you are a professional developer, you must purchase ODROID-XU+E instead of ODROID-XU.
You will meet the easy way to create energy efficient OS and application software.

Enjoy this video how we can monitor the performance and the energy consumption.

How to install update image for Android Beta 1.7 or higher.

We released Android Beta 1.6 (Jelly Bean) for ODROID-X/X2/U/Q/Q2 24-April-2013.
This version includes the UPDATER feature which support the OTA like system software installaion/upgrade.
It will reduce the pain of flashing or anoying ADB method.

Here is a brief instruction to install the latest OS image.
Click the image to enlarge it.

1. Check your OS version is higher than Beta 1.6
Settings --> System --> About Tablet
The Build Number has a date code. It must be something of April-2013 or later. This ODROID-X2 image is 24-April-2013.

2. Run Web browser in ODROID and visit “http://dn.odroid.com/Android_Beta_1.7/” home page.
If you are using X2 with eMMC, click X2 and eMMC directory. Click “odroidx2-ota-eng.codewalker.zip” to download it.

3. Download a file manager from this link and install it.
If you already installed, you can skip this process.
https://dl.dropboxusercontent.com/u/4485660/Astro%20File%20Manager.apk


4. Creat “updater” directory in sdcard and copy the “odroidx2-ota-eng.codewalker.zip” from “Download” directory to “updater” directory.

If you already have the “updater” directory, you don’t need to make it.

5. Select Settings -> About tablet -> ODROID Update. Choose the “odroidx2-ota-eng.codewalker.zip”
And it will reboot and start installation of the OS image.


6. If you select “Update”, it starts the OS update.

7. You need to reinstall the GMS again due to system partition has been changed.
Here is the instruction of GMS installation.
https://staging.hardkernel.com/ko/blog/how-to-install-t…ta-1-6-or-higher/

How to install the GMS apps for Android Beta 1.6 or higher.

We released Android Beta 1.6 (Jelly Bean) for ODROID-X/X2/U/Q/Q2 24-April-2013.
This version includes the UPDATER feature which support the OTA like system software installaion/upgrade.
It will reduce the pain of flashing or anoying ADB method.

Here is a brief instruction to install the GMS(Google Play, Gmail and other Google Mobile Service applications).
Click the image to enlarge it.

1. Check your OS version is higher than Beta 1.6
Settings --> System --> About Tablet
The Build Number has a date code. It must be something of April-2013. This ODROID-X2 image is 24-April-2013.

2. Run Web browser in ODROID and visit “http://goo.im/gapps/” home page.
Click “gapps-jb-20121011-signed.zip” to download it.

3. Download a file manager from this link and install it.
https://dl.dropboxusercontent.com/u/4485660/Astro%20File%20Manager.apk


4. Creat “updater” directory in sdcard and copy the “gapps-jb-20121011-signed.zip” from “Download” directory to “updater” directory.

5. Select Settings -> About tablet -> ODROID Update. Choose the “gapps-jb-20121011-signed.zip”
And it will reboot and start installation of GMS apps.


6. If you select “Update”, it starts the GMS installation.

7. Run Play Store and Sign in Google Account. That’s it. Time to enjoy~

Pinch zoom without touchscreen in Android platform

ome users raised an issue about “Pinch zoom without touchscreen”.

As you know well, ODROID-X,X2,U2 don’t have multi-point touch screen while Q2 has it.
So there is no way to implement the pinch zoom feature.

But we found a brilliant idea and we are implementing it now.
If you click the scroll-wheel on your mouse, the mouse cursor shape is change to “Magnifier” from “Arrow”.

 

 

 
When you scroll up the wheel in Magnifier mode, Zoom-out events are generated via multi-touch emulator.
When you scroll down the wheel, Zoom-in events are generated.

If you see this video, you can feel how this new feature is great !!
This implementation is still Work-In-Progress. We will fix some bugs and improve the usability.
We are trying to release a new Android update by end of May.

OpenGL ES 2.0 Programming on ARM Linux X11

If you are interested in OpenGL ES 2.0 programming, you may know this famous book.

OpenGL ES 2.0 Programming Guide ( Addison Wesley )

The authors released some example source codes in this link.
http://code.google.com/p/opengles-book-samples/

We’ve tested the source codes with ARM Ubuntu on ODROID-X/X2/U2 which utilize the Mali GPU accelation in x11 window system.
But a few examples are not working due to some misused APIs. So we’ve fixed them and released the modified source codes.
Linux_X11_MaliTest.tar.gz

We’ve tested these examples on the ODROID and captured the running applications.

Chapter 2 : Hello Triangle.

 

Chapter 8 : Simple Vertex Shader

 

Chapter 9 : Simple Texture 2D

Chapter 9 : Texture Wrap

Chapter 9 : MipMap2D

Chapter 9 : Texture Cube map

Chapter 10 : Multi Texture

Chapter 11 : Multi Sample

Chapter 11 : Stencil Test

Chapter 13 : Practicle System

OpenGL ES 2.0 Programming on ARM Linux X11

Tip !
You can find a PDF version of this great book with Goolgling. 😉

SCaLE X11 : Thank you very much for visiting our booth

We thank you for visiting ODROID booth at SCaLE this year, especially thank to the people driving and flying there only to see the ODROID.

Lots of ODROID developers visited our booth to talk face to face. We appreciate all your comments.

There was one old man who came with his wife to show her ODROID-U2. He wanted to change her PC to ODROID-U2. She was very happy to use ODROID-U2 for her next PC.
There was also lots of men who came with their kids. There was one kid who knew about RPI. The kid wanted to know the difference between ODROID-U2 and RPI. What one guy said was “RPI is the raspberry pie, and ODROID-U2 is the wedding cake” We all laughed a lot.

 

ODROID at SCaLE : Southern California Linux Expo

We are going to show our ODROID development platform in the SCaLE Exhibition.

The Eleventh Annual Southern California Linux Expo
February 22-24, 2013  (Exhibition date : 23~24)
@ Hilton Los Angeles International Airport

You can find the ODROID in 5th page on this link.
https://www.socallinuxexpo.org/scale11x/exhibitors

If you want to see the ODROID in the wild, please visit us at booth #67.
Use this 4-digit promo code for your registration.
Promotion code : HARD ( For 40% discounts )

We are going to display various Linux distros and Android.

ODROID-U2 : ARM Ubuntu runs on 1080p Full-HD HDMI screen.

 

ODROID-U2 : Mali400 OpenGL-ES accelerated Quake3 3D Game on Ubuntu

 

ODROID-U2 :  OpenNI + OpenCV + OpenGL + PCL with Xtion/Kinect Sensor   (Android)

 

ODROID-U2 : Full-HD Shooting game (Android)

 

ODROID-X2 : Fedora 18 runs Web browser and 3D OpenGL-ES 2.0 Benchmarking tool GLMark2-ES2.

 

ODROID-X2 : OpenSUSE ARM 12.2 runs Web browser and 3D gear rendering.

 

ODROID-X2 : Xubuntu runs Web browser and Quad-core system monitor.

 

ODROID-Q2 : Ubuntu runs Software Center and GLMark2-ES2.

Quake3 playing demo by mdrjr;)

 

Improved Win32DiskImager

We already posted “How to make a bootable SD/microSD/eMMC” in this link.  http://www.hardkernel.com/?b130
But few people have met the problem of flashing SD with ‘win32DiskImager’ or ‘dd’ utility.

Those utilities read data from an OS image file and write it to storage media.
But USB host in your PC, USB memory card reader or SD card itself may have problem to perform the secure and stable image copy.

Because of those root causes, the OS image can’t be copied properly or corrupted in SD card.
So I decided to add a feature of verification of written image on the win32DiskImager Ver 0.6.

Basic flow of writing/verification is here!
1. Read 512KB from OS image file to buffer-a.
2. Write 512KB(buffer-a) to SD card.
3. Read 512KB from SD card to buffer-b.
4. Compare buffer-a with buffer-b. If they are different, stop the loop.
5. Increase pointer and goto #1 by end-of-file.

You can download the modified Win32DiskImage binaries in this link. It is working with WinXP/Win7.
http://dn.odroid.com/DiskImager_ODROID/win32diskimager2-binary.zip

Modified source code is here. You need the MinGW and Qt 4.8.4 SDK to compile it.
http://dn.odroid.com/DiskImager_ODROID/win32diskimager2-source_ODROID.zip

Note
1. The writing time is almost twice of the original version because of verification process.
2. The file name/path should not contain the 2-byte characters like Korean,Chinese,Japanese and so on.