I am trying to determine if my 3DR PX4 FMUv2 (https://docs.px4.io/en/flight_controller/pixhawk.html) is dead or not. I’ve been using this device for about three years and have uploaded firmware to the board routinely during this time with no issues. Today it seems after a firmware upload the board no longer was visible on the list of devices (Windows 10). When plugging the board in via micro USB my Windows device manager shows a “PX4 FMU (COM4)” under the serial port men but then it suddenly disappears from the list of COM devices. As such, QGC or mission planner or the CMAKE build system is unable to find the board so I have no way of uploading new firmware.
Since COM4 was not accessible i wanted to see if i could access the serial shell over another serial line ( ttyS6 on the Pixhawk). This is something i’ve routinely done in the past so there is no issue with the wiring here. I modified my rc.txt on an SD card and specified the nuttx shell to point to ttyS6 like so:
nshterm /dev/ttyS6 &
I also added in a tone alarm as well. Plugging in the device again I was able to see the serial device that was connected to ttyS6 was available but attempting to access the shell over putty revealed nothing (ie: no feedback when i typed - just a blank screen). I also did not hear any tone from the device.
In the past few weeks I did notice that when i ran the python script to upload the firmware the progress would sometimes halt and would need to re-flash again. The “erasing firmware” part works fine but then the “flashing firmware” would sometimes get stuck randomly and say something like “missing byte” or something along those lines. This has never happened up until recently.
Regarding what LEDs are on in this current state, this is what I see:
PWR: Solid Green
B/E : Solid Orange
PWR: Solid green
B/E: Solid Orange
ACT: Flashing blue
I’m not sure what state it’s in right now - if anyone can shed some light on this I would greatly appreciate it.
Not that it might be of any help, but i did have an old copy/paste of the firmware/hardware version. Note that this FMU was bought directly from 3DR 3 years ago (2014) when they were still producing these boards.
HW arch: PX4FMU_V2
FW git-hash: b2a81ed35beb6ab56a5c8d6aaf872e8cc869fd55
FW version: 1.6.5 0 (17171712)
OS version: Release 7.18.0 (118620415)
OS git-hash: 8b81cf5c7ece0c228eaaea3e9d8e667fc4d21a06
Build datetime: Aug 19 2017 21:46:03
Build uri: localhost
Toolchain: GNU GCC, 5.4.1 20160919 (release) [ARM/embedded-5-branch revision 240496]
MCU: STM32F42x, rev. Y
WARNING WARNING WARNING!
Revision Y has a silicon errata:
This device can only utilize a maximum of 1MB flash safely!
I think you need the i/o module reboot. Try this (I hope my procedure is right).
1- Disconnect the USB
2- Press safety switch and hold it pressed
3- Connect the USB while pressing the safety switch
4- Wait until there is a sound
5- release the safety switch
6- Disconnect the USB and connect it back again
Unfortunately these steps did not work. No sound is ever emitted
I’m thinking of possibly updating the boot loader. I’ve found these instructions:
I see that in order to use the ST “DFuse” Bootloader I have to bridge VDD_3v3 and BOOT0. I have the 3DR Pixhawk FMUv2. If I open up the case will I have access to these pins for me to try a boot loader update? Is it possible to use the same set of instructions outlined here?
I managed to solve my issue. I’m sharing this info in-case anyone else encounters this in this in the future.
I realized that I accidentally flashed my PX4-FMU-V2 hardware with px4fmu-v3_default.px4 firmware one too many times. There is a silicon errata stating that the FMU-V2 board can only be safely used with 1 MB of flash and I know that the only difference between V2 and V3 firmware is that the V3 firmware uses the full 2 MB instead of being restricted to 1 MB. It seems that continuously doing this can put the px4 in a state where it cannot boot up correctly.
To resolve this, I downloaded an older release off of GitHub
Then I ran the python uploader script to write older firmware (px4fmu-v2_default.px4) and that seemed to have wiped away any corruption from before. I am able to see the board in my device manager, connect / interact with it now.