Yocto Scarthgap Release for i.MX Platforms We are pleased to announce a new Yocto release Scarthgap for our Nitrogen family of SBCs, SMARCs and SOMs. This release is based upon NXP 6.6.23_2.0.0 release and includes our latest 6.6 kernel. Below you will find download links for the images as well as detailed instructions for building including a features set. Prebuilt Images You can download the Yocto images from here: For Nitrogen8M platforms: 20241114-boundary-image-full-chromium-nitrogen8m-scarthgap.wic.gz 20241114-boundary-image-full-chromium-nitrogen8m-scarthgap.wic.sparse For Nitrogen8M Mini platforms: 20241114-boundary-image-full-chromium-nitrogen8mm-scarthgap.wic.gz 20241114-boundary-image-full-chromium-nitrogen8mm-scarthgap.wic.sparse For Nitrogen8M Plus platforms: 20241114-boundary-image-full-chromium-nitrogen8mp-scarthgap.wic.gz 20241114-boundary-image-full-chromium-nitrogen8mp-scarthgap.wic.sparse For Nitrogen8ULP platforms: 20241114-boundary-image-full-chromium-nitrogen8ulp-scarthgap.wic.gz 20241114-boundary-image-full-chromium-nitrogen8ulp-scarthgap.wic.sparse For Nitrogen93 platforms: 20241114-boundary-image-full-chromium-nitrogen93-scarthgap.wic.gz 20241114-boundary-image-full-chromium-nitrogen93-scarthgap.wic.sparse Changelog 20240909 to 20241114: add missing spidev nodes add missing fw-env-rules to image add TEVS camera sensors support How to Burn You can program the SW to eMMC using the instructions from programming-emmc-on-i-mx-platforms. In addition, you can use the balenaEtcher utility to flash the eMMC, SD Card or USB stick via Windows or Linux. Lastly, if using the fastboot image (.wic.sparse), you can program the eMMC via the following: ~$ fastboot flash emmc *boundary-image*.wic.sparse Build procedure This image uses the boundary-imx-6.6.23-2.0.0 (scarthgap) branch of our boundary-bsp-platform repository. To build the image, we recommend using a Docker Container so that you can build with a reproducible and stable build environment. Otherwise, you’ll need these packages installed as well as this repo tool that can be installed like this: ~$ sudo apt-get install repo Now we are ready to build the image. First, download the BSP yocto layers: ~$ mkdir ~/scarthgap && cd scarthgap ~/scarthgap$ repo init -u https://github.com/boundarydevices/boundary-bsp-platform -b boundary-imx-6.6.23-2.0.0 ~/scarthgap$ repo sync Next, setup the environment for building. For this image we will be building the fsl-imx-xwayland-boundary distro for the target machine ~/scarthgap$ MACHINE=<MACHINE> DISTRO=fsl-imx-xwayland-boundary . imx-setup-release.sh -b build Now bitbake boundary-image-full which is equivalent to imx-image-full with Ezurio-specific packages added. ~/scarthgap/build$ bitbake boundary-image-full If you wish to build chromium into your image, simply bitbake boundary-image-full-chromium which is equivalent to the above with chromium added. ~/scarthgap/build$ bitbake boundary-image-full-chromium NOTE: If building chromium, a minimum of 16GB RAM + 16GB swap is required or else chromium will not compile. After some time this should build the same image as above, with the layers being at commits as per the time when repo sync was executed. If you are interested in each project revision at the time of the build, you can find a frozen manifest for those images here. The image file will deploy to tmp/deploy/images/{MACHINE}/boundary-image-full-{MACHINE}.wic.gz. Features list The image built above contains the following components: Linux kernel 6.6 U-Boot 2022.04 Weston 12.0.4 for i.MX GStreamer 1.22.5 for i.MX GPU Vivante libraries 6.4.11.p2.6 VPU Hantro libraries v1.33.0 ISP VVCAM v4.2.2.24.2 Sona IF573 WiFi 6E + Bluetooth Driver Sterling LWB5+ Wifi+Bluetooth Driver BD-SDMAC Driver BlueZ 5.72 The next sub-sections will describe how to test most features. GPU acceleration To test GPU you can use the example apps provided by Vivante: root@<MACHINE>:~# /opt/imx-gpu-sdk/GLES2/Blur___Wayland_XDG/GLES2.Blur___Wayland_XDG -d Camera input You can test Camera MIPI-CSI input using our OV5640 MIPI with GStreamer: root@<MACHINE>:~# gst-launch-1.0 v4l2src device=/dev/video0 ! \ video/x-raw,width=1280,height=720 ! waylandsink Basler camera input This build fully supports the Basler daA3840 8MP camera from Basler when using our Nitrogen 8M Plus. The isp-vvcam driver and imx8-isp service are loaded automatically when the camera is detected. From there a simple GStreamer pipeline will allow you to see the stream: root@nitrogen8mp:~# gst-launch-1.0 -v v4l2src device=/dev/video2 ! waylandsink ... [ 352.348796] wdr3 res: 1920 1080 [ 352.352471] enter isp_mi_start [ 357.581179] ###### 62.42 fps ###### [ 362.771924] ###### 62.42 fps ###### IMX219 camera input We have support for the IMX219 camera and we tested using the Arducam imx219 with gstreamer: root@<MACHINE>:~# gst-launch-1.0 -v v4l2src device=/dev/video2 ! waylandsink Ethernet Once the eth0 interface is up, you can use iperf3 to check Ethernet performances: root@<MACHINE>:~# iperf3 -c 192.168.1.60 Connecting to host 192.168.1.60, port 5201 [ 5] local 192.168.1.13 port 32880 connected to 192.168.1.60 port 5201 [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 1.09 GBytes 938 Mbits/sec 0 sender [ 5] 0.00-10.04 sec 1.09 GBytes 932 Mbits/sec receiver Wi-Fi The following Wifi modules are supported: BD-SDMAC IF573 LWB5+ You can test with nmcli as shown below: root@<MACHINE>:~# nmcli d wifi connect <SSID> password <PASSWORD> root@<MACHINE>:~# iw wlan0 link Connected to a4:3e:51:08:54:f6 (on wlan0) SSID: <SSID> freq: 5240 RX: 3243 bytes (31 packets) TX: 9117 bytes (48 packets) signal: -79 dBm tx bitrate: 15.0 MBit/s MCS 0 40MHz short GI root@<MACHINE>:~# ping google.com -Iwlan0 PING google.com (216.58.198.206): 56 data bytes 64 bytes from 216.58.198.206: seq=0 ttl=55 time=3.470 ms ... Bluetooth The following Bluetooth modules are supported: BD-SDMAC IF573 LWB5+ You can test with hciconfig/hcitool as show below: root@<MACHINE>:~# hciconfig hci0 up root@<MACHINE>:~# hcitool scan Scanning ... 11:22:33:44:55:66 Iphone VPU decoding If your platform supports VPU decoding, here is an example on how to test it using the gplay tool: root@<MACHINE>:~# wget http://linode.boundarydevices.com/videos/Hobbit-1080p.mov root@<MACHINE>:~# gplay-1.0 /home/root/Hobbit-1080p.mov VPU encoding Here is a simple example that shows how to encode a video stream from the camera into H.264 using the VPU encoder: root@<MACHINE>:~# gst-launch-1.0 -v -e v4l2src device=/dev/video0 ! 'video/x-raw,width=1920,height=1080' \ ! vpuenc_h264 ! filesink location=test.h264 ^C root@<MACHINE>:~# gst-launch-1.0 filesrc location=test.h264 typefind=true ! 'video/x-h264' ! \ h264parse ! vpudec ! waylandsink\ CAN For platforms with CAN, you’ll be able to bring up the interface(s) using this following command: root@<MACHINE>:~# ip link set can0 up type can bitrate 500000 From this point, you can use commands such as cansend and candump to send or display messages on the bus respectively. NPU support If your platform supports NPU, you can find various example demos here. If you have any issues, please email som-support@ezurio.com