# VOXL2 IO Board and External ESCs - voxl2-io driver fails to initialize

Source: https://forum.modalai.com/topic/4099/voxl2-io-board-and-external-escs-voxl2-io-driver-fails-to-initialize
Category: General Questions (https://forum.modalai.com/category/2/general-questions)
Posted: 2025-01-16 22:22:59 UTC by Denver Hopkins
Replies: 9 · Views: 1527

## Denver Hopkins · 2025-01-16 22:22:59 UTC

Originally posted this elsewhere a couple of days ago and on seeing no replies after a couple of days, realized that maybe it should be posted here for your engineers to see it.

We'd appreciate suggestions for troubleshooting as it seems at this point we're making little progress. And, of course, if we can provide additional info to make it easier, please let us know. Thanks!

**SUMMARY**

VOXL2-IO driver is failing to initialize. When we 'scan' and 'detect' using utilities of the voxl-2-io wizard, the M00065 is detected, however there appears to be no UID or FW hash values which makes us suspicious of its response. We have followed instruction in the forum topic ' VOXL 2 IO Board troubleshooting - Driver will not start' at https://forum.modalai.com/topic/3242/voxl-2-io-board-troubleshooting-driver-will-not-start. Platform SDK and VOXL IO Board firmware have been updated to latest released versions (see 'ENVIRONMENT' above).

'Spin' command in the voxl-2-io wizard drives Motor1 (on PWM Channel 1) but none of the others. We are not able to drive motors from QGC.

And finally, upon startup, there is no PWM signal. Not even the idle/disarmed pulse sent right after power on to stop ESCs timing out, which causes an Arming Timeout to occur on ESCs.

More specific observations follow below.

**OUR ENVIRONMENT**

VOXL2
system-image: 1.8.02-M0054-14.1a-perf
kernel: #1 SMP PREEMPT Mon Nov 11 22:08:01 UTC 2024 4.19.125
hw platform: M0054
mach.var: 1.0.0
voxl-suite: 1.4.0

VOXL2 IO Board w/ Firmware upgraded to 'VOXL2 IO FW v1_35_58c82813' using procedure at https://docs.modalai.com/voxl2-io-firmware/#via-voxl-2-command-line-tools. (NOTE: Upgrade seemed to go flawlessly.)

ESCs Configured as follows:

Pulse width zero throttle = 1050 us
Pulse width full throttle = 2000 us
Pulse width center = 1050 us
Pulse deadband = 20 us

Doodle Labs Mini OEM Mesh Rider (915 + 2.4)
UXV SROC Controller
Maxon EC69 Motors PN 725770
Maxon UAV-ESC 52/30 PN 654541

**OBSERVATIONS**

***OBSERVATION #1***

During startup (see 'PX4 STARTUP LOG' that follows), when PX4 attempts to detect the M0065 board, we expect to see a UID value, current FW version, and a hash value like this example from the forum topic 'VOXL 2 IO Board troubleshooting - Driver will not start' at https://forum.modalai.com/topic/3242/voxl-2-io-board-troubleshooting-driver-will-not-start/6:

```
INFO  [muorb] SLPI: VOXL2_IO: Detecting M0065 board...
INFO  [muorb] SLPI: VOXL2_IO: 	VOXL2_IO ID: 0
INFO  [muorb] SLPI: VOXL2_IO: 	Board Type : 35: ModalAi I/O Expander (M0065)
INFO  [muorb] SLPI: VOXL2_IO: 	Unique ID  : 0x4304296039364B560671FF36
INFO  [muorb] SLPI: VOXL2_IO: 	Firmware   : version    2, hash f94baad1
INFO  [muorb] SLPI: VOXL2_IO: 	Bootloader : version    0, hash 17147346*
INFO  [muorb] SLPI: VOXL2_IO: 	Reply time : 2584us
```
Instead our PX4 log indicates no version info response from VOXL2_IO and Driver initialization fails.:
```
INFO  [muorb] SLPI: VOXL2_IO: M0065 using external RC
INFO  [muorb] SLPI: VOXL2_IO: Driver starting
INFO  [uORB] Advertising remote topic sensor_baro
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_BAUD  : 921600
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC1 : 101
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC2 : 102
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC3 : 103
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC4 : 104
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC5 : 0
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC6 : 0
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC7 : 0
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC8 : 0
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_DIS   : 1000
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_MIN   : 1100
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_MAX   : 2000
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_CMIN  : 1050
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_CMAX  : 2000
INFO  [muorb] SLPI: VOXL2_IO: 
INFO  [muorb] SLPI: VOXL2_IO: Opening UART device 2, baud rate 921600
INFO  [muorb] SLPI: VOXL2_IO: Successfully opened UART device
INFO  [muorb] SLPI: VOXL2_IO: Detecting M0065 board...
ERROR [muorb] SLPI: VOXL2_IO: Board version info response timeout (2 retries left)
ERROR [muorb] SLPI: VOXL2_IO: Board version info response timeout (1 retries left)
ERROR [muorb] SLPI: VOXL2_IO: Board version info response timeout (0 retries left)
ERROR [muorb] SLPI: VOXL2_IO: Could not detect the board
ERROR [muorb] SLPI: VOXL2_IO: Driver initialization failed. Exiting
INFO  [muorb] SLPI: VOXL2_IO: Closing uart port
ERROR [muorb] SLPI: Task start failed (-1)
ERROR [muorb] SLPI: Failed to execute command: voxl2_io start -e
INFO  [qshell] cmd returned with: -1
INFO  [qshell] qshell return value timestamp: 90708410, local time: 90709998
ERROR [qshell] Command failed
```
Note also that when we execute the voxl-2-io 'spin' utility (see included 'SPIN LOG'), it's log does indicate successful detection of an ESC, but lacks UID, hash, and FW version is '1'. It looks to us like it isn't responding:
```
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 921600
ID         : 0
Board      : version 35: ModalAi I/O Expander (M0065)
UID        : 0x000000000000000000000000
Firmware   : version    1, hash 
Bootloader : version    0, hash
```

**FULL PX4 STARTUP LOG**
```
voxl2:/$ systemctl stop voxl-px4
voxl2:/$ voxl-px4 start -d
[INFO] Reading from /etc/modalai/voxl-px4.conf
Found DSP signature file
[INFO] Daemon mode enabled

*************************
AIRFRAME=MULTICOPTER
GPS=NONE
RC=EXTERNAL
ESC=VOXL2_IO_PWM_ESC
POWER MANAGER=NONE
AIRSPEED SENSOR=NONE
DISTANCE SENSOR=NONE
OSD=DISABLE
DAEMON_MODE=ENABLE
SENSOR_CAL=ACTUAL
ARTIFACT_MODE=DISABLE
EXTRA STEPS:
*************************

INFO  [px4] mlockall() enabled. PX4's virtual address space is locked into RAM.
INFO  [px4] assuming working directory is rootfs, no symlinks needed.
INFO  [muorb] Got muorb init command
Sending initialization request
Got topic data before configuration complete
Got topic data before configuration complete
Got topic data before configuration complete
Got topic data before configuration complete
Got topic data before configuration complete
Got topic data before configuration complete
Got topic data before configuration complete
Got topic data before configuration complete
Got topic data before configuration complete
Got topic data before configuration complete
Got topic data before configuration complete
Got topic data before configuration complete
Got topic data before configuration complete
INFO  [muorb] SLPI: muorb aggregator thread running
INFO  [muorb] muorb protobuf initalize method succeeded
INFO  [muorb] succesfully did ADVERTISE_TEST_TYPE
INFO  [muorb] SLPI: Creating pthread test_MUORB

INFO  [muorb] SLPI: Successfully created px4 task PX4_test_MUORB with tid 2097656
INFO  [muorb] succesfully did SUBSCRIBE_TEST_TYPE
INFO  [muorb] SLPI: Creating pthread test_MUORB

INFO  [muorb] SLPI: Successfully created px4 task PX4_test_MUORB with tid 2097655
INFO  [muorb] succesfully did TOPIC_TEST_TYPE
INFO  [muorb] SLPI: Creating pthread test_MUORB

INFO  [muorb] SLPI: Successfully created px4 task PX4_test_MUORB with tid 2097654
INFO  [muorb] SLPI: Creating pthread test_MUORB

INFO  [muorb] succesfully did UNSUBSCRIBE_TEST_TYPE
INFO  [muorb] SLPI: Successfully created px4 task PX4_test_MUORB with tid 2097653
INFO  [muorb] muorb test passed

______  __   __    ___ 
| ___ \ \ \ / /   /   |
| |_/ /  \ V /   / /| |
|  __/   /   \  / /_| |
| |     / /^\ \ \___  |
\_|     \/   \/     |_/

px4 starting.

INFO  [muorb] SLPI: Advertising remote topic log_message
INFO  [px4] startup script: /bin/sh /usr/bin/voxl-px4-start 0
INFO  [parameters] Starting param sync THREAD

*************************
AIRFRAME: MULTICOPTER
GPS: NONE
RC: EXTERNAL
ESC: VOXL2_IO_PWM_ESC
POWER MANAGER: NONE
AIRSPEED SENSOR: NONE
DISTANCE SENSOR: NONE
OSD: DISABLE
ARTIFACT_MODE: DISABLE
EXTRA STEPS:
	
*************************

Running on M0054
INFO  [muorb] SLPI: Starting param sync THREAD
INFO  [muorb] SLPI: before starting the qshell_entry task
INFO  [muorb] SLPI: Creating pthread qshell

INFO  [muorb] SLPI: Successfully created px4 task PX4_qshell with tid 2097652
INFO  [muorb] SLPI: qshell entry.....
INFO  [muorb] SLPI: after starting the qshell_entry task
INFO  [muorb] SLPI: Init app map initialized
INFO  [param] selected parameter default file /data/px4/param/parameters
INFO  [muorb] SLPI: Marking DeviceNode(parameter_client_reset_request) as advertised in process_remote_topic
INFO  [uORB] Marking DeviceNode(parameter_client_reset_response) as advertised in process_remote_topic
INFO  [muorb] SLPI: Advertising remote topic parameter_update
INFO  [muorb] SLPI: Marking DeviceNode(parameter_client_set_value_request) as advertised in process_remote_to
INFO  [uORB] Marking DeviceNode(parameter_server_set_used_request) as advertised in process_remote_topic
INFO  [muorb] SLPI: Marking DeviceNode(parameter_server_set_used_response) as advertised in process_remote_to
INFO  [uORB] Marking DeviceNode(parameter_client_set_value_response) as advertised in process_remote_topic
INFO  [parameters] BSON document size 3005 bytes, decoded 3005 bytes (INT32:35, FLOAT:103)
INFO  [logger] logger started (mode=all)
Starting IMU driver with no rotation
INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] SLPI: qshell gotten: icm42688p start -s
INFO  [muorb] SLPI:   arg0 = 'icm42688p'

INFO  [muorb] SLPI:   arg1 = 'start'

INFO  [muorb] SLPI:   arg2 = '-s'

INFO  [muorb] SLPI: *** SPI Device ID 0x26000a 2490378
INFO  [uORB] Advertising remote topic sensor_accel
INFO  [uORB] Advertising remote topic sensor_gyro
INFO  [qshell] Send cmd: 'icm42688p start -s'
INFO  [muorb] SLPI: ICM42688P::probe successful!
INFO  [muorb] SLPI: on SPI bus 1
INFO  [muorb] SLPI: icm42688p #0 on SPI bus 1
INFO  [muorb] SLPI: 

INFO  [muorb] SLPI: >>> ICM42688P this: b25ffd38
INFO  [muorb] SLPI: Ok executing command: icm42688p start -s
INFO  [uORB] Advertising remote topic qshell_retval
INFO  [muorb] SLPI: >>> ICM42688P this: b25ffd38
INFO  [qshell] qshell return value timestamp: 90293111, local time: 90297992
INFO  [muorb] SLPI: >>> ICM42688P this: b25ffd38
INFO  [muorb] SLPI: Register interrupt b214ec48 e61f670c b25ffd38
INFO  [uORB] Advertising remote topic sensor_gyro_fifo
INFO  [uORB] Advertising remote topic sensor_accel_fifo
INFO  [uORB] Advertising remote topic imu_server
INFO  [qshell] Send cmd: 'icp101xx start -I -b 5'
INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] SLPI: qshell gotten: icp101xx start -I -b 5
INFO  [muorb] SLPI:   arg0 = 'icp101xx'

INFO  [muorb] SLPI:   arg1 = 'start'

INFO  [muorb] SLPI:   arg2 = '-I'

INFO  [muorb] SLPI:   arg3 = '-b'

INFO  [muorb] SLPI:   arg4 = '5'

INFO  [muorb] SLPI: *** I2C Device ID 0xb76329 12018473
INFO  [muorb] SLPI: Set up I2C bus mutex for bus 5
INFO  [muorb] SLPI: icp101xx #0 on I2C bus 5
INFO  [muorb] SLPI:  address 0x63
INFO  [muorb] SLPI: 

INFO  [muorb] SLPI: Ok executing command: icp101xx start -I -b 5
INFO  [qshell] qshell return value timestamp: 90326507, local time: 90328104
Looking for qmc5883l magnetometer
INFO  [qshell] Send cmd: 'qmc5883l start -R 10 -X -b 1'
INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] SLPI: qshell gotten: qmc5883l start -R 10 -X -b 1
INFO  [muorb] SLPI:   arg0 = 'qmc5883l'

INFO  [muorb] SLPI:   arg1 = 'start'

INFO  [muorb] SLPI:   arg2 = '-R'

INFO  [muorb] SLPI:   arg3 = '10'

INFO  [muorb] SLPI:   arg4 = '-X'

INFO  [muorb] SLPI:   arg5 = '-b'

INFO  [muorb] SLPI:   arg6 = '1'

INFO  [muorb] SLPI: *** I2C Device ID 0x80d09 527625
INFO  [muorb] SLPI: Set up I2C bus mutex for bus 1
ERROR [muorb] SLPI: i2c probe failed
INFO  [muorb] SLPI: PX4_qshell: no instance started (no device on bus?)
ERROR [muorb] SLPI: Failed to execute command: qmc5883l start -R 10 -X -b 1
INFO  [qshell] cmd returned with: -1
INFO  [qshell] qshell return value timestamp: 90361561, local time: 90365409
ERROR [qshell] Command failed
Looking for ist8310 magnetometer
INFO  [qshell] Send cmd: 'ist8310 start -R 10 -X -b 1'
INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] SLPI: qshell gotten: ist8310 start -R 10 -X -b 1
INFO  [muorb] SLPI:   arg0 = 'ist8310'

INFO  [muorb] SLPI:   arg1 = 'start'

INFO  [muorb] SLPI:   arg2 = '-R'

INFO  [muorb] SLPI:   arg3 = '10'

INFO  [muorb] SLPI:   arg4 = '-X'

INFO  [muorb] SLPI:   arg5 = '-b'

INFO  [muorb] SLPI:   arg6 = '1'

INFO  [muorb] SLPI: *** I2C Device ID 0x60e09 396809
INFO  [muorb] SLPI: Set up I2C bus mutex for bus 1
ERROR [muorb] SLPI: i2c probe failed
INFO  [muorb] SLPI: PX4_qshell: no instance started (no device on bus?)
ERROR [muorb] SLPI: Failed to execute command: ist8310 start -R 10 -X -b 1
INFO  [qshell] cmd returned with: -1
INFO  [qshell] qshell return value timestamp: 90397222, local time: 90398475
ERROR [qshell] Command failed
Looking for ncp5623c RGB LED
INFO  [muorb] SLPI: >>> ICM42688P this: b25ffd38
INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] SLPI: qshell gotten: rgbled_ncp5623c start -X -b 1 -f 400 -a 56
INFO  [muorb] SLPI:   arg0 = 'rgbled_ncp5623c'

INFO  [muorb] SLPI:   arg1 = 'start'

INFO  [muorb] SLPI:   arg2 = '-X'

INFO  [muorb] SLPI:   arg3 = '-b'

INFO  [muorb] SLPI:   arg4 = '1'

INFO  [muorb] SLPI:   arg5 = '-f'

INFO  [muorb] SLPI:   arg6 = '400'

INFO  [muorb] SLPI:   arg7 = '-a'

INFO  [muorb] SLPI:   arg8 = '56'

INFO  [qshell] Send cmd: 'rgbled_ncp5623c start -X -b 1 -f 400 -a 56'
INFO  [muorb] SLPI: *** I2C Device ID 0x7b3809 8075273
INFO  [muorb] SLPI: Set up I2C bus mutex for bus 1
INFO  [muorb] SLPI: Set i2c address 0x38, fd 3
ERROR [muorb] SLPI: i2c probe failed
INFO  [muorb] SLPI: PX4_qshell: no instance started (no device on bus?)
ERROR [muorb] SLPI: Failed to execute command: rgbled_ncp5623c start -X -b 1 -f 400 -a 56
INFO  [qshell] cmd returned with: -1
INFO  [qshell] qshell return value timestamp: 90438912, local time: 90440578
ERROR [qshell] Command failed
Starting VOXL IO for PWM ESC without SBUS RC
INFO  [qshell] Send cmd: 'voxl2_io start -e'
INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] SLPI: qshell gotten: voxl2_io start -e
INFO  [muorb] SLPI:   arg0 = 'voxl2_io'

INFO  [muorb] SLPI:   arg1 = 'start'

INFO  [muorb] SLPI:   arg2 = '-e'

INFO  [uORB] Advertising remote topic actuator_outputs
INFO  [muorb] SLPI: VOXL2_IO: M0065 using external RC
INFO  [muorb] SLPI: VOXL2_IO: Driver starting
INFO  [uORB] Advertising remote topic sensor_baro
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_BAUD  : 921600
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC1 : 101
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC2 : 102
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC3 : 103
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC4 : 104
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC5 : 0
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC6 : 0
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC7 : 0
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_FUNC8 : 0
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_DIS   : 1000
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_MIN   : 1100
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_MAX   : 2000
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_CMIN  : 1050
INFO  [muorb] SLPI: VOXL2_IO: Params: VOXL2_IO_CMAX  : 2000
INFO  [muorb] SLPI: VOXL2_IO: 
INFO  [muorb] SLPI: VOXL2_IO: Opening UART device 2, baud rate 921600
INFO  [muorb] SLPI: VOXL2_IO: Successfully opened UART device
INFO  [muorb] SLPI: VOXL2_IO: Detecting M0065 board...
ERROR [muorb] SLPI: VOXL2_IO: Board version info response timeout (2 retries left)
ERROR [muorb] SLPI: VOXL2_IO: Board version info response timeout (1 retries left)
ERROR [muorb] SLPI: VOXL2_IO: Board version info response timeout (0 retries left)
ERROR [muorb] SLPI: VOXL2_IO: Could not detect the board
ERROR [muorb] SLPI: VOXL2_IO: Driver initialization failed. Exiting
INFO  [muorb] SLPI: VOXL2_IO: Closing uart port
ERROR [muorb] SLPI: Task start failed (-1)
ERROR [muorb] SLPI: Failed to execute command: voxl2_io start -e
INFO  [qshell] cmd returned with: -1
INFO  [qshell] qshell return value timestamp: 90708410, local time: 90709998
ERROR [qshell] Command failed
INFO  [qshell] Send cmd: 'sensors start'
INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] SLPI: qshell gotten: sensors start
INFO  [muorb] SLPI:   arg0 = 'sensors'

INFO  [muorb] SLPI:   arg1 = 'start'

INFO  [uORB] Advertising remote topic sensor_selection
INFO  [uORB] Advertising remote topic sensors_status_imu
INFO  [uORB] Advertising remote topic vehicle_acceleration
INFO  [uORB] Advertising remote topic vehicle_angular_velocity
INFO  [uORB] Advertising remote topic sensor_combined
INFO  [uORB] Advertising remote topic vehicle_air_data
INFO  [uORB] Advertising remote topic vehicle_gps_position
INFO  [uORB] Advertising remote topic vehicle_imu
INFO  [uORB] Advertising remote topic vehicle_imu_status
INFO  [muorb] SLPI: Ok executing command: sensors start
INFO  [qshell] qshell return value timestamp: 90880763, local time: 90883241
INFO  [qshell] Send cmd: 'ekf2 start'
INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] SLPI: qshell gotten: ekf2 start
INFO  [muorb] SLPI:   arg0 = 'ekf2'

INFO  [muorb] SLPI:   arg1 = 'start'

INFO  [uORB] Advertising remote topic sensors_status_baro
INFO  [uORB] Advertising remote topic vehicle_attitude
INFO  [uORB] Advertising remote topic vehicle_local_position
INFO  [uORB] Advertising remote topic estimator_event_flags
INFO  [uORB] Advertising remote topic estimator_innovation_test_ratios
INFO  [uORB] Advertising remote topic estimator_innovation_variances
INFO  [uORB] Advertising remote topic estimator_innovations
INFO  [uORB] Advertising remote topic estimator_sensor_bias
INFO  [uORB] Advertising remote topic estimator_states
INFO  [uORB] Advertising remote topic estimator_status_flags
INFO  [uORB] Advertising remote topic estimator_status
INFO  [muorb] SLPI: Ok executing command: ekf2 start
INFO  [uORB] Advertising remote topic ekf2_timestamps
INFO  [qshell] qshell return value timestamp: 91260100, local time: 91262420
INFO  [uORB] Advertising remote topic vehicle_odometry
INFO  [uORB] Advertising remote topic estimator_aid_src_baro_hgt
INFO  [uORB] Advertising remote topic estimator_aid_src_fake_pos
INFO  [uORB] Advertising remote topic estimator_aid_src_fake_hgt
INFO  [uORB] Advertising remote topic estimator_aid_src_gravity
INFO  [qshell] Send cmd: 'mc_pos_control start'
INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] SLPI: qshell gotten: mc_pos_control start
INFO  [muorb] SLPI:   arg0 = 'mc_pos_control'

INFO  [muorb] SLPI:   arg1 = 'start'

INFO  [uORB] Advertising remote topic takeoff_status
INFO  [muorb] SLPI: Ok executing command: mc_pos_control start
INFO  [qshell] qshell return value timestamp: 91371052, local time: 91372794
INFO  [qshell] Send cmd: 'mc_att_control start'
INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] SLPI: qshell gotten: mc_att_control start
INFO  [muorb] SLPI:   arg0 = 'mc_att_control'

INFO  [muorb] SLPI:   arg1 = 'start'

INFO  [muorb] SLPI: Ok executing command: mc_att_control start
INFO  [qshell] qshell return value timestamp: 91413593, local time: 91416091
INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] SLPI: qshell gotten: mc_rate_control start
INFO  [muorb] SLPI:   arg0 = 'mc_rate_control'

INFO  [muorb] SLPI:   arg1 = 'start'

INFO  [qshell] Send cmd: 'mc_rate_control start'
INFO  [uORB] Advertising remote topic rate_ctrl_status
INFO  [muorb] SLPI: Ok executing command: mc_rate_control start
INFO  [qshell] qshell return value timestamp: 91539655, local time: 91542694
INFO  [qshell] Send cmd: 'mc_hover_thrust_estimator start'
INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] SLPI: qshell gotten: mc_hover_thrust_estimator start
INFO  [muorb] SLPI:   arg0 = 'mc_hover_thrust_estimator'

INFO  [muorb] SLPI:   arg1 = 'start'

INFO  [muorb] SLPI: Ok executing command: mc_hover_thrust_estimator start
INFO  [qshell] qshell return value timestamp: 91585850, local time: 91587809
INFO  [qshell] Send cmd: 'mc_autotune_attitude_control start'
INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] SLPI: qshell gotten: mc_autotune_attitude_control start
INFO  [muorb] SLPI:   arg0 = 'mc_autotune_attitude_control'

INFO  [muorb] SLPI:   arg1 = 'start'

INFO  [uORB] Advertising remote topic autotune_attitude_control_status
INFO  [muorb] SLPI: Ok executing command: mc_autotune_attitude_control start
INFO  [qshell] qshell return value timestamp: 91631578, local time: 91634001
INFO  [qshell] Send cmd: 'land_detector start multicopter'
INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] SLPI: qshell gotten: land_detector start multicopter
INFO  [muorb] SLPI:   arg0 = 'land_detector'

INFO  [muorb] SLPI:   arg1 = 'start'

INFO  [muorb] SLPI:   arg2 = 'multicopter'

INFO  [muorb] SLPI: Ok executing command: land_detector start multicopter
INFO  [qshell] qshell return value timestamp: 91677358, local time: 91679935
INFO  [uORB] Advertising remote topic vehicle_land_detected
INFO  [qshell] Send cmd: 'manual_control start'
INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] SLPI: qshell gotten: manual_control start
INFO  [muorb] SLPI:   arg0 = 'manual_control'

INFO  [muorb] SLPI:   arg1 = 'start'

INFO  [muorb] SLPI: Ok executing command: manual_control start
INFO  [qshell] qshell return value timestamp: 91741340, local time: 91744122
INFO  [uORB] Advertising remote topic manual_control_setpoint
INFO  [qshell] Send cmd: 'control_allocator start'
INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] SLPI: qshell gotten: control_allocator start
INFO  [muorb] SLPI:   arg0 = 'control_allocator'

INFO  [muorb] SLPI:   arg1 = 'start'

INFO  [uORB] Advertising remote topic control_allocator_status
INFO  [uORB] Marking DeviceNode(control_allocator_status) as advertised in process_remote_topic
INFO  [uORB] Advertising remote topic actuator_motors
INFO  [uORB] Advertising remote topic actuator_servos
INFO  [uORB] Advertising remote topic actuator_servos_trim
INFO  [muorb] SLPI: Ok executing command: control_allocator start
INFO  [qshell] qshell return value timestamp: 92109870, local time: 92111836
INFO  [qshell] Send cmd: 'load_mon start'
INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] SLPI: qshell gotten: load_mon start
INFO  [muorb] SLPI:   arg0 = 'load_mon'

INFO  [muorb] SLPI:   arg1 = 'start'

INFO  [muorb] SLPI: Ok executing command: load_mon start
INFO  [uORB] Advertising remote topic cpuload
INFO  [qshell] qshell return value timestamp: 92145480, local time: 92148536
INFO  [qshell] Send cmd: 'commander start'
INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] SLPI: qshell gotten: commander start
INFO  [muorb] SLPI:   arg0 = 'commander'

INFO  [muorb] SLPI:   arg1 = 'start'

INFO  [muorb] SLPI: Creating pthread commander

INFO  [muorb] SLPI: Successfully created px4 task PX4_commander with tid 2097641
INFO  [uORB] Advertising remote topic led_control
INFO  [muorb] SLPI: LED: open /dev/led0 failed (22)
INFO  [uORB] Advertising remote topic tune_control
INFO  [muorb] SLPI: Ok executing command: commander start
INFO  [qshell] qshell return value timestamp: 92586069, local time: 92586898
INFO  [uORB] Advertising remote topic event
INFO  [uORB] Advertising remote topic health_report
INFO  [uORB] Advertising remote topic failsafe_flags
INFO  [uORB] Advertising remote topic actuator_armed
INFO  [uORB] Advertising remote topic vehicle_control_mode
INFO  [uORB] Advertising remote topic vehicle_thrust_setpoint
INFO  [uORB] Advertising remote topic vehicle_torque_setpoint
INFO  [uORB] Advertising remote topic vehicle_status
INFO  [uORB] Advertising remote topic failure_detector_status
INFO  [uORB] Advertising remote topic vehicle_attitude_setpoint
INFO  [uORB] Advertising remote topic vehicle_rates_setpoint
INFO  [qshell] Send cmd: 'flight_mode_manager start'
INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] SLPI: qshell gotten: flight_mode_manager start
INFO  [muorb] SLPI:   arg0 = 'flight_mode_manager'

INFO  [muorb] SLPI:   arg1 = 'start'

INFO  [uORB] Advertising remote topic vehicle_command
INFO  [muorb] SLPI: Ok executing command: flight_mode_manager start
INFO  [qshell] qshell return value timestamp: 92700683, local time: 92703821
INFO  [dataman] data manager file '/data/px4/dataman' size is 7866640 bytes
INFO  [muorb] SLPI: Advertising remote topic transponder_report
INFO  [muorb] SLPI: Advertising remote topic rtl_time_estimate
INFO  [muorb] SLPI: Advertising remote topic position_setpoint_triplet
INFO  [modal_io_bridge] Modal IO Bridge driver starting
INFO  [mavlink] mode: Onboard, data rate: 100000 B/s on udp port 14556 remote port 14557
INFO  [muorb] SLPI: Advertising remote topic telemetry_status
INFO  [mavlink] partner IP: 127.0.0.1
INFO  [muorb] SLPI: Advertising remote topic vehicle_visual_odometry
INFO  [muorb] SLPI: Advertising remote topic offboard_control_mode
INFO  [muorb] SLPI: Advertising remote topic obstacle_distance
INFO  [uORB] Advertising remote topic estimator_aid_src_ev_hgt
INFO  [uORB] Advertising remote topic estimator_aid_src_ev_pos
INFO  [uORB] Advertising remote topic estimator_aid_src_ev_vel
INFO  [uORB] Advertising remote topic estimator_aid_src_ev_yaw
INFO  [muorb] SLPI: Advertising remote topic timesync_status
INFO  [muorb] SLPI: Marking DeviceNode(vehicle_command_ack) as advertised in process_remote_topic
INFO  [mavlink] mode: Normal, data rate: 100000 B/s on udp port 14558 remote port 14559
INFO  [muorb] SLPI: Marking DeviceNode(telemetry_status) as advertised in process_remote_topic
INFO  [uORB] Advertising remote topic actuator_controls_status_0
INFO  [mavlink] MAVLink only on localhost (set param MAV_{i}_BROADCAST = 1 to enable network)
INFO  [px4] Startup script returned successfully
```
**APPENDED TO PX4 STARTUP LOG UPON STARTING VOXL2-IO (see separate 'VOXL2-IO LOG' that follows)**
```
INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] SLPI: qshell gotten: voxl2-io start
ERROR [muorb] SLPI: Command voxl2-io not found
ERROR [muorb] SLPI: Failed to execute command: voxl2-io start
And the VOXL2-IO LOG:

voxl2:/$ px4-qshell voxl2-io start
INFO  [qshell] Send cmd: 'voxl2-io start'
INFO  [qshell] cmd returned with: 1
INFO  [qshell] qshell return value timestamp: 300755910, local time: 300757780
ERROR [qshell] Command failed
```
**OBSERVATION #2**

When running the Spin utility in voxl-2-io (See 'SPIN LOG' that follows), we expect all motors to spin (is this wrong?). Instead, Motor1 is driven at ~1100 μs and all others at only ~1000 μs. We have measured this on an oscilloscope directly from J1 on VOXL2 IO Board, and have observed the same from Maxon EPOS ESC utility:

Observed on ESC1:
Frequency actual value = 400 Hz
Pulse width actual value = 1101 μs
Throttle level actual value = 3%
Target Velocity: 217 RPM
Velocity Demand Value (Output): 300 RPM
Velocity Actual Value Avg (Output): 300 RPM

Observed on ESC2:
Frequency actual value = 400 Hz
Pulse width actual value = 999 μs
Throttle level actual value = 0%
Target Velocity: 0 RPM
Velocity Demand Value (Output): 0 RPM
Velocity Actual Value Avg (Output): 0 RPM

Observed on ESC3:
Frequency actual value = 400 Hz
Pulse width actual value = 999 μs
Throttle level actual value = 0%
Target Velocity: 0 RPM
Velocity Demand Value (Output): 0 RPM
Velocity Actual Value Avg (Output): 0 RPM

Observed on ESC4:
Frequency actual value = 400 Hz
Pulse width actual value = 999 μs
Throttle level actual value = 0%
Target Velocity: 0 RPM
Velocity Demand Value (Output): 0 RPM
Velocity Actual Value Avg (Output): 0 RPM

**And, the SPIN LOG:**
```
enabling bridge
detected voxl-px4 is enabled
Removed /etc/systemd/system/multi-user.target.wants/voxl-px4.service.
detected voxl-px4 is running, stopping it now
bridge enabled
[INFO] Detected VOXL2 IO on default port (2).
Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00) 
[GCC 8.4.0]
Found voxl-esc tools bin version: 1.9
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000
Sending library name request: libslpi_qrb5165_io.so
Sending initialization request
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 250000
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 921600
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 921600
	ID         : 0
	Board      : version 35: ModalAi I/O Expander (M0065)
	UID        : 0x000000000000000000000000
	Firmware   : version    1, hash 
	Bootloader : version    0, hash 

---------------------

WARNING: skipping user prompt to start the test due to override

[0.019] (0) RPM: 0, PWR: 0, VOLTAGE: 0.000V, TEMPERATURE: 0.00C, CURRENT: 0.000A
[0.039] (0) RPM: 0, PWR: 0, VOLTAGE: 0.000V, TEMPERATURE: 0.00C, CURRENT: 0.000A
[0.059] (0) RPM: 0, PWR: 0, VOLTAGE: 0.000V, TEMPERATURE: 0.00C, CURRENT: 0.000A
[0.079] (0) RPM: 0, PWR: 0, VOLTAGE: 0.000V, TEMPERATURE: 0.00C, CURRENT: 0.000A
--- CUT FOR BREVITY ---
[4.940] (0) RPM: 0, PWR: 0, VOLTAGE: 0.000V, TEMPERATURE: 0.00C, CURRENT: 0.000A
[4.960] (0) RPM: 0, PWR: 0, VOLTAGE: 0.000V, TEMPERATURE: 0.00C, CURRENT: 0.000A
[4.980] (0) RPM: 0, PWR: 0, VOLTAGE: 0.000V, TEMPERATURE: 0.00C, CURRENT: 0.000A
[5.000] (0) RPM: 0, PWR: 0, VOLTAGE: 0.000V, TEMPERATURE: 0.00C, CURRENT: 0.000A
Finished!
[4.999678] TX=2508, RX=4 packets, RX CRC ERRORS=0
Average RPMs: 0.00 0.00 0.00 0.00
Average RPM deviation between ESCs : 0.00
Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00) 
[GCC 8.4.0]
Found voxl-esc tools bin version: 1.9
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000
Sending library name request: libslpi_qrb5165_io.so
Sending initialization request
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 250000
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 921600
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 921600
	ID         : 0
	Board      : version 35: ModalAi I/O Expander (M0065)
	UID        : 0x000000000000000000000000
	Firmware   : version    1, hash 
	Bootloader : version    0, hash 

---------------------

ERROR: Specified ESC ID not found--exiting.
Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00) 
[GCC 8.4.0]
Found voxl-esc tools bin version: 1.9
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000
Sending library name request: libslpi_qrb5165_io.so
Sending initialization request
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 250000
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 921600
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 921600
	ID         : 0
	Board      : version 35: ModalAi I/O Expander (M0065)
	UID        : 0x000000000000000000000000
	Firmware   : version    1, hash 
	Bootloader : version    0, hash 

---------------------

ERROR: Specified ESC ID not found--exiting.
Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00) 
[GCC 8.4.0]
Found voxl-esc tools bin version: 1.9
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000
Sending library name request: libslpi_qrb5165_io.so
Sending initialization request
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 250000
INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 921600
INFO: ESC(s) detected on port: /dev/slpi-uart-2, baud rate: 921600
	ID         : 0
	Board      : version 35: ModalAi I/O Expander (M0065)
	UID        : 0x000000000000000000000000
	Firmware   : version    1, hash 
	Bootloader : version    0, hash 

---------------------

ERROR: Specified ESC ID not found--exiting.
disabling bridge
re-enabling voxl-px4
Created symlink /etc/systemd/system/multi-user.target.wants/voxl-px4.service → /etc/systemd/system/voxl-px4.service.
restarting voxl-px4
bridge disabled
DONE
```

## Reply by Denver Hopkins · 2025-01-21 22:19:40 UTC

@Moderator @modaltb - Anyone have any suggestions here? We've ordered another IO Board and are waiting for it to arrive. But hate to wait more than a week to end up in the same place. Appreciate any insights you may have. Something is obviously in our blindspot (or we're dealing with a bad board), but in my experience, blindspots are more likely than bad hardware.

