Little hacks for a GoPro Hero 3 White
Someone came to me with a broken GoPro Hero 3 White which wasn't turning on anymore, asking if there was a cheap way to fix it.
After tearing it down, a quick inspection revealed that the two flat-flex cables (the Shutter button one and the Power/Mode+LCD one) were both damaged, so neither the buttons or the LCD were working.
However, making contacts on the PCB traces of the Power button resulted in some reaction from the camera, so I knew there was still a chance.
Replacing the cables with spare parts could have been an option except that the receptacle for the Power button flat-flex was busted too. and I am not that great at micro-soldering; so I looked for an easier way out.
GoPro cameras have the so called “Herobus” interface and looking at the connector pinout for a similar model I saw that the Power button (PWRBTN
) is exposed at pin 19, so an external button can be added to turn the camera on. I ended up buying a cheap compatible connector to experiment with.
I soldered a momentary button to a little piece of perf-board held into the strain-relief slot, and it works robustly enough.
NOTE: do not apply too much solder to the pins of the connector, or you might risk to bridge them in places hard to reach. That happened to me and I lost quite some time struggling with flux and solder wick to get rid of the bridge.
In the picture below you can see the final result; it's an ugly contraption, but, hey, it works.
Debouncing the button is not strictly needed to power on the camera because a 1-second long press is required.
The external connector solves the problem of the busted Power button, however the Shutter button still has to be pressed somehow to be able to control the camera functions.
It turns out that, instead of buying the replacement for the flat-flex cable, a software solution can be used for that.
The hack is sometimes called “Super One-Button mode”, and it consists in putting a script named autoexec.ash
in the MicroSD card: this script can contain commands to control the camera and it will be executed automatically when the camera boots. The ash
extension of the file derives from the name of the command line interpreter Ambarella shell, which comes after the hardware platform used for the device, like reported in this DefConf presentation.
The camera I had was a GoPro Hero 3 White and unfortunately there were only very few basic scripts on-line for this model.
So here are some more examples I came up with.
Dump help text
The Ambarella shell supports output redirection, so the output of commands can be saved to a file for later inspection.
This script can be used to list the supported commands:
help > d:\help.txt
And from there, a script to dump the help text of various commands can be written:
bp > d:\bp.txt config > d:\config.txt cpu > d:\cpu.txt date > d:\date.txt dmesg > d:\dmesg_help.txt dmesg rtos -100 > d:\dmesg_rtos.txt dmesg dsp -100 > d:\dmesg_dsp.txt eeprom > d:\eeprom_help.txt net > d:\net_help.txt net info > d:\net_info.txt net status > d:\net_status.txt poweroff > d:\poweroff_help.txt t app curapp > d:\t_app_curapp_help.txt t app curapp status > d:\t_app_curapp_status.txt t app > d:\t_app_help.txt t app key > d:\t_app_key_help.txt t app linux_usb > d:\t_app_linux_usb_help.txt t app msg > d:\t_app_msg_help.txt t app tcmd > d:\t_app_tcmd.txt t app test > d:\t_app_test_help.txt t cal > d:\t_cal_help.txt t disp > d:\t_disp_help.txt t > d:\t_help.txt t iavinfo > d:\t_iavinfo_help.txt t k20 > d:\t_k20_help.txt t uart > d:\t_uart_help.txt ver > d:\ver.txt wifi > d:\wifi_help.txt sleep 1 poweroff yes
Enable the serial console via USB
Use this script:
sleep 4 t app test usb_rs232 1 sleep 2 t app key mode
Then:
- Power on the GoPro without connecting the USB cable.
- Wait 6 seconds and only then connect the USB cable.
-
Open the new USB serial device (e.g. with
minicom
orscreen
).
The last command t app key mode
seems to be needed to prevent the camera from cutting the serial connection.
Take a picture and then turn off the camera
This is done by changing the mode from Video to Picture, then pressing the record key (which corresponds to the physical Shutter button), and then shutting down:
sleep 2 t app key mode sleep 1 t app key record sleep 2 t app key power
The script assumes that Video mode is the default mode when the camera powers on.
Turn Wifi On
On the GoPro Hero3 White there is no easy way to press the Wifi button via software using the t app key
command.
Presumably that could be done with the t gpio
command but I didn't know what the GPIO pin number was, so I looked for an alternative way.
Using the t app key
command it is possible to navigate the user menu.
The navigation steps can be figured out from the manual:
And/or by observing the steps on a fully functional camera, like here or here
To enable Wifi in App Mode the navigation is like the following:
- press the mode button 4 times to get to the 'Settings' menu;
- press the record button to enter the sub-menu;
- press the mode button 6 times to get to the 'Wireless Controls' menu;
- press the record button to enter the sub-menu;
- press the record button again to enter the wireless mode sub-menu;
- press the mode button 2 times to get to the 'GoPro App' mode;
- press the record button to enable Wifi.
This results in the following script:
sleep 4 t app key mode sleep 1 t app key mode sleep 1 t app key mode sleep 1 t app key mode sleep 1 t app key record sleep 1 t app key mode sleep 1 t app key mode sleep 1 t app key mode sleep 1 t app key mode sleep 1 t app key mode sleep 1 t app key mode sleep 1 t app key record sleep 1 t app key record sleep 1 t app key mode sleep 1 t app key mode sleep 1 t app key record sleep 3 rm d:\autoexec.ash sleep 1
Note that enabling WiFi seems to reduce the USB functionality, for instance it is not possible to enter the USB RS232 mode anymore, and the USB Mass storage mode gets disabled too.
A similar script can be used to disable the Wifi if needed.
Conclusions and final notes
A software solution to an hardware problem is not always the best one, but in this case it surely was the cheapest one.
In case a script produced some weird side-effect a manual firmware update can be performed to try to reset all the camera default status; this requires a charged battery. The upgrade process can take up to 5 minutes, so don't panic too early if the GoPro does not seem to be active for a while.
My collections of autoexec.ash
scripts for the GoPro Hero 3 White has been merged in KonradIT/autoexechack.
Comments
Thanks for the post! I'm
Thanks for the post!
I'm having some troubles with enabling the serial console via USB - I've created an autoexec.ash file with the content that was provided, and I can't manage to find a USB serial device on my PC when connecting the camera to it.
If this matters - I'm using a Linux machine.
Hi, the USB-serial script is
Hi,
the USB-serial script is very time-sensitive, make sure you are also following the instructions after the script.
Also this may be model-dependent, if your GoPro is a different model I am not sure if it works at all.
Unfortunately I don't have the device anymore so I cannot do any more testing.
Ciao, Antonio
Post new comment