# I2C reading of 12S battery

Source: https://forum.modalai.com/topic/5110/i2c-reading-of-12s-battery
Category: General Questions (https://forum.modalai.com/category/2/general-questions)
Posted: 2026-03-17 15:47:51 UTC by Nikos Mavr
Replies: 18 · Views: 4995

## Nikos Mavr · 2026-03-17 15:47:51 UTC

Hi all,

I am trying to replace the voxl2 i2c inputs with those of an i2c power module installed closer to the supply source that can read the actual 12S source of the drone I am working on . The problem with this is that even with a level shifter or without I am not able to even find my device with i2cdetect, let alone receive readings. The module uses sen228, but i suspect that the problem could be the different pull up circuit of the different module. Could there be any feedback on that?

## Reply by Eric Katzfey (ModalAI staff) · 2026-03-17 16:00:02 UTC

@Nikos-Mavr Which pins are you using? `i2cdetect` is only looking at i2c ports on the Linux (applications) processor. For PX4, the standard i2c ports are mapped to the DSP (aka SLPI) so you wouldn't see them.

## Reply by Nikos Mavr · 2026-03-17 19:48:49 UTC (in reply to Eric Katzfey)

@Eric-Katzfey thank you for the reply. I have tried the j4 with a level shifter and j19 ports. What would be the proper command to see them?

## Reply by Eric Katzfey (ModalAI staff) · 2026-03-17 20:03:11 UTC (in reply to Nikos Mavr)

@Nikos-Mavr I'm not a hardware guy so not sure on the specifics of proper level shifting, etc. But have you made sure the unit works with some other board first like an Arduino? What is the sen228 module? Is a data sheet publicly available for that? What is the i2c address? J4 / J19 i2c ports should work with PX4 running the correct driver for that module.

## Reply by Nikos Mavr · 2026-03-17 20:13:47 UTC (in reply to Eric Katzfey)

@Eric-Katzfey the level shifter works properly with arduino right. The power module is holybro PM02D. Both pins are stuck to high which means communication is not successful.

## Reply by Vinny (ModalAI staff) · 2026-03-17 22:35:08 UTC (in reply to Nikos Mavr)

Hi @Nikos-Mavr 
Please provide a drawing or sketch of your setup in question for the I2C interface, include as many details as possible so I can help you.
Thanks!
Vinny

## Reply by Eric Katzfey (ModalAI staff) · 2026-03-18 02:42:39 UTC (in reply to Nikos Mavr)

@Nikos-Mavr Once you get the signals figured out I added i2cdetect to px4 so you can scan the buses and see if your device is detected. Some rudimentary instructions are here: https://docs.modalai.com/voxl-px4-dev-build-guide/#i2c-debugging. You will need the latest voxl-px4 which is here: http://voxl-packages.modalai.com/dists/qrb5165/dev/binary-arm64/voxl-px4_1.14.0-2.0.135-202603171827_arm64.deb

## Reply by Nikos Mavr · 2026-03-18 11:36:57 UTC (in reply to Eric Katzfey)

@Eric-Katzfey Yes, that worked, identified bus 4 channel 41. No while INA228 is enabled, I am not sure whether I should change the power_manager in voxl-px4.conf to NONE or EXTERNAL.

## Reply by Nikos Mavr · 2026-03-18 14:43:52 UTC (in reply to Vinny)

@Vinny !![Untitled.jpg](https://forum.modalai.com/assets/uploads/files/1773845027741-untitled.jpg)

## Reply by Vinny (ModalAI staff) · 2026-03-18 15:38:36 UTC (in reply to Nikos Mavr)

Thanks @Nikos-Mavr for the drawing, that helped.
The thing to be careful about is the I2C voltage levels.
https://docs.modalai.com/voxl2-connectors/
![b1885549-f182-4e2e-97fb-a1b7bde1413a-image.png](https://forum.modalai.com/assets/uploads/files/1773848165437-b1885549-f182-4e2e-97fb-a1b7bde1413a-image.png) 

J19 port I2C's are set to 3.3V with on-board pullups. So, I'm not sure what the 12S module I2C levels are, but be sure they are either (3.3V) or (set by host, i.e.: no pulls on the battery side)

I'm not sure what voltage is feeding into this portion... make sure it is limited to 6S:
![b4114148-d9ec-4c33-8631-54512996cc2d-image.png](https://forum.modalai.com/assets/uploads/files/1773848253680-b4114148-d9ec-4c33-8631-54512996cc2d-image.png) 

Now that Eric has given you a bunch of guidance, let us know if there are still problems overall.

Thanks!

## Reply by Eric Katzfey (ModalAI staff) · 2026-03-18 15:46:44 UTC (in reply to Nikos Mavr)

@Nikos-Mavr Okay, great, so the I2C is working then. But address 0x41 is an INA226, not an INA228. The PX4 driver indicates that an INA228 has an address of 0x45. And the Holybro data sheet for the PM02D indicates that the lower voltage one for up to 6S battery uses the INA226 while the higher voltage one for up to 12S. Am I reading that correctly? Regardless, it doesn't matter how you set POWER_MANAGER in voxl-px4.conf because that just determines whether it will start the voxlpm driver. But, probably best to set it to EXTERNAL for now. The bigger issue is that the drivers for INA226 and INA228 are not in the image. So they need to be added to the image and then started in the voxl-px4-start startup script located in /usr/bin.

## Reply by Eric Katzfey (ModalAI staff) · 2026-03-18 16:59:24 UTC (in reply to Nikos Mavr)

@Nikos-Mavr I added the ina226 and ina228 drivers into the build. Updated build can be found here: http://voxl-packages.modalai.com/dists/qrb5165/dev/binary-arm64/voxl-px4_1.14.0-2.0.136-202603180951_arm64.deb

To try it out use the command `qshell ina226 start -X -b 4` or `qshell ina228 start -X -b 4`  from the px4 command line to see if the driver sees your device.

## Reply by Nikos Mavr · 2026-03-18 20:49:51 UTC (in reply to Vinny)

@Vinny yes I removed the level shifter for that setup and yes the voltage drops to 3s for the highlighted area.

## Reply by Nikos Mavr · 2026-03-19 13:05:59 UTC (in reply to Eric Katzfey)

@Eric-Katzfey 
Thank you for your constant help. Unfortunately, this is what I get with this package with both command and even when I am trying to scan i2c now.
pxh>  qshell ina226 start -X -b 4
INFO  [qshell] Send cmd: 'ina226 start -X -b 4'
ERROR [uORB] Error Sending [qshell_req] topic data over comm_channel
ERROR [qshell] command timed out
ERROR [qshell] Command failed

## Reply by Eric Katzfey (ModalAI staff) · 2026-03-19 16:05:43 UTC (in reply to Nikos Mavr)

@Nikos-Mavr Can you reboot, try the command again, and send the entire output of PX4 so that I can see the entire startup process?

## Reply by Nikos Mavr · 2026-03-20 07:37:41 UTC (in reply to Eric Katzfey)

@Eric-Katzfey ![1.jpg](https://forum.modalai.com/assets/uploads/files/1773992258940-1-resized.jpg) ![2.jpg](https://forum.modalai.com/assets/uploads/files/1773992259293-2-resized.jpg)

## Reply by Nikos Mavr · 2026-03-20 08:33:28 UTC (in reply to Eric Katzfey)

@Eric-Katzfey upgraded to latest SDK now it is smooth
pxh> qshell ina226 start -X -b 4
INFO  [qshell] Send cmd: 'ina226 start -X -b 4'
INFO  [muorb] [uORB] Marking DeviceNode(qshell_req) as advertised in process_remote_topic
INFO  [muorb] [qshell] qshell gotten: ina226 start -X -b 4
INFO  [muorb] [qshell]   arg0 = 'ina226'
INFO  [muorb] [qshell]   arg1 = 'start'
INFO  [muorb] [qshell]   arg2 = '-X'
INFO  [muorb] [qshell]   arg3 = '-b'
INFO  [muorb] [qshell]   arg4 = '4'
INFO  [muorb] [drivers__device] *** I2C Device ID 0xd04121 13648161
INFO  [uORB] Marking DeviceNode(battery_status) as advertised in process_remote_topic
INFO  [muorb] [drivers__device] Set up I2C bus mutex for bus 4
INFO  [muorb] ina226 #0 on I2C bus 4
INFO  [muorb]  (external)
INFO  [muorb]  address 0x41
INFO  [muorb]

INFO  [muorb] [qshell] Ok executing command: ina226 start -X -b 4
INFO  [qshell] qshell return value timestamp: 1170693307, local time: 1170694295

## Reply by Nikos Mavr · 2026-03-20 08:45:26 UTC (in reply to Nikos Mavr)

@Nikos-Mavr Oh wow, it works now. Thank you for your help. By the way during this process my tp link antenna stopped responding and when I do voxl-wifi it says wifi devices not detected, while the device works for other PCS and voxl recognizes other USB devices. Are there any ideas why?

## Reply by Eric Katzfey (ModalAI staff) · 2026-03-20 15:39:34 UTC (in reply to Nikos Mavr)

@Nikos-Mavr You're welcome! And can you please start a new forum post for this new issue? Thanks!