## Reply by Alex Kushleyev (ModalAI staff) · 2025-01-22 16:46:46 UTC (in reply to Denver Hopkins)

@Denver-Hopkins,

It looks like your io board has outdated firmware (version 1). Latest is version 2. Please follow the firmware update guide here : https://docs.modalai.com/voxl2-io-firmware/#how-to-update-firmware and let us know whether that fixes your issue.

Alex

## Reply by Denver Hopkins · 2025-01-22 19:18:18 UTC (in reply to Alex Kushleyev)

@Alex-Kushleyev THANK YOU for your suggestion. We have done that-- now three times-- and each time with apparent (if uncertain) success. Each time, the procedure worked exactly as depicted in the video instructions and ended with 'Firmware successfully updated'. The only thing we notice that seemed suspect is the blue LED flash pattern on boot. It does not seem consistent with the v2 pattern in that the v2 pattern appears to have a break between the initial rapid flash and the first of two long flashes. After updating firmware on our board, the pattern doesn't change from what it has always done-- the initial rapid flash that changes to the first long flash with no break in between. (I realize a verbal description of the flash pattern is less than ideal.)

We are expecting delivery of a new VOXL2 IO Board today. Ideally, it will have the latest firmware on it already. If it does not, we will update it also and see whether it resolves the issue.

