gopro / OpenGoPro

An open source interface specification to communicate with a GoPro camera with accompanying demos and tutorials.
https://gopro.github.io/OpenGoPro/
MIT License
718 stars 155 forks source link

GoPro Wifi sometimes stops responding during long sessions #519

Open pavlosharhan2 opened 7 months ago

pavlosharhan2 commented 7 months ago

There is a bit mysterious issue. The WiFi HTTP API stops working and starts responding with {'Unknown error.'}. Once it happens, there are 3 possible ways to recover:

Just wait like 10-20 minutes and It recovers by Itself - helps in 20% of cases Restart the camera ( Power off/ Power on ) - helps in 80% of cases Reset connections on the camera - always helps

This doesn't happen all the time. But when it happens, It' usually after 3-4 hours of continuous work.

One more observation: camera responds with {'Unknown error.'} only if we were connected before the problem started. If we were not connected - It just won't let to connect us to It's AP.

It would be great to get at least some understanding of what may cause this {'Unknown error.'}. I am keen to investigate further to give more input. This is the only one problem that blocks us from controlling the camera in fully unattended mode

pavlosharhan2 commented 7 months ago

Further investigation suggests that it starts happening when there are some troubles with sd card. When I see. "Unknown Error", the number of clips on camera in the status (code 39) shows a bigger number than It is in reality. I see something like 70 clips on camera, while the sd card is empty. But the SD card status ( code 33) shows "OK". So i think the only problem here is that sd_card_status ( code 33 ) doesn't always indicate that there is some problem with the storage.

Formatting sd card fixes the problem

UPD: Another type of symptoms is that The GoPro jsut stops responding to the requests ( Even though I'm able to connect to the AP). Quick shows that media list is empty when previewing the media, while there are videos on the GoPro and I can play them on the camera itself. Nothing helps in this case - restart of the phone, power cycling the camera - none of this helps. The only solution is to press "Reset connections" on the camera

tcamise-gpsw commented 7 months ago

Interesting, thanks for the investigation. Certainly seems like a valid bug so I will mark it as such.

pavlosharhan2 commented 7 months ago

@tcamise-gpsw Have added another type of sympthom besides the "Unknown error"

pavlosharhan2 commented 5 months ago

I've understood the reason of majority of cases when this happened:

Preconditions: Camera model: HERO10 So It occurs when you power the camera on via USB cable while having a battery inside with less than 20% level OR just when using GoPro Labs firmware with "Trust USB" QR code so the camera can be powered solely from USB.

Steps to reproduce: Just connect USB cable to the camera, wait about 15 sec until the camera goes in "hibernation state" and just waits for BLE connection, then Connect to It via BLE ( No matter if IT's Quick App or some custom BLE client) - DONE. Now when you try to connect via wifi and call http://10.5.5.9/gopro/media/list - you get an "Unknown error." response. When you try to view the media in the app - you'll get "Low battery" pop up and you won't be able to view the media. At this point nothing will help except of physically removing-inserting the power cable and turning the camera on by pressing the side button.

Workaround: The fix is to use "Wake on Power" ("WAKE") Labs QR code. This way the camera is always powered on automatically when there is some power supplied, and you can successfully query the media list.

Question: Why don't the camera works normally without this "Wake on power" feature enabled? Is there any reason the media list can't be queried if the power was turned on by BLE connection and not by Wake on power/pressing the side button?

pavlosharhan2 commented 5 months ago

Here’s a corrected version with improved grammar:


I'm still interested in gaining more knowledge about why the camera starts responding with "Unknown Error" during long sessions and how to prevent this from happening. Using the camera in a remote location seems a bit complicated, but it looks like It's possible.

To understand how to prevent this, I would like to know the following: 1) Is there significant harm in pulling the media list every second? Do I need to have a minimal interval between requests, similar to the BLE API? 2) Could there be harm in requesting the media list via the HTTP API or removing files while the camera (HERO 10) is recording? 3) Are there any other measures I should take to protect against this?