I have a tinypilot in a Raspi Zero W and an IMU 20948 connected via I2C extender, 6m cable. The first year the system ran perfectly, no problems. But since the second year I sometimes have problems in the IMU Connection. I want to understand what is happening.
What does it mean, when it says pypilot server: connected? Does that mean, the IMU is connected?
But it says magnetic heading false, pitch false, roll false.
Connection OK, but wrong values?
What can I do?
Connected means the web server connected to the pypilot server maybe confusing.
As for pitch roll false, etc means imu is not working. So try running "i2cdetect -y 1" see if 0x68 is there. Maybe try without 6M extender? can you just mount the imu near the pi and not use it?
The extender is on my PCBs (Mainboard and IMU). I measured the signals (SCL and SDA) and they look good. The next time the error occurs, I will measure again.
Also I changed the I2C bitrate to 50 kBit in config.txt
Yes, I scoped them. Without my changes in config.txt I measured 62 kHz (or was it 67?) on SCL.
After inserting dtparam=i2c_arm_baudrate=50000 it changed to 50 kHz.
But that did not help, I had the error again. Was not able to scope it then.
The ICM20948 chip has pins with very little distance between them on the modules. Several users have already noticed that the I2C connection degrades in high humidity. Blowing air through the pins can restore the connection.
However, deposits form at the solder joints. The problem eventually recurs.
The best solution is to replace the module and coat the chip with liquid insulator. Coating provides more effective protection than spraying with tropicalizing varnish.
2026-08-11, 02:25 PM (This post was last modified: 2026-08-11, 02:30 PM by Olaf_70.)
Hmm, soldering looks good, and most of the time the IMU works perfectly. but coating is a good idea anyway.
Today while sailing, I often see "Servo Flags: DRIVER_TIMEOUT" What does that mean? Is it a timeout on the I2C? It was when the pilot was running god, heading/pitch/roll constantly changing.
2026-08-11, 05:38 PM (This post was last modified: 2026-08-11, 05:39 PM by Jean-Marc Douroux.)
The ICM20948 IMU chip measures 3x3 mm and has 24 pins on the underside.
Even with a microscope, inspecting the pin solder joints is difficult. However, if the problem disappears after drying the chip with air, the IMU must be replaced, as the IMU's I2C signal is highly sensitive to leakage currents between the integrated circuit's pins.
2026-08-11, 08:34 PM (This post was last modified: 2026-08-11, 08:35 PM by Olaf_70.)
Ah, you mean the BGA itself... OK, I can not see, if they look good:-)
But the IMU is in a cabinet inside the boat and never got wet. Anyway I will try.
There's another thing that came in my mind: I use a 5 pin connector: +12V, GND, +3.3V (IMU VCC), SCL, SDA. So the GND of the IMU is the same pin as the GND of the motor. Maybe it's better to use a 6 pin connector with two different GNDs.
I also notice the problem of blowing breath on sensor can cause it to malfunction, and drying it will work again. I will do more testing also with conformal coating and I am trying new sensors too.