March 12, 2013

Timesys 2013-03 release

Timesys has issued an updated release for our Nitrogen6X and BD-SL-i.MX6 (formerly SABRE Lite) boards. This release is primarily to update the kernel, but the folks at Timesys have also added some new features to the demo for a better out-of-the box experience that we’ll describe below.

First, the demo


We’ll begin shipping this image with new boards in the next couple of days. If you just want to try it yourself, you can download the image from Timesys here. If you haven’t already, they’ll ask you to register, but I promise, they’ll be nice to deal with.

Now the details

New kernel release

This release is the first publicly-announced image containing our latest kernel, on the boundary-imx_3.0.35_1.1.1 branch of our Github repository. There are lots of bug fixes and enhancements from Freescale and us in that package, and we’ll cover them in a separate post, but the highlights are:
  • Support for single-core and dual core processors as discussed here.
  • Better PCIe support. We’ll discuss this in an upcoming post.
  • Added support for our new OV5640 MIPI Camera module.

Triple display support

This Timesys release contains our new boot script to initialize each of our panels as described in this blog post. The script uses the HDMI hot-plug-detect pin and the I2C interface to the touch controllers on other panels to automatically configure the command-line arguments for the kernel. This Timesys demo adds to that some scripts to walk the kernel command line and start up to three processes, with environment variables telling each instance which frame buffer and which input device to use. If you want to follow this logic, you can start by looking at this fragment of /etc/init.d/S99-fluidlauncher:
    for param in `cat /proc/cmdline` ; do
	case $param in
			echo "-------- parse video $param here" ;
The script file /root/rundemo contains the details of how you can read the display resolution from /sys/class/graphics to determine the screen resolution and from that, determine which touch device (or mouse) to use.

New additions

Based on customer request, this image contains a number of additional tools:
  • iperf – an Internet Protocol performance testing tool. This is what we used in testing the Gigabit ethernet performance we discussed a while back.
  • Wi-fi support – This release contains support for wpa_supplicant and firmware for the WL1271 Wi-Fi adapter on Nitrogen6x and Nitrogen6X-SOM.
  • Bluetooth support – This release contains the Bluez package to allow testing of the Bluetooth interface on the Nitrogen6x and Nitrogen6X-SOM.
  • imx_usb – This tool allows you to download a bootable image over the USB On-the-go (OTG) port, so you can unbrick your board if something bad happens.
  • alsa-utils – This set of utilities allow you to control the settings of the audio channels on the i.MX6 boards and also provide support for audio recording.
  • Audio is now fully supported. Both the SGTL5000 analog channel and the HDMI digital channel are operational and selectable as described in this post.
  • Timesys has integrated Phonon into the Qt build, so your Qt applications can access play and video directly without binding to gstreamer directly.

Things you need to know

There are some restrictions to particular screens for some of the demo applications. In particular:
  • Because of some hard-coded references to /dev/fb0, the Vivante demos will only run on the first display.
  • The Timesys Theatre demo only works on the first two displays. This stems from a limitation on the number of overlays supported by the IPU.
  • Only two displays are supported on Solo and Dual-Lite because there’s only a single IPU on these processors.
  • Likewise, Timesys Theatre will only function on the first display on Solo and Dual-Lite.
For these purposes, the displays are ordered in the boot script as follows:
  • HDMI
  • LVDS
  • RGB

Wi-Fi Quick-start

To verify that the wireless LAN device is running and that wpa_supplicant has configured it, you can use the wpa_cli command as follows:
~/$ wpa_cli scan
~/$ wpa_cli scan_res
If you haven’t used it before, the wpa_cli program is a command-line tool to connect to and configure a running wpa_supplicant. The wpa_cli --help command will give you a complete list of options, but here are some simple use cases:
Add an unsecure network
This example adds a network for SSID “myssid” with no encryption or authentication. Note that the last line in this example (save_conf) tells wpa_supplicant to save the settings into its configuration file (in /etc/wpa_supplicant.conf).
~/$ wpa_cli add_net
~/$ wpa_cli set_net 0 ssid '"myssid"'
~/$ wpa_cli set_net 0 key_mgmt NONE
~/$ wpa_cli enable_net 0
~/$ wpa_cli save_conf
Also note that the zeros produced by the add_net command above is used in the following three lines to distinguish it from other network configurations. The /etc/wpa_supplicant.conf/tt> file can contain more than one network configuration and wpa_supplicant can choose between them based on availability and priority.
Add a WEP-secured network
This example uses a WEP passphrase. To use a 40-bit or 128-bit hex string, the quotes on the wep_key0 line should be omitted:
~/$ wpa_cli add_net
~/$ wpa_cli set_net 1 ssid '"myssid"'
~/$ wpa_cli set_net 1 key_mgmt NONE
~/$ wpa_cli set_net 1 wep_key0 '"passphrase"'
~/$ wpa_cli set_net 1 wep_tx_keyidx 0
~/$ wpa_cli enable_net 1
~/$ wpa_cli save_conf
Add a WPA-PSK-secured network
~/$ wpa_cli add_net
~/$ wpa_cli set_net 2 ssid '"myssid"'
~/$ wpa_cli set_net 2 psk '"passphrase"'
~/$ wpa_cli set_net 2 key_mgmt WPA-PSK
~/$ wpa_cli enable_net 2
~/$ wpa_cli save_conf
The strange single-plus-double quoted strings are needed to prevent the shell from stripping the quotes from the SSID and passphrase strings. Note that there are a lot more options for setup of wpa_supplicant. Refer to the WPA Supplicant web-site for definitive details.

Bluetooth Quick-start

