Getting Started
Welcome to the Quick Start Guide (QSG) for Ezurio's Nitrogen95 SMARC Evaluation Kit: https://www.ezurio.com/n95-evk๐. This guide will walk you through the initial setup process and introduce you to the key hardware and software components of the kit. It's designed to help you quickly get up and running, understand what's included, and start exploring the platform. If you encounter any issues or have questions, please visit https://www.ezurio.com/support๐ or contact us at support@ezurio.com. As always, let us know about your experience with the EVK — both the good and bad.
Please refer to http://ezurio.com/n93-evk๐ if you purchased a Nitrogen93 Evaluation Kit instead.

- EZSMI-959-0816-00158-2-K2๐ (Nitrogen95 SMARC Beta Evaluation Kit without Camera),
- EZSMI-959-0816-00158-2-KC๐ (Nitrogen95 SMARC Beta Evaluation Kit with Camera).

Example of the box label for the Nitrogen95 SMARC Beta Evaluation Kit.
Label will vary based on chosen kit part number.
A heatsink is always included by default, even if not specifically mentioned.
Heads up! We are also preparing OSM versions of the evaluation kit, starting with CarbonAM62 and 67, which are expected to follow in Q1 2026. Stay tuned for updates.
Unboxing
The following table provides a breakdown of the hardware components included in the Nitrogen95 SMARC Evaluation Kit:
| Item | Additional Description & Details | |
|---|---|---|
| 1 | 1× Nitrogen95 SMARC Module REV30 | #EZSMI-959-0816-00158-2. Equipped with 8 GB RAM and 16 GB eMMC storage. Sona NX611M variant (#453-00118), M.2 1216 form factor, featuring integrated Wi-Fi 6 and Bluetooth 5.4 connectivity. |
| 2 | 1× Heatsink | Dedicated cooling solution for the Nitrogen95 SMARC Family (#450-00218). |
| 3 | 1× Universal SMARC Carrier Board REV20 | #SMARC_CAR, development board for all SMARC modules and solutions by Ezurio. |
| 4 | 1× 5V/4A 100–240 VAC Switching Power Supply | #FY0504000, includes region-specific AC power cord. |
| 5 | 1× Dual DB9 Serial Cable | Provides terminal and debug access for both Cortex-A and Cortex-M cores. |
| 6 | 1× 7" Touchscreen Display | #BD070LIC3 (MIPI version) with 33-pin FPC (0.5 mm pitch, 203 mm length) flex cable. |
| 7 | 1× 2.4/5/6 GHz FlexPIFA Antenna | #EFB2471A3S-10MH4L with 10 cm cable. |
| 8 | 1× Enclosure with Desktop Stand | Black enclosure with integrated stand. |
| 9 | 1× Arducam xISP – IMX678 Camera (Optional) | #B0582, Arducam xISP – Darksee, Pre-tuned 8.3 MP Low-Light MIPI Camera Module. |
Note: All accessories listed above are included unless otherwise stated.
Datasheets, Product Pages & DOCs
The following table provides an overview of available datasheets, product pages, and documentation (DOCs).
| Product | Datasheet | Product Page (+Buy) | Documentation | |
|---|---|---|---|---|
| 1 | Enclosure with Desktop Stand | N/A | N/A | N/A |
| 2 | Nitrogen95 SMARC Module | Link๐ | Link๐ | Link๐ |
| 3 | Universal SMARC Carrier Board | Link๐ | Link๐ | Link๐ |
| 4 | Sona NX611 Wi-Fi 6 + BLE 5.4 Module | Link๐ | Link๐ | Link๐ |
| 5 | BD070LIC3 – 7″ Touchscreen Display | See documentation. | Link๐ | Link๐ |
| 6 | 2.4/5/6 GHz FlexPIFA Antenna | Link๐ | Link๐ | Link๐ |
| 7 | Heatsink for the Nitrogen95 SMARC Family | See documentation. | Link๐ | Link๐ |
| 8 | 1× Arducam xISP – IMX678 Camera (Optional) | See documentation. | Link (Ezurio)๐ Link (Arducam)๐ | Link๐ |
The latest product brief for the Nitrogen95 SMARC Evaluation Kit can be found here๐.
Board Assembly
Always make sure everything is completely powered off and disconnected from any power source before making changes to the board. Doing so while the board — or other parts of it — are still powered can cause irreversible damage to the hardware equipment!
DSI0) using a 33-pin FPC/FFC ribbon cable, with the heatsink pre-attached to the module. By default, the antenna is glued to the stand for convenience and stability.U9 and the MHF4L connector on the PCB of the Sona NX611 module. We do not recommend removing the heatsink, but if necessary, it can be done using a 3 mm hex socket bit. (Optional) If you purchased the camera version of the Nitrogen95 Beta Evaluation Kit, connect the 15 cm 22-pin FPC cable to the
J11 (CSI0) port on the Universal SMARC Carrier Board, ensuring that the side labeled "To Board" is facing upward — just like the display. The connection on the camera side should already be pre-assembled. Next, attach the 2-pin jumper wire (GND/5V) between the Universal SMARC Carrier Board J28 pin header and the camera module. When finished, compare your setup with the following to make sure it matches: https://docs.arducam.com/Ezurio-Camera/MIPI-xISP-Camera-for-Ezurio/#hardware-connection๐.dmesg | grep "arducam" should return something like: [11.650954] arducam-pivariety 12-000c: sensor id: 0x0A56 … and … [11.651249] arducam-pivariety 12-000c: firmware version: 0x0010.Stock Bootloader & OS
The system ships with U-Boot v2024.04 and the Yocto Scarthgap Boot2Qt release pre-installed on the eMMC (as of the time of writing). The example below shows the output from U-Boot SPL, Proper, Environment Variables, and the Kernel’s dmesg log. You can use this as a reference to verify or compare the output from your own board.
To reprogram the eMMC, please follow the steps in https://www.ezurio.com/resources/software-announcements/programming-emmc-on-i-mx-platforms๐. Alternatively, use balenaEtcher๐ (available for both Windows and Linux) to make the SOM boot from an SD card or a USB stick.
U-Boot SPL
U-Boot SPL 2024.04-00072-g67fd254f486 (Aug 20 2025 - 09:13:50 +0200)
SOC: 0xb0009500
LC: 0x40010
SYS Boot reason: por, origin: -1, errid: -1
SYS shutdown reason: por, origin: -1, errid: -1
DDRMIX is powered UP
Normal Boot
Trying to boot from MMC1
Primary set selected
Load image from MMC/SD 0xe0800
NOTICE: BL31: v2.12.0(release):lf-6.12.20-2.0.0-5-geb84dde3e-dirty
NOTICE: BL31: Built : 21:16:58, Aug 19 2025U-Boot Proper
U-Boot 2024.04-00072-g67fd254f486 (Aug 20 2025 - 09:13:50 +0200)
CPU: i.MX95 rev2.0 at 1800MHz
CPU: Extended Industrial temperature grade (-40C to 125C) at 56C
LM Boot reason: por, origin: -1, errid: -1
LM shutdown reason: por, origin: -1, errid: -1
Model: Ezurio Nitrogen95 SMARC board
DRAM: 7.8 GiB
Core: 281 devices, 31 uclasses, devicetree: separate
MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
Loading Environment from MMC... OK
Fail to setup video link
In: serial
Out: serial
Err: serial
BuildInfo:
- SM firmware Build 648, Commit db9043a8, Aug 19 2025 17:01:35
- ELE firmware version 2.0.2-2a118457
Normal Boot
Hit any key to stop autoboot: 0U-Boot Environment Variables
=> printenv
arch=arm
baudrate=115200
board=nitrogen-smarc
board_name=imx95_nitrogen_smarc
boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr}
boot_efi_binary=load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/boot/bootaa64.efi; if fdt addr -q ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi
boot_efi_bootmgr=if fdt addr -q ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr;fi
boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}${boot_syslinux_conf}
boot_fit=no
boot_net_usb_start=usb start
boot_pci_enum=pci enum
boot_prefixes=/ /boot/
boot_script_dhcp=boot.scr.uimg
boot_scripts=boot.scr.uimg boot.scr
boot_syslinux_conf=extlinux/extlinux.conf
boot_targets=mmc0 mmc1 usb0
bootcmd=run distro_bootcmd;run bsp_bootcmd
bootcmd_mmc0=devnum=0; run mmc_boot
bootcmd_mmc1=devnum=1; run mmc_boot
bootcmd_usb0=devnum=0; run usb_boot
bootdelay=2
bootm_size=0x10000000
cntr_addr=0xA8000000
cntr_file=os_cntr_signed.bin
console=ttyLP0
cpu=armv8
cpuidle=
distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done
dtbos=imx95-nitrogen-smarc-dsi.dtbo imx95-nitrogen-smarc-nx611.dtbo imx95-nitrogen-smarc-csi0-pivariety.dtbo
efi_dtb_prefixes=/ /dtb/ /dtb/current/
env_dev=0
env_part=1
eth1addr=00:19:b8:11:a7:78
ethact=enetc-0
ethaddr=00:19:b8:11:a7:77
ethprime=eth0
fastboot_raw_partition_bootloader=0x0 0x1ff0 mmcpart 1
fastboot_raw_partition_bootloader-env=0x1ff0 0x10 mmcpart 1
fdt_addr=0x93000000
fdt_addr_r=0x93000000
fdt_file=imx95-nitrogen-smarc.dtb
fdt_high=0xffffffffffffffff
fdtcontroladdr=fdec8260
fdtfile=imx95-nitrogen-smarc.dtb
fdtoverlay_addr_r=0x94000000
kernel_addr_r=0x90400000
load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
loadaddr=0x90400000
mmc_boot=if mmc dev ${devnum}; then devtype=mmc; run scan_dev_for_boot_part; fi
mmcdev=0
netargs=setenv bootargs ${cpuidle} ${mcore_args} console=${console},115200 root=/dev/nfs ip=dhcp nfsroot=${tftpserverip}:${nfsroot},v3,tcp
netboot=echo Booting from net ...; run netargs; if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; ${get_cmd} ${loadaddr} ${tftpserverip}:Image; if ${get_cmd} ${fdt_addr_r} ${tftpserverip}:${fdt_file}; then fdt addr ${fdt_addr_r}; fdt resize 0x10000; for dtbofile in ${dtbos}; do dhcp ${fdtoverlay_addr_r} ${tftpserverip}:${dtbofile}; fdt apply ${fdtoverlay_addr_r}; done; booti ${loadaddr} - ${fdt_addr_r}; else echo WARN: Cannot load the DT; fi;
prepare_mcore=setenv mcore_args pd_ignore_unused;
scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run scan_dev_for_efi;
scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ${devplist}; do if fstype ${devtype} ${devnum}:${distro_bootpart} bootfstype; then part uuid ${devtype} ${devnum}:${distro_bootpart} distro_bootpart_uuid ; run scan_dev_for_boot; fi; done; setenv devplist
scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; for prefix in ${efi_dtb_prefixes}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${efi_fdtfile}; then run load_efi_dtb; fi;done;run boot_efi_bootmgr;if test -e ${devtype} ${devnum}:${distro_bootpart} efi/boot/bootaa64.efi; then echo Found EFI removable media binary efi/boot/bootaa64.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing...; fi; setenv efi_fdtfile
scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${boot_syslinux_conf}; then echo Found ${prefix}${boot_syslinux_conf}; run boot_extlinux; echo EXTLINUX FAILED: continuing...; fi
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done
scriptaddr=0x93500000
sec_boot=no
soc=imx9
soc_type=imx95
splashimage=0xA0000000
uboot_defconfig=imx95_nitrogen_smarc
upgradeu=setenv boot_scripts upgrade.scr; boot;echo Upgrade failed!; setenv boot_scripts boot.scr;
usb_boot=usb start; if usb dev ${devnum}; then devtype=usb; run scan_dev_for_boot_part; fi
vendor=boundary
Environment size: 4407/8188 bytesdmesg
Please refer here (nitrogen95-beta-evk-dmesg.log) for dmesg, the kernel boot log.
Login Credentials:
Username: root
Password: —
Hostname: b2qt-nitrogen95
“Hello World”
Once the Universal SMARC Carrier Board is powered throughJ17using the DC barrel jack and the included power supply, the touchscreen display will initialize automatically. A green power indicator LED (D9) will illuminate; however, it may not be visible if the screen is folded down.Within a few seconds, the screen will display six Linux Tux (Penguins), followed by our Ezurio "IO" boot / loading animation. The system typically completes the boot process in under 30 seconds, after which the Boot2Qt Demo Launcher (see below) will appear.Here you can select between a bunch of different demos, including: Startup Screen, Thermostat, Robot Arm, Coffee Maschine, Same Game, To Do List, and Calqlatr. In this case, please visit https://doc.qt.io/Boot2Qt๐ and https://code.qt.io/cgit/qt-apps/boot2qt-demos.git๐ for more information.
Tip: You can use Qt Creator to run, debug, and test your own applications on the Nitrogen95 SMARC Evaluation Kit. To do this, connect the kit to your computer using USB, Ethernet, or Wi-Fi. With a USB OTG cable, the board appears automatically in Qt Creator. For Ethernet, plug in a network cable and wait for the board to obtain an IP address. To connect over Wi-Fi, use the Boot to Qt Demo Launcher and ensure both the board and your computer are on the same network. Once connected, you’re ready to start building and deploying your applications directly from Qt Creator.