Thanks again for your suggestion!

Denver

## Reply by Alex Kushleyev (ModalAI staff) · 2025-01-22 21:26:39 UTC (in reply to Denver Hopkins)

@Denver-Hopkins , can you please confirm the name of the firmware file that you are loading to M0065 board? (and where you get it from)

## Reply by Denver Hopkins · 2025-01-22 23:16:54 UTC (in reply to Alex Kushleyev)

@Alex-Kushleyev - Thanks for asking. I was just updating this thread when I saw your question. It looks like we may have been flashing with the old firmware.

Instructions on the page titled 'VOXL 2 IO Firmware / Bootloader' (https://docs.modalai.com/voxl2-io-firmware/) state under the heading 'Getting New Firmware':

"New firmware will ship with VOXL SDK updates and VOXL 2 command line tools will be able to update FW.
Additionally, FW files may be hosted on the public downloads page."

We downloaded the latest VOXL 2 Platform Release (VOXL2 SDK 1.4.0, voxl2_SDK_1.4.0.tar.gz) from https://developer.modalai.com/asset/2 and could not find it in that download. 

So we checked the 'public downloads' page (https://downloads.modalai.com/) as also directed by the instructions above. There, we selected the category 'Miscellaneous' (https://developer.modalai.com/asset/7) and found only this firmware for the VOXL2 IO board:

VOXL2 IO FW v1_35_58c82813	voxl2_io_firmware_m0065_v1_35_58c82813.bin	12/4/2023

It appears to be a version 1 binary. Can you provide a link that will get us to the version 2 binary?

NOTE ALSO: Today we received a replacement VOXL 2 IO board that we ordered in case the one we had was bad. Before flashing it, we installed it and started PX4. At least with the new board, PX4 is able to interrogate the board and determine its UID and firmware version. That's better than what we have been experiencing (no response at all from the IO Board). It now looks like even the new board has v1 firmware and must be updated. We are prepared to update it now, but will not until we are sure we have the latest (v2) firmware.

![Screenshot from 2025-01-22 16-27-04.png](https://forum.modalai.com/assets/uploads/files/1737587802622-screenshot-from-2025-01-22-16-27-04.png) 

Thanks for your help! We've made more meaningful progress in one day than we have the last week, and we are grateful.

Denver

## Reply by Alex Kushleyev (ModalAI staff) · 2025-01-22 23:25:57 UTC (in reply to Denver Hopkins)

@Denver-Hopkins ,

The latest voxl2 io firmware can be found in the voxl2-io package. either:
- https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl2-io/-/tree/master/voxl2-io-tools/firmware?ref_type=heads
- on voxl2 : /usr/share/modalai/voxl2-io-tools/firmware/modalai_m0065_firmware_v0_2_RC1_f94baad1.bin

(even though on gitlab the commit says "adding test firmware", it is actually stable for many months now).

You should update both of your voxl2-io boards (M0065), it seems the one that was just shipped to you had older firmware, but that is ok, since it's easy to update.

Please try :)

Alex

## Reply by Denver Hopkins · 2025-01-23 17:58:02 UTC (in reply to Alex Kushleyev)

@Alex-Kushleyev We updated the firmware on the new IO Board to v2 and the PX4 startup log now reflects the correct firmware version. Thank you for the links.

We will update the FW on the original board also to see if that resolves its anomalous behavior, but since it wasn't reporting ANY firmware version, we don't know what to expect. In any case, this is progress that we are happy to have. Will let you know how it goes.

Thanks for your help!
Denver

## Reply by Alex Kushleyev (ModalAI staff) · 2025-01-24 21:05:21 UTC (in reply to Denver Hopkins)

@Denver-Hopkins ,  great to hear! I think your other board probably has even older firmware, but the fact that `voxl2-io-spin` utility detected the board, it should be upgradable to the latest firmware using the procedure that you already followed.

Alex

## Reply by Denver Hopkins · 2025-01-27 14:28:29 UTC (in reply to Alex Kushleyev)

@Alex-Kushleyev The new board works well now after updating the firmware. We'll also update the original board soon and see if that resolves the issue with it, too. Thanks for your help!
