How to reflash firmware onto a bricked Hero5 Black camera over USB

Joined: October 21st, 2012, 5:55 am

August 29th, 2018, 3:44 am #1

It seems like it's about time to start a Hero5 Black debricking thread. A number of people have asked me about a Hero5 debricking tool, and I finally have permission to post it. Life for the past few years has been, well, interesting, and full of stuff. But now it is inevitably time for the next thing. But all that is a story for another day.

Anyway......

For advanced firmware people who are good with computers, I made the following tool that can boot a hard-bricked Hero5 Black camera over USB. By "hard-bricked" I mean a camera that will not turn on at all, and shows absolutely no signs of life. But, if the camera is not turning on because of corrupted firmware (such as from an interrupted update), it may be possible to boot it up into a low-level USB command mode, and use this mode to send over a fresh set of firmware. If the camera is failing to turn on because of a hardware problem, the firmware tools will probably not help you. But, if it's a firmware problem, you might have some luck.

Only try this if you have a hard-bricked out-of-warranty Hero5 Black camera that you are about to otherwise throw in the garbage, and only if you are willing to accept all risk and all consequences of using this HIGHLY EXPERIMENTAL software. This method *will* void your warranty, so if you can otherwise get warranty from GoPro, by all means do that first! The method described here is only slightly tested, risky, and experimental, and the last thing we want is people trying to fix their cameras using this method, messing them up further, and THEN crying to GoPro for help.

You take full responsibility and liability for any and all consequences arising from the use of this HIGHLY ADVANCED AND EXPERIMENTAL SOFTWARE.

With that out of the way, here's the (rather unofficial) debricking guide.

