i.MX6Q Linux Release 3.0.35_1208 – Beta

Published on August 29, 2012

Archived Notice

This article has been archived and may contain broken links, photos and out-of-date information. If you have any questions, please Contact Us.

In addition to the the Android release, Freescale has also released a Beta for Linux, and it appears that we're two for two today: it also just works on Sabre Lite and Nitrogen6X.

In addition to sources, the release images contain a pre-built kernel and LTIB-based filesystem in typical Freescale fashion.

As with the Android release, I tested it out by copying the uImage file into /tftpboot and extracted the filesystem into an NFS share.

The filesystem is provided as both an ext2 image and a jffs2 image. The ext2 image is easier to use, and I extracted it like so: ~/$ gunzip rootfs.ext2.gz ~/$ mkdir rootfs ~/$ sudo mount -o loop rootfs.ext2 rootfs ~/$ ls rootfs bin etc lib mnt proc sbin sys unit_tests var dev home lost+found opt root share tmp usr ~/$ sudo mkdir -p /L3.0.35_MX6DQ_ER_1208-Beta/ ~/$ sudo cp -ravf rootfs/* /L3.0.35_MX6DQ_ER_1208-Beta/ Then I added a line to the file /etc/exports: /L3.0.35_MX6DQ_ER_1208-Beta,no_root_squash,no_subtree_check) And booted like so: U-Boot> set bootargs console=ttymxc1,115200 video=mxcfb0:dev=ldb,1024x600M@60,if=RGB666 U-Boot> set bootargs $bootargs video=mxcdi1fb:off U-Boot> set bootargs $bootargs ip=dhcp root=/dev/nfs U-Boot> set bootargs $bootargs nfsroot= U-Boot> set bootargs $bootargs rootwait U-Boot> dhcp 12000000 U-Boot> bootm 12000000 The system came right up into the almost pointless Gnome U/I, but also provided a shell on the serial port where it was easy to confirm that:

Networking is up:

root@freescale ~$ ifconfig -a
can0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          NOARP  MTU:16  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
eth0      Link encap:Ethernet  HWaddr 00:19:B8:00:E2:45
          inet addr:  Bcast:  Mask:
          RX packets:222576 errors:6324 dropped:0 overruns:6324 frame:6324
          TX packets:116339 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:302047471 (288.0 MiB)  TX bytes:12850928 (12.2 MiB)
lo        Link encap:Local Loopback
          inet addr:  Mask:
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
Video playback also works:
root@freescale /unit_tests$ ./mxc_vpu_test.out -D '-i akiyo.mp4'
[INFO]	VPU test program built on Aug 28 2012 14:15:08
[INFO]	Product Info: i.MX6Q/D/S
[INFO]	VPU firmware version: 2.1.5_r32515
[INFO]	VPU library version: 5.4.5
[INFO]	Format: STD_MPEG4
[INFO]	MPEG4 class: MPEG4
[INFO]	Input file "akiyo.mp4" opened.
[INFO]	bitstreamMode 0, chromaInterleave 0, mapType 0, tiled2LinearEnable 0
[INFO]	Mpeg4 Profile: 0 Level: 3 Interlaced: 0
[INFO]	Aspect Ratio Table index: 1
[INFO]	Decoder: width = 176, height = 144, frameRateRes = -1, frameRateDiv = -1, count = 4
[INFO]	CROP left/top/right/bottom 0 0 0 0
[INFO]	Display fps will be 0
[INFO]	v4l output to /dev/video17
[INFO]	Display to 1024 600, top offset 0, left offset 0
Even with gstreamer: root@freescale ~$ gplay serenity.avi playbin2 is employed! fsl_player_init(): Successfully initialize! fsl_player_set_media_location(): filename=serenity.avi [Stopped ][Vol=01][00:00:00/00:00:00][fps:0][INFO] Product Info: i.MX6Q/D/S vpudec versions :) plugin: 3.0.1 wrapper: 1.0.24(VPUWRAPPER_ARM_LINUX Build on Aug 28 2012 14:16:03) vpulib: 5.4.5 firmware: FOUND GST_MESSAGE_TAG! video codec: FFmpeg MPEG-4 FOUND GST_MESSAGE_TAG! audio codec: MPEG-1 layer 2 FOUND GST_MESSAGE_TAG! encoder: Lavf52.64.2 container format: AVI get GST_MESSAGE_ELEMENT missing-plugin, type=(string)decoder, detail=(GstCaps)audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)1, layer=(int)2, parsed=(boolean)true, name=(string)"MPEG-1 Layer 2 (MP2) decoder"; this is powerful mx6q MFW_GST_V4LSINK_PLUGIN 3.0.1 build on Aug 28 2012 14:16:53. FOUND GST_MESSAGE_TAG! audio codec: MPEG 1 Audio, Layer 2 nominal bitrate: 64000 FOUND GST_MESSAGE_TAG! has crc: FALSE channel mode: stereo [INFO] bitstreamMode 1, chromaInterleave 1, mapType 0, tiled2LinearEnable 0 >>V4L_SINK: Actually buffer status: hardware buffer : 10 software buffer : 0 full screen size:1024x600 [V4L Update Display]: left=0, top=0, width=1024, height=600 fsl_player_play() FSL_PLAYER_01.00_LINUX build on Aug 28 2012 14:17:30 [h]display the operation Help [p]Play [s]Stop [e]Seek [a]Pause when playing, play when paused [v]Volume [m]Switch to mute or not [>]Play next file [<]Play previous file [r]Switch to repeated mode or not [f]Set full screen or not [z]resize the width and height [t]Rotate [c]Setting play rate [i]Display the metadata [x]eXit get GST_MESSAGE_ELEMENT prepare-xwindow-id; get GST_MESSAGE_ELEMENT playbin2-stream-changed, uri=(string)file:///root/serenity.avi; FOUND GST_MESSAGE_TAG! minimum bitrate: 64000 bitrate: 64000 maximum bitrate: 64000 [Playing ][Vol=01][00:00:14/00:01:30][fps:25]q [Playing ][Vol=01][00:00:16/00:01:30][fps:24]x FSL_PLAYER_UI_MSG_EXIT Running time 0:00:17.291078169 render fps 23.943 Total rendered:414 [--->FINALIZE v4l_sink fsl_player_stop() player_exit(): No more multimedia files, exit. g_main_loop_thread_fun() quit! fsl_player_deinit The kernel modules aren't present to allow GPU testing and some work will be required to get touch screens working and audio on Nitrogen6x, but this is a lot of functionality for so little effort.

Thanks Freescale!

As with Android, we've added the kernel tree to our Github repository.
We'll be running additional tests in the coming days. Stay tuned for announcements about these releases.