I have a Navio2 shield that I’ve successfully used to fly a quadcopter of mine. Recently, I moved the Navio2 to a hexacopter frame that I’m building, and I had successfully used it to test spinning up the motors without propellers. Yesterday, while adding a NanoPi Neo2 to the hexacopter which provides camera proxy interface with a Micasense RedEdge MX, I powered up the NanoPi by connecting it to the USB port of the RPi3 B+ with the Navio2 shield. Everything was working fine (I was able to remotely connect over ssh to both the NaniPi and the RPi3), but after doing some software updates, I issued a software reboot on the RPi3, only to have go through shutdown sequence but fail to reboot. I did a hard power reset, but only the RPi3 red power LED would light up, along with the Navio2 shield LED (yellow in color), but the RPi3 wouldn’t boot. I thought maybe a surge current on the software reboot had overwhelmed the RPi3 with the NanoPi connected through its USB, but after unplugging the NanoPi and power cycling again, it failed to boot with the same behavior. I removed the Navio2 shield, and the RPi3 boots up with no problem (the RPi3 flashes the splash screen, and the normal scrolling linux boot text commences as expected). I plugged the Navio2 shield back into RPi3, and again it fails to boot (the Navio2 LED is a solid yellow color and the RPi3 only has it’s power LED on).
Thinking something was wrong with the Navio2 with respect to GPIO pin configurations (maybe pulling too much current on a pin, resulting in a failed boot by RPi 3), I then tried to separate the Navio2 from the RPi3, only connecting the necessary pins. I started with only connecting the Navio2 physical pins 4 (5V) and 6 (GND) to the corresponding pins on the RPi, powered up through the shield, and the RPi3 boots again! I then tried connecting individual GPIO pins on RPi shield to their corresponding pins on the RPi3 to see if one pin was triggering some sort of issue on the RPi, watching to see if the RPi would die in the process. I was unable to find a single pin that caused the problem. Also, although on a failed boot the Navio2 LED displays a solid yellow color, when I would connect the LED pins individually, the LED does not light up as it does on a failed boot.
Do any of you have suggestions on how to further debug this, or whether anyone else has experienced this problem? Are there any ways to connect to the Navio2 shield (hardware debugger) and see if something went wrong there – I see it has an ARM chip, and likely flash, and maybe the flash was corrupted and it is booting up with an invalid GPIO configuration? Are there any polyfuses on the Navio2 that may need some time to recover? Does Emlid have a way of sending them the Navio2 and they can debug any potential hardware issues?
UPDATE: I found another Raspberry Pi 3B+ board and the problem goes away. Also, if I connect the Navio2 to the problematic RPi 3B+ board after it boots, the problem also goes away. Therefore, my guess is some Rpi3 onboard eeprom/nvram was changed/corrupted during what I can only guess was a overcurrent event through the USB, and I’ll have to take this to the Raspberry pi forums to see if experts there have any insights.