Link Search Menu Expand Document

VOXL 2 System Image

Table of contents

  1. Summary
    1. What is it?
    2. Do I need to install it?
    3. Where To Download
  2. Backup Files
  3. Upgrade using Fastboot
    1. Overview
    2. Video
    3. Procedure
  4. Force VOXL 2 into Fastboot
    1. Overview
    2. Video
    3. Procedure
  5. Missing ADB?
    1. 1.2.2 (WIP)
    2. 1.2.1
    3. 1.2.0
    4. 1.1.4
    5. 1.1.3
    6. 1.1.2


What is it?

The system image is essentially “the operating system”, and consists of the kernel, root file system, and various firmwares for the plentiful amount of processors on board to name a few items.

Do I need to install it?

If you have a VOXL 2, it comes pre-installed so there’s nothing to do unless you are looking to install a newer version.

Occasionally we will ship updates, and the System Image comes in the Platform Release, but you can follow the update procedure below to update only the system image if needed.

If you are having problems with your system, please ask questions on the forum before reflashing the system image.

Where To Download

Please send requests to

Backup Files


  • Please backup the following manually prior to updating
❯ adb pull /etc/modalai .
❯ adb pull /data/misc .

Upgrade using Fastboot


Android has tools used for flashing phones with new releases. We can use the same tools here to flash the system image onto VOXL2.



  • Unzip the download, in this example we’ll assume the download name was M.m.b-M0054-14.1a-perf.tar.gz where M.m.b is the version.
tar -xzvf M.m.b-M0054-14.1a-perf.tar.gz
  • Get ready to run the script by going into the directory you just unzipped
cd M.m.b-M0054-14.1a-perf
  • Now, attach the VOXL 2 via USBC and ensure the unit is powered on
  • Make sure that adb see’s your by running adb devices from the host computer
❯ adb devices
List of devices attached
f8bb8d44	device

If no devices show up: see Force VOXL 2 into fastboot below

  • Check that the fastboot command works by running fastboot devices
❯ fastboot devices

If command fails see Missing ADB? below

  • Run the following:
sudo ./

Here’s an example output:

❯ ./
[INFO] version: 0.0
[INFO] adb installed
[INFO] fastboot installed
[INFO] qti-ubuntu-robotics-image-qrb5165-rb5-boot.img present
[INFO] abl.elf present
[INFO] qti-ubuntu-robotics-image-qrb5165-rb5-sysfs.ext4 present
[INFO] Rebooting to fastboot bootloader
[INFO] Flashing boot.img
< waiting for any device >
Sending 'boot_a' (20884 KB)                        OKAY [  0.055s]
Writing 'boot_a'                                   OKAY [  0.026s]
Finished. Total time: 0.131s
Sending 'boot_b' (20884 KB)                        OKAY [  0.062s]
Writing 'boot_b'                                   OKAY [  0.027s]
Finished. Total time: 0.133s
[INFO] Flashing abl.elf
Sending 'abl_a' (148 KB)                           OKAY [  0.003s]
Writing 'abl_a'                                    OKAY [  0.001s]
Finished. Total time: 0.012s
Sending 'abl_b' (148 KB)                           OKAY [  0.004s]
Writing 'abl_b'                                    OKAY [  0.001s]
Finished. Total time: 0.013s
[INFO] Flashing sysfs.ext4
Sending sparse 'system' 1/5 (784305 KB)            OKAY [  7.592s]
Writing 'system'                                   OKAY [  0.000s]
Sending sparse 'system' 2/5 (786429 KB)            OKAY [ 13.012s]
Writing 'system'                                   OKAY [  0.000s]
Sending sparse 'system' 3/5 (752290 KB)            OKAY [ 13.922s]
Writing 'system'                                   OKAY [  0.000s]
Sending sparse 'system' 4/5 (785699 KB)            OKAY [ 13.732s]
Writing 'system'                                   OKAY [  0.002s]
Sending sparse 'system' 5/5 (541781 KB)            OKAY [  9.620s]
Writing 'system'                                   OKAY [  0.001s]
Finished. Total time: 64.082s
[INFO] Rebooting...
Rebooting                                          OKAY [  7.045s]
Finished. Total time: 7.045s
[INFO] Waiting for device...
[INFO] Device ready, version:
[INFO] Finished

