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