Hello Emlid Community,
I have this annoying ms5611 baro detection issue that I cannot seem to wrap my head around on my navio2. I have tried debugging this problem through several ways, which I will explain below.
First, my setup:
- uname -a output:
Linux navio1 4.19.127-emlid-v7+ #1 SMP PREEMPT Mon Aug 24 19:50:57 MSK 2020 armv7l GNU/Linux
-
PX4 invocation output:
NFO [px4] assuming working directory is rootfs, no symlinks needed.
| ___ \ \ \ / / / |
| |/ / \ V / / /| |
| __/ / \ / /| |
| | / /^\ \ ___ |
_| / / |_/px4 starting.
INFO [px4] Calling startup script: /bin/sh px4.config 0
INFO [dataman] Unknown restart, data manager file ‘./dataman’ size is 11798680 bytes
mpu9250 #0 on SPI bus 0 (devid=0x1)
lsm9ds1 #0 on SPI bus 0 (devid=0x3)
lsm9ds1_mag #0 on SPI bus 0 (devid=0x2)
WARN [SPI_I2C] UnknownApp: no instance started (no device on bus?)
INFO [commander] LED: open /dev/led0 failed (22)
INFO [mavlink] mode: Normal, data rate: 1000000 B/s on udp port 14556 remote port 14550
INFO [mavlink] mode: Normal, data rate: 2880 B/s on /dev/ttyAMA0 @ 57600B
INFO [linux_pwm_out] Loaded mixer from file etc/mixers/quad_x.main.mix
INFO [linux_pwm_out] Starting PWM output in Navio mode
INFO [logger] logger started (mode=all)
INFO [px4] Startup script returned successfully
pxh> INFO [mavlink] using network interface wlan0, IP: 192.168.1.99
INFO [mavlink] with netmask: 255.255.255.0
INFO [mavlink] and broadcast IP: 192.168.1.255
INFO [mavlink] partner IP: 192.168.1.2 -
emlidtool output:
emlidtool version: 1.0.8
Vendor: Emlid Limited
Product: Navio 2
Issue: Emlid 2020-09-22 716f472abba15f9ec2b6fc51f498538e3c041d42
Kernel: 4.19.127-emlid-v7+
RCIO firmware: 0xb9064332
2020-10-21 12:30:10 navio1 root[1506] INFO mpu9250: Passed
2020-10-21 12:30:10 navio1 root[1506] ERROR ms5611: Failed
– Reason: Is barometer covered with a foam?
2020-10-21 12:30:10 navio1 root[1506] INFO adc: Passed
2020-10-21 12:30:10 navio1 root[1506] INFO pwm: Passed
2020-10-21 12:30:10 navio1 root[1506] INFO rcio_status_alive: Passed
2020-10-21 12:30:10 navio1 root[1506] INFO lsm9ds1: Passed
2020-10-21 12:30:10 navio1 root[1506] INFO gps: Passed
2020-10-21 12:30:10 navio1 root[1506] INFO rcio_firmware: Passed -
i2cdetect -y output:
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
10: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f
40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f
70: 70 71 72 73 74 75 76 77 -
Pictures of Setup:
- What I have tested
- I have purchased a standalone ms5611 barometer that I have connected to the Raspberry Pi (3B) without the Navio2 attached. I am able to detect the ms5611 barometer as long as the Navio2 shield is detached.
- output of i2cdetect:
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: – -- – -- – -- – -- – -- – -- –
10: – -- – -- – -- – -- – -- – -- – -- – --
20: – -- – -- – -- – -- – -- – -- – -- – --
30: – -- – -- – -- – -- – -- – -- – -- – --
40: – -- – -- – -- – -- – -- – -- – -- – --
50: – -- – -- – -- – -- – -- – -- – -- – --
60: – -- – -- – -- – -- – -- – -- – -- – --
70: – -- – -- – -- – 77 - Output of PX4 on boot with no shield, but standalone ms5611 module connected:
INFO [px4] Calling startup script: /bin/sh px4.config 0
INFO [dataman] Unknown restart, data manager file ‘./dataman’ size is 11798680 bytes
WARN [SPI_I2C] UnknownApp: no instance started (no device on bus?)
WARN [SPI_I2C] UnknownApp: no instance started (no device on bus?)
WARN [SPI_I2C] UnknownApp: no instance started (no device on bus?)
ms5611 #0 on I2C bus 1 (external) - I then reconnected the Navio2 shield to the Raspberry Pi, and made sure the connectors are making contact by using a multimeter to check the resistance b/w GPIO pins 2 & 3 (I2C SDA and I2C SDL, respectively) and the same pins on the i2c connector on the side of the Navio2 shield. They were shown to be connected.
- I then connected the standalone ms5611 barometer through the i2c connector on the side of the Navio2, and when powering up the navio2 board, I am now unable to connect with the standalone ms5611 barometer that I could connect with before without the Navio2 shield. The standalone barometer module is definitely showing that it is powered (LED on it is lit up), but now I cannot communicate with it when using the Navio2 shield as an intermediary. The steady state voltages on the SDA and SCL pins are 3.29V and 3.27V, respectively (while the voltages on these lines were 3.29 and 3.29 each without Navio2 shield).
Given that I’ve seen several different posts on this community about the barometer specifically failing to be detected, with some resulting in suggestions to communicate with Emlid support, has Emlid found any reason (other than the shield isn’t seated correctly, which isn’t the problem on my side) that could explain this? I did have a power failure and an RPi FS corruption in the past, and after that, i2c bus devices seem to have become undetectable (but only with shield attached). Are there cases where the Navio2 ARM microcontroller, when in a corrupted flash state, will boot up in i2c master mode (when the Pi is supposed to be the i2c master?). I only ask b/c when I tried to explictly set the output the RPi GPIO’s 2 and 3, they won’t drop to 0 volts (but instead drop to ~2.3 volts – as if some other device is trying to drive high on the SDA and SCL lines). Without the navio2 attached, I am able to drive these pins to 0 volts, which makes me think something is getting in the way of this on the navio2 shield side.
Any advice is appreciated, and if there is a way to reprogram the EMLID navio2 microcontroller flash, let me know!
Best,
Andrew