Ubuntu Bionic 18.04 LTS for i.MX6/7 boards – June 2018 (kernel 4.9.x)
Published on June 11, 2018
Ubuntu Bionic 18.04 LTS - XFCE4 desktop In the last month Canonical released a new LTS version of Ubuntu named Bionic. We are glad to offer new images of Ubuntu Bionic for i.MX6 and i.MX7 Nitrogen boards with the current 4.9.x_1.0.0 kernel. Now we changed to XFCE4 desktop since the previous MATE desktop we used with Xenial was a little too big and clumsy, XFCE offers better trade-off speed/size for embedded GUI desktop environment. As usual, a console image is also available for those who don’t need a GUI desktop. This time we also created an other GUI desktop image without the demo applications. These systems contain NXP/Freescale licensed content, so you will need to register on our web-site and log in before you can accept the license agreement and download the images from here:
- 20180606-nitrogen-4.9.x_1.0.0_ga-bionic-en_US-xfce_armhf.img.gz (partition LABEL : sys-0Eh)
- 20180606-nitrogen-4.9.x_1.0.0_ga-bionic-en_US-xfce-no-demo_armhf.img.gz (partition LABEL : sys-0Dh)
- 20180606-nitrogen-4.9.x_1.0.0_ga-bionic-en_US-console_armhf.img.gz (partition LABEL : sys-1Dh)
- Update#1 Release Notes
- 20180729-nitrogen-4.9.x_1.0.0_ga-bionic-en_US-xfce_armhf.img.gz (partition LABEL : sys-0Eh)
- 20180729-nitrogen-4.9.x_1.0.0_ga-bionic-en_US-xfce-no-demo_armhf.img.gz (partition LABEL : sys-0Dh)
- 20180729-nitrogen-4.9.x_1.0.0_ga-bionic-en_US-console_armhf.img.gz (partition LABEL : sys-1Dh)
Programming the image
The image is a slightly-less-than-4GiB image file containing the partition table. Inspired by ubuntu-mate.org, I changed over fromdd
to another disk copy program called ddrescue
. It is a much more talkative program, although dd
does do it's job honestly. I don't like mute programs, you never know whats happening in a given moment. For example, if you want to create an SD card for a console image, you need to do the following :
$ sudo apt-get install gddrescue xz-utils util-linux
$ gunzip 20180606-nitrogen-4.9.x_1.0.0_ga-bionic-en_US-console_armhf.img.gz
$ sudo ddrescue -D --force 20180606-nitrogen-4.9.x_1.0.0_ga-bionic-en_US-console_armhf.img /dev/sdX
You have to replace sdX with your actual SDHC reader/writer device. Use the lsblk
command to check it.
Type lsblk
with unplugged SDHC reader, then insert the device, and type lsblk
again. A new node will be added , that is your SDHC reader/writer device.
Usernames and passwords
Two users are defined for use on the system:ubuntu
and root
. The password for each is Boundary
(capital B). The user ubuntu
has administrator rights, but doesn't need to enter password at sudo command. We wanted to make life easier at the cost of some security. If you want to change this please type:
ubuntu@bionic-xfce:~$ sudo visudo
, and comment out or delete the last line with "ubuntu" and "NOPASSWD:"
An ssh server is configured on the system, though it does not allow password-based authentication for user root.
User ubuntu has sudo privileges, so you can place your ssh public key (normally $HOME/.ssh/id_rsa.pub) to the system like so :
ubuntu@bionic-xfce:~$ sudo mkdir /root/.ssh
ubuntu@bionic-xfce:~$ sudo nano /root/.ssh/authorized_keys
... paste content of $HOME/.ssh/id_rsa.pub here
ubuntu@bionic-xfce:~$ sudo chmod 600 /root/.ssh/auth*
ubuntu@bionic-xfce:~$ sudo chmod 600 /root/.ssh/
What's supported
Since the images above include our stable 4.9.x kernel, essentially everything is supported including :- Vivante GPU accelerations
- C&M VPU accelerations
- Wi-Fi and Bluetooth modules for Tiwi-BLE, BD_BCOM, BD-SDMAC
- All kind of storage devices , SDHC card, eMMC, SATA hdd, USB pen sticks, cell modems
- All of our supported touch panels
- IMX Capture devices including OV56xx parallel and mipi cameras, Toshiba BD-HDMI-MIPI converter, UVC cameras
- It supports i.MX6Q/DL/SX and i.MX7D board's BSP
apt-get update/dist-upgrade
will keep your image up and running the latest as patches come out.
What's new in this release
- The Linux kernel was upgraded to 4.9.x ( meta-package name: linux-boundary-14b )
- GPU driver was upgraded to Vivante 6.2.2p0 ( meta-package name: imx-gpu-viv-b13-... ).
- The module galcore (CONFIG_MXC_GPU_VIV) was removed from the kernel, and it's an externally built module. This change makes the graphics system modular, and more upgradeable, at the price of longer kernel upgrading time. Upgrading kernel takes about 3-4 minutes now, instead of 30 seconds, because every kernel upgrade rebuilds the galcore driver from sources, because its a DKMS module.
- The package gstreamer-imx was upgraded to 0.13.0-2ubuntu9
- The new NXP/Vivante GPU SDK was added : imx-gpu-sdk 4.0.2 . You can get the source with the usual apt-get source command. This is a brand new SDK with many new demos, for example OpenCL, OpenVG,G2D, and for OpenVX and Vulkan, but those demos will be supported only by the i.MX8 SoC.
- The distribution was upgraded to Bionic 18.04 LTS . Here are some main component versions :
- Xorg server 1.19.6
- gstreamer1.0 1.14.0
- bluez 5.48
- Qt5 5.9.5
- apt 1.6.1
- chromium 66.0.3359.181-0ubuntu0.18.04.1
- dpkg 1.19.0
- gcc/g++ 7.3.0
- firefox-esr 66.0.1
- libwayland 1.14.0
- weston 1.11.0-1
- XFCE Desktop Environment 4.12.3
- Silex WiFi / Bluetooth is supported in Bionic also, as well as in Stretch, Xenial and Jessie.
Let's see some interesting new demos, this is a screen of the imx-gpu-sdk OpenGLESv2 Blur demo, a spinning bubble with environment mapping: IMX GPU SDK 4.0.2 Gaussian Blur demo You can find many other interesting samples and framework in the SDK, including GLESv2, GLESv3, OpenCL, OpenVG.
This Qt5 Qml demo below shows how to apply various effects on a running video stream, using GPU shaders : Qt 5.9.5 Cinematic Experience demo You can apply various effects on a playing video and/or recording camera screen . Source is available.
Fullscreen H264 file streaming Hobbit movie trailer via internet
GPU development libraries
The package imx-gpu-viv-b13-dev ( development headers and libraries for OpenGL / ESv2 / ESv3 / Khronos / OpenVG / OpenCL /G2D ) is installed by default. You have to set the headers path, before any other headers, or you might include the mesa headers first, and you don't want to do that. For example :export CFLAGS="-I/usr/include/vivante ${CFLAGS}"
and you have to set the library path as well :
export LDFLAGS="-L/usr/lib/arm-linux-gnueabihf/vivante ${LDFLAGS}"
Alternatively you can use the much more precise pkg-config way, in the makefile. Setting the flags in case of X11 system :
PKG_CONFIG_PATH = /usr/lib/arm-linux-gnueabihf/vivante/pkgconfig
EGL :
CFLAGS += $(shell pkg-config --cflags egl_x11)
LDFLAGS += $(shell pkg-config --libs egl_x11)
GLESv1 :
CFLAGS += $(shell pkg-config --cflags glesv1_cm_x11)
LDFLAGS += $(shell pkg-config --libs glesv1_cm_x11)
GLESv2 :
CFLAGS += $(shell pkg-config --cflags glesv2_x11)
LDFLAGS += $(shell pkg-config --libs glesv2_x11)
OpenVG :
CFLAGS += $(shell pkg-config --cflags vg_x11)
LDFLAGS += $(shell pkg-config --libs vg_x11)
In case of FB backend change the _x11 postfix above to _fb, thats all.
OpenCL is the same at both fb and x11 :
CFLAGS += $(shell pkg-config --cflags opencl)
LDFLAGS += $(shell pkg-config --libs opencl)
Check the directory /usr/lib/arm-linux-gnueabihf/vivante/pkgconfig for more information
As always, please give us some feedback and let us know how things work for you.