The Bluetooth support is essentially what we described in a previous post.
# bluetoothd
# echo 176 >/sys/class/gpio/export
# echo low >/sys/class/gpio/gpio176/direction
# echo high >/sys/class/gpio/gpio176/direction
# hciattach -t 30 -s 115200 /dev/ttymxc2 texas 3000000 flow
...debug spew omitted
Found a Texas Instruments' chip!
Firmware file : /lib/firmware/TIInit_7.2.31.bts
Loaded BTS script version 1
texas: changing baud rate to 3000000, flow control to 1
Device setup complete
# hcitool scan
Scanning ...
	00:21:4F:B8:A3:C9	ericsony-0
	B0:79:94:CA:D9:47	DROID RAZR HD

Comments 17

  1. Henrik Jacobsen

    Hi –

    2 questions, on the Bluetooth part:
    – isn’t there a “hciconfig hci0 up” missing in the example above, before you can do the scan?
    – I have a weird problem with the TiWiR2 on our own design: Both Bluetooth and Wifi works, but the Bluetooth part dies every time I bring up the Wifi with e.g. “ifconfig wlan0 up”. Have you tried bringing up Bluetooth, then do e.g. “ifconfig wlan0 down; ifconfig wlan0 up”, and then another “hcitool scan” ? I’d be glad to know if it’s a general problem.

    Best regards,

  2. Angelo

    Have you some precompiled kernel uImages with modules to download?

    I think that you should provide those files, so anyone who wants can build his minimal rootfs with Debian or Ubuntu core.

    1. Post
  3. hitesh

    I have just got a sabrelite imx6q board and want to have an hdmi display . also i have played with many images and sdk including timesys images (different factory builds and default builds) ,buildroot(different configs) yocto(fsl-image). i am confused on using which sdk as at first i want an hdmi display. even a console on hdmi is fine and then i want to add my own packages . i have not upgraded the uboot. is that required. can you please provide me with a link/ tutorail and advice me which sdk to use.

    1. Post

      Hi Hitesh,

      I suggest that you start by upgrading U-Boot. You’ll immediately get HDMI support at the boot loader level, and the auto-detection features will allow the 6x_bootscript to configure your displays.

        1. Post

          Yep. That should do the trick.
          You should also run ‘printenv’ and make sure your environment contains a reference to 6x_bootscript in bootcmd. If it says 6q_bootscript instead, you can fix it like so:

          U-Boot > sf probe
          U-Boot > sf erase 0xc0000 0x1000
          U-Boot > reset
          1. jans


            I have got sabre lite imx6q board too and I also have hdmi output issues – I’ve upgraded u-boot to
            U-Boot 2013.01-00058-g5957f6d (Feb 11 2013 – 15:10:10)
            i.e. to u-boot-nitrogen6q.imx as available here
            and erased the sf as suggested by ericn.
            I can see hdmi output working in u-boot, but not always unfortunatelly.
            When it works in u-boot, timesys demo also comes up.

            But whenever I connect anything to usb, like mouse or usb flash key, hdmi suddenly stops working until the board is completely powered off and on again, without anything connected to usb. Even reboot nor the reset button do not help (in that case u-boot does not detect hdmi either).
            The behavior is completely the same also with ltib-12.09-20121219 release.

            Any idea what can be wrong here?
            Or how to fix/workaround it?

            Thanks and best regards,

  4. Brendan Dowling

    So, I do a “git clone” with “git clone git://”.

    It downloads about 580MB of stuff 2M+ objects, but all I end up with is a directory “linux-imx6” containing a and a .git folder.

    How do I get the tree out of this? Do I have to switch to a different branch or something?

    Apologies if this is documented elsewhere.

    1. Post

      Hi Brendan,

      Yes. You need to check out a branch matching your userspace.
      In general, you should be using boundary-imx_3.0.35_1.1.1 for non-Android use, and the check-out usually looks like this:

      ~/linux-imx6$ git checkout origin/boundary-imx_3.0.35_1.1.1 -b boundary-imx_3.0.35_1.1.1

      The origin/boundary-imx_3.0.35_1.1.1 refers to the source branch and the -b boundary-imx_3.0.35_1.1.1 creates a local branch with a matching name.

  5. Sesh


    I am interested to know if “Wi-Fi direct” support is available on the following version of linux on i.MX6.
    If not what is the best way to get this added on to TiWi BLE module on Nitrogen 6X boards.

    Linux version 3.0.35-ts-armv7l (root@localhost.localdomain) (gcc version 4.6.3 (Timesys 20130311) ) #1 SMP PREEMPT Wed Mar 13 16:32:41 EDT 2013

    1. Post

      Hi Sesh,

      I don’t believe Wi-Fi Direct is supported in the Timesys image. From what I can tell, you’d at least need to include ‘hostapd’ into the image.

      This may be doable using the Timesys LinuxLink free edition, but I don’t really know. I suspect that the folks at Timesys could tell you though.

  6. odbwilson

    Hi all,

    Anyone knows how to compile the source file, like the demo “timesys-theatre-1080p-1.4” on the Linux console.
    I have setup the Linux box with toolchain, just have no idea how to compile and make it work on the board.
    Any clues?

    1. Post

      The Timesys installation will give you a toolchain/bin directory. If you add this to your PATH, you can use qmake to generate the Makefile, then make to build:

      ~/timesys-theatre-1080p-1.4$ which qmake
      /timesys-theatre-1080p-1.4$ qmake && make
      /home/user/timesys/nitrogen6x/toolchain/usr/bin/uic Theatre.ui -o ui_Theatre.h
      armv7l-timesys-linux-gnueabi-g++ -c -pipe -Os
  7. Bill Yang

    Does any one know how to enable WPA of WiFI with ltib4.0.0 image. I foud there is no the /etc/wpa_supplicant.conf file. So I cannot run wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf.

    Please help.

Leave a Reply