June 27, 2017

Pyro Yocto Release

A new Yocto 2.3 release, Pyro, is now available for the i.MX series platform from NXP.

For the Impatient

How to Burn

To burn the image file to a sdcard, run this command assuming your sdcard is mounted on /dev/sdc

~$ sudo umount /dev/sdc*
~$ zcat boundary-eval-image-nitrogen6x-pyro.sdcard.gz | sudo dd of=/dev/sdc bs=1M

How to Replicate

This image uses a new “pyro” boundary-bsp-platform that can be used to build images for our boards. Lots of this is identical to what was present in our previous images, although a lot has been improved. This is mostly a clone of fsl-community-bsp-platform with meta-browser, meta-qt5, and meta-boundary added in. There is also a Boundary-Devices-centric setup-environment script with a central download area and cache and some extras to the default local.conf.

Firstly, you’ll need to create the download/cache folders and give r/w access.

~$ sudo mkdir -p /opt/freescale/yocto/imx
~$ sudo mkdir -p /opt/freescale/yocto/sstate-cache
~$ sudo chmod -R 777 /opt/freescale

To build the image, you’ll need these packages installed as well as this repo tool that can be installed like this:

~$ sudo apt-get install repo

Now create your build directory and initialize everything.

~$ mkdir ~/pyro
~$ cd ~/pyro
~/pyro$ repo init -u http://github.com/boundarydevices/boundary-bsp-platform -b pyro
~/pyro$ repo sync

Now setup the environment for building. In this example I’m targeting the nitrogen6x, however nitrogen6x-lite, nitrogen6sx, and nitrogen7 are all also valid MACHINE targets here. Use whatever your platform is. Take a look through those MACHINE configuration files linked, you’ll notice the nitrogen6x MACHINE configuration covers many different boards. The other three configurations cover only one board.

There is a new DISTRO variable which controls what sort of image you’re building. You can see all the fslc-DISTROs here. This variable controls what sort of graphics the image is based on. If the image is X11 based, then you’d select DISTRO=fslc-x11, for wayland you’d select fslc-wayland, xwayland fslc-xwayland and so on.

Our boundary-eval-image is X11 based, so you’ll need to select DISTRO=fslc-x11. Then choose whichever MACHINE is relevant for you.

~/pyro$ MACHINE=nitrogen6x DISTRO=fslc-x11 . setup-environment boundary-eval-image

Now bitbake boundary-eval-image

~/pyro/boundary-eval-image$ bitbake boundary-eval-image

Now after some time this should build the same image as above. The image file will deploy to ~/pyro/boundary-eval-image/tmp/deploy/images/{MACHINE}/boundary-eval-image-{MACHINE}.sdcard.gz. Feel free to tweak and add things as you see fit.

Chromium

Chromium 52.0.2743.76 is available in this image, same version as the previous Yocto release. Even though chrome://gpu states video is hardware accelerated, embedded video such as Youtube is a bit choppy for unknown reasons. Video is much better in Firefox.

chromium-morty

Firefox

Firefox is also available. It’s version is 45.5.1esr.

firefox-morty

Video Input Tests

If you have our ov5640-mipi camera, ov5642 camera, or our HDMI input daughterboard the image includes easy desktop icons to launch tests for the respective hardware.

morty-desktop

Launching the respective video input test will show up on the screen and look like this:

camera-morty

Wifi

The builds include a wifi auto-start script which will connect to any open wireless network, or any secured network that you have configured. To add a wifi network with security, run this command and reboot and your board should automatically connect to the network.

root@nitrogen6x:~# wpa_passphrase <network> <passphrase> >> /etc/wpa_suplicant.conf
root@nitrogen6x:~# reboot

Bluetooth

For products with Bluetooth, you’ll be able to connect using these commands:

root@nitrogen6x:~# echo 0 > /sys/class/rfkill/rfkill0/state
root@nitrogen6x:~# echo 1 > /sys/class/rfkill/rfkill0/state 
root@nitrogen6x:~# hciattach -t 30 -s 115200 /dev/ttymxc2 texas 3000000 flow
Found a Texas Instruments' chip!
Firmware file : /lib/firmware/ti-connectivity/TIInit_7.6.15.bts
Loaded BTS script version 1
texas: changing baud rate to 3000000, flow control to 1
Bluetooth: HCI UART driver ver 2.3
Bluetooth: HCI UART protocol H4 registered
Bluetooth: HCI UART protocol LL registered
Device setup complete
root@nitrogen6x:~# hciconfig hci0 up
root@nitrogen6x:~# hcitool scan
Scanning ...
11:22:DE:AD:BE:EF    Some Device
For Silex: Use this hciattach command instead: hciattach /dev/ttymxc2 qca 1000000 -t30 flow

Silex Module Support

If you have a silex wifi/bluetooth module on your board these images come with that supported. You can also build this module by adding kernel-module-silex and linux-firmware-silex to your image by adding this line to the end of your local.conf file: IMAGE_INSTALL_append += “kernel-module-silex linux-firmware-silex”. This can also be uncommented on this line in the image recipe to add it.

As you can see in the linux-firmware-silex recipe you’ll need access to our git repository to pull and compile that code. Please fill out this form to get access to our private git repositories.

You can also read our blog post about the Silex module.