# VOXL2 J19 QUP3

Source: https://forum.modalai.com/topic/4919/voxl2-j19-qup3
Category: General Questions (https://forum.modalai.com/category/2/general-questions)
Posted: 2025-12-11 20:25:48 UTC by voxltester
Replies: 20 · Views: 2664

## voxltester · 2025-12-11 20:25:48 UTC

Hi,
I connected Lightware LW20/C on one of the I2C port on VOXL2 J19.
It is QUP3, and the pins I used are
```
7	I2C3 SDA 3P3V	slpi_proc, SSC_QUP3
8	I2C3 SCL 3P3V	slpi_proc, SSC_QUP3
```
and power & ground.
I also installed a customized voxl-px4 which will start `lightware_laser_i2c` with the I2C address `0x66`.
On VOXL2, I edited `voxl-px4.conf` file by adding `DISTANCE_SENSOR=LIGHTWARE_SF000`.
However, I cannot see any parameter regarding rangefinder... like `SENS_EN_SF1XX`.

I have done using LW20/C with UART connection successfully, but I2C does not work..
Can anyone give me any advise to use it via I2C?

## Reply by Eric Katzfey (ModalAI staff) · 2025-12-12 15:36:21 UTC

@voxltester That is not a normal option to choose via voxl-px4.conf. You will need to hand modify the startup script `/usr/bin/voxl-px4-start` to properly start the driver in i2c mode. Use option `-b 4` to select that i2c bus.

## Reply by voxltester · 2025-12-22 17:20:10 UTC (in reply to Eric Katzfey)

@Eric-Katzfey 

Hi, Eric.
I tried
```
qshell lightware_laser_i2c start -a 0x66 # I2C address 102
```
it did not work..

So are you meaning
```
qshell lightware_laser_serial start -b 4
```
or
```
qshell lightware_laser_i2c start -b 4
```
?

## Reply by Eric Katzfey (ModalAI staff) · 2025-12-22 20:15:38 UTC (in reply to voxltester)

@voxltester I would try `qshell lightware_laser_i2c start -b 4`

## Reply by voxltester · 2025-12-23 17:26:39 UTC (in reply to Eric Katzfey)

@Eric-Katzfey 
Eric, this is not working...

Please refer to the driver for i2c....
https://github.com/modalai/px4-firmware/blob/main/src/drivers/distance_sensor/lightware_laser_i2c/lightware_laser_i2c.cpp

Default i2c address is defined `0x66` (102) in this code.
I am wondering what is the i2c address of the `VOXL2 J19 - QUP3` port.

I am not familiar with the above cpp driver code... could you please have a look the code and teach me how to enable the i2c connection for the lightware rangefinder?

Thank you in advance....

## Reply by Eric Katzfey (ModalAI staff) · 2025-12-23 17:41:44 UTC (in reply to voxltester)

@voxltester We have never used the device that you are connecting so I am only offering suggestions to help out. When speaking of i2c addresses it is related to the device being attached to the bus, not the bus itself. You can attach multiple i2c devices to the same i2c bus if they have different addresses. But, there are multiple i2c buses to choose from. So, address 0x66 (which is default for that device and doesn't need to be specified on the command line) is for the device and port 4 specifies which i2c bus it is connected to. Also, please look at this file: https://github.com/modalai/px4-firmware/blob/main/src/drivers/distance_sensor/lightware_laser_i2c/parameters.c. There are 2 parameters that need to be set properly for the driver to work. If the default values are not correct then you will need to set them accordingly. For SENS_EN_SF1XX it should be set to 6 for LW20/c.

## Reply by voxltester · 2025-12-23 17:50:45 UTC (in reply to Eric Katzfey)

@Eric-Katzfey 
Understood. I just figured out address and bus. I am sorry for disturbing you for the basic concept.

Now, I am trying to run it with `SENS_EN_SF1XX=6`, the command in `px4-start` is just `qshell lightware_laser_i2c start`.

By the way, I am wondering where the `bus` info is described in the driver cpp file. Should I change the code? Because `lightware_laser_i2c` accepts only `R` as an option..

## Reply by Eric Katzfey (ModalAI staff) · 2025-12-23 17:57:49 UTC (in reply to voxltester)

@voxltester It's all done in the base class. See: https://github.com/modalai/px4-firmware/blob/main/platforms/common/i2c_spi_buses.cpp

## Reply by voxltester · 2025-12-23 19:27:54 UTC (in reply to Eric Katzfey)

@Eric-Katzfey 
the versions of px4 are different...
I am git clone from https://gitlab.com/voxl-public/voxl-sdk/services/voxl-px4
in which there is only one parameter in https://github.com/modalai/px4-firmware/tree/0a47ec5d8650f4e97f1eb929405df5dcdb91989f/src/drivers/distance_sensor/lightware_laser_i2c

Anyway, `qshell lightware_laser_i2c start` is not working with `I2C port on VOXL2 J19 - QUP3`

## Reply by Eric Katzfey (ModalAI staff) · 2025-12-23 21:26:13 UTC (in reply to voxltester)

@voxltester Why are you not adding `-b 4`?

## Reply by voxltester · 2026-01-01 04:40:07 UTC (in reply to Eric Katzfey)

@Eric-Katzfey 
Sorry for the slow response.
`qshell lightware_laser_i2c start -b 4`?
No. Not working.

Please see
https://github.com/modalai/px4-firmware/blob/f18864f2e6460e4d2d3d1572d09ee09028c63789/src/drivers/distance_sensor/lightware_laser_i2c/lightware_laser_i2c.cpp
I do not think the `-b` option is not implemented in the driver source code.

Can you confirming that `-b 4` is for `I2C port on VOXL2 J19 - QUP3`? (https://docs.modalai.com/voxl2-connectors/#j19---external-sensors-2x-uart-2x-i2c)
I am trying to modify the driver code to have the bus information.

## Reply by Eric Katzfey (ModalAI staff) · 2026-01-01 17:24:40 UTC (in reply to voxltester)

@voxltester I tried to explain this in one of my previous responses. Let me add more detail. lightware_laser_i2c.cpp is C++ code. The class LightwareLaser has a couple of base classes. One of them is I2CSPIDriver, so it "inherits" the functionality of that class. That class is implemented in i2c_spi_buses.cpp. It uses BusCLIArguments to parse the command line options. That's where the `-b` option is dealt with.

## Reply by Eric Katzfey (ModalAI staff) · 2026-01-01 17:26:55 UTC (in reply to voxltester)

@voxltester Yes, bus 4 corresponds to pins 7 and 8 on J19. I would put an oscilloscope on the data pin and see if you detect any activity when you start the driver to verify.

## Reply by Eric Katzfey (ModalAI staff) · 2026-01-01 17:43:47 UTC (in reply to voxltester)

@voxltester And, in general, for all software engineers out there here is a helpful tip. ModalAI is not affiliated with Anthropic in any way but I do want to highlight their Claude Code tool. It can really help you not just write code, but to understand code that is already there. So, for example, in this post there is a question about how the `-b` option is parsed. It's a bit complicated how all of the pieces fit together but if you were to ask Claude this question: "I'm using the device driver in the file lightware_laser_i2c.cpp. I was told that the LightwareLaser class can take the command line option -b to specify the i2c bus number using the start command. Can you show me where in the code the -b option is parsed?". Claude will then give you this answer: 
```
The -b option is not parsed directly in this file. Looking at the code:

  At line 450, the custom option parsing only handles -R for rotation:
  while ((ch = cli.getOpt(argc, argv, "R:")) != EOF) {
      switch (ch) {
      case 'R':
          cli.rotation = (Rotation)atoi(cli.optArg());
          break;
      }
  }

  The -b option (for I2C bus number) is handled automatically by the BusCLIArguments class, which is instantiated at line 445:
  BusCLIArguments cli{true, false};

  This class is included from <px4_platform_common/i2c_spi_buses.h> (line 47). The cli.getOpt() method internally processes standard I2C/SPI options like -b (bus), -a (address), etc., before returning custom options like -R to this driver's switch statement.

  If you want to see where -b is actually parsed, you'd need to look at the BusCLIArguments class implementation in the PX4 platform common library:

  src/lib/drivers/device/posix/i2c_spi_buses.cpp
  or
  platforms/common/i2c_spi_buses.cpp

  The PRINT_MODULE_USAGE_PARAMS_I2C_SPI_DRIVER(true, false) call at line 435 documents that this driver accepts I2C options (including -b), but the actual parsing is abstracted away in the shared bus infrastructure.
```

## Reply by voxltester · 2026-01-05 21:47:14 UTC (in reply to Eric Katzfey)

@Eric-Katzfey 
Thank you for the info...

I figured out the connection cannot be detected on the port at all..

```
 $ i2cdetect -y -r 4

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f

00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 

10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 

20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 

30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 

40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 

50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 

60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 

70: -- -- -- -- -- -- -- --  
```

FYI,
```
pxh> lightware_laser_i2c start -b 4
ERROR [SPI_I2C] need to specify a bus type

### Description

I2C bus driver for Lightware SFxx series LIDAR rangefinders: SF10/a, SF10/b, SF10/c, SF11/c, SF/LW20.

Setup
Usage: lightware_laser_i2c <command> [arguments...]
 Commands:

   start
     [-I]        Internal I2C bus(es)
     [-X]        External I2C bus(es)
     [-b <val>]  board-specific bus (default=all) (external SPI: n-th bus (default=1))
     [-f <val>]  bus frequency in kHz
     [-q]        quiet startup (no message if no device found)
     [-a <val>]  I2C address
                 default: 102
     [-R <val>]  Sensor rotation - downward facing by default
                 default: 25

   stop

   status        print status info
Command 'lightware_laser_i2c' failed, returned -1.
pxh> lightware_laser_i2c start -X -b 4
WARN  [SPI_I2C] mavlink_shell: no instance started (no device on bus?)
Command 'lightware_laser_i2c' failed, returned -1.
```

## Reply by Eric Katzfey (ModalAI staff) · 2026-01-06 00:12:32 UTC (in reply to voxltester)

@voxltester i2cdetect is looking for i2c ports on the apps processor so it isn't useful for this where we are trying to use DSP i2c ports. It shows an error message. Can you add the `-X` option to see if that resolves that error condition?

## Reply by voxltester · 2026-01-06 16:17:06 UTC (in reply to Eric Katzfey)

@Eric-Katzfey 
Isn't this I2C (J19 7&8) APP I2C or DPS I2C?
```
7  I2C3 SDA 3P3V   slpi_proc, SSC_QUP3
8  I2C3 SCL 3P3V   slpi_proc, SSC_QUP3
```
Is it possible to access DPS I2C from PX4?

Please see the outputs of the -X and -I options.

```
pxh> lightware_laser_i2c start -X -b 4
WARN  [SPI_I2C] UnknownApp: no instance started (no device on bus?)
Command 'lightware_laser_i2c' failed, returned -1.
```
```
pxh> lightware_laser_i2c start -I -b 4
WARN  [SPI_I2C] UnknownApp: no instance started (no device on bus?)
Command 'lightware_laser_i2c' failed, returned -1.
```

FYI, the following is an initialization of the VOXL-PX4.

```
voxl2:~$ voxl-px4 -d
[INFO] Reading from /etc/modalai/voxl-px4.conf
Found DSP signature file
[INFO] Disabling daemon mode

*************************
AIRFRAME=MULTICOPTER
GPS=AUTODETECT
RC=GHST
ESC=VOXL_ESC
POWER MANAGER=NONE
AIRSPEED SENSOR=NONE
DISTANCE SENSOR=LIGHTWARE_SF000
OSD=DISABLE
DAEMON_MODE=DISABLE
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] [modules__muorb__slpi] muorb aggregator thread running
INFO  [muorb] [modules__muorb__slpi] muorb keepalive thread running
INFO  [muorb] muorb protobuf initalize method succeeded
INFO  [muorb] succesfully did ADVERTISE_TEST_TYPE
INFO  [muorb] [tasks] Creating pthread test_MUORB
INFO  [muorb] [tasks] Successfully created px4 task PX4_test_MUORB with tid 2097656
INFO  [muorb] [tasks] Creating pthread test_MUORB
INFO  [muorb] [tasks] Successfully created px4 task PX4_test_MUORB with tid 2097655
INFO  [muorb] succesfully did SUBSCRIBE_TEST_TYPE
INFO  [muorb] succesfully did TOPIC_TEST_TYPE
INFO  [muorb] [tasks] Creating pthread test_MUORB
INFO  [muorb] [tasks] Successfully created px4 task PX4_test_MUORB with tid 2097654
INFO  [muorb] succesfully did UNSUBSCRIBE_TEST_TYPE
INFO  [muorb] [tasks] Creating pthread test_MUORB
INFO  [muorb] [tasks] Successfully created px4 task PX4_test_MUORB with tid 2097653
INFO  [muorb] muorb test passed

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

px4 starting.

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

*************************
AIRFRAME: MULTICOPTER
GPS: AUTODETECT
RC: GHST
ESC: VOXL_ESC
POWER MANAGER: NONE
AIRSPEED SENSOR: NONE
DISTANCE SENSOR: LIGHTWARE_SF000
OSD: DISABLE
ARTIFACT_MODE: DISABLE
EXTRA STEPS:
	
*************************

INFO  [muorb] [parameters] Starting param sync THREAD
Running on M0054
INFO  [muorb] [qshell] before starting the qshell_entry task
INFO  [muorb] [tasks] Creating pthread qshell
INFO  [muorb] [tasks] Successfully created px4 task PX4_qshell with tid 2097652
INFO  [muorb] [qshell] qshell entry.....
INFO  [muorb] [qshell] after starting the qshell_entry task
INFO  [muorb] [qshell] Init app map initialized
INFO  [param] selected parameter default file /data/px4/param/parameters
INFO  [muorb] [uORB] 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] [uORB] Advertising remote topic parameter_update
INFO  [muorb] [uORB] Marking DeviceNode(parameter_client_set_value_request) as advertised in process_remote_t
INFO  [uORB] Marking DeviceNode(parameter_server_set_used_request) as advertised in process_remote_topic
INFO  [muorb] [uORB] Marking DeviceNode(parameter_server_set_used_response) as advertised in process_remote_t
INFO  [uORB] Marking DeviceNode(parameter_client_set_value_response) as advertised in process_remote_topic
INFO  [parameters] BSON document size 3307 bytes, decoded 3307 bytes (INT32:44, FLOAT:109)
Starting IMU driver with no rotation
INFO  [qshell] Send cmd: 'icm42688p start -s'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: icm42688p start -s
INFO  [muorb] [qshell]   arg0 = 'icm42688p'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [muorb] [qshell]   arg2 = '-s'
INFO  [muorb] [drivers__device] *** SPI Device ID 0x26000a 2490378
INFO  [uORB] Advertising remote topic sensor_accel
INFO  [uORB] Advertising remote topic sensor_gyro
INFO  [muorb] [icm42688p] ICM42688P::probe successful!
INFO  [muorb] [drivers__device] on SPI bus 1
INFO  [muorb] icm42688p #0 on SPI bus 1
INFO  [muorb] 

INFO  [muorb] [icm42688p] >>> ICM42688P this: b26024d8
INFO  [muorb] [qshell] Ok executing command: icm42688p start -s
INFO  [uORB] Advertising remote topic qshell_retval
INFO  [muorb] [icm42688p] >>> ICM42688P this: b26024d8
INFO  [qshell] qshell return value timestamp: 83014023, local time: 83018955
Looking for external DPS368 barometer
INFO  [muorb] [icm42688p] >>> ICM42688P this: b26024d8
INFO  [muorb] [drivers__device] Register interrupt b214f094 e612a80c b26024d8
INFO  [uORB] Advertising remote topic sensor_gyro_fifo
INFO  [uORB] Advertising remote topic sensor_accel_fifo
ERROR [dps310] Product_ID mismatch
WARN  [SPI_I2C] UnknownApp: no instance started (no device on bus?)
Looking for external ICP10100 barometer
WARN  [SPI_I2C] UnknownApp: no instance started (no device on bus?)
Did not detect an external barometer, starting onboard ICP10100 barometer
INFO  [qshell] Send cmd: 'icp101xx start -I -b 5'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: icp101xx start -I -b 5
INFO  [muorb] [qshell]   arg0 = 'icp101xx'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [muorb] [qshell]   arg2 = '-I'
INFO  [muorb] [qshell]   arg3 = '-b'
INFO  [muorb] [qshell]   arg4 = '5'
INFO  [muorb] [drivers__device] *** I2C Device ID 0xb76329 12018473
INFO  [muorb] [drivers__device] Set up I2C bus mutex for bus 5
INFO  [muorb] icp101xx #0 on I2C bus 5
INFO  [muorb]  address 0x63
INFO  [muorb] 

INFO  [muorb] [qshell] Ok executing command: icp101xx start -I -b 5
INFO  [qshell] qshell return value timestamp: 83111693, local time: 83114593
INFO  [muorb] [icm42688p] >>> ICM42688P this: b26024d8
INFO  [qshell] Send cmd: 'temperature_compensation start'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: temperature_compensation start
INFO  [muorb] [qshell]   arg0 = 'temperature_compensation'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [uORB] Advertising remote topic sensor_correction
INFO  [muorb] [qshell] Ok executing command: temperature_compensation start
INFO  [qshell] qshell return value timestamp: 83262606, local time: 83264812
Looking for qmc5883l magnetometer
INFO  [qshell] Send cmd: 'qmc5883l start -R 10 -X -b 1'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: qmc5883l start -R 10 -X -b 1
INFO  [muorb] [qshell]   arg0 = 'qmc5883l'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [muorb] [qshell]   arg2 = '-R'
INFO  [muorb] [qshell]   arg3 = '10'
INFO  [muorb] [qshell]   arg4 = '-X'
INFO  [muorb] [qshell]   arg5 = '-b'
INFO  [muorb] [qshell]   arg6 = '1'
INFO  [muorb] [drivers__device] *** I2C Device ID 0x80d09 527625
INFO  [muorb] [drivers__device] Set up I2C bus mutex for bus 1
ERROR [muorb] [drivers__device] i2c probe failed
INFO  [muorb] [SPI_I2C] PX4_qshell: no instance started (no device on bus?)
ERROR [muorb] [qshell] Failed to execute command: qmc5883l start -R 10 -X -b 1
INFO  [qshell] cmd returned with: -1
INFO  [qshell] qshell return value timestamp: 83324177, local time: 83325854
ERROR [qshell] Command failed
INFO  [uORB] Advertising remote topic sensor_baro
Looking for ist8310 magnetometer
INFO  [qshell] Send cmd: 'ist8310 start -R 10 -X -b 1'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: ist8310 start -R 10 -X -b 1
INFO  [muorb] [qshell]   arg0 = 'ist8310'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [muorb] [qshell]   arg2 = '-R'
INFO  [muorb] [qshell]   arg3 = '10'
INFO  [muorb] [qshell]   arg4 = '-X'
INFO  [muorb] [qshell]   arg5 = '-b'
INFO  [muorb] [qshell]   arg6 = '1'
INFO  [muorb] [drivers__device] *** I2C Device ID 0x60e09 396809
INFO  [muorb] [drivers__device] Set up I2C bus mutex for bus 1
ERROR [muorb] [drivers__device] i2c probe failed
INFO  [muorb] [SPI_I2C] PX4_qshell: no instance started (no device on bus?)
ERROR [muorb] [qshell] Failed to execute command: ist8310 start -R 10 -X -b 1
INFO  [qshell] cmd returned with: -1
INFO  [qshell] qshell return value timestamp: 83374408, local time: 83377531
ERROR [qshell] Command failed
Looking for ist8308 magnetometer
INFO  [qshell] Send cmd: 'ist8308 start -R 12 -X -b 1'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: ist8308 start -R 12 -X -b 1
INFO  [muorb] [qshell]   arg0 = 'ist8308'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [muorb] [qshell]   arg2 = '-R'
INFO  [muorb] [qshell]   arg3 = '12'
INFO  [muorb] [qshell]   arg4 = '-X'
INFO  [muorb] [qshell]   arg5 = '-b'
INFO  [muorb] [qshell]   arg6 = '1'
INFO  [muorb] [drivers__device] *** I2C Device ID 0xb0c09 723977
INFO  [muorb] [drivers__device] Set up I2C bus mutex for bus 1
ERROR [muorb] [drivers__device] i2c probe failed
INFO  [muorb] [SPI_I2C] PX4_qshell: no instance started (no device on bus?)
ERROR [muorb] [qshell] Failed to execute command: ist8308 start -R 12 -X -b 1
INFO  [qshell] cmd returned with: -1
INFO  [qshell] qshell return value timestamp: 83413213, local time: 83416595
ERROR [qshell] Command failed
INFO  [qshell] Send cmd: 'gps start'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: gps start
INFO  [muorb] [qshell]   arg0 = 'gps'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [muorb] [tasks] Creating pthread gps
INFO  [muorb] [tasks] Successfully created px4 task PX4_gps with tid 2097645
INFO  [muorb] [qshell] Ok executing command: gps start
INFO  [qshell] qshell return value timestamp: 83445422, local time: 83446602
Looking for ncp5623c RGB LED
INFO  [muorb] [gps] GPS UART baudrate set to 115200
INFO  [qshell] Send cmd: 'rgbled_ncp5623c start -X -b 1 -f 400 -a 56'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: rgbled_ncp5623c start -X -b 1 -f 400 -a 56
INFO  [muorb] [qshell]   arg0 = 'rgbled_ncp5623c'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [muorb] [qshell]   arg2 = '-X'
INFO  [muorb] [qshell]   arg3 = '-b'
INFO  [muorb] [qshell]   arg4 = '1'
INFO  [muorb] [qshell]   arg5 = '-f'
INFO  [muorb] [qshell]   arg6 = '400'
INFO  [muorb] [qshell]   arg7 = '-a'
INFO  [muorb] [qshell]   arg8 = '56'
INFO  [muorb] [drivers__device] *** I2C Device ID 0x7b3809 8075273
INFO  [muorb] [drivers__device] Set up I2C bus mutex for bus 1
INFO  [muorb] [drivers__device] Set i2c address 0x38, fd 4
ERROR [muorb] [drivers__device] i2c probe failed
INFO  [muorb] [SPI_I2C] PX4_qshell: no instance started (no device on bus?)
ERROR [muorb] [qshell] 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: 83487606, local time: 83489160
ERROR [qshell] Command failed
Starting VOXL ESC driver
INFO  [qshell] Send cmd: 'voxl_esc start'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: voxl_esc start
INFO  [muorb] [qshell]   arg0 = 'voxl_esc'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [uORB] Advertising remote topic actuator_outputs
INFO  [muorb] [voxl_esc] Starting VOXL ESC driver
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_CONFIG: 1
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_MODE: 0
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_BAUD: 2000000
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_FUNC1: 102
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_FUNC2: 103
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_FUNC3: 101
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_FUNC4: 104
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_SDIR1: 0
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_SDIR2: 0
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_SDIR3: 0
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_SDIR4: 0
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_PWR_MIN: 0.050000
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_RPM_MIN: 2000
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_RPM_MAX: 12000
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_T_PERC: 90
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_T_DEAD: 20
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_T_EXPO: 35
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_T_MINF: 0.150000
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_T_COSP: 0.990000
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_VLOG: 1
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_PUB_BST: 1
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_T_WARN: 0
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_T_OVER: 0
INFO  [muorb] [voxl_esc] Params: GPIO_CTL_CH: 0
INFO  [muorb] [voxl_esc] Params: VOXL_ESC_CMD: 0
INFO  [muorb] [qshell] Ok executing command: voxl_esc start
INFO  [muorb] [voxl_esc] Opening UART ESC device 2, baud rate 2000000
INFO  [muorb] [voxl_esc] Successfully opened UART ESC device
INFO  [muorb] [voxl_esc] Detecting ESCs...
INFO  [muorb] [voxl_esc] 	ESC ID     : 0
INFO  [muorb] [voxl_esc] 	Board Type : 40: ModalAi 4-in-1 ESC (M0129-3)
INFO  [muorb] [voxl_esc] 	Unique ID  : 0x2039333557555313000F0024
INFO  [muorb] [voxl_esc] 	Firmware   : version   39, hash 9c6233d6
INFO  [muorb] [voxl_esc] 	Bootloader : version  184, hash 10bf24c8
INFO  [muorb] [voxl_esc] 	Reply time : 723us
INFO  [muorb] [voxl_esc] VOXL_ESC:
INFO  [muorb] [voxl_esc] 	ESC ID     : 1
INFO  [muorb] [voxl_esc] 	Board Type : 40: ModalAi 4-in-1 ESC (M0129-3)
INFO  [muorb] [voxl_esc] 	Unique ID  : 0x2039333557555313000F0028
INFO  [muorb] [voxl_esc] 	Firmware   : version   39, hash 9c6233d6
INFO  [muorb] [voxl_esc] 	Bootloader : version  184, hash 10bf24c8
INFO  [muorb] [voxl_esc] 	Reply time : 728us
INFO  [muorb] [voxl_esc] VOXL_ESC:
INFO  [qshell] qshell return value timestamp: 83652589, local time: 83657098
INFO  [muorb] [voxl_esc] 	ESC ID     : 2
INFO  [muorb] [voxl_esc] 	Board Type : 40: ModalAi 4-in-1 ESC (M0129-3)
INFO  [muorb] [voxl_esc] 	Unique ID  : 0x2039333557555313000F0026
INFO  [muorb] [voxl_esc] 	Firmware   : version   39, hash 9c6233d6
INFO  [muorb] [voxl_esc] 	Bootloader : version  184, hash 10bf24c8
INFO  [muorb] [voxl_esc] 	Reply time : 718us
INFO  [muorb] [voxl_esc] VOXL_ESC:
INFO  [muorb] [voxl_esc] 	ESC ID     : 3
INFO  [muorb] [voxl_esc] 	Board Type : 40: ModalAi 4-in-1 ESC (M0129-3)
INFO  [muorb] [voxl_esc] 	Unique ID  : 0x2039333557555313000F0022
INFO  [muorb] [voxl_esc] 	Firmware   : version   39, hash 9c6233d6
INFO  [muorb] [voxl_esc] 	Bootloader : version  184, hash 10bf24c8
INFO  [muorb] [voxl_esc] 	Reply time : 739us
INFO  [muorb] [voxl_esc] VOXL_ESC:
INFO  [muorb] [voxl_esc] Use extended rpm packet : 1
INFO  [muorb] [voxl_esc] All ESCs successfully detected
Starting GHST RC driver
INFO  [qshell] Send cmd: 'ghst_rc start -d 7'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: ghst_rc start -d 7
INFO  [muorb] [qshell]   arg0 = 'ghst_rc'
INFO  [uORB] Advertising remote topic actuator_outputs_debug
INFO  [uORB] Advertising remote topic esc_status
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [muorb] [qshell]   arg2 = '-d'
INFO  [muorb] [qshell]   arg3 = '7'
INFO  [muorb] [qshell] Ok executing command: ghst_rc start -d 7
INFO  [uORB] Advertising remote topic input_rc
INFO  [qshell] qshell return value timestamp: 83712270, local time: 83715195
INFO  [qshell] Send cmd: 'lightware_laser_i2c start -b 4'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: lightware_laser_i2c start -b 4
ERROR [muorb] [qshell] Command lightware_laser_i2c not found
ERROR [muorb] [qshell] Failed to execute command: lightware_laser_i2c start -b 4
INFO  [qshell] cmd returned with: 1
INFO  [qshell] qshell return value timestamp: 83743015, local time: 83745263
ERROR [qshell] Command failed
INFO  [qshell] Send cmd: 'sensors start'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: sensors start
INFO  [muorb] [qshell]   arg0 = 'sensors'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [uORB] Advertising remote topic sensor_selection
INFO  [uORB] Advertising remote topic sensors_status_imu
INFO  [muorb] [modules__muorb__slpi] Deleting /data/px4/slpi/keepalive_fail
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 battery_status
INFO  [uORB] Advertising remote topic vehicle_air_data
INFO  [uORB] Advertising remote topic vehicle_gps_position
INFO  [uORB] Advertising remote topic vehicle_magnetometer
INFO  [uORB] Advertising remote topic sensor_preflight_mag
INFO  [uORB] Advertising remote topic vehicle_imu
INFO  [uORB] Advertising remote topic vehicle_imu_status
INFO  [muorb] [qshell] Ok executing command: sensors start
INFO  [qshell] qshell return value timestamp: 83931906, local time: 83935646
INFO  [uORB] Advertising remote topic sensors_status_baro
INFO  [qshell] Send cmd: 'ekf2 start'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: ekf2 start
INFO  [muorb] [qshell]   arg0 = 'ekf2'
INFO  [muorb] [qshell]   arg1 = 'start'
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] [qshell] Ok executing command: ekf2 start
INFO  [qshell] qshell return value timestamp: 84173695, local time: 84177522
INFO  [uORB] Advertising remote topic ekf2_timestamps
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] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: mc_pos_control start
INFO  [muorb] [qshell]   arg0 = 'mc_pos_control'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [uORB] Advertising remote topic takeoff_status
INFO  [muorb] [qshell] Ok executing command: mc_pos_control start
INFO  [qshell] qshell return value timestamp: 84266732, local time: 84268823
INFO  [qshell] Send cmd: 'mc_att_control start'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: mc_att_control start
INFO  [muorb] [qshell]   arg0 = 'mc_att_control'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [muorb] [qshell] Ok executing command: mc_att_control start
INFO  [qshell] qshell return value timestamp: 84320268, local time: 84321796
INFO  [qshell] Send cmd: 'mc_rate_control start'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: mc_rate_control start
INFO  [muorb] [qshell]   arg0 = 'mc_rate_control'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [uORB] Advertising remote topic rate_ctrl_status
INFO  [muorb] [qshell] Ok executing command: mc_rate_control start
INFO  [qshell] qshell return value timestamp: 84408066, local time: 84410267
INFO  [qshell] Send cmd: 'mc_hover_thrust_estimator start'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: mc_hover_thrust_estimator start
INFO  [muorb] [qshell]   arg0 = 'mc_hover_thrust_estimator'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [muorb] [qshell] Ok executing command: mc_hover_thrust_estimator start
INFO  [qshell] qshell return value timestamp: 84462789, local time: 84464375
INFO  [qshell] Send cmd: 'mc_autotune_attitude_control start'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: mc_autotune_attitude_control start
INFO  [muorb] [qshell]   arg0 = 'mc_autotune_attitude_control'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [uORB] Advertising remote topic autotune_attitude_control_status
INFO  [muorb] [qshell] Ok executing command: mc_autotune_attitude_control start
INFO  [qshell] qshell return value timestamp: 84514600, local time: 84516557
INFO  [qshell] Send cmd: 'land_detector start multicopter'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: land_detector start multicopter
INFO  [muorb] [qshell]   arg0 = 'land_detector'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [muorb] [qshell]   arg2 = 'multicopter'
INFO  [muorb] [qshell] Ok executing command: land_detector start multicopter
INFO  [qshell] qshell return value timestamp: 84553505, local time: 84556075
INFO  [uORB] Advertising remote topic vehicle_land_detected
INFO  [qshell] Send cmd: 'manual_control start'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: manual_control start
INFO  [muorb] [qshell]   arg0 = 'manual_control'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [muorb] [qshell] Ok executing command: manual_control start
INFO  [qshell] qshell return value timestamp: 84597175, local time: 84598418
INFO  [uORB] Advertising remote topic manual_control_setpoint
INFO  [qshell] Send cmd: 'control_allocator start'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: control_allocator start
INFO  [muorb] [qshell]   arg0 = 'control_allocator'
INFO  [muorb] [qshell]   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] [qshell] Ok executing command: control_allocator start
INFO  [qshell] qshell return value timestamp: 84809648, local time: 84811022
INFO  [qshell] Send cmd: 'load_mon start'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: load_mon start
INFO  [muorb] [qshell]   arg0 = 'load_mon'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [muorb] [qshell] Ok executing command: load_mon start
INFO  [uORB] Advertising remote topic cpuload
INFO  [qshell] qshell return value timestamp: 84866816, local time: 84868801
INFO  [qshell] Send cmd: 'rc_update start'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: rc_update start
INFO  [muorb] [qshell]   arg0 = 'rc_update'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [muorb] [qshell] Ok executing command: rc_update start
INFO  [qshell] qshell return value timestamp: 85094704, local time: 85096473
INFO  [uORB] Advertising remote topic rc_channels
INFO  [qshell] Send cmd: 'commander start'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: commander start
INFO  [muorb] [qshell]   arg0 = 'commander'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [muorb] [tasks] Creating pthread commander
INFO  [muorb] [tasks] Successfully created px4 task PX4_commander with tid 2097638
INFO  [uORB] Advertising remote topic led_control
INFO  [muorb] [commander] LED: open /dev/led0 failed (22)
INFO  [uORB] Advertising remote topic tune_control
INFO  [muorb] [qshell] Ok executing command: commander start
INFO  [qshell] qshell return value timestamp: 85278466, local time: 85282382
INFO  [uORB] Advertising remote topic event
INFO  [uORB] Advertising remote topic mavlink_log
INFO  [muorb] [health_and_arming_checks] Preflight Fail: Compass Sensor 0 missing
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] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: flight_mode_manager start
INFO  [muorb] [qshell]   arg0 = 'flight_mode_manager'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [uORB] Advertising remote topic vehicle_command
INFO  [muorb] [qshell] Ok executing command: flight_mode_manager start
INFO  [qshell] qshell return value timestamp: 85385231, local time: 85387168
INFO  [dataman] data manager file '/data/px4/dataman' size is 7866640 bytes
INFO  [muorb] [uORB] Advertising remote topic transponder_report
INFO  [muorb] [uORB] Advertising remote topic rtl_time_estimate
INFO  [muorb] [uORB] Advertising remote topic position_setpoint_triplet
INFO  [mpa] Successfully loaded library libmodal_pipe.so
INFO  [mavlink] mode: Onboard, data rate: 100000 B/s on udp port 14556 remote port 14557
INFO  [muorb] [uORB] Advertising remote topic telemetry_status
INFO  [mavlink] partner IP: 127.0.0.1
INFO  [muorb] [uORB] Advertising remote topic offboard_control_mode
INFO  [muorb] [uORB] Advertising remote topic obstacle_distance
INFO  [uORB] Advertising remote topic actuator_controls_status_0
INFO  [muorb] [uORB] Advertising remote topic timesync_status
INFO  [muorb] [uORB] Advertising remote topic vehicle_visual_odometry
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  [mavlink] mode: Normal, data rate: 100000 B/s on udp port 14558 remote port 14559
INFO  [muorb] [uORB] Marking DeviceNode(telemetry_status) as advertised in process_remote_topic
INFO  [mavlink] MAVLink only on localhost (set param MAV_{i}_BROADCAST = 1 to enable network)
INFO  [px4] Startup script returned successfully
pxh> INFO  [logger] logger started (mode=all)
INFO  [muorb] [gps] GPS UART baudrate set to 9600
INFO  [muorb] [health_and_arming_checks] Preflight Fail: Compass Sensor 0 missing
```

## Reply by Eric Katzfey (ModalAI staff) · 2026-01-06 17:01:26 UTC (in reply to voxltester)

@voxltester slpi_proc = SLPI = SSC = DSP. I think the only option at this point is to attach an oscilloscope and verify the signals.

## Reply by Eric Katzfey (ModalAI staff) · 2026-01-06 17:04:15 UTC (in reply to voxltester)

@voxltester In order to execute on the DSP side you have to have `qshell` before the command. When you have it you get the error that command is not found. That's probably because the driver has not been built into the DSP image. It only seems to be on the apps side.

## Reply by voxltester · 2026-01-06 20:19:52 UTC (in reply to Eric Katzfey)

@Eric-Katzfey 
Never mind. I finally received the DISTANCE_SENSOR data!
I added
`CONFIG_DRIVERS_DISTANCE_SENSOR_LIGHTWARE_LASER_I2C=y`
to `px4-firmware/board/modalai/voxl2-slpi/dafault.px4board`.

Thank you for your help.

## Reply by Eric Katzfey (ModalAI staff) · 2026-01-06 21:10:06 UTC (in reply to voxltester)

@voxltester Great! Glad you got it working.
