Hardkernel released their first Samsung Exynos 5422 octa-core board in July 2014 with ODROID-XU3, which at the time was really a powerful board, but also pricey at $179. Later that year, the company released a cheaper version ($99) called ODROID-XU3 Lite, which I had the chance to review with Ubuntu 14.04 and Android 4.4.
The company’s adventure with Exynos 5422 processor did not stop there, as in 2015 they released the smaller and even cheaper ($74) ODROID-XU4 board, and last year launched a fanless version of the board with ODROID-XU4Q featuring a large heatsink. More recently, the company also introduced ODROID-HC1 and ODROID-MC1 solutions for respectively network storage and clusters applications.
That’s the short history of Hardkernel Exynos 5422 boards as I remember it, and that means that since 2014, or nearly 4 years so far, the company has kept updating Ubuntu and Android firmware for their board, including the just released Ubuntu 18.04 (MATE) operating system, which I’m going to test on ODROID-XU4Q sample provided by the company in this review.
ODROID-XU4Q Unboxing
Let’s have a look at the hardware kit I got first. I received an ODROID cardboard package with two smaller white packages, an acrylic case, and a zip bag with some accessories.
List of accessories: 5V/4A power supply, acrylic enclosure and screws, the RTC battery, and a USB 3.0 to eMMC reader.
The board itself comes with a paper showing how to get started on ODROID-XU4 on one side…
… and a description of the board on the other side. My board was also fitted with a 32GB eMMC flash module pre-loaded with a beta version of their Ubuntu 18.04 MATE image.
Looking at the board, the large Blue heatsink stands out, and on one side we have Gigabit Ethernet, a USB 2.0 port, the DC jack, a micro SD card slot, and HDMI 1.4 output…
… while on the other side, we’ll find expansion headers, the power button, two USB3.0 ports, and on the right on the photo below header for the serial console and RTC battery.
ODROID-XU4Q Kit Assembly
Assembly of the kit is pretty straightforward, but you’ll still have some work to do, as the case is also designed for ODROID-XU4 board with fan, so I had to cut out the top of case with a cutter to leave room for the top of the heatsink.
I also had to connected the RTC battery, before closing the case, and securing it with two screws underneath.
If you plan on taking out the eMMC flash module often, you may consider cutting out the area on top of the module to avoid having to disassemble each time you want to flash the firmware. I’ll just use apt command to update the firmware, so I left that part of the case untouched.
USB 3.0 eMMC adapter vs micro SD card adapter
My kit came with a USB 3.0 to eMMC reader, but previously I got Hardkernel’s microSD eMMC reader with ODROID-XU3 Lite board. The 32GB eMMC module works on both, but I was interested in whether performance would differ between the two. So I copied large files from my computer to the eMMC module to compare sequential write performance:
- 1.6GB file using USB 3.0 to eMMC reader: 1m 01s on USB 3.0 port, or 26.85 MB/s.
- 1.4 GB file using micro SD card adapter: 54 seconds on USB 2.0 port, or 26.54 MB/s.
So with that 32GB flash module at least, there’s no difference between the two, and the main criteria should be whether you prefer a USB interface, or using a micro SD card reader to flash firmware. Price is also different: $9.90 for the USB eMMC reader, and $1.50 for the micro SD adapter.
[Update: I’ve been told performance with the 32GB eMMC flash module should reach 50MB/s write speed, 80MB/s read speed. See comments.
After further checking, it looks like my computer fails switch to SuperSpeed mode when I insert the USB 3.0 eMMC reader to a USB 3.0 port:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
[25828.614761] usb 9-2: new SuperSpeed USB device number 3 using xhci_hcd [25828.641972] usb 9-2: New USB device found, idVendor=05e3, idProduct=0749 [25828.641977] usb 9-2: New USB device strings: Mfr=3, Product=4, SerialNumber=2 [25828.641980] usb 9-2: Product: USB3.0 Flash Disk [25828.641983] usb 9-2: Manufacturer: Generic [25828.641985] usb 9-2: SerialNumber: 000000001538 [25828.642777] usb-storage 9-2:1.0: USB Mass Storage device detected [25828.642992] scsi host7: usb-storage 9-2:1.0 [25829.648050] scsi 7:0:0:0: Direct-Access Generic MassStorageClass 1538 PQ: 0 ANSI: 6 [25829.649033] sd 7:0:0:0: Attached scsi generic sg4 type 0 [25829.984563] sd 7:0:0:0: [sdd] 61071360 512-byte logical blocks: (31.3 GB/29.1 GiB) [25829.985178] sd 7:0:0:0: [sdd] Write Protect is off [25829.985183] sd 7:0:0:0: [sdd] Mode Sense: 21 00 00 00 [25829.985739] sd 7:0:0:0: [sdd] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA [25829.989213] sdd: sdd1 sdd2 [25829.991209] sd 7:0:0:0: [sdd] Attached SCSI removable disk [25835.082974] usb 9-1: Device not responding to setup address. [25835.559047] usb 9-1: Device not responding to setup address. [25835.766595] usb 9-1: device not accepting address 4, error -71 [25835.766611] xhci_hcd 0000:02:00.0: Cannot set link state. [25835.766634] usb usb9-port1: cannot disable (err = -32) [25837.202852] usb 9-1: new SuperSpeed USB device number 5 using xhci_hcd [25837.233578] usb 9-1: New USB device found, idVendor=05e3, idProduct=0616 [25837.233580] usb 9-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [25837.233581] usb 9-1: Product: USB3.0 Hub [25837.233582] usb 9-1: Manufacturer: GenesysLogic [25837.235131] hub 9-1:1.0: USB hub found [25837.773274] hub 9-1:1.0: config failed, can't read hub descriptor (err -22) [25837.773396] xhci_hcd 0000:02:00.0: Cannot set link state. [25838.041943] usb 9-1: Failed to suspend device, error -32 [25838.222657] usb 9-1: USB disconnect, device number 5 |
So the main takeway is that both the micro SD card & eMMC flash readers are capable of good performance up to 80MB/s, but the actual results will depend on your host computer / micro SD card reader.]
Ubuntu 18.04 MATE on ODROID-XU4
The first thing you’ll want to do is to get the Ubuntu 18.04 image for ODROID-XU4/XU3, and flash it to the eMMC module or micro SD card using Etcher. If you already own a board running Ubuntu 16.04, you can easily upgrade from the command line instead:
1 2 3 |
sudo apt update sudo apt dist-upgrade sudo reboot |
I connected my board to Ethernet, the HDMI port of my TV, added a USB 3.0 hard drive for good measure, the wireless USB dongle for my keyboard and mouse, and finally applied power, and within around 30 to 40 seconds, I got the Ubuntu 18.04 MATE desktop.
Here’s the Linux part of the boot log for reference:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 |
[ 0.000000] Booting Linux on physical CPU 0x100 [ 0.000000] Linux version 4.14.37-135 (root@ba3e5121f23a) (gcc version 7.3.0 (Ubuntu/Linaro 7.3.0-16ubuntu3)) #1 SMP PREEMPT Sun Apr 29 23:34:43 -03 2018 [ 0.000000] CPU: ARMv7 Processor [410fc073] revision 3 (ARMv7), cr=10c5387d [ 0.000000] CPU: div instructions available: patching division code [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [ 0.000000] OF: fdt: Machine model: Hardkernel Odroid XU4 [ 0.000000] Memory policy: Data cache writealloc [ 0.000000] cma: Reserved 128 MiB at 0xb6800000 [ 0.000000] Samsung CPU ID: 0xe5422001 [ 0.000000] On node 0 totalpages: 518656 [ 0.000000] free_area_init_node: node 0, pgdat c0d8e5c0, node_mem_map eee25000 [ 0.000000] Normal zone: 1728 pages used for memmap [ 0.000000] Normal zone: 0 pages reserved [ 0.000000] Normal zone: 196608 pages, LIFO batch:31 [ 0.000000] HighMem zone: 322048 pages, LIFO batch:31 [ 0.000000] Running under secure firmware. [ 0.000000] random: get_random_bytes called from start_kernel+0x8c/0x418 with crng_init=0 [ 0.000000] percpu: Embedded 17 pages/cpu @eed65000 s37452 r8192 d23988 u69632 [ 0.000000] pcpu-alloc: s37452 r8192 d23988 u69632 alloc=17*4096 [ 0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 [0] 4 [0] 5 [0] 6 [0] 7 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 516928 [ 0.000000] Kernel command line: console=tty1 console=ttySAC2,115200n8 root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro fsck.repair=yes net.ifnames=0 HPD=true vout=hdmi usbhid.quirks=0x0eef:0x0005:0x0004 smsc95xx.macaddr=00:1e:06:61:7a:39 false s5p_mfc.mem=16M [ 0.000000] hdmi: using HDMI mode [ 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] Memory: 1898384K/2074624K available (8192K kernel code, 654K rwdata, 2344K rodata, 1024K init, 326K bss, 45168K reserved, 131072K cma-reserved, 1157120K highmem) [ 0.000000] Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) fixmap : 0xffc00000 - 0xfff00000 (3072 kB) vmalloc : 0xf0800000 - 0xff800000 ( 240 MB) lowmem : 0xc0000000 - 0xf0000000 ( 768 MB) pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB) modules : 0xbf000000 - 0xbfe00000 ( 14 MB) .text : 0xc0008000 - 0xc0900000 (9184 kB) .init : 0xc0c00000 - 0xc0d00000 (1024 kB) .data : 0xc0d00000 - 0xc0da3ac0 ( 655 kB) .bss : 0xc0dab39c - 0xc0dfcea4 ( 327 kB) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1 [ 0.000000] hperf_hmp: fast CPUs mask: 000000F0 [ 0.000000] hperf_hmp: slow CPUs mask: 0000000F [ 0.000000] Preemptible hierarchical RCU implementation. [ 0.000000] Tasks RCU enabled. [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 [ 0.000000] GIC: Using split EOI/Deactivate mode [ 0.000000] Switching to timer-based delay loop, resolution 41ns [ 0.000000] clocksource: mct-frc: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns [ 0.000007] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns [ 0.000031] genirq: irq_chip COMBINER did not update eff. affinity mask of irq 49 [ 0.001619] Console: colour dummy device 80x30 [ 0.002277] console [tty1] enabled [ 0.002318] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=96000) [ 0.002358] pid_max: default: 32768 minimum: 301 [ 0.002543] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.002583] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.003438] CPU: Testing write buffer coherency: ok [ 0.004329] CPU0: thread -1, cpu 0, socket 1, mpidr 80000100 [ 0.020050] Setting up static identity map for 0x40100000 - 0x40100060 [ 0.020661] ARM CCI driver probed [ 0.020891] Exynos MCPM support installed [ 0.027991] Hierarchical SRCU implementation. [ 0.043991] smp: Bringing up secondary CPUs ... [ 0.072371] CPU1: thread -1, cpu 1, socket 1, mpidr 80000101 [ 0.096323] CPU2: thread -1, cpu 2, socket 1, mpidr 80000102 [ 0.124320] CPU3: thread -1, cpu 3, socket 1, mpidr 80000103 [ 0.152373] CPU4: thread -1, cpu 0, socket 0, mpidr 80000000 [ 0.172370] CPU5: thread -1, cpu 1, socket 0, mpidr 80000001 [ 0.180651] CPU6: thread -1, cpu 2, socket 0, mpidr 80000002 [ 0.188666] CPU7: thread -1, cpu 3, socket 0, mpidr 80000003 [ 0.188816] smp: Brought up 1 node, 8 CPUs [ 0.188967] SMP: Total of 8 processors activated (384.00 BogoMIPS). [ 0.188991] CPU: All CPU(s) started in HYP mode. [ 0.189009] CPU: Virtualization extensions available. [ 0.190819] devtmpfs: initialized [ 0.207418] VFP support v0.3: implementor 41 architecture 4 part 30 variant f rev 0 [ 0.207577] hperf_hmp: registered cpufreq transition notifier [ 0.207764] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns [ 0.207798] futex hash table entries: 2048 (order: 5, 131072 bytes) [ 0.210587] pinctrl core: initialized pinctrl subsystem [ 0.212726] NET: Registered protocol family 16 [ 0.218403] DMA: preallocated 1024 KiB pool for atomic coherent allocations [ 0.224439] cpuidle: using governor menu [ 0.225256] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers. [ 0.225283] hw-breakpoint: maximum watchpoint size is 8 bytes. [ 0.233607] exynos-audss-clk 3810000.audss-clock-controller: epll 180633609 [ 0.256127] EXYNOS5420 PMU initialized [ 0.299208] usbcore: registered new interface driver usbfs [ 0.299277] usbcore: registered new interface driver hub [ 0.299425] usbcore: registered new device driver usb [ 0.299865] i2c-gpio soc:i2c-hdmi: using pins 177 (SDA) and 178 (SCL) [ 0.300446] s3c-i2c 12c70000.i2c: slave address 0x00 [ 0.300473] s3c-i2c 12c70000.i2c: bus frequency set to 378 KHz [ 0.300700] s3c-i2c 12c70000.i2c: i2c-1: S3C I2C adapter [ 0.301202] media: Linux media interface: v0.10 [ 0.301250] Linux video capture interface: v2.00 [ 0.301358] pps_core: LinuxPPS API ver. 1 registered [ 0.301376] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> [ 0.301644] s3c2410-wdt 101d0000.watchdog: watchdog inactive, reset disabled, irq disabled [ 0.302458] Advanced Linux Sound Architecture Driver Initialized. [ 0.303682] clocksource: Switched to clocksource mct-frc [ 0.363601] VFS: Disk quotas dquot_6.6.0 [ 0.363722] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 0.377114] NET: Registered protocol family 2 [ 0.377689] TCP established hash table entries: 8192 (order: 3, 32768 bytes) [ 0.377781] TCP bind hash table entries: 8192 (order: 4, 65536 bytes) [ 0.377948] TCP: Hash tables configured (established 8192 bind 8192) [ 0.378061] UDP hash table entries: 512 (order: 2, 16384 bytes) [ 0.378112] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes) [ 0.378321] NET: Registered protocol family 1 [ 0.378964] RPC: Registered named UNIX socket transport module. [ 0.378987] RPC: Registered udp transport module. [ 0.379004] RPC: Registered tcp transport module. [ 0.379022] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 0.379234] Trying to unpack rootfs image as initramfs... [ 0.663697] random: fast init done [ 1.037126] Freeing initrd memory: 11948K [ 1.038577] hw perfevents: enabled with armv7_cortex_a7 PMU driver, 5 counters available [ 1.039560] hw perfevents: enabled with armv7_cortex_a15 PMU driver, 7 counters available [ 1.043009] audit: initializing netlink subsys (disabled) [ 1.043228] audit: type=2000 audit(1.036:1): state=initialized audit_enabled=0 res=1 [ 1.043828] Initialise system trusted keyrings [ 1.044016] workingset: timestamp_bits=14 max_order=19 bucket_order=5 [ 1.050974] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 1.051886] NFS: Registering the id_resolver key type [ 1.051927] Key type id_resolver registered [ 1.051946] Key type id_legacy registered [ 1.051974] nfs4filelayout_init: NFSv4 File Layout Driver Registering... [ 1.052025] romfs: ROMFS MTD (C) 2007 Red Hat, Inc. [ 1.056531] Key type asymmetric registered [ 1.056554] Asymmetric key parser 'x509' registered [ 1.056619] bounce: pool size: 64 pages [ 1.056681] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 245) [ 1.056895] io scheduler noop registered [ 1.056916] io scheduler deadline registered [ 1.057164] io scheduler cfq registered (default) [ 1.057185] io scheduler mq-deadline registered [ 1.057203] io scheduler kyber registered [ 1.057440] io scheduler bfq registered [ 1.059846] samsung-usb2-phy 12130000.phy: 12130000.phy supply vbus not found, using dummy regulator [ 1.060817] exynos5_usb3drd_phy 12100000.phy: 12100000.phy supply vbus not found, using dummy regulator [ 1.060901] exynos5_usb3drd_phy 12100000.phy: 12100000.phy supply vbus-boost not found, using dummy regulator [ 1.061269] exynos5_usb3drd_phy 12500000.phy: 12500000.phy supply vbus not found, using dummy regulator [ 1.061350] exynos5_usb3drd_phy 12500000.phy: 12500000.phy supply vbus-boost not found, using dummy regulator [ 1.066102] dma-pl330 3880000.adma: Loaded driver for PL330 DMAC-241330 [ 1.066129] dma-pl330 3880000.adma: DBUFF-4x8bytes Num_Chans-6 Num_Peri-16 Num_Events-6 [ 1.068745] dma-pl330 121a0000.pdma: Loaded driver for PL330 DMAC-241330 [ 1.068772] dma-pl330 121a0000.pdma: DBUFF-32x4bytes Num_Chans-8 Num_Peri-32 Num_Events-32 [ 1.071326] dma-pl330 121b0000.pdma: Loaded driver for PL330 DMAC-241330 [ 1.071352] dma-pl330 121b0000.pdma: DBUFF-32x4bytes Num_Chans-8 Num_Peri-32 Num_Events-32 [ 1.072387] dma-pl330 10800000.mdma: Loaded driver for PL330 DMAC-241330 [ 1.072413] dma-pl330 10800000.mdma: DBUFF-64x8bytes Num_Chans-8 Num_Peri-1 Num_Events-32 [ 1.137086] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled [ 1.139334] 12c00000.serial: ttySAC0 at MMIO 0x12c00000 (irq = 58, base_baud = 0) is a S3C6400/10 [ 1.139777] 12c10000.serial: ttySAC1 at MMIO 0x12c10000 (irq = 59, base_baud = 0) is a S3C6400/10 [ 1.140163] 12c20000.serial: ttySAC2 at MMIO 0x12c20000 (irq = 60, base_baud = 0) is a S3C6400/10 [ 2.039247] console [ttySAC2] enabled [ 2.043225] 12c30000.serial: ttySAC3 at MMIO 0x12c30000 (irq = 61, base_baud = 0) is a S3C6400/10 [ 2.053840] exynos-mixer 14450000.mixer: Linked as a consumer to 14650000.sysmmu [ 2.059857] iommu: Adding device 14450000.mixer to group 0 [ 2.066896] exynos-hdmi 14530000.hdmi: Failed to get supply 'vdd': -517 [ 2.072755] exynos-drm-g2d 10850000.g2d: Linked as a consumer to 10a60000.sysmmu [ 2.079547] exynos-drm-g2d 10850000.g2d: Linked as a consumer to 10a70000.sysmmu [ 2.086868] iommu: Adding device 10850000.g2d to group 1 [ 2.092459] exynos-drm-g2d 10850000.g2d: The Exynos G2D (ver 4.1) successfully probed. [ 2.101043] exynos-rot 11c00000.rotator: Linked as a consumer to 11d40000.sysmmu [ 2.107395] iommu: Adding device 11c00000.rotator to group 2 [ 2.113354] exynos-rot 11c00000.rotator: The exynos rotator is probed successfully [ 2.121292] exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully. [ 2.131765] mali 11800000.mali: Continuing without Mali regulator control [ 2.138024] mali 11800000.mali: GPU identified as 0x0620 r0p1 status 0 [ 2.144168] mali 11800000.mali: Protected mode not available [ 2.149669] devfreq devfreq0: Couldn't update frequency transition information. [ 2.157196] mali 11800000.mali: Probed as mali0 [ 2.170646] brd: module loaded [ 2.172874] libphy: Fixed MDIO Bus: probed [ 2.176677] usbcore: registered new interface driver r8152 [ 2.181854] usbcore: registered new interface driver cdc_ether [ 2.187647] usbcore: registered new interface driver cdc_subset [ 2.195529] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 2.200630] ehci-exynos: EHCI EXYNOS driver [ 2.205101] exynos-ehci 12110000.usb: EHCI Host Controller [ 2.210255] exynos-ehci 12110000.usb: new USB bus registered, assigned bus number 1 [ 2.218139] exynos-ehci 12110000.usb: irq 80, io mem 0x12110000 [ 2.239736] exynos-ehci 12110000.usb: USB 2.0 started, EHCI 1.00 [ 2.244581] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 [ 2.251072] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 2.258260] usb usb1: Product: EHCI Host Controller [ 2.263136] usb usb1: Manufacturer: Linux 4.14.37-135 ehci_hcd [ 2.268915] usb usb1: SerialNumber: 12110000.usb [ 2.274056] hub 1-0:1.0: USB hub found [ 2.277273] hub 1-0:1.0: 3 ports detected [ 2.282126] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 2.287383] ohci-exynos: OHCI EXYNOS driver [ 2.291753] exynos-ohci 12120000.usb: USB Host Controller [ 2.296923] exynos-ohci 12120000.usb: new USB bus registered, assigned bus number 2 [ 2.304643] exynos-ohci 12120000.usb: irq 80, io mem 0x12120000 [ 2.371967] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001 [ 2.377317] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 2.384787] usb usb2: Product: USB Host Controller [ 2.389269] usb usb2: Manufacturer: Linux 4.14.37-135 ohci_hcd [ 2.395072] usb usb2: SerialNumber: 12120000.usb [ 2.400201] hub 2-0:1.0: USB hub found [ 2.403394] hub 2-0:1.0: 3 ports detected [ 2.409584] mousedev: PS/2 mouse device common for all mice [ 2.415067] i2c /dev entries driver [ 2.432891] vdd_ldo9: Bringing 3300000uV into 3000000-3000000uV [ 2.455224] vdd_sd: Bringing 3300000uV into 2800000-2800000uV [ 3.541373] s5m-rtc s2mps14-rtc: rtc core: registered s5m-rtc as rtc0 [ 3.550248] s5p-jpeg 11f50000.jpeg: Linked as a consumer to 11f10000.sysmmu [ 3.555831] iommu: Adding device 11f50000.jpeg to group 3 [ 3.561523] s5p-jpeg 11f50000.jpeg: encoder device registered as /dev/video30 [ 3.568418] s5p-jpeg 11f50000.jpeg: decoder device registered as /dev/video31 [ 3.575358] s5p-jpeg 11f50000.jpeg: Samsung S5P JPEG codec [ 3.581020] s5p-jpeg 11f60000.jpeg: Linked as a consumer to 11f20000.sysmmu [ 3.587796] iommu: Adding device 11f60000.jpeg to group 4 [ 3.593473] s5p-jpeg 11f60000.jpeg: encoder device registered as /dev/video32 [ 3.600392] s5p-jpeg 11f60000.jpeg: decoder device registered as /dev/video33 [ 3.607334] s5p-jpeg 11f60000.jpeg: Samsung S5P JPEG codec [ 3.613880] s5p-mfc 11000000.codec: Linked as a consumer to 11200000.sysmmu [ 3.619851] s5p-mfc 11000000.codec: Linked as a consumer to 11210000.sysmmu [ 3.626721] iommu: Adding device 11000000.codec to group 5 [ 3.649761] s5p-mfc 11000000.codec: preallocated 16 MiB buffer for the firmware and context buffers [ 3.657466] (NULL device *): Direct firmware load for s5p-mfc-v8.fw failed with error -2 [ 3.665439] s5p_mfc_load_firmware:73: Firmware is not present in the /lib/firmware directory nor compiled in kernel [ 3.675994] s5p-mfc 11000000.codec: decoder registered as /dev/video10 [ 3.682487] s5p-mfc 11000000.codec: encoder registered as /dev/video11 [ 3.691299] exynos-gsc 13e00000.video-scaler: Linked as a consumer to 13e80000.sysmmu [ 3.697741] iommu: Adding device 13e00000.video-scaler to group 6 [ 3.705025] exynos-gsc 13e10000.video-scaler: Linked as a consumer to 13e90000.sysmmu [ 3.711612] iommu: Adding device 13e10000.video-scaler to group 7 [ 3.741898] device-mapper: uevent: version 1.0.3 [ 3.745413] device-mapper: ioctl: 4.37.0-ioctl (2017-09-20) initialised: [email protected] [ 3.767842] sdhci: Secure Digital Host Controller Interface driver [ 3.772568] sdhci: Copyright(c) Pierre Ossman [ 3.777085] Synopsys Designware Multimedia Card Interface Driver [ 3.783476] dwmmc_exynos 12200000.mmc: IDMAC supports 32-bit address mode. [ 3.789789] dwmmc_exynos 12200000.mmc: Using internal DMA controller. [ 3.796138] dwmmc_exynos 12200000.mmc: Version ID is 250a [ 3.801532] dwmmc_exynos 12200000.mmc: DW MMC controller at irq 83,64 bit host data width,64 deep fifo [ 3.810928] dwmmc_exynos 12200000.mmc: allocated mmc-pwrseq [ 3.840920] mmc_host mmc0: Bus speed (slot 0) = 50000000Hz (slot req 400000Hz, actual 396825HZ div = 63) [ 3.868246] dwmmc_exynos 12220000.mmc: IDMAC supports 32-bit address mode. [ 3.873696] dwmmc_exynos 12220000.mmc: Using internal DMA controller. [ 3.881096] dwmmc_exynos 12220000.mmc: Version ID is 250a [ 3.887481] dwmmc_exynos 12220000.mmc: DW MMC controller at irq 84,64 bit host data width,64 deep fifo [ 3.916156] mmc_host mmc1: Bus speed (slot 0) = 50000000Hz (slot req 400000Hz, actual 396825HZ div = 63) [ 3.944882] ledtrig-cpu: registered to indicate activity on CPUs [ 3.950134] s5p-secss 10830000.sss: s5p-sss driver registered [ 3.955363] hidraw: raw HID events driver (C) Jiri Kosina [ 3.968853] exynos-nocp: new NoC Probe device registered: 10ca1000.nocp [ 3.974117] exynos-nocp: new NoC Probe device registered: 10ca1400.nocp [ 3.980739] exynos-nocp: new NoC Probe device registered: 10ca1800.nocp [ 3.987433] exynos-nocp: new NoC Probe device registered: 10ca1c00.nocp [ 3.997818] mmc_host mmc0: Bus speed (slot 0) = 200000000Hz (slot req 200000000Hz, actual 200000000HZ div = 0) [ 4.007119] NET: Registered protocol family 17 [ 4.010779] NET: Registered protocol family 15 [ 4.015220] Key type dns_resolver registered [ 4.019931] Registering SWP/SWPB emulation handler [ 4.024434] mmc_host mmc0: Bus speed (slot 0) = 50000000Hz (slot req 52000000Hz, actual 50000000HZ div = 0) [ 4.034156] mmc_host mmc0: Bus speed (slot 0) = 266666666Hz (slot req 200000000Hz, actual 133333333HZ div = 1) [ 4.034440] registered taskstats version 1 [ 4.034447] Loading compiled-in X.509 certificates [ 4.051259] Key type encrypted registered [ 4.056919] mmc0: new HS400 MMC card at address 0001 [ 4.062009] mmcblk0: mmc0:0001 BJNB4R 29.1 GiB [ 4.066374] mmcblk0boot0: mmc0:0001 BJNB4R partition 1 4.00 MiB [ 4.072253] mmcblk0boot1: mmc0:0001 BJNB4R partition 2 4.00 MiB [ 4.078149] mmcblk0rpmb: mmc0:0001 BJNB4R partition 3 4.00 MiB [ 4.084350] mmcblk0: p1 p2 [ 4.096325] OF: graph: no port node found in /soc/hdmi@14530000 [ 4.101650] [drm] Exynos DRM: using 14450000.mixer device for DMA mapping operations [ 4.108622] exynos-drm exynos-drm: bound 14450000.mixer (ops 0xc0965fa4) [ 4.115176] exynos-drm exynos-drm: bound 14530000.hdmi (ops 0xc0966644) [ 4.121752] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). [ 4.128336] [drm] No driver support for vblank timestamp query. [ 4.363713] Console: switching to colour frame buffer device 240x67 [ 4.388428] exynos-drm exynos-drm: fb0: frame buffer device [ 4.394403] [drm] Initialized exynos 1.0.0 20110530 for exynos-drm on minor 0 [ 4.403020] xhci-hcd xhci-hcd.3.auto: xHCI Host Controller [ 4.407099] xhci-hcd xhci-hcd.3.auto: new USB bus registered, assigned bus number 3 [ 4.414954] xhci-hcd xhci-hcd.3.auto: hcc params 0x0220f04c hci version 0x100 quirks 0x02010010 [ 4.423434] xhci-hcd xhci-hcd.3.auto: irq 150, io mem 0x12000000 [ 4.429487] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002 [ 4.436120] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 4.443312] usb usb3: Product: xHCI Host Controller [ 4.448147] usb usb3: Manufacturer: Linux 4.14.37-135 xhci-hcd [ 4.453960] usb usb3: SerialNumber: xhci-hcd.3.auto [ 4.459106] hub 3-0:1.0: USB hub found [ 4.462546] hub 3-0:1.0: 1 port detected [ 4.466619] xhci-hcd xhci-hcd.3.auto: xHCI Host Controller [ 4.471904] xhci-hcd xhci-hcd.3.auto: new USB bus registered, assigned bus number 4 [ 4.479603] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM. [ 4.487718] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003 [ 4.494348] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 4.501542] usb usb4: Product: xHCI Host Controller [ 4.506379] usb usb4: Manufacturer: Linux 4.14.37-135 xhci-hcd [ 4.512190] usb usb4: SerialNumber: xhci-hcd.3.auto [ 4.517323] hub 4-0:1.0: USB hub found [ 4.520777] hub 4-0:1.0: 1 port detected [ 4.526661] xhci-hcd xhci-hcd.6.auto: xHCI Host Controller [ 4.530728] xhci-hcd xhci-hcd.6.auto: new USB bus registered, assigned bus number 5 [ 4.538585] xhci-hcd xhci-hcd.6.auto: hcc params 0x0220f04c hci version 0x100 quirks 0x02010010 [ 4.547060] xhci-hcd xhci-hcd.6.auto: irq 151, io mem 0x12400000 [ 4.553115] usb usb5: New USB device found, idVendor=1d6b, idProduct=0002 [ 4.559756] usb usb5: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 4.566949] usb usb5: Product: xHCI Host Controller [ 4.571786] usb usb5: Manufacturer: Linux 4.14.37-135 xhci-hcd [ 4.577597] usb usb5: SerialNumber: xhci-hcd.6.auto [ 4.584623] hub 5-0:1.0: USB hub found [ 4.588869] hub 5-0:1.0: 1 port detected [ 4.593462] xhci-hcd xhci-hcd.6.auto: xHCI Host Controller [ 4.599407] xhci-hcd xhci-hcd.6.auto: new USB bus registered, assigned bus number 6 [ 4.607561] usb usb6: We don't know the algorithms for LPM for this host, disabling LPM. [ 4.616215] usb usb6: New USB device found, idVendor=1d6b, idProduct=0003 [ 4.623501] usb usb6: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 4.631233] usb usb6: Product: xHCI Host Controller [ 4.636610] usb usb6: Manufacturer: Linux 4.14.37-135 xhci-hcd [ 4.642937] usb usb6: SerialNumber: xhci-hcd.6.auto [ 4.648576] hub 6-0:1.0: USB hub found [ 4.652802] hub 6-0:1.0: 1 port detected [ 4.658110] rtc rtc1: invalid alarm value: 1900-1-1 0:0:0 [ 4.664021] s3c-rtc 101e0000.rtc: rtc core: registered s3c as rtc1 [ 4.671790] exynos-bus: new bus device registered: soc:bus_wcore ( 84000 KHz ~ 400000 KHz) [ 4.680965] exynos-bus: new bus device registered: soc:bus_noc ( 67000 KHz ~ 100000 KHz) [ 4.689831] exynos-bus: new bus device registered: soc:bus_fsys_apb (200000 KHz ~ 200000 KHz) [ 4.699088] exynos-bus: new bus device registered: soc:bus_fsys (200000 KHz ~ 200000 KHz) [ 4.708131] exynos-bus: new bus device registered: soc:bus_fsys2 ( 75000 KHz ~ 150000 KHz) [ 4.717316] exynos-bus: new bus device registered: soc:bus_mfc ( 96000 KHz ~ 333000 KHz) [ 4.726294] exynos-bus: new bus device registered: soc:bus_gen ( 89000 KHz ~ 267000 KHz) [ 4.735158] exynos-bus: new bus device registered: soc:bus_peri ( 67000 KHz ~ 67000 KHz) [ 4.744240] exynos-bus: new bus device registered: soc:bus_g2d ( 84000 KHz ~ 333000 KHz) [ 4.753157] exynos-bus: new bus device registered: soc:bus_g2d_acp ( 67000 KHz ~ 267000 KHz) [ 4.762401] exynos-bus: new bus device registered: soc:bus_jpeg ( 75000 KHz ~ 300000 KHz) [ 4.771377] exynos-bus: new bus device registered: soc:bus_jpeg_apb ( 84000 KHz ~ 167000 KHz) [ 4.780633] exynos-bus: new bus device registered: soc:bus_disp1_fimd (120000 KHz ~ 200000 KHz) [ 4.790079] exynos-bus: new bus device registered: soc:bus_disp1 (120000 KHz ~ 300000 KHz) [ 4.799079] exynos-bus: new bus device registered: soc:bus_gscl_scaler (150000 KHz ~ 300000 KHz) [ 4.808666] exynos-bus: new bus device registered: soc:bus_mscl ( 84000 KHz ~ 400000 KHz) [ 4.817520] samsung-i2s 3830000.i2s: ASoC: Failed to create component debugfs directory [ 4.825887] samsung-i2s 3830000.i2s: ASoC: Failed to create component debugfs directory [ 4.834756] odroid-audio sound: multicodec <-> 3830000.i2s mapping ok [ 4.844618] s5m-rtc s2mps14-rtc: setting system clock to 2018-05-05 12:26:48 UTC (1525523208) [ 4.858439] ALSA device list: [ 4.861746] #0: Odroid-XU4 [ 4.865965] Freeing unused kernel memory: 1024K [ 4.967783] usb 3-1: new high-speed USB device number 2 using xhci-hcd [ 5.189334] usb 3-1: New USB device found, idVendor=05e3, idProduct=0610 [ 5.196501] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 5.204077] usb 3-1: Product: USB2.0 Hub [ 5.208420] usb 3-1: Manufacturer: GenesysLogic [ 5.215977] hub 3-1:1.0: USB hub found [ 5.220631] hub 3-1:1.0: 2 ports detected [ 5.311910] usb 4-1: new SuperSpeed USB device number 2 using xhci-hcd [ 5.338755] usb 4-1: New USB device found, idVendor=05e3, idProduct=0616 [ 5.346833] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 5.355179] usb 4-1: Product: USB3.0 Hub [ 5.360238] usb 4-1: Manufacturer: GenesysLogic [ 5.377556] hub 4-1:1.0: USB hub found [ 5.382908] hub 4-1:1.0: 2 ports detected [ 5.675755] usb 4-1.1: new SuperSpeed USB device number 3 using xhci-hcd [ 5.702584] usb 4-1.1: New USB device found, idVendor=0bc2, idProduct=2312 [ 5.709990] usb 4-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 5.717625] usb 4-1.1: Product: Expansion [ 5.721937] usb 4-1.1: Manufacturer: Seagate [ 5.726585] usb 4-1.1: SerialNumber: NA495NNC [ 5.735178] SCSI subsystem initialized [ 5.740470] usbcore: registered new interface driver usb-storage [ 5.752839] scsi host0: uas [ 5.756151] usbcore: registered new interface driver uas [ 5.757899] scsi 0:0:0:0: Direct-Access Seagate Expansion 0636 PQ: 0 ANSI: 6 [ 5.776270] sd 0:0:0:0: [sda] Spinning up disk... [ 5.835805] usb 6-1: new SuperSpeed USB device number 2 using xhci-hcd [ 5.864629] usb 6-1: New USB device found, idVendor=0bda, idProduct=8153 [ 5.874010] usb 6-1: New USB device strings: Mfr=1, Product=2, SerialNumber=6 [ 5.883771] usb 6-1: Product: USB 10/100/1000 LAN [ 5.891047] usb 6-1: Manufacturer: Realtek [ 5.897690] usb 6-1: SerialNumber: 000001000000 [ 6.095700] usb 6-1: reset SuperSpeed USB device number 2 using xhci-hcd [ 6.160704] r8152 6-1:1.0 eth0: v1.09.9 [ 8.195703] . [ 8.195834] ready [ 8.200743] sd 0:0:0:0: [sda] 1953525167 512-byte logical blocks: (1.00 TB/932 GiB) [ 8.209081] sd 0:0:0:0: [sda] Write Protect is off [ 8.214138] sd 0:0:0:0: [sda] Mode Sense: 2b 00 10 08 [ 8.214984] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, supports DPO and FUA [ 8.250268] sda: sda1 sda2 sda3 sda4 [ 8.257487] sd 0:0:0:0: [sda] Attached SCSI disk [ 9.587992] EXT4-fs (mmcblk0p2): mounted filesystem without journal. Opts: (null) [ 9.800696] NET: Registered protocol family 10 [ 9.806260] Segment Routing with IPv6 [ 9.811938] ip_tables: (C) 2000-2006 Netfilter Core Team [ 9.828164] systemd[1]: systemd 237 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid) [ 9.852737] systemd[1]: Detected architecture arm. [ 9.884087] systemd[1]: Set hostname to . [ 10.010172] random: crng init done [ 10.127297] systemd[1]: Reached target Remote File Systems. [ 10.151786] systemd[1]: Reached target User and Group Name Lookups. [ 10.176314] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point. [ 10.204161] systemd[1]: Created slice User and Session Slice. [ 10.223901] systemd[1]: Started Forward Password Requests to Wall Directory Watch. [ 10.247769] systemd[1]: Reached target Swap. [ 10.268069] systemd[1]: Created slice System Slice. [ 10.639288] EXT4-fs (mmcblk0p2): re-mounted. Opts: errors=remount-ro [ 11.006469] loop: module loaded [ 11.101162] systemd-journald[310]: Received request to flush runtime journal from PID 1 [ 11.245315] gpiomem-exynos 13400000.gpiomem: Initialised: GPIO register area is 2 [ 11.245611] gpiomem-exynos 13400000.gpiomem: Initialised: Registers at 0x13400000 [ 11.245619] gpiomem-exynos 13400000.gpiomem: Initialised: Registers at 0x14010000 [ 11.254401] input: gpio_keys as /devices/platform/gpio_keys/input/input0 [ 11.901088] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 12.339803] raid6: int32x1 gen() 267 MB/s [ 12.407772] raid6: int32x1 xor() 347 MB/s [ 12.475806] raid6: int32x2 gen() 478 MB/s [ 12.543704] raid6: int32x2 xor() 483 MB/s [ 12.611718] raid6: int32x4 gen() 579 MB/s [ 12.679738] raid6: int32x4 xor() 526 MB/s [ 12.747767] raid6: int32x8 gen() 756 MB/s [ 12.815777] raid6: int32x8 xor() 505 MB/s [ 12.883700] raid6: neonx1 gen() 1435 MB/s [ 12.951695] raid6: neonx1 xor() 1918 MB/s [ 13.019701] raid6: neonx2 gen() 1964 MB/s [ 13.087687] raid6: neonx2 xor() 2663 MB/s [ 13.155744] raid6: neonx4 gen() 2462 MB/s [ 13.223709] raid6: neonx4 xor() 2374 MB/s [ 13.291740] raid6: neonx8 gen() 2667 MB/s [ 13.359669] raid6: neonx8 xor() 2129 MB/s [ 13.359728] raid6: using algorithm neonx8 gen() 2667 MB/s [ 13.359737] raid6: .... xor() 2129 MB/s, rmw enabled [ 13.359746] raid6: using neon recovery algorithm [ 13.368434] xor: measuring software checksum speed [ 13.407752] arm4regs : 2368.000 MB/sec [ 13.447748] 8regs : 2016.000 MB/sec [ 13.487769] 32regs : 2010.000 MB/sec [ 13.527732] neon : 3581.000 MB/sec [ 13.527740] xor: using function: neon (3581.000 MB/sec) [ 13.552172] Btrfs loaded, crc32c=crc32c-generic [ 13.553195] BTRFS: device label USB3_BTRFS devid 1 transid 427 /dev/sda4 [ 15.119971] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [ 15.126180] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [ 15.159961] r8152 6-1:1.0 eth0: carrier on [ 15.160030] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 21.644540] fuse init (API version 7.26) [ 27.013378] BTRFS info (device sda4): disk space caching is enabled [ 27.405358] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null) |
Some system information:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
odroid@odroid:~$ uname -a Linux odroid 4.14.37-135 #1 SMP PREEMPT Sun Apr 29 23:34:43 -03 2018 armv7l armv7l armv7l GNU/Linux odroid@odroid:~$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04 LTS" odroid@odroid:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 927M 0 927M 0% /dev tmpfs 200M 6.3M 194M 4% /run /dev/mmcblk0p2 29G 3.7G 25G 13% / tmpfs 998M 0 998M 0% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 998M 0 998M 0% /sys/fs/cgroup /dev/mmcblk0p1 128M 18M 111M 14% /media/boot tmpfs 200M 40K 200M 1% /run/user/1000 /dev/sda3 245G 163G 82G 67% /media/odroid/USB3_EXFAT /dev/sda2 241G 163G 66G 72% /media/odroid/USB3_EXT4 /dev/sda4 200G 175G 24G 89% /media/odroid/USB3_BTRFS odroid@odroid:~$ free -m total used free shared buff/cache available Mem: 1994 290 1148 22 555 1626 Swap: 0 0 0 |
So that’s indeed Ubuntu 18.04 with Linux 4.14, 2GB RAM, and a 32GB flash with a 29GB rootfs partition. My USB drive partitions were also recognized, expcet the NTFS. But running ntfsfix on /dev/sda1 did resolve the issue, and all four file systems (NTFS, EXTFAT, EXT4, and BTRFS) used in my external drive worked.
I installed some of my favorite applications like Firefox and Gimp, and remove some I did need, but soon I realized Firefox would just crash at startup. Hardkernel told me it’s expected since Firefox 32-bit is not supported anymore, and I’d have to use a older version. Oh well, I kept using Chromium especially the image is supposed to support YouTube up to 720p, and WebGL.
I ran several tests to check of the supported features of Ubuntu 18.04 on the $60 board:
- Office applications – Open odt “word” file in LibreOffice, open large PDF (ODROID Magazine 2018) in Evince
- Emails with Thunderbird + Web browsing with Chromium – Opening multiple tab, Youtube 720p and 1080p, Candy Crush Saga (HTML5 games) in Facebook, and WebGL Quake demo
- 3D graphics – glmark2-es2 and es2gears
- H.264 Video Playback in Kodi 17.6 and ffplay (FFmpeg player)
- I/Os – WiringPi installation + test, RTC control
You can see the results in the video below. Sorry for the “grid effect” on parts of the video.
If you don’t have time to watch the 20-minutes video, basically considering the costs of the board, and 2GB RAM, I’m pleasantly surprised by the performance of the board with accelerated 3D graphics working well in demos and some webGL demos, H.264 hardware decoding in Kodi and FFmpeg working well up to 1080p, and Youtube up to 720p, fast program load times thanks to the eMMC flash module, and decent multi-tasking ability.
For the latter however, you must be aware of the 2GB RAM limitation, as if the memory is almost full (and virtual memory is not enabled), the system will still run, but very very slowly, almost as it had hung. Once I close one or two programs it run normally again. Some webGL application are not working well (e.g. Google Experiments), but I was told it could because they may be based on OpenGL instead of OpenGL ES. Youtube works well up to 720p in Chromium, but you can also select 1080p, but don’t – just don’t – do it as video will not be smooth. The worst experience in my little test was with Candy Crush Saga which took about 2 minutes 30 seconds to load the game and one level, but once you’ve started playing all is well. I was told it’s because of complex HTML5 code. In the past I played the game on Intel Bay Trail systems with 2GB RAM and 32GB storage, and it loaded reasonably fast, but it’s not directly comparable, as the game was still based on Adobe Flash at the time.
The heatsink gets fairly hot during use up to 80°C under load, and a little above 60 C at idle. That’s normal, and does not seem to affect performance much. So based on my short experience, if you have a sudden drop in performance, looks at the memory usage, rather than the CPU temperature.
GPIO Support
Let me provide a few more details about GPIO support. WiringPi is not installed by default, as few use GPIOs, but it’s easy enough to install.
1 2 3 4 |
sudo apt install git git clone https://github.com/hardkernel/wiringPi cd wiringPi sudo ./build |
We can now list supported GPIOs with the usual command line:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
gpio readall +------+-----+----------+------ Model ODROID-XU3/4 ------+----------+-----+------+ | GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO | +------+-----+----------+------+---+----++----+---+------+----------+-----+------+ | | | 3.3v | | | 1 || 2 | | | 5v | | | | 209 | 8 | I2C1.SDA | ALT5 | 1 | 3 || 4 | | | 5V | | | | 210 | 9 | I2C1.SCL | ALT5 | 1 | 5 || 6 | | | 0v | | | | 18 | 7 | GPIO. 18 | IN | 0 | 7 || 8 | 1 | ALT5 | UART0.TX | 15 | 172 | | | | 0v | | | 9 || 10 | 0 | ALT5 | UART0.RX | 16 | 171 | | 174 | 0 | GPIO.174 | ALT5 | 1 | 11 || 12 | 0 | ALT5 | GPIO.173 | 1 | 173 | | 21 | 2 | GPIO. 21 | IN | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 22 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 19 | 4 | 19 | | | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 23 | 5 | 23 | | 192 | 12 | MOSI | ALT5 | 1 | 19 || 20 | | | 0v | | | | 191 | 13 | MISO | ALT5 | 1 | 21 || 22 | 0 | IN | GPIO. 24 | 6 | 24 | | 189 | 14 | SCLK | ALT5 | 0 | 23 || 24 | 1 | OUT | CE0 | 10 | 190 | | | | 0v | | | 25 || 26 | 1 | OUT | GPIO. 25 | 11 | 25 | | 187 | 30 | I2C5.SDA | ALT5 | 1 | 27 || 28 | 1 | ALT5 | I2C5.SCL | 31 | 188 | | 28 | 21 | GPIO. 28 | IN | 0 | 29 || 30 | | | 0v | | | | 30 | 22 | GPIO. 30 | IN | 0 | 31 || 32 | 0 | IN | GPIO. 29 | 26 | 29 | | 31 | 23 | GPIO. 31 | IN | 0 | 33 || 34 | | | 0v | | | | | 24 | POWER ON | | | 35 || 36 | 0 | IN | GPIO. 33 | 27 | 33 | | | 25 | AIN.0 | | | 37 || 38 | | | 1v8 | 28 | | | | | 0v | | | 39 || 40 | | | AIN.3 | 29 | | +------+-----+----------+------+---+----++----+---+------+----------+-----+------+ |
RTC Support
The board also support RTC, and my kit came with an RTC battery so even in case of power failure the time and date will be kept. I could check the date (from NTP), write it to the RTC, and read it back.
1 2 3 4 5 |
odroid@odroid:~/wiringPi$ date Sat May 5 14:46:26 +07 2018 odroid@odroid:~/wiringPi$ sudo hwclock -w odroid@odroid:~/wiringPi$ sudo hwclock -r 2018-05-05 14:46:38.322792+0700 |
Just to make sure, I did a quick test later on, by disconnecting the Ethernet cable, and rebooting the board:
1 2 3 4 5 6 7 |
odroid@odroid:~$ uptime 16:06:58 up 0 min, 1 user, load average: 1.53, 0.41, 0.14 odroid@odroid:~$ sudo mii-tool eth0 [sudo] password for odroid: eth0: no link odroid@odroid:~$ date Sat May 5 16:07:09 +07 2018 |
The date and time were still correct, meaning they were automatically retrieved from the RTC at boot time.
Performance Testing – Building the kernel, AV Transcoding, Storage and Network Performance
Just like I did for ODROID-XU3 Lite, I did some real-time test to give an idea of the performance for some tasks like building the Linux kernel, and transcoding a video.
The kernel compilation test also allows use to learn how to build the Linux 4.14 kernel used in the board. I just followed the instructions in the Wiki:
1 2 3 4 5 6 7 8 9 |
sudo apt install git gcc g++ build-essential libssl-dev git clone --depth 1 https://github.com/hardkernel/linux -b odroidxu4-4.14.y cd linux make odroidxu4_defconfig time make -j8 ... real 38m47.360s user 255m45.448s sys 23m35.780s |
So the kernel build itself took almost 39 minutes with the 32GB eMMC module. That’s much longer than when I built mainline Linux on ODROID-XU3 Lite a couple of years ago, but that’s easily explained because mainline does not have that many modules enabled by default. To complete the build, we also need to install the modules, zImage and the device tree files:
1 2 3 4 |
sudo make modules_install sudo cp -f arch/arm/boot/zImage /media/boot sudo cp -f arch/arm/boot/dts/exynos5422-odroid*dtb /media/boot sync |
For reference, the command to install modules processed 1,442 modules… At next reboot, you’ll be using your freshly built kernel.
The next test is (software) transcoding of an MPEG-2 video into MPEG-4.
1 2 3 |
sudo apt install libav-tools time avconv -i big_buck_bunny_1080p_MPEG2_MP2_25fps_6600K.MPG \ -vcodec libx264 -minrate 300k -maxrate 300k -bufsize 1835k bbb-h.264.avi |
The output will show some errors, and it will exit prematurely with the output video unplayable:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
ffmpeg version 3.4.2-2ubuntu3 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 7 (Ubuntu/Linaro 7.3.0-15ubuntu2) configuration: --prefix=/usr --extra-version=2ubuntu3 --toolchain=hardened --libdir=/usr/lib/arm-linux-gnueabihf --incdir=/usr/include/arm-linux-gnueabihf --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-v4l2_m2m --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared libavutil 55. 78.100 / 55. 78.100 libavcodec 57.107.100 / 57.107.100 libavformat 57. 83.100 / 57. 83.100 libavdevice 57. 10.100 / 57. 10.100 libavfilter 6.107.100 / 6.107.100 libavresample 3. 7. 0 / 3. 7. 0 libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 libpostproc 54. 7.100 / 54. 7.100 [mpeg2_v4l2m2m @ 0x4d1630] driver 'exynos-gsc' on card 'exynos-gsc gscaler' Last message repeated 1 times [mpeg2_v4l2m2m @ 0x4d1630] driver 's5p-mfc' on card 's5p-mfc-enc' [mpeg2_v4l2m2m @ 0x4d1630] driver 's5p-mfc' on card 's5p-mfc-dec' [mpeg2_v4l2m2m @ 0x4d1630] Using device /dev/video10 [mpeg2_v4l2m2m @ 0x4d1630] driver 's5p-mfc' on card 's5p-mfc-dec' [mpeg2_v4l2m2m @ 0x4d1630] output POLLERR Input #0, mpeg, from 'big_buck_bunny_1080p_MPEG2_MP2_25fps_6600K.MPG': Duration: 00:00:44.77, start: 0.240000, bitrate: 7155 kb/s Stream #0:0[0x1e0]: Video: mpeg2video, nv21(progressive), 1920x1080, 25 fps, 25 tbr, 90k tbn, 50 tbc Stream #0:1[0x1c0]: Audio: mp2, 44100 Hz, stereo, s16p, 160 kb/s [mpeg2_v4l2m2m @ 0x503ca0] driver 'exynos-gsc' on card 'exynos-gsc gscaler' Last message repeated 1 times [mpeg2_v4l2m2m @ 0x503ca0] driver 's5p-mfc' on card 's5p-mfc-enc' [mpeg2_v4l2m2m @ 0x503ca0] driver 's5p-mfc' on card 's5p-mfc-dec' [mpeg2_v4l2m2m @ 0x503ca0] Using device /dev/video10 [mpeg2_v4l2m2m @ 0x503ca0] driver 's5p-mfc' on card 's5p-mfc-dec' Stream mapping: Stream #0:0 -> #0:0 (mpeg2video (mpeg2_v4l2m2m) -> h264 (libx264)) Stream #0:1 -> #0:1 (mp2 (native) -> mp3 (libmp3lame)) Press [q] to stop, [?] for help [mpeg2_v4l2m2m @ 0x503ca0] output POLLERR [mpeg2_v4l2m2m @ 0x503ca0] capture: driver decode error [libx264 @ 0x50d900] using cpu capabilities: ARMv6 NEON [libx264 @ 0x50d900] profile High, level 4.0 Output #0, avi, to 'bbb-h.264.avi': Metadata: ISFT : Lavf57.83.100 Stream #0:0: Video: h264 (libx264) (H264 / 0x34363248), nv21, 1920x1080, q=-1--1, 25 fps, 25 tbn, 25 tbc Metadata: encoder : Lavc57.107.100 libx264 Side data: cpb: bitrate max/min/avg: 300000/0/0 buffer size: 1835000 vbv_delay: -1 Stream #0:1: Audio: mp3 (libmp3lame) (U[0][0][0] / 0x0055), 44100 Hz, stereo, s16p Metadata: encoder : Lavc57.107.100 libmp3lame [mpeg2_v4l2m2m @ 0x503ca0] capture: driver decode error Last message repeated 12 times frame= 7 fps=2.3 q=0.0 size= 10kB time=00:00:07.94 bitrate= 10.0kbits/s Try -max_interleave_delta 0 as a possible workaround. [avi @ 0x59da10] Packets poorly interleaved, failed to avoid negative timestamp -6 in stream 0. Try -max_interleave_delta 0 as a possible workaround. frame= 9 fps=0.5 q=-1.0 Lsize= 944kB time=00:00:44.85 bitrate= 172.3kbits/s dup=0 drop=1073 speed=2.41x video:192kB audio:701kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 5.649683% [libx264 @ 0x50d900] frame I:2 Avg QP:28.58 size: 43574 [libx264 @ 0x50d900] frame P:4 Avg QP:39.34 size: 21861 [libx264 @ 0x50d900] frame B:3 Avg QP:46.59 size: 7300 [libx264 @ 0x50d900] consecutive B-frames: 55.6% 0.0% 0.0% 44.4% [libx264 @ 0x50d900] mb I I16..4: 22.8% 75.1% 2.0% [libx264 @ 0x50d900] mb P I16..4: 29.4% 32.6% 1.8% P16..4: 7.8% 0.8% 0.5% 0.0% 0.0% skip:27.0% [libx264 @ 0x50d900] mb B I16..4: 3.2% 3.1% 0.1% B16..8: 14.2% 1.0% 0.1% direct: 1.9% skip:76.4% L0:65.6% L1:32.7% BI: 1.7% [libx264 @ 0x50d900] 8x8 transform intra:61.1% inter:90.2% [libx264 @ 0x50d900] coded y,uvDC,uvAC intra: 28.9% 36.5% 10.9% inter: 3.9% 8.4% 1.7% [libx264 @ 0x50d900] i16 v,h,dc,p: 43% 22% 9% 26% [libx264 @ 0x50d900] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 14% 35% 4% 4% 4% 5% 3% 3% [libx264 @ 0x50d900] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 39% 19% 15% 4% 5% 8% 5% 3% 2% [libx264 @ 0x50d900] i8c dc,h,v,p: 72% 12% 14% 2% [libx264 @ 0x50d900] Weighted P-Frames: Y:0.0% UV:0.0% [libx264 @ 0x50d900] ref P L0: 75.1% 5.7% 14.9% 4.3% [libx264 @ 0x50d900] ref B L0: 90.7% 9.3% [libx264 @ 0x50d900] ref B L1: 83.1% 16.9% [libx264 @ 0x50d900] kb/s:34.96 real 0m20.407s user 0m10.716s sys 0m3.639s |
It looks like aconv (ffmpeg) is attempting to use some hardware decoding / encoding for the transcoding before falling back to “Armv6 NEON”. The transcoding was done at around 7 fps which is close enough to the 8 fps I got last time with ODROID-XU3 Lite. I tried again transcoding MPEG4 to H.264, and this time it worked:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
time avconv -i big_buck_bunny_1080p_MPEG4_MP3_25fps_7600K.AVI -vcodec libx264 -minrate 300k -maxrate 300k -bufsize 1835k bbb-h.264.avi ffmpeg version 3.4.2-2ubuntu3 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 7 (Ubuntu/Linaro 7.3.0-15ubuntu2) configuration: --prefix=/usr --extra-version=2ubuntu3 --toolchain=hardened --libdir=/usr/lib/arm-linux-gnueabihf --incdir=/usr/include/arm-linux-gnueabihf --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-v4l2_m2m --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared libavutil 55. 78.100 / 55. 78.100 libavcodec 57.107.100 / 57.107.100 libavformat 57. 83.100 / 57. 83.100 libavdevice 57. 10.100 / 57. 10.100 libavfilter 6.107.100 / 6.107.100 libavresample 3. 7. 0 / 3. 7. 0 libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 libpostproc 54. 7.100 / 54. 7.100 [mpeg4_v4l2m2m @ 0x536520] driver 'exynos-gsc' on card 'exynos-gsc gscaler' Last message repeated 1 times [mpeg4_v4l2m2m @ 0x536520] driver 's5p-mfc' on card 's5p-mfc-enc' [mpeg4_v4l2m2m @ 0x536520] driver 's5p-mfc' on card 's5p-mfc-dec' [mpeg4_v4l2m2m @ 0x536520] Using device /dev/video10 [mpeg4_v4l2m2m @ 0x536520] driver 's5p-mfc' on card 's5p-mfc-dec' [mpeg4_v4l2m2m @ 0x536520] output POLLERR Input #0, avi, from 'big_buck_bunny_1080p_MPEG4_MP3_25fps_7600K.AVI': Metadata: encoder : SUPER(C) - by eRightSoft artist : created.with.SUPER(C).v2011.bld.49 Duration: 00:00:44.88, start: 0.000000, bitrate: 7746 kb/s Stream #0:0: Video: mpeg4 (Simple Profile) (MP4V / 0x5634504D), nv21, 1920x1080 [SAR 1:1 DAR 16:9], 7634 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 44100 Hz, stereo, s16p, 112 kb/s File 'bbb-h.264.avi' already exists. Overwrite ? [y/N] y [mpeg4_v4l2m2m @ 0x54f8e0] driver 'exynos-gsc' on card 'exynos-gsc gscaler' Last message repeated 1 times [mpeg4_v4l2m2m @ 0x54f8e0] driver 's5p-mfc' on card 's5p-mfc-enc' [mpeg4_v4l2m2m @ 0x54f8e0] driver 's5p-mfc' on card 's5p-mfc-dec' [mpeg4_v4l2m2m @ 0x54f8e0] Using device /dev/video10 [mpeg4_v4l2m2m @ 0x54f8e0] driver 's5p-mfc' on card 's5p-mfc-dec' Stream mapping: Stream #0:0 -> #0:0 (mpeg4 (mpeg4_v4l2m2m) -> h264 (libx264)) Stream #0:1 -> #0:1 (mp3 (native) -> mp3 (libmp3lame)) Press [q] to stop, [?] for help [mpeg4_v4l2m2m @ 0x54f8e0] output POLLERR [mpeg4_v4l2m2m @ 0x54f8e0] capture: driver decode error [libx264 @ 0x53ad50] using cpu capabilities: ARMv6 NEON [libx264 @ 0x53ad50] profile High, level 4.0 Output #0, avi, to 'bbb-h.264.avi': Metadata: IART : created.with.SUPER(C).v2011.bld.49 ISFT : Lavf57.83.100 Stream #0:0: Video: h264 (libx264) (H264 / 0x34363248), nv21, 1920x1080, q=-1--1, 25 fps, 25 tbn, 25 tbc Metadata: encoder : Lavc57.107.100 libx264 Side data: cpb: bitrate max/min/avg: 300000/0/0 buffer size: 1835000 vbv_delay: -1 Stream #0:1: Audio: mp3 (libmp3lame) (U[0][0][0] / 0x0055), 44100 Hz, stereo, s16p Metadata: encoder : Lavc57.107.100 libmp3lame [mpeg4_v4l2m2m @ 0x54f8e0] capture: driver decode error Last message repeated 13 times frame= 15 fps=0.0 q=0.0 size= 10kB time=00:00:01.07 bitrate= 74.4kbits/s[mpeg4_v4l2m2m @ 0x54f8e0] capture: driver decode error Last message repeated 16 times frame= 32 fps= 31 q=0.0 size= 10kB time=00:00:01.75 bitrate= 45.5kbits/s[mpeg4_v4l2m2m @ 0x54f8e0] capture: driver decode error Last message repeated 13 times frame= 46 fps= 18 q=0.0 size= 10kB time=00:00:02.32 bitrate= 34.3kbits/s[mpeg4_v4l2m2m @ 0x54f8e0] capture: driver decode error Last message repeated 5 times frame= 238 fps= 13 q=53.0 size= 266kB time=00:00:10.18 bitrate= 213.7kbits/s video:1742kB audio:702kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 3.148138% real 1m34.676s user 7m10.305s sys 0m5.370s |
Time for some storage benchmark, first the eMMC flash with iozone:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
sudo apt install iozone3 sudo iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2 Iozone: Performance Test of File I/O Version $Revision: 3.429 $ Compiled for 32 bit mode. Build: linux random random bkwd record stride kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 102400 4 13831 15703 15634 16201 15143 14801 102400 16 37731 40324 44864 44447 43462 40251 102400 512 48610 50688 129402 135539 132188 71911 102400 1024 68949 68284 137609 140847 137855 69597 102400 16384 50237 56800 194593 194663 175027 59117 |
So that means up to 68MB/s sequential write, 194MB/s sequential read, and pretty high values for random I/Os too (175MB/s & 69.5MB/s).
I’ve also tested USB 3.0 sequential speed using a hard drive starting with NTFS:
1 2 3 4 5 6 7 8 9 |
cd /media/odroid/USB3_NTFS sudo iozone -e -I -a -s 1000M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 random random bkwd record stride kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 1024000 4 11245 12654 31984 31968 1024000 16 34708 38383 69621 71604 1024000 512 89577 98049 103395 104637 1024000 1024 91108 93261 104096 104645 1024000 16384 94559 98031 101223 104292 |
We can see the board can max out the performance achivable with a mechanical drive (around 100 MB/s) both for write and read speed. Using an SSD should yield even better results.
Final benchmark: iperf to test full duplex Gigabit Ethernet.
1 2 3 4 5 6 |
Client connecting to 192.168.0.116, TCP port 5001 TCP window size: 416 KByte (WARNING: requested 867 MByte) ------------------------------------------------------------ [ 6] local 192.168.0.104 port 34246 connected with 192.168.0.116 port 5001 [ 6] 0.0-60.0 sec 2.81 GBytes 402 Mbits/sec [ 5] 0.0-60.0 sec 6.03 GBytes 863 Mbits/sec |
Performance is not too bad, but during a full duplex transfer one direction is limited to around 400 Mbits/sec. Let’s repeat the test but only for
- Download
1 2 3 4 5 6 |
Client connecting to 192.168.0.116, TCP port 5001 TCP window size: 85.0 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.0.104 port 39602 connected with 192.168.0.116 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 6.39 GBytes 915 Mbits/sec |
- Upload
1 2 3 4 5 6 |
Client connecting to 192.168.0.104, TCP port 5001 TCP window size: 43.8 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.0.116 port 52492 connected with 192.168.0.104 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-60.0 sec 6.41 GBytes 917 Mbits/sec |
It cannot get much better than that.
Checking out Ubuntu 18.04 MATE on ODROID-XU3 Lite
So far, we’ve test Ubuntu 18.04 on ODROID-XU4Q board that released last year. It’s one thing to support a one year old board, and another to support a board launched nearly four years ago. But if we look at the eMMC module’s boot partition we can find dtb files for all Exynos 5422 boards.
So I took out the eMMC flash module from ODROID-XU4Q, dusted out my old ODROID-XU3 Lite board, and insert the module in place of the 16GB one I had.
I connected the micro HDMI cable, and power supply, and within a few seconds the MATE desktop showed up, and after some short tests everything seemed in order. The following output from the terminal shows Ubuntu 18.04 running on ODROID-XU3 hardware:
1 2 3 4 5 6 7 8 9 |
odroid@odroid:~$ uname -a Linux odroid 4.14.37-135 #1 SMP PREEMPT Sun Apr 29 23:34:43 -03 2018 armv7l armv7l armv7l GNU/Linux odroid@odroid:~$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04 LTS" cat /proc/cpuinfo | grep -i hard Hardware : ODROID-XU3 |
Not bad for an “old” board.
All in all Ubuntu 18.04 on ODROID-XU4Q board was a fairly satisfying experience, despite some performance issues with Candy Crush Saga, in most cases the system performed well and reliably with fast programs loading times, H.264 hardware video coding, 3D graphics acceleration for OpenGL ES (3.1), and most features working as expected. As we’ve seen there are limitations, but this is to be expected for a low cost board.
ODROID-XU4Q can be purchased for $59 and up plus shipping on Hardkernel, Amazon, Ameridroid, and other distributors. You may also consider accessories like power supply, enclosure, eMMC reader, and RTC battery.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress
Some additions:
* It’s not a ’12V/4A’ but a 5V PSU
* The more primitive eMMC adapter is the better choice on fast ports (I read/write with 80 MB/s on my MacBook).
* eMMC performance test looks weird since lower numbers with larger blocksizes (throttling occured?)
* Would be interesting to repeat tests with activated zram and Ubuntu defaults (using up to half of the RAM)
About the adapter I’m sure I plugged it to a USB 3.0 port, but Hardkernel mentions it may have run in USB 2.0 mode. Their reply + data: But I saw something strange about the USB 3.0 eMMC Writer performance. When we flashed a 1.6GB OS image with Etcher, we could observe over 3~4 times faster performance. With USB3.0 eMMC Module Writer 1st trial : Flashing 27.39s, Validating 19.97s, Total 47.36s 2nd trial : Flashing 29.24s, Validating 20.64s, Total 49.88s 3rd trial : Flashing 27.91s, Validating 20.32s, Total 48.23s With Transcend USB3.0 reader 1st trial : Flashing 93.07s, Validating 88.83s,… Read more »
My computer apparently fails to set “link state”, so that may be why I got rather low values (~25 MB/s): [25829.991209] sd 7:0:0:0: [sdd] Attached SCSI removable disk [25835.082974] usb 9-1: Device not responding to setup address. [25835.559047] usb 9-1: Device not responding to setup address. [25835.766595] usb 9-1: device not accepting address 4, error -71 [25835.766611] xhci_hcd 0000:02:00.0: Cannot set link state. 12345 [25829.991209] sd 7:0:0:0: [sdd] Attached SCSI removable disk[25835.082974] usb 9-1: Device not responding to setup address.[25835.559047] usb 9-1: Device not responding to setup address.[25835.766595] usb 9-1: device not accepting address 4, error -71[25835.766611] xhci_hcd 0000:02:00.0: Cannot… Read more »
I got really low numbers from an old Odroid eMMC (“black”) in combination with the ‘primitive’ adapter and several SD HS slots, while getting 30-ish MB/s using the same adapter with a decent USB3 reader. Go figure.
And wrt iperf tests: this tool is not really a network throughput benchmark since way too often simply limited by a CPU bottleneck. On a big.LITTLE architecture like here when iperf is ending up on one of the little cores low throughput can be related to 100% CPU utilization and the following might draw a totally different picture: taskset -c 4 iperf ... 1 taskset -c 4 iperf ... Also iperf3 is a better tool since able to report retransmits that can trash performance and doing 2 second updates which is nice to watch since huge performance drops over time… Read more »
What about power consumption on Idle with DPMS off?