Debian 12 Bookworm unified image for Nitrogen8 boards

Published on November 6, 2023

Boundary Devices is proud to release our new Debian Bookworm image for all our Nitrogen8 boards! This image uses Weston which is the reference Wayland compositor. This image boots up the Weston compositor at start. This can be changed by disabling the service autostart, as described later in this post. This system contains NXP licensed content, so you will need to register on our website and log in before you can accept the license agreement and download the Debian Bookworm images for Nitrogen8 from here: For Nitrogen8M, Nitrogen8M SOM, Nitrogen8M Mini, Nitrogen8M Mini SOM, Nitrogen8M Nano SOM, Nitrogen8M Plus SOM, Nitrogen8MP SMARC:

This is a unified image for the aforementioned boards, there is no need for board specific images anymore. At the first start it will detect the board type run a configuration script. Finally, it will set all board specific parameters and apt repositories. Important! Before installing this image please check your U-Boot version, as it requires U-Boot version 2022.04 to be used. Make sure to visit our wiki if you need to upgrade:

You can find the bootscript in the /boot sub-directory now, its named boot.scr. The partition labels are set if you use dd or Balena Etcher to flash the image. If you use your own method please check the boot partition labels because the fstab boots by label (LABEL=sys-1Eh for example) now.  You can use e2label to modify partition label.

Programming the image

As usual, we recommend using the Balena Etcher tool to flash your SD Card / eMMC:

The uncompressed image size is slightly bigger than 5GB, you'll need at least 8GB eMMC storage to install it. Please watch this video for the detailed instructions: https://www.youtube.com/watch?v=aXUG-BVLVvU


Usernames and passwords

We predefined two users for use on the system: debian and root. The password for each is Boundary (capital B). The user debian has administrator rights, but you don't need to enter password at sudo command. We wanted to make your life easier at the cost of some security, but if you want to change that please type:

debian@bookworm-dev64:~$ sudo visudo

Then comment out or delete the last line with "debian" and "NOPASSWD:" An ssh server is running on the system, though it does not allow password-based authentication for user root. User debian has sudo privileges, so you can place your ssh public key (normally $HOME/.ssh/id_rsa.pub) to the system like so:

debian@bookworm-dev64:~$ sudo mkdir /root/.ssh
debian@bookworm-dev64:~$ sudo nano /root/.ssh/authorized_keys
... paste content of $HOME/.ssh/id_rsa.pub here
debian@bookworm-dev64:~$ sudo chmod 600 /root/.ssh/auth*
debian@bookworm-dev64:~$ sudo chmod 600 /root/.ssh/

What's supported?

Since the images above include our stable 5.15.x kernel, essentially everything is supported, including:

  • Vivante GPU accelerations for Wayland
  • The Hantro Video Processing Unit supports the following decoders:
    • video/x-h265
    • video/x-vp9
    • video/x-h264
    • video/x-vp8
    • video/mpeg
    • video/x-h263
    • video/x-raw
  • BD-SDMAC WiFi/BT modules support, Laird Sterling-LWB5+ support, AzureWave AW-XB468NF (MediaTek Model MT7921)
  • All kind of storage devices , eMMC, SATA hdd (via USB3-SATA adapter), USB3.0/2.0 pen drives, mini PCIe devices, cell modems
  • All of our supported touch panels

The packaging (including kernel) is done in the normal debian way, so apt-get update/dist-upgrade will keep your image up and running as the latest as patches come out.

What's new in this release?

The Linux kernel was upgraded to 6.1.x branch ( meta-package name: linux-boundary-21b ). GPU driver was upgraded to Vivante 6.4.11p1.2 ( meta-package name: imx-gpu-viv-b23-... ). The built-in galcore module has been removed (CONFIG_MXC_GPU_VIV) and we use an external galcore kernel 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, as it's a DKMS module. The NXP/Vivante GPU SDK was upgraded to imx-gpu-sdk 6.1.1 . You can get the source with the usual apt-get source command. The SDK has many new demos, for example OpenCL, OpenVG, and for OpenVX and Vulkan. The distribution is Debian GNU/Linux 12 Bookworm. Here are some main component versions of these Debian Bookworm images for Nitrogen8:

  • Xorg server 21.1.7-3
  • gstreamer1.0 1.22.0-3+deb12u1
  • bluez 5.66-1
  • Qt 5.15.8+dfsg-11.1
  • apt 2.6.1
  • dpkg 1.21.22-1
  • gcc/g++ 12.2.0-14
  • libwayland 1.21.0-1.1
  • weston 10.0.1-1.7
  • the image supports the Silex WiFi / Bluetooth module and the Laird Connect LWB5+ Bluetooth 5.2 module

CPU-specific package selection

