The IMX yocto project users guide contains detailed explanation on how to an build SD card image for the various iMX devices. For the NavQ95 there are a few exception that need to be taken care of.
See below table containing items that deviate from the manual:
| Item | Original | New |
|---|---|---|
| imx-manifest repo URL | https://github.com/nxp-imx/imx-manifest.git | https://github.com/NXP-Robotics/imx-manifest-navq95.git |
| Manifest file | imx-6.12.20-2.0.0.xml | imx-6.12.20-2.0.0-navq.xml |
| Machine | * (eg. imx95-19x19-lpddr5-evk) | imx95-navqbdesktop |
For a NavQ95 specific explanation refer to the Build SD card image and the Flash image to SD card paragraphs on this page.
Sync repositories by manifest:
mkdir imx-yocto-bsp
cd imx-yocto-bsp
repo init -u https://github.com/NXP-Robotics/imx-manifest-navq95.git -b imx-linux-walnascar -m imx-6.12.20-2.0.0-navq.xml
repo syncSetup build:
MACHINE=imx95-navqbdesktop DISTRO=imx-desktop-xwayland source imx-setup-release.sh -b build-95-fullOptionally add below lines to conf/local.conf in case the host should stay responsive
BB_NUMBER_THREADS = "6"
PARALLEL_MAKE = "-j 5"Start build:
bitbake mc:imx95-navqdesktop:imx-image-mrOr to start build and immediately detach the process from the console (may be convenient since this build may take a while)
nohup bitbake mc:imx95-navqdesktop:imx-image-mr &To build an image with ROS2 preinstalled:
bitbake mc:imx95-navqdesktop:imx-image-rosTo flash the yocto image to an SD card use the command below. Make sure you update the output file of=/dev/sdX to the block device that belong to the SD card.
cd /path/to/imx-yocto-bsp/build-95-full
# Deploy mc:imx95-navqdesktop:imx-image-mr on /dev/sdX
zstdcat tmp-imx95-navq/deploy/images/imx95-navq/imx-image-mr-imx95-navq.rootfs.wic.zst | sudo dd of=/dev/sdX bs=1M conv=fsync
# Deploy mc:imx95-navqdesktop:imx-image-ros on /dev/sdX
zstdcat tmp-imx95-navq/deploy/images/imx95-navq/imx-image-ros-imx95-navq.rootfs.wic.zst | sudo dd of=/dev/sdX bs=1M conv=fsyncInstall pyocd to flash the image through the on-board JTAG device. This is tested with python 3.10 but python 3.9 should suffice.
Clone pyocd into a directory of your preference and checkout the pr-imx95 branch:
git clone https://github.com/NXP-Robotics/pyOCD -b pr-imx95Build pyocd:
cd pyocd-private
python3 -m pip install .Make sure the DIP switches are correctly configured as described in Power up. Remove any SD card and then apply 12V to the J9 connector to power up the board.
Run below command to flash the built RTOS software to the NOR flash:
pyocd flash -t mimx95_cm33_mx25um path/to/built/file.bin -f 10mWarning
Writing to NOR flash is not completely stable yet. Retry the pyocd flash command until pyocd displays it had only programmed 0 pages.
Before powerering up the NavQ95 make sure the DIP switches have the correct settings. They must be configured like the image below to boot from the SD card.
To change the boot device see table below for different boot modes
| BOOT_MODE[3:0] | SW1 | SW2 | SW3 | SW4 | Boot Device |
|---|---|---|---|---|---|
1001 |
ON | OFF | OFF | ON | Serial Downloader on USB3.0 (J13) |
1010 |
OFF | ON | OFF | ON | Boot from eMMC |
1011 |
ON | ON | OFF | ON | Boot from SD Card |
1100 |
OFF | OFF | ON | ON | Boot from Octal Flash |
Insert the SD card with the image installed. Then apply 9-52V to the J9 connector to power up the board.
The USB port gives access to the tty's of linux and RTOS (if flashed to the NOR flash).
The default linux user is 'user' (password: 'user')
This guide explains how to flash a .wic image onto the NavQ95’s eMMC instead of the SD card using UUU (NXP’s Universal Update Utility).
- Configure the boot switches to Serial Downloader on USB3.0 (J13).
- Connect a USB‑C cable from your host PC to J13.
- Power on the NavQ95.
Download and install UUU from the official repository:
Load the temporary SPL loader so UUU can communicate with the board
Note
The SPL image required for flashing the NavQ95 is included in this repo as MR-NAVQ95B-SERIAL-DOWNLOAD.bin
./uuu.exe -b spl MR-NAVQ95B-SERIAL-DOWNLOAD.bin
Replace the placeholder with the path to your image:
./uuu.exe -b emmc_all <patch.to.wic.file>
- Power off the NavQ95.
- Set the boot switches to Boot from eMMC.
- Power on the board, it should now boot from the new eMMC image.