After this, you should be able to adb back into the device. If needed, restore the files that you manually backed up.

Force VOXL 2 into Fastboot


This procedure is for use if the normal update procedure above is not working.



  • Unplug VOXL 2 from power
  • Unplug VOXL 2 from USBC
  • Using something soft like a BBQ skewer or toothpick, press and hold the momentary button SW1 down, as shown in this image:


  • While holding SW1 down, power on VOXL 2
  • Keep holding SW1 down for about 5 seconds and then let go
  • Attach VOXL 2 to USBC connected to host computer
  • Run the fastboot devices command and verify the device is showing up
❯ fastboot devices
f8bb8d44	fastboot
  • Now, you should be able to proceed with the ./ command

Missing ADB?

Install the Android Debug Bridge (ADB):

me@mylaptop:~$ sudo apt install android-tools-adb android-tools-fastboot

ModalAI Top Tip: to run ADB without root on the host PC, create a file called /etc/udev/rules.d/51-android.rules containing this udev rule on the host computer:

me@mylaptop:~$ sudo su
root@mylaptop:/home/me# echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="901d", MODE="0660", GROUP="plugdev", SYMLINK+="voxl%n"' > /etc/udev/rules.d/51-android.rules
root@mylaptop:/home/me# echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="d00d", MODE="0660", GROUP="plugdev", SYMLINK+="voxl-fastboot%n"' >> /etc/udev/rules.d/51-android.rules
root@mylaptop:/home/me# udevadm control --reload-rules && udevadm trigger


1.2.2 (WIP)

Date: TBD


  • Kernel
    • enable LAN95XX driver
  • chi-cdk
    • ov7251: fix for missing gain in hal3 metadata


Date: 2022-04-18


  • ROS sources and key included in root filesystem
  • XBL now flashed during system image install
  • Binaries can now be executed in the data partition


Date: 2022-04-15


  • Update chi-cdk - ov7251 FSYNC registers from mm-camera
  • Add rndis host driver to kernel
  • Enable SPI
    • /dev/spidev3.0 - internal IMU
    • /dev/spidev14.0 - external SPI
    • /dev/spidev0.0, /dev/spidev1.0, and /dev/spidev5.0 - camera groups 0, 1 and 2
  • Updated device’s HLOS partitions
    • Updated userdata ( /data ) partition to 64GB
    • Added 64KB modalai_conf ( /etc/modalai ) partition
    • Added 64KB modalai_cal ( /data/modalai ) partition
    • Reduced system ( / ) partition to 47.875GB
  • System image flash
    • devcfg.mbn is now flashed during system image flash
    • NHLOS is now flashed during system image flash
    • LUN0 GPT can be flashed during system image flash
  • System image root filesystem additions
    • Px4-support and libfc now included in rootfs
    • ModalAI metabuild info now in /firmware/verinfo/ver_info.txt
    • Remove /etc/voxl-platform-info.json meta file creation, ModalAI metabuild info includes this information now
    • Removed old incompatible tdk binaries
    • Added Stable ModalAI sources list, library search paths, and qrb5165-bind to root filesystem
    • Included docker sources list and key


Date: 2022-03-09


  • add rtl8188eus driver for tp-link support
  • remove all opencv 3.2 packages
  • apt autoremove and clean removing 400MB! of cached debs
  • permit root ssh login
  • add platform_name file for bash formatting
  • remove ldconfig crying about wayland sink not a symlink


Date: 2022-02-18


  • Modified mv-voxl 32-bit shared object files permissions as they were set incorrectly
  • Added /etc/voxl-platform-info.json file which includes build and platform metadata


Date: 2022-02-09


  • Initial Release