Boot to Qt Demo Launcher on the Nitrogen95 SMARC Evaluation Kit.
Terminal and Debug Access
Cortex-M (MCU)
See section “FreeRTOS / NXP MCUXpresso SDK (2.16.0)” for more information
Cortex-A (CPU)
To set up and establish a serial connection, use the console cable provided in the kit. Connect the DB9 connector to the 6-pin Molex 53398-0671 header on the Universal SMARC Carrier Board (J18, SERIAL) — you may need to gently lift the screen for better access — and attach other end labeled CONSOLE to your host PC through an 5V USB-to-Serial adapter (not included by default); in our example, we used the Tripp Lite USA-19HS (Keyspan): https://tripplite.eaton.com/keyspan-high-speed-usb-to-serial-adapter~USA19HS๐.Windows users can choose from terminal applications such as TeraTerm๐, RealTerm๐, or PuTTY๐, while Linux users should use tools like screen, minicom or picocom. The default serial settings are 115200 baud, 8 data bits, no parity, and 1 stop bit — commonly referred to as 8N1@115200. Once everything is in place, press the RESET button (SW1), and you should see the system boot logs appear in your terminal window.fastboot instead, then you may also want to connect a USB-C cable to J25 and your PC. In this context, please note that powering the entire board and setup through the USB-C connection is not sufficient, as it exceeds the current limits of a standard USB port.Remote Network Login via SSH and Ethernet 1 /2
To connect the Nitrogen95 SMARC EVK to your local or public network, plug an RJ45 Ethernet cable into eitherJ31 or J32 on the Universal SMARC Carrier Board. 100/1000 Mbps connections are supported on these two ports; 10 Gbps not. An SSH server (OpenSSH, sshd) is enabled by default and listens on port 22 for incoming connections in the background. It becomes active once the system has fully booted.Ensure that a DHCP Server is running on your network. By default, the EVK operates as a DHCP Client, automatically requesting and receiving IPv4 + IPv6 addresses through systemd-networkd once available, as shown in the ipconfig and ip examples below:root@b2qt-nitrogen95:~# ifconfig
eth0 Link encap:Ethernet HWaddr 00:19:B8:11:A7:77
inet addr:192.168.2.186 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: 2003:c9:cf3e:2f0d:1c73:99ff:fe86:4ef8/64 Scope:Global
inet6 addr: fe80::1c73:99ff:fe86:4ef8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:952 errors:0 dropped:45 overruns:0 frame:0
TX packets:82 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:65165 (63.6 KiB) TX bytes:9882 (9.6 KiB)
eth1 Link encap:Ethernet HWaddr 00:19:B8:11:A7:78
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:108 errors:0 dropped:0 overruns:0 frame:0
TX packets:108 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:9196 (8.9 KiB) TX bytes:9196 (8.9 KiB)
uap0 Link encap:Ethernet HWaddr EA:CB:F5:20:8A:F0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
usb0 Link encap:Ethernet HWaddr E6:1C:77:84:EF:83
inet6 addr: fe80::e41c:77ff:fe84:ef83/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
wfd0 Link encap:Ethernet HWaddr EA:CB:F5:20:89:F0
inet addr:192.168.2.183 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::e8cb:f5ff:fe20:89f0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:718 errors:0 dropped:0 overruns:0 frame:0
TX packets:144 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:46751 (45.6 KiB) TX bytes:16072 (15.6 KiB)
wlan0 Link encap:Ethernet HWaddr E8:CB:F5:20:89:F0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
root@b2qt-nitrogen95:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,DYNAMIC,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:19:b8:11:a7:77 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.186/24 brd 192.168.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 2003:c9:cf3e:2f0d:0219:b8ff:fe11:a777/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 172764sec preferred_lft 86364sec
inet6 fe80::1c73:99ff:fe86:4ef8/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
3: eth1: <NO-CARRIER,BROADCAST,MULTICAST,DYNAMIC,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 00:19:b8:11:a7:78 brd ff:ff:ff:ff:ff:ff
4: can1: <NOARP,ECHO> mtu 16 qdisc noop state DOWN group default qlen 10
link/can
5: can0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN group default qlen 10
link/can
6: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,DYNAMIC,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether e8:cb:f5:20:89:f0 brd ff:ff:ff:ff:ff:ff
7: uap0: <NO-CARRIER,BROADCAST,MULTICAST,DYNAMIC,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether ea:cb:f5:20:8a:f0 brd ff:ff:ff:ff:ff:ff
8: wfd0: <BROADCAST,MULTICAST,DYNAMIC,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether ea:cb:f5:20:89:f0 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.183/24 brd 192.168.2.255 scope global wfd0
valid_lft forever preferred_lft forever
inet6 fe80::e8cb:f5ff:fe20:89f0/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
9: usb0: <NO-CARRIER,BROADCAST,MULTICAST,DYNAMIC,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether e6:1c:77:84:ef:83 brd ff:ff:ff:ff:ff:ff
inet6 fe80::e41c:77ff:fe84:ef83/64 scope link proto kernel_ll
valid_lft forever preferred_lft foreverSystem Processes and Services
The following processes and services were captured and are automatically launched on the system at startup after a fresh boot:
root@b2qt-nitrogen95:~# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.5 0.1 19456 11260 ? Ss 14:55 0:02 /sbin/init fixrtc
root 2 0.0 0.0 0 0 ? S 14:55 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 14:55 0:00 [pool_workqueue_release]
root 4 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-rcu_g]
root 5 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-rcu_p]
root 6 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-slub_]
root 7 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-netns]
root 12 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-mm_pe]
root 13 0.0 0.0 0 0 ? I 14:55 0:00 [rcu_tasks_kthread]
root 14 0.0 0.0 0 0 ? S 14:55 0:00 [ksoftirqd/0]
root 15 0.0 0.0 0 0 ? I 14:55 0:00 [rcu_preempt]
root 16 0.0 0.0 0 0 ? S 14:55 0:00 [migration/0]
root 17 0.0 0.0 0 0 ? S 14:55 0:00 [cpuhp/0]
root 18 0.0 0.0 0 0 ? S 14:55 0:00 [cpuhp/1]
root 19 0.0 0.0 0 0 ? S 14:55 0:00 [migration/1]
root 20 0.0 0.0 0 0 ? S 14:55 0:00 [ksoftirqd/1]
root 21 0.0 0.0 0 0 ? I 14:55 0:00 [kworker/1:0-events]
root 23 0.0 0.0 0 0 ? S 14:55 0:00 [cpuhp/2]
root 24 0.0 0.0 0 0 ? S 14:55 0:00 [migration/2]
root 25 0.0 0.0 0 0 ? S 14:55 0:00 [ksoftirqd/2]
root 28 0.0 0.0 0 0 ? S 14:55 0:00 [cpuhp/3]
root 29 0.0 0.0 0 0 ? S 14:55 0:00 [migration/3]
root 30 0.0 0.0 0 0 ? S 14:55 0:00 [ksoftirqd/3]
root 32 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/3:0H-kblockd]
root 33 0.0 0.0 0 0 ? S 14:55 0:00 [cpuhp/4]
root 34 0.0 0.0 0 0 ? S 14:55 0:00 [migration/4]
root 35 0.0 0.0 0 0 ? S 14:55 0:00 [ksoftirqd/4]
root 38 0.0 0.0 0 0 ? S 14:55 0:00 [cpuhp/5]
root 39 0.0 0.0 0 0 ? S 14:55 0:00 [migration/5]
root 40 0.0 0.0 0 0 ? S 14:55 0:00 [ksoftirqd/5]
root 41 0.0 0.0 0 0 ? I 14:55 0:00 [kworker/5:0-pm]
root 42 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/5:0H-kblockd]
root 43 0.0 0.0 0 0 ? S 14:55 0:00 [kdevtmpfs]
root 44 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-inet_]
root 45 0.7 0.0 0 0 ? I 14:55 0:03 [kworker/u12:1-devfreq_wq]
root 46 0.0 0.0 0 0 ? S 14:55 0:00 [kauditd]
root 47 0.0 0.0 0 0 ? S 14:55 0:00 [oom_reaper]
root 48 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-write]
root 49 0.0 0.0 0 0 ? S 14:55 0:00 [kcompactd0]
root 50 0.0 0.0 0 0 ? SN 14:55 0:00 [ksmd]
root 51 0.0 0.0 0 0 ? SN 14:55 0:00 [khugepaged]
root 52 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-kinte]
root 53 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-kbloc]
root 54 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-blkcg]
root 55 0.1 0.0 0 0 ? I 14:55 0:00 [kworker/u12:2-events_unbound]
root 56 0.1 0.0 0 0 ? I 14:55 0:00 [kworker/u12:3-events_unbound]
root 57 0.0 0.0 0 0 ? I 14:55 0:00 [kworker/u12:4-events_power_efficient]
root 58 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-ata_s]
root 59 0.0 0.0 0 0 ? I 14:55 0:00 [kworker/u12:5-events_freezable_power_]
root 60 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-devfr]
root 62 0.0 0.0 0 0 ? S 14:55 0:00 [watchdogd]
root 63 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/1:1H-kblockd]
root 64 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-rpcio]
root 65 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-xprti]
root 66 0.0 0.0 0 0 ? S 14:55 0:00 [kswapd0]
root 67 0.0 0.0 0 0 ? S 14:55 0:00 [ecryptfs-kthread]
root 68 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-nfsio]
root 69 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-kthro]
root 71 0.0 0.0 0 0 ? S 14:55 0:00 [irq/22-arm-smmu-v3-evtq]
root 72 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-uas]
root 73 0.0 0.0 0 0 ? I 14:55 0:00 [kworker/2:1-events]
root 74 0.0 0.0 0 0 ? S 14:55 0:00 [hwrng]
root 75 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-neutr]
root 76 0.0 0.0 0 0 ? I 14:55 0:00 [kworker/3:1-pm]
root 77 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/0:1H-mmc_complete]
root 78 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-tls-s]
root 79 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-mld]
root 80 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-ipv6_]
root 81 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-kstrp]
root 84 0.0 0.0 0 0 ? I 14:55 0:00 [kworker/3:2-events]
root 87 0.0 0.0 0 0 ? I 14:55 0:00 [kworker/1:4-pm]
root 88 0.0 0.0 0 0 ? I 14:55 0:00 [kworker/4:1-pm]
root 90 0.1 0.0 0 0 ? I 14:55 0:00 [kworker/0:5-events]
root 94 0.0 0.0 0 0 ? S 14:55 0:00 [spi0]
root 95 0.0 0.0 0 0 ? S 14:55 0:00 [irq/200-4c010010.usb]
root 96 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-imx95]
root 97 0.0 0.0 0 0 ? I 14:55 0:00 [kworker/4:2-pm]
root 98 0.2 0.0 0 0 ? I< 14:55 0:01 [kworker/u13:0-MOAL_RX_WORK_QUEUE]
root 99 0.0 0.0 0 0 ? S 14:55 0:00 [mali-simple-power-model-temp-poll]
root 100 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-rpmsg]
root 101 0.0 0.0 0 0 ? S 14:55 0:00 [irq/203-vpu_irq]
root 103 0.1 0.0 0 0 ? I 14:55 0:00 [kworker/0:6-events]
root 105 0.0 0.0 0 0 ? S 14:55 0:00 [irq/204-6-0022]
root 106 0.0 0.0 0 0 ? I 14:55 0:00 [kworker/5:2-pm]
root 107 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-enetc]
root 108 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-enetc]
root 111 0.0 0.0 0 0 ? S 14:55 0:00 [irq/198-4b0d0000.bridge]
root 113 0.0 0.0 0 0 ? I 14:55 0:00 [kworker/u12:8-events_unbound]
root 114 0.0 0.0 0 0 ? S 14:55 0:00 [irq/222-rv3028]
root 123 0.0 0.0 0 0 ? I 14:55 0:00 [kworker/2:10-pm]
root 126 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-sdhci]
root 127 0.0 0.0 0 0 ? S 14:55 0:00 [irq/224-mmc0]
root 128 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-sdhci]
root 129 0.0 0.0 0 0 ? S 14:55 0:00 [irq/225-mmc1]
root 130 0.0 0.0 0 0 ? S 14:55 0:00 [card0-crtc0]
root 132 0.0 0.0 0 0 ? S 14:55 0:00 [card0-crtc1]
root 133 0.0 0.0 0 0 ? S 14:55 0:00 [irq/240-42860000.mmc cd]
root 134 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-sdhci]
root 135 0.0 0.0 0 0 ? S 14:55 0:00 [irq/202-mmc2]
root 136 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-mmc_c]
root 137 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/2:1H-kblockd]
root 138 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-mmc_c]
root 139 0.0 0.0 0 0 ? S 14:55 0:00 [irq/242-ci_imx_wakeup]
root 140 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-ci_ot]
root 141 0.0 0.0 0 0 ? S 14:55 0:00 [irq/223-hd3ss3220]
root 143 0.0 0.0 0 0 ? S 14:55 0:00 [jbd2/mmcblk1p2-8]
root 144 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-ext4-]
root 155 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/4:1H-kblockd]
root 158 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/0:2H-kblockd]
root 160 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/1:2H]
rpc 171 0.0 0.0 4644 2432 ? Ss 14:55 0:00 /usr/sbin/rpcbind -w -f
root 174 0.1 0.1 40060 7936 ? Ss 14:55 0:00 /usr/lib/systemd/systemd-journald
root 181 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/4:2H]
root 226 0.1 0.1 29524 9728 ? Ss 14:55 0:00 /usr/lib/systemd/systemd-udevd
systemd+ 311 0.0 0.0 89252 6400 ? Ssl 14:55 0:00 /usr/lib/systemd/systemd-timesyncd
root 440 0.0 0.0 14972 5376 ? Ss 14:55 0:00 /usr/lib/systemd/systemd-userdbd
root 537 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/5:2H]
root 541 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-cfg80]
root 542 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/2:2H]
root 562 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-MOAL_]
root 574 0.0 0.0 0 0 ? S 14:55 0:00 [irq/257-gt9271]
root 581 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-MOAL_]
root 582 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-MOAL_]
root 583 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-MOAL_]
root 584 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-MOAL_]
root 585 0.0 0.0 0 0 ? S 14:55 0:00 [woal_reassoc_service]
root 593 0.0 0.1 395776 10752 ? Ssl 14:55 0:00 /usr/sbin/ModemManager
root 604 0.0 0.0 3512 1536 ? Ss 14:55 0:00 /usr/sbin/klogd -n
root 610 0.0 0.0 3512 1536 ? Ss 14:55 0:00 /usr/sbin/syslogd -n
message+ 613 0.1 0.0 7156 3712 ? Ss 14:55 0:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
root 614 0.0 0.0 2724 1408 ? Ss 14:55 0:00 /usr/bin/firmwared -d /lib/firmware
root 619 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/3:2H-kblockd]
root 629 0.0 0.0 15760 6528 ? Ss 14:55 0:00 /usr/lib/systemd/systemd-logind
root 695 0.1 0.0 16048 6016 ? Ss 14:55 0:00 /usr/sbin/connmand -n
systemd+ 696 0.0 0.0 16920 7552 ? Ss 14:55 0:00 /usr/lib/systemd/systemd-networkd
root 703 0.1 0.0 0 0 ? I< 14:55 0:00 [kworker/u13:2-MOAL_TX_WORK_QUEUE]
root 704 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-CSAwl]
root 705 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-MCLIS]
root 706 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-CSAua]
root 707 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-MCLIS]
root 710 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-CSAwf]
root 711 0.0 0.0 0 0 ? I< 14:55 0:00 [kworker/R-MCLIS]
root 737 0.0 0.0 0 0 ? S 14:55 0:00 [irq/220-0003:01:00.0:07]
avahi 738 0.0 0.0 7524 3200 ? Ss 14:55 0:00 avahi-daemon: running [b2qt-nitrogen95.local]
root 739 0.0 0.0 8140 4224 ? Ss 14:55 0:00 /usr/libexec/bluetooth/bluetoothd
root 741 0.1 0.1 17676 9728 ? Ss 14:55 0:00 /usr/lib/systemd/systemd --user
root 742 0.0 0.0 0 0 ? S 14:55 0:00 [irq/221-0003:01:00.0:03]
root 743 0.0 0.1 15528 9472 ? Ss 14:55 0:00 /usr/sbin/sdcsupp -u
avahi 748 0.0 0.0 7228 1432 ? S 14:55 0:00 avahi-daemon: chroot helper
root 749 0.0 0.0 19332 2908 ? S 14:55 0:00 (sd-pam)
root 750 0.1 0.0 0 0 ? I< 14:55 0:00 [kworker/u13:3-MOAL_TX_WORK_QUEUE]
root 758 0.1 0.6 2085968 47344 ? Ssl 14:55 0:00 /usr/bin/containerd
root 764 0.0 0.1 56916 10368 ? Ss 14:55 0:00 /usr/bin/appcontroller /usr/bin/qtlauncher
root 765 0.0 0.0 5260 1664 tty1 Ss+ 14:55 0:00 /sbin/agetty -o -p -- \u --noclear - linux
root 766 0.0 0.0 5392 2048 ttyLP0 Ss+ 14:55 0:00 /sbin/agetty -8 -L ttyLP0 115200 linux
root 774 11.9 2.1 1522036 166704 ? Sl 14:55 0:54 /usr/bin/qtlauncher
root 793 0.0 0.1 278312 12784 ? Sl 14:55 0:00 /usr/bin/qdbd --usb-ethernet-function-name ncm.usb0
root 819 0.0 0.0 6716 3328 ? Ss 14:55 0:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
root 827 1.3 0.0 0 0 ? S 14:55 0:06 [mali-gpuq-kthread]
root 850 0.0 0.1 13284 8500 ? Ss 14:56 0:00 sshd: root@pts/0
root 852 0.2 0.0 7276 3712 pts/0 Ss 14:56 0:00 -sh
root 945 0.0 0.0 0 0 ? I 15:00 0:00 [kworker/1:1-pm]
root 946 0.0 0.0 0 0 ? I 15:00 0:00 [kworker/2:0-events_long]
root 947 0.1 0.0 0 0 ? I 15:00 0:00 [kworker/0:0-events]
root 948 0.0 0.0 0 0 ? I 15:00 0:00 [kworker/3:0-events]
root 949 0.0 0.0 15492 5248 ? S 15:00 0:00 systemd-userwork: waiting...
root 950 0.0 0.0 15492 5248 ? S 15:01 0:00 systemd-userwork: waiting...
root 951 0.0 0.0 15492 5248 ? S 15:01 0:00 systemd-userwork: waiting...
root 952 0.1 0.0 0 0 ? I 15:01 0:00 [kworker/u12:0-devfreq_wq]
root 953 0.0 0.0 0 0 ? I 15:01 0:00 [kworker/4:0-events]
root 957 0.0 0.0 0 0 ? I 15:01 0:00 [kworker/5:1-events]
root 1184 0.0 0.0 0 0 ? I< 15:02 0:00 [kworker/u13:1-MOAL_RX_WORK_QUEUE]
root 1314 300 0.0 9372 3584 pts/0 R+ 15:03 0:00 ps aux
root@b2qt-nitrogen95:~# systemctl list-units --type=service --state=running
UNIT LOAD ACTIVE SUB DESCRIPTION
avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack
bluetooth.service loaded active running Bluetooth service
busybox-klogd.service loaded active running Kernel Logging Service
busybox-syslog.service loaded active running System Logging Service
connman.service loaded active running Connection service
containerd.service loaded active running containerd container runtime
dbus.service loaded active running D-Bus System Message Bus
demolauncher.service loaded active running Boot to Qt Demo Launcher
firmwared.service loaded active running Linux Firmware Loader Daemon
getty@tty1.service loaded active running Getty on tty1
ModemManager.service loaded active running Modem Manager
qdbd.service loaded active running Qt Debug Bridge Daemon
rpcbind.service loaded active running RPC Bind
serial-getty@ttyLP0.service loaded active running Serial Getty on ttyLP0
sshd@0-192.168.2.183:22-192.168.2.121:54954.service loaded active running OpenSSH Per-Connection Daemon (192.168.2.121:54954)
systemd-journald.service loaded active running Journal Service
systemd-logind.service loaded active running User Login Management
systemd-networkd.service loaded active running Network Configuration
systemd-timesyncd.service loaded active running Network Time Synchronization
systemd-udevd.service loaded active running Rule-based Manager for Device Events and Files
systemd-userdbd.service loaded active running User Database Manager
user@0.service loaded active running User Manager for UID 0
wpa_supplicant.service loaded active running WPA supplicant
Legend:
LOAD → Reflects whether the unit definition was properly loaded.
ACTIVE → The high-level unit activation state, i.e. generalization of SUB.
SUB → The low-level unit activation state, values depend on unit type.
23 loaded units listed.System Information & Overview
You can check basic system information on the Nitrogen95 SMARC Evaluation Kit, including details such as the CPU type, usage, load, available memory, storage space, uptime, and software version. The example below shows the output from commands likelscpu, free -h, df -h, uptime, and cat /etc/os-release run on the device.root@b2qt-nitrogen95:~# lscpu
Architecture: aarch64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 6
On-line CPU(s) list: 0-5
Vendor ID: ARM
Model name: Cortex-A55
Model: 0
Thread(s) per core: 1
Core(s) per cluster: 6
Socket(s): -
Cluster(s): 1
Stepping: r2p0
CPU(s) scaling MHz: 64%
CPU max MHz: 1800.0000
CPU min MHz: 500.0000
BogoMIPS: 48.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
Caches (sum of all):
L1d: 192 KiB (6 instances)
L1i: 192 KiB (6 instances)
L2: 384 KiB (6 instances)
L3: 512 KiB (1 instance)
Vulnerabilities:
Gather data sampling: Not affected
Itlb multihit: Not affected
L1tf: Not affected
Mds: Not affected
Meltdown: Not affected
Mmio stale data: Not affected
Reg file data sampling: Not affected
Retbleed: Not affected
Spec rstack overflow: Not affected
Spec store bypass: Not affected
Spectre v1: Mitigation; __user pointer sanitization
Spectre v2: Not affected
Srbds: Not affected
Tsx async abort: Not
root@b2qt-nitrogen95:~# free -h
total used free shared buff/cache available
Mem: 7.5Gi 551Mi 6.9Gi 11Mi 258Mi 7.0Gi
Swap: 0B 0B 0B
root@b2qt-nitrogen95:~# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 4.2G 2.2G 1.7G 56% /
devtmpfs 3.3G 4.0K 3.3G 0% /dev
tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs 1.5G 10.1M 1.5G 1% /run
tmpfs 3.8G 4.0K 3.8G 0% /tmp
tmpfs 3.8G 32.0K 3.8G 0% /var/volatile
tmpfs 768.9M 68.0K 768.8M 0% /run/user/0
/dev/mmcblk1p1 59.0M 35.5M 23.5M 60% /run/media/boot-mmcblk1p1
root@b2qt-nitrogen95:~# uptime
14:56:54 up 11 min, 1 user, load average: 0.81, 1.08, 0.71
root@b2qt-nitrogen95:~# cat /etc/os-release
ID=ezurio-b2qt
NAME="Ezurio b2qt"
VERSION="5.0.4 (scarthgap)"
VERSION_ID=5.0.4
VERSION_CODENAME="scarthgap"
PRETTY_NAME="Ezurio b2qt 5.0.4 (scarthgap)"
CPE_NAME="cpe:/o:openembedded:ezurio-b2qt:5.0.4"Important Git Repository and Sources
- Boundary Devices →
boundary-bsp-platform: https://github.com/boundarydevices/boundary-bsp-platform/tree/ezurio-imx-6.6.52-2.2.1๐, - Boundary Devices →
meta-boundary: https://github.com/boundarydevices/meta-boundary/tree/scarthgap๐, - Boundary Devices →
linux: https://github.com/boundarydevices/linux/tree/ezurio-lf-6.6.y๐, - Boundary Devices →
u-boot: https://github.com/boundarydevices/u-boot/tree/ezurio-lf_v2024.04๐, - Ezurio →
meta-summit-radio: https://github.com/Ezurio/meta-summit-radio/tree/lrd-13.24.0.x๐.
BSP Support, Drivers & Configs
- U-Boot Defconfig: https://github.com/boundarydevices/u-boot/blob/ezurio-lf_v2024.04/configs/imx95_nitrogen_smarc_defconfig๐.
- Linux Device Tree(s): https://github.com/boundarydevices/linux/tree/ezurio-lf-6.6.y/arch/arm64/boot/dts/freescale๐. Search for
imx95-nitrogen-smarc, in this case. - Linux Device Tree Overlay(s): imx95-nitrogen-smarc-dsi.dtbo๐ + imx95-nitrogen-smarc-nx611.dtbo๐ & imx95-nitrogen-smarc-csi0-pivariety.dtso๐.
- Sona NX611 is fully supported through our Yocto/OpenEmbedded Layers: https://github.com/Ezurio/meta-summit-radio/tree/lrd-13.24.0.x๐.
Updating & Customizing your Bootloader & OS
U-Boot
For more information, please refer to https://www.ezurio.com/resources/software-announcements/u-boot-v2022-04-for-i-mx-platforms๐. The latest binaries can be found at u-boot-images-2022.04๐ and u-boot-images-2024.04๐, while the source code is available on GitHub under github.com/boundarydevices/u-boot๐.
printenv uboot_defconfig. For the Nitrogen95 SMARC module it should always imx95_nitrogen_smarc.Yocto
To ensure reproducible Yocto builds, we recommend using our (Ubuntu-based) Docker Containers whenever possible: https://www.ezurio.com/resources/software-announcements/using-docker-containers-for-reproducible-yocto-builds๐.
Boot to Qt | Qt 6.8.1
Please refer to https://lairdcp.github.io/guides/Boot2Qt-Scarthgap-Release-for-iMX-Platforms/1.0/Boot2Qt-Scarthgap-Release-for-i.MX-Platforms.html๐ for more information.
Scarthgap
Please refer to https://lairdcp.github.io/guides/yocto-scarthgap-release-for-imx-platforms/1.0/Yocto-Scarthgap-Release-for-i.MX-Platforms.html๐ for more information.
Debian & Ubuntu
Not supported. For additional information, please contact your local sales representative or FAE.
Android (15 / 16)
We plan to introduce support for Android in an upcoming version and feature release. If you have an urgent need for your current project and product, please get in touch with us — our team will be happy to discuss your specific case. Visit https://www.ezurio.com/contact.
QNX (SDP 7.1 / 8.0)
We plan to introduce support for QNX in an upcoming version and feature release. If you have an urgent need for your current project and product, please get in touch with us — our team will be happy to discuss your specific case. Visit https://www.ezurio.com/contact.
FreeRTOS / NXP MCUXpresso SDK (2.16.0)
We plan to introduce support for FreeRTOS / the NXP MCUXpresso SDK in an upcoming version and feature release. If you have an urgent need for your current project and product, please get in touch with us — our team will be happy to discuss your specific case. Visit https://www.ezurio.com/contact.
J1 is the reserved JTAG connector, marked as DND (not fitted by default) on the Nitrogen95 SMARC module. You can populate it manually, if needed. For detailed pinout information and a list of compatible parts, refer to the SMARC 2.1 Hardware Specification, section 3.24, page 65: https://sget.org/wp-content/uploads/2020/03/SMARC_V21-specification.pdf๐. The JTAG I/O voltage and interface operate at 1.8 V.
Buildroot
2025.02
TBD.
2024.02
TBD.
Additional Features & Information
Wi-Fi and Bluetooth / BLE Usage
To explore additional features and learn how to set up, bring up and use the internal Wi-Fi and BLE radio of the Sona NX611 module, for example, see https://lairdcp.github.io/guides/yocto-scarthgap-release-for-imx-platforms/1.0/Yocto-Scarthgap-Release-for-i.MX-Platforms.html๐.
Arducam xISP – IMX678 Camera Usage
Enter U-Boot and verify that the following device tree overlays are applied by runningsetenv dtbos "imx95-nitrogen-smarc-dsi.dtbo imx95-nitrogen-smarc-nx611.dtbo imx95-nitrogen-smarc-csi0-pivariety.dtbo", followed by saveenv and reset. After the system has booted, stop Weston and terminate the QTLauncher to enable camera output by executing systemctl stop weston && killall qtlauncher via the debug UART interface or over SSH. Once the display is released, you can capture images and take pictures using GStreamer with WaylandSink. See the below examples.v4l2-ctl --list-devices or ls /dev/video* to confirm) — in most cases, this will be /dev/video3. Also, do not forget to remove the plastic protection from the camera lens.HD (1280x720)
# Stream. Do not forget to press Ctrl + C (STRG + C) to stop.
root@nitrogen95:~# gst-launch-1.0 v4l2src device=/dev/video3 ! video/x-raw,width=1280,height=720 ! waylandsink
# Take photo. Do not forget to press Ctrl + C (STRG + C) to stop.
root@nitrogen95:~# gst-launch-1.0 v4l2src device=/dev/video3 ! video/x-raw,width=1280,height=720 ! identity sync=true ! jpegenc ! multifilesink location="hd.jpg"Full HD (1920x1080)
# Stream. Do not forget to press Ctrl + C (STRG + C) to stop.
root@nitrogen95:~# gst-launch-1.0 v4l2src device=/dev/video3 ! video/x-raw,width=1920,height=1080 ! waylandsink
# Take photo.
root@nitrogen95:~# gst-launch-1.0 v4l2src device=/dev/video3 ! video/x-raw,width=1920,height=1080 ! identity sync=true ! jpegenc ! multifilesink location="fhd.jpg"UHD aka. 4K (3840x2160)
# Stream. Do not forget to press Ctrl + C (STRG + C) to stop.
root@nitrogen95:~# gst-launch-1.0 v4l2src device=/dev/video3 ! video/x-raw,width=3840,height=2160 ! waylandsink
# Take photo. Do not forget to press Ctrl + C (STRG + C) to stop.
root@nitrogen95:~# gst-launch-1.0 v4l2src device=/dev/video3 ! video/x-raw,width=3840,height=2160 ! identity sync=true ! jpegenc ! multifilesink location="uhd4k.jpg"Recovery Instructions
If your Nitrogen95 SMARC evaluation board isn't powering on or showing any signs of life, you may want to try recovering *both* the bootloader and operating system using NXP's Universal Update Utility (UUU). A step-by-step guide is available here: https://www.ezurio.com/resources/software-announcements/recovering-i-mx-platforms-using-uuu๐.J1) of the Universal SMARC Carrier Board; (c) cables and connections are securely in place — nothing should be loose or jammed; (d) all boot switches on the Universal SMARC Carrier Board (S1) are in OFF position; and (e) SW1 on the Nitrogen95 SMARC module itself is also set to OFF.Troubleshooting
Known Issues
- Bluetooth not working: If you encounter an error message such as
[279.259014] Bluetooth: hci0: Frame reassembly failed (-84)repeatedly appearing in the debug terminal, try restarting or resetting the device. Then, at the U-Boot prompt, entersetenv dtbos "imx95-nitrogen-smarc-dsi.dtbo imx95-nitrogen-smarc-nx611.dtbo imx95-nitrogen-smarc-csi0-pivariety.dtbo"followed bysaveenvandreset. This manually applies and saves the correct device tree. You only have to do it once.
Workarounds
- If the camera is detected but fails to operate correctly, try the following: Prepare a FAT32-formatted USB drive, copy the attached archive (nitrogen95-beta-evk-arducam.tar.gz) onto it, and insert it into one of the available USB ports (J2 or J24) on the Universal SMARC Carrier Board. The USB drive should mount automatically under
/run/media/<usb-label>; if unsure, check the mount point using themountcommand.
Navigate to the directory usingcd /run/media/<usb-label>, extract the archive withtar xvzf nitrogen95-beta-evk-arducam.tar.gz -C /, and then restart the system usingreboot. Do not forget to remove the USB drive, as it's no longer needed. After the system comes back up, you will need to stop Weston and kill the QTLauncher withsystemctl stop weston && killall qtlauncherto free the display before continuing and using libcamerify and cam — see below.
Now, you should be able to run GStreamer through libcamerify, for example:libcamerify gst-launch-1.0 v4l2src device=/dev/video3 ! video/x-raw,width=1920,height=1080 ! waylandsinkto stream video, orlibcamerify gst-launch-1.0 v4l2src device=/dev/video3 ! video/x-raw,width=1920,height=1080 ! identity sync=true ! jpegenc ! multifilesink location="fhd.jpg"to take a photo — im this case, always prefixing your GStreamer commands with libcamerify!
As a second option, it's also possible to use the cam tool:cam -c 1 --capture -D -s width=3840,height=2160to stream 4K video orcam -c 1 --capture=10 -s width=3840,height=2160 -Fto capture a series of UHD photos. Please note that for the latter you’ll need to convert the raw video data, for example on your local Linux host machine using:ffmpeg -f rawvideo -pixel_format yuyv422 -video_size 3840x2160 -i input.bin output.jpg.
References
- (Boundary Devices) Wiki → https://bdwiki.ezurio.com/index.php/Nitrogen95_SMARC,
- (Ezurio) GitHub SOM Documentation → https://lairdcp.github.io/soms,
- (Ezurio) Software Releases → https://www.ezurio.com/resources/software-announcements,
- (Arducam) Documentation → https://docs.arducam.com,
- (NXP) i.MX 95 Applications Processor Family → https://www.nxp.com/products/i.MX95,
- (NXP) IW611 Chipset → https://www.nxp.com/products/IW611,
- (Buildroot Project) Documentation → https://buildroot.org/docs.html,
- (Yocto Project) Documentation → https://docs.yoctoproject.org,
- (SGeT Consortium) SMARC Standard → https://sget.org/standards/smarc,
- (Docker) Documentation → https://docs.docker.com,
- (Qt & Boot2Qt) Documentation → https://doc.qt.io/Boot2Qt + https://doc.qt.io.
Changelog
- Public Version
2.0− 03/12/2025 (Florian Baumgartl): Updates for #P/N EZSMI-959-0816-00158-2-KC REV 1.0, the camera version. - Public Version
1.0− 24/10/2025 (Florian Baumgartl): Initial release based on #P/N EZSMI-959-0816-00158-2-K2 REV 1.0, the non-camera version.
/filters:background_color(white)/2025-09/EZSMI-959-0816-00158-2-KC1.png)
/filters:background_color(white)/2025-11/N959_6_SMARCwith%20NX611%20-%20front%20connector%20removed_4.png)