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  192.168.0.0/255.255.255.0(rw,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=192.168.0.95:/L3.0.35_MX6DQ_ER_1208-Beta/
U-Boot> set bootargs $bootargs rootwait
U-Boot> dhcp 12000000 192.168.0.95:uImage-ltib
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)           Interrupt:142 eth0      Link encap:Ethernet  HWaddr 00:19:B8:00:E2:45           inet addr:192.168.0.78  Bcast:192.168.0.255  Mask:255.255.255.0           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1           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:127.0.0.1  Mask:255.0.0.0           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: 2.1.5.32515
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
	[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.