Buildroot 2024.02 Release for i.MX Platforms Buildroot 2024.02 has been published and we’re excited to share new images! This release includes our latest 6.1 kernel, as well as added support for our Nitrogen8ULP and Nitrogen93 SMARC platforms! For the impatient You can download pre-built Buildroot 2024.02 images from here: 20240522-br2024.02-nitrogen8m_qt5_gst1.img.gz for Nitrogen8M SBC & SOM 20240522-br2024.02-nitrogen8mm_qt5_gst1.img.gz for Nitrogen8M Mini SBC, SOM & SMARC 20240522-br2024.02-nitrogen8mn_qt5_gst1.img.gz for Nitrogen8M Nano SBC & SOM 20240522-br2024.02-nitrogen8mp_qt5_gst1.img.gz for Nitrogen8M Plus SBC, SOM & SMARC 20240522-br2024.02-nitrogen8ulp_qt5_gst1.img.gz for Nitrogen8ULP SOM 20240522-br2024.02-nitrogen93_gst1.img.gz for Nitrogen93 SMARC 20240522-br2024.02-nitrogen6x_qt5_gst1.img.gz for Nitrogen6X/MAX/SOM/SOMv2/VM/Lite, BD-SL In order to flash those images you can follow our video on this topic: How to program your i.MX platform Or for those fluent in command lines, you can simply use zcat: ~$ zcat 2024*br2024.02-nitrogen*.img.gz | sudo dd of=/dev/sdX bs=1M What’s new? Buildroot 2024.02 release It would be too long of a list to enumerate all the changes Buildroot went through since the last release. For recent changes, we invite you to check the last release announcement: Buildroot 2024.02 released We’ll focus on the i.MX changes for this release in the next sections. Boundary Devices layer As usual, we provide our own Boundary Devices external layer: buildroot-external-boundary This includes the following custom configurations nitrogen8m_qt5_gst1_defconfig: For i.MX 8MQ based Nitrogen8M, Nitrogen8M SOM Qt5 modules GStreamer1.0 with all its plugins NXP proprietary packages (VPU, GPU, SDMA) NXP-based kernel (6.1.y) BD-SDMAC WiFi/BT module support Sona IF573 WiFi 6E + Bluetooth support Sterling LWB5+ Wifi+Bluetooth support Miscellaneous tools (adbd, CAN, I2C, IIO, etc…) nitrogen8mm_qt5_gst1_defconfig: For i.MX 8M Mini based Nitrogen8M Mini, Nitrogen8M Mini SOM, Nitrogen8M Mini SMARC Same set of packages as nitrogen8m_qt5_gst1_defconfig nitrogen8mn_qt5_gst1_defconfig: For i.MX 8M Nano based Nitrogen8M Nano, Nitrogen8M Nano SOM Same set of packages as nitrogen8m_qt5_gst1_defconfig nitrogen8mp_qt5_gst1_defconfig: For i.MX 8M Plus based Nitrogen8M Plus SOM, Nitrogen8M Plus SMARC Same set of packages as nitrogen8m_qt5_gst1_defconfig nitrogen6x_qt5_gst1_defconfig: For BD-SL-i.MX6 (SABRE Lite), Nitrogen6X, Nitrogen6X SOM v2, Nitrogen6 Lite, Nitrogen6 MAX, Nitrogen6 VM Same set of packages as nitrogen8m_qt5_gst1_defconfig nitrogen6sx_qt5_gst1_defconfig: For Nitrogen6_SoloX Same set of packages as nitrogen6x_qt5_gst1_defconfig nitrogen7_gst1_defconfig: For Nitrogen7 Same set of packages as nitrogen6x_qt5_gst1_defconfig minus Qt5 nitrogen6x_qt5_gst1_mainline_defconfig: For BD-SL-i.MX6 (SABRE Lite), Nitrogen6X, Nitrogen6X SOM v2, Nitrogen6 Lite, Nitrogen6 MAX Same set of packages as nitrogen6x_qt5_gst1_defconfig Mainline kernel New features Buildroot 2024.02 includes the following versions of packages: BlueZ5 5.72 GStreamer 1.22.9 GStreamer-imx v0.13.1 for i.MX6 GStreamer-imx v2.2.0 for i.MX8M* imx-codec 4.8.2 imx-gpu-viv 6.4.11.p2.2 imx-vpu-hantro 1.31.0 for i.MX8M* imx-vpu-hantro-vc 1.9.1 for i.MX8MP imx-vpu 5.4.39.3 for i.MX6 Linux kernel 6.1.y kernel-module-bdsdmac-backports (Supports BD-SDMAC, Sona IF573 WiFi 6E + Bluetooth, and Sterling LWB5+ Wifi+Bluetooth modules) Qt5 5.15.11 Support for Nitrogen8M Mini SMARC Support for Nitrogen8ULP Support for Nitrogen93 SMARC Wayland 1.22.0 Weston 12.0.1 There are a few differences between Yocto and Buildroot releases at this stage: Buildroot images use standard packages without NXP modifications This applies to GStreamer, Weston, libdrm, wayland etc… The main drawback is that Weston can’t be used with G2D The (big) advantage is that it makes the codebase much easier to maintain, being able to use all the latest packages without having to be stuck at an earlier version chosen by NXP Open-source gstreamer-imx plugin is used instead of NXP forks This allows us to have imx-related changes for GStreamer in 1 package only Build procedure Just like our Yocto image, we now use a Docker file to build our images on our Jenkins server so that everyone can use the exact same environment. This ensures reproducible builds without having to think about missing dependencies. If interested in using this approach, we invite you to read the following blog post using the following docker file: Using Docker Containers for Reproducible Yocto Builds dockerfile_focal_buildroot Otherwise you can follow Buildroot documentation to know the host requirements: Buildroot Documentation - System requirements Once your development environment is setup properly, you can Download the source code. To ease the repo cloning process, we decided to create a manifest to match what is done for Yocto/Android: ~$ sudo apt-get install repo ~$ mkdir ~/br2024.02 && cd br2024.02 ~/br2024.02$ repo init -u https://github.com/boundarydevices/buildroot-manifest -b 2024.02.x ~/br2024.02$ repo sync Create an output folder for your configuration: ~/br2024.02$ make BR2_EXTERNAL=$PWD/buildroot-external-boundary/ -C $PWD/buildroot/ O=$PWD/output nitrogen8mm_qt5_gst1_defconfig ~/br2024.02$ cd output Build the image ~/br2024.02/output$ make Your image is now ready! ~/br2024.02/output$ ls -l images/sdcard.img ~/br2024.02/output$ sudo dd if=images/sdcard.img of=/dev/sdX bs=1M Testing the image As usual, the login for this image is root with no password. The external repository README details many commands that can be tested on the image. Once booted up, the Weston desktop should appear automatically, from there you can start a 3D test to ensure GPU acceleration # cd /usr/share/examples/viv_samples/vdk/ # ./tutorial7 -h 720 You can also check the GStreamer VPU acceleration by decoding the well known Big Buck Bunny video # wget http://linode.boundarydevices.com/videos/trailer_1080p_h264_mp3.avi -P /root/ # gst-launch-1.0 filesrc location=/root/trailer_1080p_h264_mp3.avi ! decodebin ! waylandsink If you have our OV5640 5MP MIPI camera, you can check the GStreamer video capture # gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=1280,height=720 ! waylandsink This build fully supports the Basler daA3840 8MP camera from Basler when using our Nitrogen 8M Plus # 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 ###### This build fully supports the IMX219 camera using our Nitrogen8M Plus SMARC. We tested using the Arducam imx219 # gst-launch-1.0 -v v4l2src device=/dev/video2 ! waylandsink This build also includes qt5 and examples can be run from “/usr/lib/qt/examples” # cd /usr/lib/qt/examples/ # ls README network qtestlib svg bluetooth nfc quick virtualkeyboard corelib opengl quickcontrols vulkan dbus positioning quickcontrols2 wayland examples.pro qml script widgets gui qmltest sensors xml location qpa serialbus multimedia qt3d serialport multimediawidgets qtconcurrent sql The following Wifi modules are supported: BD-SDMAC IF573 LWB5+ You can test as shown below: # wpa_passphrase MYSSID MYPASSWORD >> /etc/wpa_supplicant.conf # /etc/init.d/S50wpa-supplicant stop # sleep 1 # /etc/init.d/S50wpa-supplicant start # iw wlan0 link Connected to a4:3e:51:08:54:f6 (on wlan0) SSID: MYSSID freq: 5660 RX: 47685 bytes (747 packets) TX: 2054 bytes (0 packets) signal: -58 dBm tx bitrate: 150.0 MBit/s MCS 7 40MHz short GI # udhcpc -i wlan0 udhcpc: started, v1.31.1 udhcpc: sending discover udhcpc: sending select for 192.168.1.46 udhcpc: lease of 192.168.1.46 obtained, lease time 86400 deleting routers adding dns 192.168.1.1 # ping google.com -I wlan0 PING google.com (216.58.198.206): 56 data bytes 64 bytes from 216.58.198.206: seq=0 ttl=116 time=6.971 ms 64 bytes from 216.58.198.206: seq=1 ttl=116 time=13.145 ms ... The following Bluetooth modules are supported: BD-SDMAC IF573 LWB5+ You can test with hciconfig/hcitool as shown below: # echo 1 > /sys/class/rfkill/rfkill0/state # hcitool scan Scanning ... 48:C1:AC:00:D7:DCVoyager PRO+