This is a unified image for the entire i.MX 8M family of processors. Since each CPU has its own specific features the OS must adapt to each platform. That is why, during the first boot, a new selecthw service has been created to take care of selecting the proper packages needed for your platform. For instance, for the Nitrogen8MP platform, the OS makes sure VPU encode/decode is enabled, NPU packages are added as well as the ISP service to manage the Basler daA3840 camera and/or the Sony imx219 camera. After that setup, the platform will need to reboot for those changes to be taken into account. Thankfully, you can see the progress of that process on the display as shown below:


Network Manager

This Debian Bookworm image comes with Network Manager by default in order to ease the Wi-Fi setup.

debian@bookworm-dev64mp:~$ nmcli radio wifi on
debian@bookworm-dev64mp:~$ nmcli d wifi list
IN-USE  BSSID              SSID             MODE   CHAN  RATE        SIGNAL  BA>
        A4:3E:51:08:54:F5  Jabu             Infra  1     130 Mbit/s  62      ▂▄>
        A4:3E:51:08:54:F6  Jabu_5GHz        Infra  36    405 Mbit/s  57      ▂▄>

debian@bookworm-dev64mp:~$ sudo nmcli d wifi connect Jabu_5GHz password XXXXXX
Device 'wlan0' successfully activated with '4ed596ea-9f8c-48ea-8e0e-5e190e2fecc9'.
debian@bookworm-dev64mp:~$ ifconfig wlan0
wlan0: flags=4163  mtu 1500
        inet 192.168.1.61  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::2ae4:f7d2:3cc1:486d  prefixlen 64  scopeid 0x20
        inet6 2a01:cb00:f55:7f00:3122:4891:67c4:faa7  prefixlen 64  scopeid 0x0
        inet6 2a01:cb00:f55:7f00:6c92:60ad:c2ad:68cc  prefixlen 64  scopeid 0x0
        ether 08:3a:88:20:78:cc  txqueuelen 3000  (Ethernet)
        RX packets 67  bytes 7854 (7.8 KB)
        RX errors 0  dropped 9  overruns 0  frame 0
        TX packets 69  bytes 7666 (7.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

This allows you to use Wi-Fi right out of the box without any extra setup required.

i.MX 8M Plus support

This is the first Debian Bookworm image to officially support the i.MX 8M Plus CPU and therefore our Nitrogen8MP SOM and the Nitrogen8M Plus SMARC SOM The support includes:

  • VPU decode/encode
  • GPU 3D & 2D support
  • NPU integration (TFLite & ARMNN)
  • ISP + Basler daA3840 support and SONY imx219 sensor support
  • WiFi support Silex SX-SDPAC, Laird Sterling-LWB5+, AzureWave AW-XB468NF (MediaTek Model MT7921)

Nitrogen8M Plus SOM  


GPU SDK Bloom demo
Vulkan Instanced Mesh Rendering
Hobbit Trailer video playing Video streaming from youtube "Zaitochi vs. Predator" ( https://www.youtube.com/watch?v=NsbVTPftcgs )
As I mentioned before, the system boots to Weston compositor. If you don't want to start Weston at boot automatically, you have to disable the service, you have to type the following:

debian@bookworm-dev64:~$ sudo systemctl disable weston.service
debian@bookworm-dev64:~$ sudo systemctl mask weston.service

If you want to enable the autostart again you need to type:

debian@bookworm-dev64:~$ sudo systemctl unmask weston.service
debian@bookworm-dev64:~$ sudo systemctl enable weston.service

You can find the weston.ini file in the /etc/xdg/weston directory. Please type:

debian@bookworm-dev64:~$ man weston.ini

Check the options and feel free to modify it to suit your needs.


Weston keyboard bindings

The Weston desktop shell has a number of keyboard shortcuts. They are listed here. Almost all keyboard shortcuts for Weston include a specified modifier mod key which is determined in the file weston.ini (5): [shell] binding-modifier={none | ctrl | alt | super} The mod key is the same as the super key by default. The super key is in between and , usually a key. mod + Shift + F Make active window fullscreen mod + K Kill active window mod + Shift + M Maximize active window mod + PageUp, mod + PageDown Zoom desktop in (or out) mod + Tab Switch active window mod + Up, mod + Down Increment/decrement active workspace number, if there are multiple mod + Shift + Up, mod + Shift + Down Move active window to the succeeding/preceding workspace, if possible mod + F1/F2/F3/F4/F5/F6 Jump to the numbered workspace, if it exists Ctrl + Alt + Backspace If supported, terminate Weston. (Note this combination often is used to hard restart Xorg.) Ctrl + Alt + F Toggle if Weston is fullscreen; only works when nested under a Wayland compositor Ctrl + Alt + S Share output screen, if possible Ctrl + Alt + F1/F2/F3/F4/F5/F6/F7/F8 Switch virtual terminal, if possible super + S Make a screenshot of the desktop super + R Start or stop recording video of the desktop

Weston touch / mouse bindings

There are also a number of bindings involving a mouse: , , Activate clicked window super + Alt + Change the opacity of a window mod + Zoom/magnify the visible desktop mod + Click and drag to move a window mod + Shift + mod + mod + Click and drag to resize a window mod + Rotate the window (if supported)