You will need:
  • Your bricked Hero5 Black camera
  • A computer running Windows or Linux (and Mac OS should technically work, but you need to install libusb and compile the tool yourself)
  • A USB cable
  • A blank microSD card of size 32GB or smaller (possibly more than one - they're flaky depending on the brand)
  • A microSD card reader
  • Some special software
  • Some luck
Part 1: Preparation
1. Download https://github.com/evilwombat/gopro-usb ... master.zip

2. Unzip the file somewhere on your computer

3. Insert the microSD card into the card reader, and plug card reader into your computer. Note that the card must be 32GB or smaller.
Advanced users: the card can be of any size, but must be formatted with the FAT (FAT32) filesystem. Larger cards tend to be formatted with exFAT, which will not work here. So, as long as your card is FAT-formatted, the size doesn't really matter.

4. Inside the 'gopro-usb-tools-master' directory, look for a file called h5-recovery.tgz. Copy this file onto the root directory of the card.

5. Cleanly eject the card from your computer, and insert it into the camera.


Part 2: USB Command Mode
1. Remove the battery from your camera, and unplug USB from camera (in case you had it plugged in). Leave the card in the camera.

2. Plug one end of the USB cable into your PC.
Note: Hero5 USB seems to behave better than that of its predecessors, but we are still using a low-level mode, so things may be a bit flaky. This related to the camera internals and there's nothing I can do about it here. If your PC has trouble detecting the camera, try using either USB 2.0 or 3.0 ports, or adding/removing a hub between the PC and the camera. Your mileage may vary.

2. Press and HOLD the Shutter button on the camera.

3. While still holding the Shutter button, plug the other end of the USB cable into the camera.

4. Let go of the Shutter button.


Part 3: Drivers
At this point, Windows might ask you to install a driver. Linux users do not need drivers and can skip this part. Mac OS does not require "drivers" but you'll need to install libusb and compile gpboot. I might have a Mac OS version but I don't have a Mac so I cannot test it.

Windows users have two options for installing drivers.
Option 1: Install my pre-made driver from gopro-usb-tools-master/UsbDrivers/. Try this first if it works for you - this is the easiest.

Option 2: Use Zadig to make a driver.
  1. Download Zadig from http://zadig.akeo.ie/ and install it
  2. Run Zadig. You should seen an unknown USB device with Vendor ID 4255 and Product ID 000C
  3. If Windows is still asking your for drivers, click 'Cancel' for now.
  4. Use Zadig to install a libusbK driver for your camera (see screenshot). Note: I would have expected you to need the plain "libusb" driver, but for some reason that doesn't work for me, but "libusbK" works, at least on my Virtual Machine running Windows XP. /shrug. I guess.... if the recovery tool doesn't see the camera, try the other driver? I am mainly on Linux, so this stuff is a bit foreign to me. You don't have to actually type in the device title "Hero5 Black (USB Command Mode)" if you don't want to. The title doesn't do anything, but it's there for your own information.
zadig-h5.JPG

Part 4: Running the debricker tool
1. Start the tool!

  • Windows users: Find and double-click on "h5_recover_win.bat". Things should start loading. It should be a bit faster if you use a USB 3.0 port (assuming this works in the first place).
  • Linux users: Open a terminal, cd into 'gopro-usb-tools-master', and run 'make' to build the tool. You might need to 'sudo apt-get install libusb-1.0.0-dev' to compile it. Once the tool is built, run "./h5_recover_linux.sh". You will need to type your password, for raw access to USB devices, though some creative udev rules can get around this.
  • Mac OS users: You will need to open a terminal, somehow install libusb-1.0.0, and compile gpboot against it. You'd need to run 'make' but something might be needed to fix up the include paths. Then run sudo ./gpboot --h5-recovery. Sorry guys - I don't have access to a Mac right now, so I can't make a pre-built Mac OS version. But I may have something untested laying around if all you have is a Mac - message me.
In all cases, the scripts are basically just going to run "gpboot --h5-recovery".

2. You will hopefully see the loader start to load things onto the camera. Things might take a while to load, especially on Windows. Be patient. If the percentages are going up, then it's loading.


Part 5: Actually flashing the firmware
1. A few seconds after the loader is done, you should start seeing some messages on the camera screen. This is the recovery kernel booting up.

2. A few seconds after that, you should see some messages that the camera is accessing the memory card. Remember that 'h5-recovery.tgz' file that you dropped on the card? This is being read now. If the card is accessible and the recovery file looks valid, the camera will give you a five-second countdown before erasing all firmware inside the camera (if any) and trying to rewrite it. If you are nervous, this is your last chance to turn back.
Note: If there is a problem with the card or with the recovery file, the camera will prompt you to check the card and try again. If this happens, you can pull out the card (carefully), make sure it's formatted properly and the recovery file is on it, and put it back in. Then, press 'Record' to try again - you don't need to repeat the whole loading process again for this. Due to some yet-unknown issues, some cards work better than others, so you may need to try a few before it works.

3. Hopefully, the camera should start flashing firmware. You should see some section names scrolling by. The whole flashing process should take less than five minutes, but some parts are bigger than others. Be patient. When the flashing is done, the camera will tell you to reboot it.


Part 6: First boot procedure
1. After flashing is done, unplug USB from the camera. Leave the card in the camera.

2. Insert a battery into the camera.

3. Wait 10 seconds (do not skip this step!). You may see the front LED light up for a few seconds - this is normal.

4. Press the Power button on the camera. With any luck, it should power up, and perform a quick update-like procedure. This is normal. It may reboot one or two times. After this is done, the camera should be ready for use (but you'll probably need to follow the steps on the back screen to set it all up again).


GOOD LUCK! And remember, you are solely responsible for the consequences of what happens, and these tools and instructions come with absolutely no warranty. Use at your own risk!

Please let me know how well this works. It has worked for me on a few H5 Black cameras, but your mileage may vary, especially since cameras can die for multiple reasons, with firmware being only one of them.

-evilwombat


So, how does this actually work?
Basically, the USB loader (gpboot) loads a Linux kernel and a small initrd onto the camera, and boots them up. A script in the initrd mounts the memory card, and unpacks the recovery file off the card. The recovery file actually contains GoPro's v2.60 firmware, along with a script for flashing it, and a few other things. This script then erases (most of) the NAND and writes the different firmware sections where they need to go. The whole firmware is something like 50MB, so we use the memory card to save ourselves the loading time, and only load the bare minimum over USB.
Quote
Like
Share

Joined: August 28th, 2018, 1:13 am

August 31st, 2018, 6:12 pm #2

THANKYOU EVILWOMBAT IT WORKS LIKE A CHARM!!! AMAZING! I was about to throw my go pro out im so glad I came across your work. I can't thank-you enough!
Quote
Like
Share