Thursday, 4 April 2013

I.MX6 GK802 - Ubuntu 12.04 preview image

Following on from the oneiric preview image, I've put together a rootfs based on Linaro 12.04. Thanks to the Otavio from the yocto project for help building the gpu drivers. It should be possible to deploy the rootfs on other imx6 devices by deploying the correct uboot, kernel + modules.

Note: updated rootfs has working VPU.

What's working :

1. GPU + VPU acceleration.
2. Wifi
3. Choice of Unity 2D or Xubuntu desktop
4. Chromium
5. glxgears/glmark2-es2/es2gears working in Unity 2D and Xubuntu.

What's currently not working:

1. Bluetooth
2. Pre-installed Neverball (3D ball game) - broken something





If you prefer not to follow the manual instructions listed below user hste (aka
Haakon Stende
) on freenode imx6dongle has created a script to build and deploy. Script is here, any problems contact hste on freenode for advice.

To install (assuming oneiric image already on sd card):

1. Download rootfs linaro_12_04_gpu_vpu.tar.gz. Thanks to hste for hosting.
2. Delete existing rootfs from oneiric image (this is the "ubuntu" partition on the SD card).
 
    rm -rf <sd card mount point>/ubuntu/*
    sync

3. Extract new rootfs:

    cd <sd card mount point>/ubuntu
    tar xvf linaro_12_04_gpu.tar.gz
    sync

4.  Download kernel with cpu frequency or without (requires a good heatsink) and 'dd' to sd card.

    dd if=arch/arm/boot/uImage_cpufreq of=/dev/sdc bs=1048576 seek=1 && sudo sync 

         OR


    dd if=arch/arm/boot/uImage_no_cpufreq of=/dev/sdc bs=1048576 seek=1 && sudo sync 

5. Download uboot and 'dd' to sd card.
    dd if=u-boot.imx bs=1k seek=1 of=/dev/sdc && sync


4. Remove SD card and place in internal SD slot and power up.

63 comments:

  1. Thanks for your work!

    I'm just waiting for mine to arrive, but bought it based on the open Freescale community and also your progress!

    I want to replace an aging - but still good - notebook which I use in the last year solely as a terminal client for my mediaPC. With a small HW like this I can free up a lot of space on my table and still - expecting at least - a pleasant user experience, maybe an occasional Video playback too.

    Keep up the good work, I really appreciate your work (as a Unix admin I really know what I am talking about :) )

    ReplyDelete
  2. hello , great job ,
    can you think you can install "ubuntu tv" on the usb stick, to plug on a tv ?
    ubuntu 12.04 + ubuntu tv 12.04 on the I.MX6 with gpu acceleration its possible ?

    ReplyDelete
    Replies
    1. Hi, I'm not sure whether it would work or not as, but maybe something to look at in the future.

      Delete
  3. When you say "for help building the gpu drivers", did you build the gpu drivers from source? From my understanding the gpu source is closed source. Could you enlighten on the steps you took to build 12.04 with gpu drivers? I have been following the meta-freescale archives and so am familiar with the build environment. I'd like to be able to duplicate your steps. Thanks

    ReplyDelete
    Replies
    1. The vivante gpu drivers are closed source. What has to be built are the xorg/dri drivers so that they match the xserver version you are running.

      Delete
    2. and how do you go about building the xorg/dri drivers? I am using yocto 'danny' as my build environment. Thanks

      Delete
  4. The script for installing the newest linaro image from jas is:

    http://stende.no-ip.info/files/mksdcard_jas_1204_gpu_vpu.sh

    ReplyDelete
    Replies
    1. This is fantastic! However, the script is resulting in an endless while loop when choosing the kernel.
      Great job to the both of you!

      Delete
  5. Thanks a lot for the image and your great work on this project. The WiFi required a tiny bit of work (didn’t showup in the network admin tool but worked when WiFi was setup with an entry to the /etc/network/interfaces) to sort out but other than that everything worked out of the box. The system booted up much quicker than with the Geekbuying Image and Unity interface was much more responsive and apps opened quite quickly. It sometimes hung for a few seconds and got unresponsive, especially when using the Ubuntu Software Centre but other than that no big problems. Youtube HTML5 video playback using Chromium and Firefox was extremely choppy but web browsing experience overall was not bad at all. Sadly I didn’t have any luck with Totem Youtube playback as well, but OpenGL ES HW acceleration etc. worked well. Not sure whether it will be good enough to use a TV PC given the current performance but it might be useful for compute intensive control applications, computer vision for robotics etc. where something like a Raspberry Pi or (current) Beaglebone is not fast enough.

    ReplyDelete
    Replies
    1. @ tanaka_ds

      I've had no luck seeing WiFi options anywhere inside Ubuntu, and I'm guessing from your comment that you were in the same situation.

      Would you mind giving the specifics about how you managed to get WiFi up and running. I'd really appreciate it.

      Delete
    2. This comment has been removed by the author.

      Delete
    3. @ Art MacNeil

      This is just a temporary fix to get online. Assuming that you want to connect to a WPA protected router,

      Open up terminal

      sudo chmod 0600 /etc/network/interfaces (Optional – this is to stop the PSK from being exposed)
      [Enter your password. The default password is “linaro”]

      gksu gedit /etc/network/interfaces
      [Enter your password]

      Add the following text to the end of your interfaces file

      auto wlan1
      iface wlan1 inet dhcp
      [tab indented] wpa-ssid yournetworkssid
      [tab indented] wpa-psk yourpassword

      I think you can run the following to get a list of available networks if you can’t remember the exact SSID,

      sudo iwlist wlan1 scan (Optional)

      Now save the file and quit gedit. The “auto” should make the system connect automatically on startup, I don’t have access now to the GK802 to check.

      Now we have to restart the wlan1 interface.

      sudo ifdown wlan1

      sudo ifup wlan1 (I got an error here, just ignore it)

      Open your web browser, hopefully you will be connected to the internet.

      Delete
    4. @ tanaka_ds

      Thanks so much for posting a reply so quickly! I gave your method a whirl, but no network access. I tried a few things prior to seeing your post, so I may have screwed something up then.

      I'll try a fresh rootfs tomorrow and see if I can get online.

      Thanks again.

      Delete
    5. There is bug in ubuntu do with dbus which disabling wifi http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=659953.

      Fix is:

      chgrp messagebus /usr/lib/dbus-1.0/dbus-daemon-launch-helper
      chmod +s /usr/lib/dbus-1.0/dbus-daemon-launch-helper

      reboot

      Delete
  6. Hi, and thanks again for this work Jas.

    Is EDID supposed to work in this version? I tried it but got a resolution that is not that of my screen...
    Btw I tried to compile the kernel, using either the gk802 config file, but couldn't achieve to make EDID work...

    ReplyDelete
    Replies
    1. My current is currently missing EDID code, if you compile kernel our self it should be enabled. BTW I currently working fix uboot so that the screen resolution can be configured.

      Delete
    2. are you on github anywhere? there is a https://github.com/imx6-dongle/linux-imx giit account for linux kernels.
      Would you be able to put your progress on git such that we can track it as well as collaborate to it? Thanks

      Delete
    3. I'm one of the main contributors to that git repo (https://github.com/imx6-dongle/linux-imx). Although some stuff is not checked-in. Please join us on irc imx6-dongle at freenode.

      Delete
  7. Thanks Jas. Conclusion with Ubuntu 12.04 ARM on GK802: After removing of bluez, complete cups, hpijs and so on and stuff not really needed, complete localization in german and spending much time i think you can use the GK802 but there are many limitations. First of all, Flash 11.* is not available for this ARM platform, power-management do not wake up the desktop-manager, vlc, mplayer/2 do not work (all packages from the ubuntu repos) and ubuntu unity is really slow. xubuntu (xfce4) works good, also with libreoffice. Network management with wicd is IMHO a good alternative to network-manager. But the future i think we should have such a box with linux or android on every tv...

    ReplyDelete
  8. Thanks Jas. I managed to get the 12.04 to run. I seem to have a problem with audio. I don't have any. The videos play as if they hardware decoded etc. But no audio. Any ideas?

    ReplyDelete
    Replies
    1. Ok Jas,

      Nice job! System seems very reactive with kernel without cpu frequency regulation and good heatsink.

      All works out of the box except:

      1- wifi (work after suggested workaround)
      2- internal bluetooth (but bluetooth works with external dongle)
      3- Sound simply does NOT work
      4- Monitor resolution fixed to 640x480

      There are 54 packages update...can I update safely ? I don't want to loose acceleration...

      Delete
  9. I have updated, 63 packages in total... All seems to be running and no funcionality lost. However my problem is that device boots up every 8-15 power ups... I have no idea what might be the cause?
    After fixing wifi with Jas instructions and couple of reboots - sound also somehow started working.

    ReplyDelete
  10. Ok Romuh,
    I've just update all packages suggesetd by APT and all seems to run OK BUT there are some problems watching videos...
    Video (all formats) seems to run in "slow motion-mode" it is incredible!!!
    Watching video is not possible....are very slow....
    Glxgears and glmark-es2 both crash X!!!
    Perhaps better DO NOT update?

    Help me please...I don't want reinstalling...

    ReplyDelete
    Replies
    1. By updating the xserver + gstreamer packages are updated which mean some packages need to be recompiled.

      I'm putting together a new Xubuntu image which will have all the updated packages with X and Video working.

      Delete
    2. Thanks Jas!

      Delete
    3. The new root image you uploaded seems to have problems:

      1-movie still reproducted "in slow motion-mode"
      2-wifi fixed
      3-monitor resolution still fixed to 640x480 (do you suggest a step-by-step simply howto to quickly change it?)
      4-external bluetoolh dongle works
      5-sound works
      6-accelleration seems to work (but problem to play videos)
      7- problem to change User and Desktop Enviroment from Unity to XFCE or other.

      Bye

      Delete
    4. I haven't uploaded an Xubuntu image it is work in progress.

      Delete
  11. I want to buy device with iMX.6
    anybody can confirm if there is working hw accelerated video and audio decoding/encoding with working libs(gstreamer for example) on ubuntu ?
    I saw some information about watermarking in video encoder

    ReplyDelete
  12. Any idea how to get around the following?
    -----------------------------------------------
    root@linaro-ubuntu-desktop:~# apt-get install libbz2-dev
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    Some packages could not be installed. This may mean that you have
    requested an impossible situation or if you are using the unstable
    distribution that some required packages have not yet been created
    or been moved out of Incoming.
    The following information may help to resolve the situation:

    The following packages have unmet dependencies:
    libbz2-dev : Depends: libbz2-1.0 (= 1.0.6-1) but 1.0.6-1linaro1 is to be installed

    ReplyDelete
  13. Hi, you can try to update libbz2 first and then ibbz2-dev. Alternatively try the Xubuntu 12.04 release it should have the latest packages.

    ReplyDelete
  14. Jas, I'm eagerly awaiting your new image, thanks very much for contributing to this!

    ReplyDelete
  15. Hi, I see this is an outdated thread but was wondering if there is an easy way to get this installed for a noob like me. I will take your honest opinion if you feel I will not be up to it. basically I need to know where to start. I did download the tar.gz file and have an mk809 device.

    ReplyDelete
    Replies
    1. MK809 is not compatible, it has a Rockchip CPU, not Freescale i.MX6.

      Delete
  16. Greetings! Is it possible to get an armHF build rather than armEL?

    ReplyDelete
    Replies
    1. Hi, yes I do have a armhf rootfs with working X11 (accelerated) but sadly no video support.

      Delete
  17. Hello Jasbir,
    Thank you for your work. Could you please put the 'u-boot.imx' file on http://stende.no-ip.info/jas/? There is only the 'u-boot_multi_boot.imx' file.
    Thank you!

    ReplyDelete
    Replies
    1. Hi, try this one http://stende.no-ip.info/jas/u-boot.imx

      Delete
    2. Thank you for the file, it works fine on my gk802, in 720p.
      Now Xubuntu finds new packages: can I update packages, or packages must be left as they were on the original image ?

      Also, when I launch Synaptic, I have the following error:
      root@none:~# synaptic
      No protocol specified
      No protocol specified
      (synaptic:4199): Gtk-WARNING **: cannot open display: :0.0
      root@none:~#

      Any ideas ?...
      TIA!

      Delete
    3. You should be able to update to the latest packages.

      Not sure about the Synaptic issue.

      Delete
    4. Hi Jasbir,
      Sorry to enter here firstly. I am a new bee. I want put Ubuntu to my gk802. Could u tell me how to do it in my laptop windows 8 in step by step please.
      I bought gk802 but it unable to read my USB NTSC format, in which I put my 1080p movies.
      Great thanks

      Delete
  18. Hi Jasbir,
    I bought a GK802 recently and I have been tried both the oneric and 12.04 steps (using the script as well). No success. Although on examination of the contents of the sd card looks fine with all the rootfs but on powering up it always boots to android. can you help me understand what may be happening. how do i debug the boot process?

    Many thanks in advance for your help :)

    Shyam

    ReplyDelete
    Replies
    1. Hi,

      I think it because you are not booting the image from the internal SD card. There is an internal SD card slot containing the android image. You need to remove the card from the internal SD card slot and replace with ubuntu SD card.

      Delete
    2. Aah ok, I did not know that until you spelt it out. It is DEEPLY fulfilling to see it boot to ubuntu now :).

      Thank you very much!!

      Delete
    3. one more thing, can you suggest a gcc cross compiler toolchain for this stick. i tried linaro gcc 4.7 from boundarydevices.com sabre lite board. But a simple hello world program did not compile :-|....

      Delete
    4. I searched a lot and i found this package from freescale - L3.0.35_1.1.0_121218_source.tar.gz

      upon untarring, there was a linaro gcc rpm that i was able to extract and use to cross compile and run a hello world program successfully on the dongle.

      (installing LTIB did not work on my dev machine that runs ubuntu 12.04, seems that it needs ubuntu 9)

      Delete
    5. Hi,

      I am using gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) without any problems. You need to make sure your are compiling for soft float ie
      arm-linux-gnueabi-

      Delete
  19. Hmm can you point me to a pre-built downloadable link (i checked the linaro website but looks like i need to build gcc on my own, thought i could save some time :D)?

    right, i checked the gcc options on the machine and it pointed that it was soft float, so i am forcing it by including -mfloat-abi=softfp in the ARCH_FLAGS that i set while compiling.

    thanks again Jas :)

    ReplyDelete
  20. Has anyone been able to get the script to work?
    Once the script completes, pop back in the sd card, boot up the device... nothing happens. No video ever gets displayed :\

    ReplyDelete
  21. Hi,

    I see you are using 3.0.5 codes/plugins version, however it is not available on Freescale web site. There is a new version and I have some problems playing video. Please, could you give me some details where did you get and how did you install vpu support, including IMX_MMCODEC_3.0.5.

    Thank you in advance,

    Dmitry

    ReplyDelete
    Replies
    1. Hi,

      Which BSP are you using 1.0.0, 4.0.0 or 4.1.0 ?

      Delete
    2. Hi,

      Thank you for a quick reply.
      I'm working with 4.0.0.
      Actually, I'm trying to update the codecs, but the sources are based on GStreamer v0.10.35, while Ubuntu 12.04 has updated GStreamer v0.10.36.

      How did you install 3.0.5 pack with GST 0.10.36? I suppose you patched the sources to have a valid gst-plugins-base.

      I'm appreciate you assistance.
      Thank you in advance,

      Dmitry

      Delete
  22. Hi Jas,

    We are able to boot the image but not able to test GPU functionalities.
    We are checking /var/log/Xorg.0.log after booting up, below (Getting segmentation fault at the end)
    [ 10.273] (EE) AIGLX: reverting to software rendering
    [ 10.366] (II) AIGLX: Loaded and initialized swrast
    [ 10.366] (II) GLX: Initialized DRISWRAST GL provider for screen 0
    [ 10.368]
    Backtrace:
    [ 10.368] Segmentation fault at address (nil)
    [ 10.368]
    Caught signal 11 (Segmentation fault). Server aborting
    [ 10.368]
    Please consult the The X.Org Foundation support
    at http://wiki.x.org
    for help.
    [ 10.369] Please also check the log file at "/var/log/Xorg.0.log" for additional information.
    [ 10.369]
    [ 10.372] ddxSigGiveUp: Closing log
    [ 10.372] Server terminated with error (1). Closing log file.

    Redwan

    ReplyDelete
  23. Also not able to boot for the second time with below errors
    Also we are not able reach the console on the second boot, getting attached errors (second_boot.txt) below

    EXT3-fs: barriers not enabled
    kjournald starting. Commit interval 5 seconds
    EXT3-fs (mmcblk1p2): warning: maximal mount count reached, running e2fsck is recommended
    mmc2: new high speed DDR MMC card at address 0001
    mmcblk2: mmc2:0001 MMC04G 3.52 GiB
    mmcblk2boot0: mmc2:0001 MMC04G partition 1 16.0 MiB
    mmcblk2boot1: mmc2:0001 MMC04G partition 2 16.0 MiB
    mmcblk2: p1 p2
    mmcblk2boot1: unknown partition table
    mmcblk2boot0: unknown partition table
    EXT3-fs (mmcblk1p2): using internal journal
    EXT3-fs (mmcblk1p2): mounted filesystem with writeback data mode
    VFS: Mounted root (ext3 filesystem) on device 179:2.
    Freeing init memory: 188K
    end_request: I/O error, dev mtdblock0, sector 0
    Buffer I/O error on device mtdblock0, logical block 0
    end_request: I/O error, dev mtdblock0, sector 0
    Buffer I/O error on device mtdblock0, logical block 0
    end_request: I/O error, dev mtdblock0, sector 0
    Buffer I/O error on device mtdblock0, logical block 0

    Redwan

    ReplyDelete
    Replies
    1. Hi, what device are you booting on? Also can you pastebin the full kernel boot.

      Delete
    2. We are booting custom i.MX6 board
      https://www.dropbox.com/s/ne8d9p16zjkrn2w/second_boot.txt

      Delete
    3. Hi, trace output shows a problem with the EXT3 partition (mmcblk1p2), are you sure the rootfs on mmcblk1p2 is EXT3 not EXT4? If it is EXT4 then you need to enable support in the kernel.

      kjournald starting. Commit interval 5 seconds
      EXT3-fs (mmcblk1p2): warning: maximal mount count reached, running e2fsck is recommended

      Delete
    4. Thanks Jasbir.
      Above problem occurs second time onwards, I mean it boots perfectly fine for the first time with the same setup (including card)

      Delete
    5. Hi Jasbir,

      I used your image on imx6 sabre-sd board and i built qt example apps using your image. I am getting segmentation fault when i am running opengl related apps.
      Please do help me if there is a way to fix this issue

      Delete
    6. Hi Redwan,

      Do you have entries in fstab for the your mounted drives?

      Delete
    7. # UNCONFIGURED FSTAB FOR BASE SYSTEM

      UUID=5975c044-88eb-464f-b71a-80477146670b / ext4 errors=remount-ro 0 1

      Delete
    8. Hi SATYANARAYANA,

      Without some sort of trace output it is difficult to diagnose,

      Delete
  24. Also "The system is running in low graphics mode" is coming for the first time and then the below issue from second time onwards
    end_request: I/O error, dev mtdblock0, sector 0
    Buffer I/O error on device mtdblock0, logical block 0
    end_request: I/O error, dev mtdblock0, sector 0
    Buffer I/O error on device mtdblock0, logical block 0
    end_request: I/O error, dev mtdblock0, sector 0
    Buffer I/O error on device mtdblock0, logical block 0

    Please suggest. Thanks.

    ReplyDelete
    Replies
    1. Comment out the line in your fstab file.

      Delete