Home        Store        Docs        Blog

Ping interrupted firmware update

We recently got a Ping for our ROV and I was trying to change the baudrate, but flashing from the viewer seems to have crashed and now I can’t connect to it. Is there a process for recovering from an incomplete flash?

Hi Wade,

Can you explain how the application crashed ?
Can you send us the log when this happened ?
We never got a crash while flashing the sensor until now, any log could be important, you can read more about the interface logs and the folder structure here.

Just to make sure, please reset ping-viewer settings with the header menu, you can read more about it here, and connect the device again to the computer to see if it’s working.

To flash an damaged sensor, right now it’s only possible if you open the device, turning the blue ring in counterclockwise direction:

If you turn on the device and a led start to blink, the device should be good and the firmware is running fine.

If the led is not blinking:

  • Open the folder that ping-viewer binary is.
  • Copy the folder path.
  • Open your OS terminal. (powershell on windows).
  • type: cd "ping-viewer folder path"
  • After that you should download the last firmware available:
    • On windows: Invoke-WebRequest -Uri "https://raw.githubusercontent.com/bluerobotics/ping-firmware/master/ping1d/Ping_V3.26_115kb.hex" -OutFile "$PWD/Ping_V3.26_115kb.hex"
    • On linux: wget "https://raw.githubusercontent.com/bluerobotics/ping-firmware/master/ping1d/Ping_V3.26_115kb.hex"
  • With the sensor open, you should see a BOOT button in the main board, click and hold this button down and power the device, you should see no LED blinking.
  • You should check the port of the device with windows Device Manager or with dmesg on linux.
  • After finding the port (COMx on windows and /dev/ttyUSB* on linux) you can start the flash procedure.
  • In the same terminal type:
    • On windows .\stm32flash.exe -v -g 0x0 -b 115200 -w .\Ping_V3.26_115kb.hex COM4
      • Where COM4 is my serial port
    • On linux .\stm32flash -v -g 0x0 -b 115200 -w .\Ping_V3.26_115kb.hex /dev/ttyUSB0
      • Where /dev/ttyUSB0 is my serial port

If the instructions are not clear or sound a bit complicated, please wait a bit more for us to create a Ping-Viewer version that allows you to flash non detected devices.

You can check the status of this issue here:

It appears the issue was intermittent errors in the USB-Serial cable we used. It seems to work reliably enough for reading data normally but it kept routinely failing at certain points during flashing. Fortunately I was able to use onboard serial on a Jetson board to get it reflashed and now it’s working. Here’s the log, for what it’s worth: 20190218-132717267.txt (68.6 KB). As it was uploading the bar just stopped at 2% for way longer than it should have needed, according to the end of the log it failed to write at that point and stayed there silently. Some status text to go along with the bar might be useful for catching similar problems more easily.

The offending cable, for reference: Adafruit USB to TTL cable on Amazon. Not sure if it’s an Amazon vendor issue or just this cable design in general.

1 Like

Hi Wade,

I’m happy that you were able to flash and figure out the problem !
We are going to improve our documentation with this steps and some troubleshoot guide related to this behavior.
If you want to check if the cable is not good, or any communication is getting corrupted, you can enable the debug mode and check the RX Errors or Lost messages label before flashing the device.

Also, thank you for the feedback, we are going to improve the flash procedure with some status text.