About 2 weeks ago, Jasbir released an Ubuntu 11.10 image and installation instructions for GK802 and Hi802 mini PCs based on Freescale i.MX6. I could only find time to give it try yesterday and today. I’ll provide the steps I followed to install the image, and my quick first impressions of the stability and performance of this image.
I mainly followed the instructions provided by Jasbir, and run GParted to increased the partition size on my micro SD card. The image is for a 8 GB micro SD, but those instructions should work on 4GB SD card and greater, as the rootfs partition is only 3GB large.
- Download the Ubuntu 11.10 image, uboot, as well as the kernel image and modules in a Linux PC:
Shell1234wget http://dl.miniand.com/jas-hacks/gk802/ubuntu_gk802.img.gzwget http://dl.miniand.com/jas-hacks/gk802/u-boot.imxwget http://dl.miniand.com/jas-hacks/gk802/uImage_3.0.35-0269_cpu_freqwget http://dl.miniand.com/jas-hacks/gk802/modules_3.0.35-02695.tar
- Copy the image, uboot and the kernel to the micro SD card by typing the commands below:
Shell1234gzip -d ubuntu_gk802.img.gzsudo dd if=ubuntu_gk802.img of=/dev/<sd_device>sudo dd if=u-boot.imx bs=1k seek=1 of=/dev/<sd_device> && syncsudo dd if=uImage_3.0.35-0269_cpu_freq of=/dev/<sd_drive> bs=1048576 seek=1 && sudo sync
Replace /dev/<sd_device> by your actual device. In my case: /dev/sdc. N.B. My 8 GB micro SD is slightly smaller than Jasbir’s image so dd failed with “No space left on device“, but it’s not an issue, as there’s no critical data at the end of the image.
- Remove the micro SD from your PC, and reinsert it to automatically mount the rootfs. If it does not automatically mount, you may need to mount it manually (e.g. sudo mount -t vfat /dev/sdc1 /media/ubuntu)
- Copy the kernel modules to the rootfs. Replace <sd_mount_pt> by your micro SD mount point (e.g. /media/ubuntu):
Shell12tar xvf modules_3.0.35-02695.tarsudo cp -r modules/3.0.35-02695-ga09806b-dirty <sd_mount_pt>/lib/modules
- Unmount the microSD, and run
gparted /dev/<sd_device> to resize the root filesystem, as shown below
GParted failed to run e2fsck properly for an unknown reason, possibly because my micro SD is smaller than the provided image, so I slightly reduced the size of the partition, and it worked OK.
- Exit GParted, remove the micro SD from your PC to insert it in the internal microSD slot of your Hi802 / GK802 mini PC.
Since this is a development release, and the boot may fail with your configuration, you’d better connect a USB to TTL board to your device to access the serial console. During my first boot, I got to the Ubuntu desktop on my HDMI display (720p), but my USB mouse or keyboard would not work. I’d get no messages (via dmesg) at all when I connected a USB hub, and upon connecting my mouse or keyboard directly in Hi802 USB port, I’d get the message below in the serial console:
usb 1-1: device descriptor read/64, error -71
rzk2 advised me to try another power supply on #imx6-dongle IRC. After my Droid Stick A2 5V/2A power supply, I tried a 5V/1.2A Nokia power supply, but the device would just keep rebooting, and finally I found another 5V/2A that make the device, my USB hub, mouse, keyboard and me happy 🙂
I could setup Wi-Fi very easily via Ubuntu user interface. As with other boards running Ubuntu + Unity from an SD card, the system is not super responsive but still (sort of) usable. To test the GPU and 2D/3D acceleration, I ran both es2gears and glmark2-es2.
es2gears renders at about 58 fps.
EGL_VERSION = 1.4
vertex shader info:
fragment shader info:
821 frames in 5.0 seconds = 164.069 FPS
818 frames in 5.1 seconds = 161.916 FPS
767 frames in 5.1 seconds = 149.893 FPS
511 frames in 5.0 seconds = 101.773 FPS
293 frames in 5.0 seconds = 58.495 FPS
292 frames in 5.0 seconds = 58.295 FPS
292 frames in 5.0 seconds = 58.272 FPS
292 frames in 5.0 seconds = 58.318 FPS
291 frames in 5.0 seconds = 58.107 FPS
293 frames in 5.0 seconds = 58.483 FPS
291 frames in 5.0 seconds = 58.142 FPS
and glmark2-es2 works, but gets a score between 12 and 14, which is quite lower than the score (54) I got on ODROID-X with Ubuntu 12.11 using the same resolution. A lower score was expected, but the difference is quite large, although I’m not sure whether it’s OK to compare glmark2-es2 results on Ubuntu 11.10 and 12.11.
GL_VENDOR: Vivante Corporation
GL_RENDERER: GC2000 core
GL_VERSION: OpenGL ES 2.0
[build] use-vbo=false: FPS: 31
[build] use-vbo=true: FPS: 30
[texture] texture-filter=nearest: FPS: 26
[texture] texture-filter=linear: FPS: 18
[texture] texture-filter=mipmap: FPS: 18
[shading] shading=gouraud: FPS: 19
[shading] shading=blinn-phong-inf: FPS: 12
[shading] shading=phong: FPS: 7
[bump] bump-render=high-poly: FPS: 6
[bump] bump-render=normals: FPS: 10
[bump] bump-render=height: FPS: 12
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 5
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 2
[pulsar] light=false:quads=5:texture=false: FPS: 12
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 14
[desktop] effect=shadow:windows=4: FPS: 0
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 10
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 7
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 7
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 14
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 6
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 7
[function] fragment-complexity=low:fragment-steps=5: FPS: 6
[function] fragment-complexity=medium:fragment-steps=5: FPS: 3
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 23
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 30
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 7
glmark2 Score: 12
In some cases, the HDMI display would just become black during 2D/3D testing for a short period of time (1 or 2 seconds).
I then tried video playback in Ubuntu, something I can’t do with any other boards or devices I own. I tried to play videos in Totem directly from a SAMBA share. Big Buck Bunny 480p plays just fine, but the 720p can’t play smoothly. So I copied Big Buck Bunny 1080p (~44 MB) to the micro SD. This took about 44 seconds (1MB/s), which means currently Wi-Fi performance is slower than in Android (1.42 MB/s). However, once I got the video in the micro SD, it could play just fine with low CPU usage.
I’ve performed a final quick test running Firefox, Totem (1080p video), es2gears, and htop at the same time (pictured above). Most of the time the system can manage this workload, but CPU usage is quite high (noticeably because of es2gears), and if you try to interact with Ubuntu while all those run, it’s just very sluggish. For example, if you take a screenshot with “Print Screen”, the pop-up window may take several seconds to appear, and video playback will be extremely choppy. When I run all those programs at the same time, the system may also end up rebooting automatically.
Yet this is the first image that can boot properly on my HiAPAD Hi802, so this is good progress, and it shows good potential for this hardware. A faster micro SD, and/or replacing Unity with LXDE or XFCE desktop environment esshould greatly improve the responsiveness of the system.