OpenGoPro icon indicating copy to clipboard operation
OpenGoPro copied to clipboard

Python SDK does not robustly handle BLE connection failures / drops

Open epheo opened this issue 1 year ago • 13 comments

Note! This ticket will capture any and all issues relating to Python SDK BLE:

  • recovery from failures to establish connection
  • recovery from connection drops
  • closing and re-opening Wired / Wireless GoPro objecvts

In general, these use cases have not yet been designed for / tested against and I'm not sure much of this is even solvable in the Python SDK due to the lack of robustness in Bleak and the OS's BLE stack. But it needs a major investigation on each operating system.

Component In the Python SDK.

Describe the bug If the connection to a GoPro fails, the WirelessGoPro._periodic_keep_alive coroutine is left open.

To Reproduce Start connection to a GoPro and have it fail (stop ble adapter or remove GoPro battery) Then we can observe _periodic_keep_alive by checking the running coroutines:

tasks = asyncio.all_tasks() coroutine_name = task.get_coro().qualname

Expected behavior I would expect the keepalive to be stopped once the Connection fails.

Hardware Hero 11 Linux 6

Additional context I'll try to investigate later if this can be solved by initiating connection within a contextlib.AsyncExitStack().

epheo avatar Feb 17 '24 23:02 epheo

I've made some changes to this in the last release. However the bigger issue here is that the Wire(less)GoPro objects are not designed to persist through subsequent connections. I haven't spent much time on this because I don't think bleak robustly manages, at least on Windows, failed / reconnections.

In any case, there is a large investigation required to improve the robustness here.

tcamise-gpsw avatar Apr 10 '24 19:04 tcamise-gpsw

I'm going to use this ticket as the gathering location for all BLE connection-robustness issues.

tcamise-gpsw avatar Apr 10 '24 20:04 tcamise-gpsw

Another symptom: BLE connection drops after provisioning COHN even though there is still a communication channel through COHN cause state management to break. We're going to need to rearchitect the entire connection scheme to be scalable for multiple connections / types.

tcamise-gpsw avatar Jul 01 '24 18:07 tcamise-gpsw

Relevent bleak ticket here: https://github.com/hbldh/bleak/issues/367

tcamise-gpsw avatar Aug 30 '24 16:08 tcamise-gpsw

@tcamise-gpsw I came from the #555 thread. I am also experiencing the same issue as in #555. I am using Python 3.9 with the HERO13 Black.

Is there any prospect of this issue being resolved? Could you please provide an update on the current status?

Best regards, shiratama820

shiratama820 avatar Oct 18 '24 02:10 shiratama820

Is there any update on this ticket? It's causing us quite a bit of pain communicating via the python SDK with the Hero 13

MRL-00 avatar Mar 14 '25 02:03 MRL-00

No and it needs a deep investigation into various bleak errors on all OS's. Can you post the errors you are seeing?

tcamise-gpsw avatar Mar 14 '25 19:03 tcamise-gpsw

@tcamise-gpsw I get really varying results. These are logs from my Raspberry Pi trying to connect two cameras, one after the other.

2025-03-14 19:25:22,930 - EpicGoPro - INFO - Setting up GoPro cameras... Failed to find a device in 5 seconds. Retrying #1 2025-03-14 19:25:25,791 - EpicGoPro - INFO - GoPro E1:24:8C:EC:22:DF: GoPro 0532 is connected via BLE Failed to find a device in 5 seconds. Retrying #1 Failed to find a device in 5 seconds. Retrying #2 Failed to find a device in 5 seconds. Retrying #3 2025-03-14 19:25:29,061 - EpicGoPro - INFO - GoPro C0:10:30:52:ED:BD: GoPro 7983 is connected via BLE

Sometimes it connects straight away, other times it refuses to connect and jumps through all the retry methods almost instantly, even setting the timeout to 30 seconds, there is no 30 second break between checks, or not according to the logs.

Other times only one camera will connect, and one won't. Is there a way to provide you better logs?

async def setup_gopro(self, gopros: List[GoProDeviceModel]) -> list[WirelessGoPro]:
        """Set up multiple GoPro cameras with sequential operations."""
        self.logger.info("Setting up GoPro cameras...")
        connected_gopros = []

        gopro: WirelessGoPro | None = None
        for gopro in gopros:
            gopro_name = self.get_gopro_name(gopro.serialNumber)
            try:
                gopro = WirelessGoPro(gopro_name, enable_wifi=False)
                await gopro.open(timeout=5, retries=5)
                if gopro.is_ble_connected:
                    self.logger.info(f"GoPro {gopro.identifier} is connected via BLE")
                    assert await gopro.ble_command.set_camera_control(
                        camera_control_status=proto.EnumCameraControlStatus.CAMERA_EXTERNAL_CONTROL
                    )
                    connected_gopros.append(gopro)
                else:
                    self.logger.error(f"GoPro {gopro.identifier} is not connected via BLE")
            except Exception as e:
                self.logger.error(f"Error setting up GoPro: {e}")

        return connected_gopros

When I run this from my mac, I cannot get the GoPro Hero 13's to connect at all, unless I am in the Pairing mode screen, and then it's a 50/50 chance if they connect or not.

MRL-00 avatar Mar 14 '25 19:03 MRL-00

The logs are quite detailed already. But it sounds like you're only looking at the CLI log. There should be an extremely detailed .log file next to wherever you are calling the script from. So let's start with those.

This is assuming you're setting up logging the same as the demo scripts, i.e. photo.py

tcamise-gpsw avatar Mar 14 '25 19:03 tcamise-gpsw

@tcamise-gpsw here are the logs for trying to connect to two devices on my macbook where only one successfully connected.

INFO     09:34:21.610 Scanning for GoPro 0532 bluetooth devices...                                                                                                                                                                                                                bleak_wrapper.py:121
INFO     09:34:24.190    Discovered: 2952AF0B-53BD-C556-64F9-D95DAF0069E7: GoPro 7983                                                                                                                                                                                             bleak_wrapper.py:134
WARNING  09:34:24.199 Failed to find a device in 5 seconds. Retrying #1                                                                                                                                                                                                                   client.py:86
INFO     09:34:24.203 Scanning for GoPro 0532 bluetooth devices...                                                                                                                                                                                                                bleak_wrapper.py:121
INFO     09:34:24.308    Discovered: 0C8C3694-332B-9A80-7103-9AD3CE3F3B0C: GoPro 0532                                                                                                                                                                                             bleak_wrapper.py:134
INFO     09:34:24.312 Found 1 matching devices.                                                                                                                                                                                                                                   bleak_wrapper.py:147
INFO     09:34:24.314 Establishing the BLE connection                                                                                                                                                                                                                                    client.py:107
INFO     09:34:24.316 Establishing BLE connection to 0C8C3694-332B-9A80-7103-9AD3CE3F3B0C: GoPro 0532...                                                                                                                                                                          bleak_wrapper.py:214
INFO     09:34:25.247 Discovering characteristics...                                                                                                                                                                                                                              bleak_wrapper.py:359
INFO     09:34:25.842 Done discovering characteristics!                                                                                                                                                                                                                           bleak_wrapper.py:404
INFO     09:34:25.847 Enabling notifications...                                                                                                                                                                                                                                   bleak_wrapper.py:322
INFO     09:34:26.377 Done enabling notifications                                                                                                                                                                                                                                 bleak_wrapper.py:328
INFO     09:34:26.384                                                                                                                                                                                                                                                            gopro_wireless.py:726
         <<<<<<<<--------------                                                                                                                                                                                                                                                                       
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                                                                                                                                                                                                                                               
             "status_id" : "StatusId.ENCODING",                                                                                                                                                                                                                                                       
             "protocol" : "Protocol.BLE",                                                                                                                                                                                                                                                             
             "uuid" : "Query",                                                                                                                                                                                                                                                                        
         <<<<<<<<--------------                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                      
INFO     09:34:26.440                                                                                                                                                                                                                                                            gopro_wireless.py:659
         -------------->>>>>>>>                                                                                                                                                                                                                                                                       
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                                                                                                                                                                                                                                               
             "status" : "ErrorCode.SUCCESS",                                                                                                                                                                                                                                                          
             "protocol" : "Protocol.BLE",                                                                                                                                                                                                                                                             
             "data" : {                                                                                                                                                                                                                                                                               
                 "StatusId.ENCODING" : "False",                                                                                                                                                                                                                                                       
             },                                                                                                                                                                                                                                                                                       
         -------------->>>>>>>>                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                      
INFO     09:34:26.449                                                                                                                                                                                                                                                            gopro_wireless.py:726
         <<<<<<<<--------------                                                                                                                                                                                                                                                                       
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                                                                                                                                                                                                                                               
             "status_id" : "StatusId.SYSTEM_BUSY",                                                                                                                                                                                                                                                    
             "protocol" : "Protocol.BLE",                                                                                                                                                                                                                                                             
             "uuid" : "Query",                                                                                                                                                                                                                                                                        
         <<<<<<<<--------------                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                      
INFO     09:34:26.498                                                                                                                                                                                                                                                            gopro_wireless.py:659
         -------------->>>>>>>>                                                                                                                                                                                                                                                                       
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                                                                                                                                                                                                                                               
             "status" : "ErrorCode.SUCCESS",                                                                                                                                                                                                                                                          
             "protocol" : "Protocol.BLE",                                                                                                                                                                                                                                                             
             "data" : {                                                                                                                                                                                                                                                                               
                 "StatusId.SYSTEM_BUSY" : "False",                                                                                                                                                                                                                                                    
             },                                                                                                                                                                                                                                                                                       
         -------------->>>>>>>>                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                      
INFO     09:34:26.505 BLE is ready!                                                                                                                                                                                                                                              gopro_wireless.py:599
INFO     09:34:26.559                                                                                                                                                                                                                                                            gopro_wireless.py:726
         <<<<<<<<--------------                                                                                                                                                                                                                                                                       
             "id" : "CmdId.SET_DATE_TIME_DST",                                                                                                                                                                                                                                                        
             "protocol" : "Protocol.BLE",                                                                                                                                                                                                                                                             
             "uuid" : "Command",                                                                                                                                                                                                                                                                      
             "date_time" : "2025-03-15 09:34:26.558968+13:00",                                                                                                                                                                                                                                        
             "tz_offset" : "780",                                                                                                                                                                                                                                                                     
             "is_dst" : "True",                                                                                                                                                                                                                                                                       
         <<<<<<<<--------------                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                      
INFO     09:34:26.617                                                                                                                                                                                                                                                            gopro_wireless.py:659
         -------------->>>>>>>>                                                                                                                                                                                                                                                                       
             "id" : "CmdId.SET_DATE_TIME_DST",                                                                                                                                                                                                                                                        
             "status" : "ErrorCode.SUCCESS",                                                                                                                                                                                                                                                          
             "protocol" : "Protocol.BLE",                                                                                                                                                                                                                                                             
         -------------->>>>>>>>                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                      
INFO     09:34:26.621                                                                                                                                                                                                                                                            gopro_wireless.py:726
         <<<<<<<<--------------                                                                                                                                                                                                                                                                       
             "id" : "CmdId.GET_THIRD_PARTY_API_VERSION",                                                                                                                                                                                                                                              
             "protocol" : "Protocol.BLE",                                                                                                                                                                                                                                                             
             "uuid" : "Command",                                                                                                                                                                                                                                                                      
         <<<<<<<<--------------                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                      
INFO     09:34:26.677                                                                                                                                                                                                                                                            gopro_wireless.py:659
         -------------->>>>>>>>                                                                                                                                                                                                                                                                       
             "id" : "CmdId.GET_THIRD_PARTY_API_VERSION",                                                                                                                                                                                                                                              
             "status" : "ErrorCode.SUCCESS",                                                                                                                                                                                                                                                          
             "protocol" : "Protocol.BLE",                                                                                                                                                                                                                                                             
             "data" : "2.0",                                                                                                                                                                                                                                                                          
         -------------->>>>>>>>                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                      
INFO     09:34:26.683 Using Open GoPro API version 2.0                                                                                                                                                                                                                           gopro_wireless.py:313
INFO     09:34:26.686 Turning off the camera's Wifi radio                                                                                                                                                                                                                        gopro_wireless.py:320
INFO     09:34:26.688                                                                                                                                                                                                                                                            gopro_wireless.py:726
         <<<<<<<<--------------                                                                                                                                                                                                                                                                       
             "id" : "CmdId.SET_WIFI",                                                                                                                                                                                                                                                                 
             "protocol" : "Protocol.BLE",                                                                                                                                                                                                                                                             
             "uuid" : "Command",                                                                                                                                                                                                                                                                      
             "enable" : "False",                                                                                                                                                                                                                                                                      
         <<<<<<<<--------------                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                      
INFO     09:34:26.738                                                                                                                                                                                                                                                            gopro_wireless.py:659
         -------------->>>>>>>>                                                                                                                                                                                                                                                                       
             "id" : "CmdId.SET_WIFI",                                                                                                                                                                                                                                                                 
             "status" : "ErrorCode.SUCCESS",                                                                                                                                                                                                                                                          
             "protocol" : "Protocol.BLE",                                                                                                                                                                                                                                                             
         -------------->>>>>>>>                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                      
2025-03-15 09:34:26,743 - EpicGoPro - INFO - GoPro 0C8C3694-332B-9A80-7103-9AD3CE3F3B0C: GoPro 0532 is connected via BLE
INFO     09:34:26.744                                                                                                                                                                                                                                                            gopro_wireless.py:726
         <<<<<<<<--------------                                                                                                                                                                                                                                                                       
             "id" : "ActionId.SET_CAMERA_CONTROL",                                                                                                                                                                                                                                                    
             "feature_id" : "FeatureId.COMMAND",                                                                                                                                                                                                                                                      
             "protocol" : "Protocol.BLE",                                                                                                                                                                                                                                                             
             "uuid" : "Command",                                                                                                                                                                                                                                                                      
             "camera_control_status" : "2",                                                                                                                                                                                                                                                           
         <<<<<<<<--------------                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                      
INFO     09:34:26.800                                                                                                                                                                                                                                                            gopro_wireless.py:659
         -------------->>>>>>>>                                                                                                                                                                                                                                                                       
             "id" : "ActionId.SET_CAMERA_CONTROL_RSP",                                                                                                                                                                                                                                                
             "status" : "ErrorCode.SUCCESS",                                                                                                                                                                                                                                                          
             "protocol" : "Protocol.BLE",                                                                                                                                                                                                                                                             
             "data" : {                                                                                                                                                                                                                                                                               
                 "result" : "EnumResultGeneric.RESULT_SUCCESS",                                                                                                                                                                                                                                       
             },                                                                                                                                                                                                                                                                                       
         -------------->>>>>>>>                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                      
INFO     09:34:26.816 Scanning for GoPro 7983 bluetooth devices...                                                                                                                                                                                                                bleak_wrapper.py:121
INFO     09:34:26.860                                                                                                                                                                                                                                                            gopro_wireless.py:665
         ----ASYNC----->>>>>>>>                                                                                                                                                                                                                                                                       
             "id" : "QueryCmdId.STATUS_VAL_PUSH",                                                                                                                                                                                                                                                     
             "status" : "ErrorCode.SUCCESS",                                                                                                                                                                                                                                                          
             "protocol" : "Protocol.BLE",                                                                                                                                                                                                                                                             
             "data" : {                                                                                                                                                                                                                                                                               
                 "StatusId.SYSTEM_BUSY" : "False",                                                                                                                                                                                                                                                    
                 "StatusId.ENCODING" : "False",                                                                                                                                                                                                                                                       
             },                                                                                                                                                                                                                                                                                       
         ----ASYNC----->>>>>>>>                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                      
INFO     09:34:26.919    Discovered: 0C8C3694-332B-9A80-7103-9AD3CE3F3B0C: GoPro 0532                                                                                                                                                                                             bleak_wrapper.py:134
WARNING  09:34:26.922 Failed to find a device in 5 seconds. Retrying #1                                                                                                                                                                                                                   client.py:86
INFO     09:34:26.924 Scanning for GoPro 7983 bluetooth devices...                                                                                                                                                                                                                bleak_wrapper.py:121
INFO     09:34:27.075    Discovered: 0C8C3694-332B-9A80-7103-9AD3CE3F3B0C: GoPro 0532                                                                                                                                                                                             bleak_wrapper.py:134
WARNING  09:34:27.080 Failed to find a device in 5 seconds. Retrying #2                                                                                                                                                                                                                   client.py:86
INFO     09:34:27.083 Scanning for GoPro 7983 bluetooth devices...                                                                                                                                                                                                                bleak_wrapper.py:121
INFO     09:34:27.233    Discovered: 0C8C3694-332B-9A80-7103-9AD3CE3F3B0C: GoPro 0532                                                                                                                                                                                             bleak_wrapper.py:134
WARNING  09:34:27.238 Failed to find a device in 5 seconds. Retrying #3                                                                                                                                                                                                                   client.py:86
INFO     09:34:27.241 Scanning for GoPro 7983 bluetooth devices...                                                                                                                                                                                                                bleak_wrapper.py:121
INFO     09:34:28.985    Discovered: 0C8C3694-332B-9A80-7103-9AD3CE3F3B0C: GoPro 0532                                                                                                                                                                                             bleak_wrapper.py:134
WARNING  09:34:28.994 Failed to find a device in 5 seconds. Retrying #4                                                                                                                                                                                                                   client.py:86
ERROR    09:34:29.001 Error while opening: A scan timed out without finding a device                                                                                                                                                                                             gopro_wireless.py:325
2025-03-15 09:34:29,005 - EpicGoPro - ERROR - Error setting up GoPro: A scan timed out without finding a device
ERROR    09:34:29.005 FailedToFindDevice('A scan timed out without finding a device')     

MRL-00 avatar Mar 14 '25 20:03 MRL-00

@tcamise-gpsw Here are the logs for my Raspberry PI where the devices both connected fine but failed to connect via COHN/WiFi

2025-03-14 20:38:51,268 - EpicGoPro - INFO - Setting up GoPro cameras...
INFO     20:38:51.275 Scanning for GoPro 0532 bluetooth     bleak_wrapper.py:121
         devices...                                                             
INFO     20:38:51.387    Discovered: CD:71:8A:99:00:AD:     bleak_wrapper.py:134
         GoPro 7983                                                             
WARNING  20:38:51.392 Failed to find a device in 5 seconds.         client.py:86
         Retrying #1                                                            
INFO     20:38:51.394 Scanning for GoPro 0532 bluetooth     bleak_wrapper.py:121
         devices...                                                             
INFO     20:38:51.544    Discovered: CD:71:8A:99:00:AD:     bleak_wrapper.py:134
         GoPro 7983                                                             
WARNING  20:38:51.549 Failed to find a device in 5 seconds.         client.py:86
         Retrying #2                                                            
INFO     20:38:51.550 Scanning for GoPro 0532 bluetooth     bleak_wrapper.py:121
         devices...                                                             
INFO     20:38:51.578    Discovered: C6:37:2E:00:CD:31:     bleak_wrapper.py:134
         GoPro 0532                                                             
INFO     20:38:51.582 Found 1 matching devices.             bleak_wrapper.py:147
INFO     20:38:51.583 Establishing the BLE connection              client.py:107
INFO     20:38:51.584 Establishing BLE connection to        bleak_wrapper.py:214
         C6:37:2E:00:CD:31: GoPro 0532...                                       
INFO     20:38:53.772 Pairing with bluetoothctl             bleak_wrapper.py:263
INFO     20:38:54.003 Discovering characteristics...        bleak_wrapper.py:359
INFO     20:38:55.027 Done discovering characteristics!     bleak_wrapper.py:404
INFO     20:38:55.029 Enabling notifications...             bleak_wrapper.py:322
INFO     20:38:55.953 Done enabling notifications           bleak_wrapper.py:328
INFO     20:38:55.955                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status_id" : "StatusId.ENCODING",                                 
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:38:56.100                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.ENCODING" : "False",                                 
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:38:56.103                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status_id" : "StatusId.BUSY",                                     
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:38:56.197                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.BUSY" : "False",                                     
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:38:56.200 BLE is ready!                        gopro_wireless.py:596
INFO     20:38:56.224                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "CmdId.SET_DATE_TIME_DST",                                  
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
             "date_time" : "2025-03-14                                          
         20:38:56.224516+00:00",                                                
             "tz_offset" : "0",                                                 
             "is_dst" : "False",                                                
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:38:56.295                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "CmdId.SET_DATE_TIME_DST",                                  
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:38:56.297                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "CmdId.GET_THIRD_PARTY_API_VERSION",                        
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:38:56.392                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "CmdId.GET_THIRD_PARTY_API_VERSION",                        
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : "2.0",                                                    
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:38:56.394 Using Open GoPro API version 2.0     gopro_wireless.py:310
INFO     20:38:56.395 Turning off the camera's Wifi radio  gopro_wireless.py:317
INFO     20:38:56.397                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "CmdId.SET_WIFI",                                           
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
             "enable" : "False",                                                
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:38:56.490                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "CmdId.SET_WIFI",                                           
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         -------------->>>>>>>>                                                 
                                                                                
2025-03-14 20:38:56,492 - EpicGoPro - INFO - GoPro C6:37:2E:00:CD:31: GoPro 0532 is connected via BLE
INFO     20:38:56.492                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "ActionId.SET_CAMERA_CONTROL",                              
             "feature_id" : "FeatureId.COMMAND",                                
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
             "camera_control_status" : "2",                                     
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:38:56.588                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "ActionId.SET_CAMERA_CONTROL_RSP",                          
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "result" :                                                     
         "EnumResultGeneric.RESULT_SUCCESS",                                    
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:38:56.598 Scanning for GoPro 7983 bluetooth     bleak_wrapper.py:121
         devices...                                                             
INFO     20:38:56.621    Discovered: CD:71:8A:99:00:AD:     bleak_wrapper.py:134
         GoPro 7983                                                             
INFO     20:38:56.627 Found 1 matching devices.             bleak_wrapper.py:147
INFO     20:38:56.628 Establishing the BLE connection              client.py:107
INFO     20:38:56.630 Establishing BLE connection to        bleak_wrapper.py:214
         CD:71:8A:99:00:AD: GoPro 7983...                                       
INFO     20:38:56.636                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "QueryCmdId.STATUS_VAL_PUSH",                               
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.BUSY" : "False",                                     
                 "StatusId.ENCODING" : "False",                                 
             },                                                                 
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:38:58.857 Pairing with bluetoothctl             bleak_wrapper.py:263
INFO     20:38:59.098 Discovering characteristics...        bleak_wrapper.py:359
INFO     20:39:00.052 Done discovering characteristics!     bleak_wrapper.py:404
INFO     20:39:00.053 Enabling notifications...             bleak_wrapper.py:322
INFO     20:39:00.929 Done enabling notifications           bleak_wrapper.py:328
INFO     20:39:00.931                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status_id" : "StatusId.ENCODING",                                 
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:01.027                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.ENCODING" : "False",                                 
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:01.031                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status_id" : "StatusId.BUSY",                                     
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:01.125                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.BUSY" : "False",                                     
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:01.127 BLE is ready!                        gopro_wireless.py:596
INFO     20:39:01.129                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "CmdId.SET_DATE_TIME_DST",                                  
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
             "date_time" : "2025-03-14                                          
         20:39:01.128965+00:00",                                                
             "tz_offset" : "0",                                                 
             "is_dst" : "False",                                                
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:01.222                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "CmdId.SET_DATE_TIME_DST",                                  
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:01.224                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "CmdId.GET_THIRD_PARTY_API_VERSION",                        
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:01.320                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "CmdId.GET_THIRD_PARTY_API_VERSION",                        
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : "2.0",                                                    
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:01.322 Using Open GoPro API version 2.0     gopro_wireless.py:310
INFO     20:39:01.323 Turning off the camera's Wifi radio  gopro_wireless.py:317
INFO     20:39:01.325                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "CmdId.SET_WIFI",                                           
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
             "enable" : "False",                                                
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:01.417                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "CmdId.SET_WIFI",                                           
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         -------------->>>>>>>>                                                 
                                                                                
2025-03-14 20:39:01,420 - EpicGoPro - INFO - GoPro CD:71:8A:99:00:AD: GoPro 7983 is connected via BLE
INFO     20:39:01.420                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "ActionId.SET_CAMERA_CONTROL",                              
             "feature_id" : "FeatureId.COMMAND",                                
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
             "camera_control_status" : "2",                                     
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:01.515                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "ActionId.SET_CAMERA_CONTROL_RSP",                          
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "result" :                                                     
         "EnumResultGeneric.RESULT_SUCCESS",                                    
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:01.563                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "QueryCmdId.STATUS_VAL_PUSH",                               
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.BUSY" : "False",                                     
                 "StatusId.ENCODING" : "False",                                 
             },                                                                 
         ----ASYNC----->>>>>>>>                                                 
                                                                                
2025-03-14 20:39:06,524 - EpicGoPro - INFO - Attempt 1/5: Connecting GoPro 0532 to network MRLTTL
INFO     20:39:06.532 Scanning for GoPro 0532 bluetooth     bleak_wrapper.py:121
         devices...                                                             
2025-03-14 20:39:06,534 - EpicGoPro - INFO - Attempt 1/5: Connecting GoPro 7983 to network MRLTTL
INFO     20:39:06.541 Scanning for GoPro 7983 bluetooth     bleak_wrapper.py:121
         devices...                                                             
ERROR    20:39:06.547 Error while opening:                 gopro_wireless.py:322
         [org.bluez.Error.InProgress] Operation already in                      
         progress                                                               
2025-03-14 20:39:06,549 - EpicGoPro - ERROR - Error in COHN setup for GoPro 7983 (attempt 1/5): [org.bluez.Error.InProgress] Operation already in progress
INFO     20:39:06.594    Discovered: CD:71:8A:99:00:AD:     bleak_wrapper.py:134
         GoPro 7983                                                             
WARNING  20:39:06.599 Failed to find a device in 15 seconds.        client.py:86
         Retrying #1                                                            
INFO     20:39:06.601 Scanning for GoPro 0532 bluetooth     bleak_wrapper.py:121
         devices...                                                             
INFO     20:39:06.747    Discovered: CD:71:8A:99:00:AD:     bleak_wrapper.py:134
         GoPro 7983                                                             
WARNING  20:39:06.751 Failed to find a device in 15 seconds.        client.py:86
         Retrying #2                                                            
INFO     20:39:06.753 Scanning for GoPro 0532 bluetooth     bleak_wrapper.py:121
         devices...                                                             
INFO     20:39:06.792    Discovered: C6:37:2E:00:CD:31:     bleak_wrapper.py:134
         GoPro 0532                                                             
INFO     20:39:06.798 Found 1 matching devices.             bleak_wrapper.py:147
INFO     20:39:06.799 Establishing the BLE connection              client.py:107
INFO     20:39:06.800 Establishing BLE connection to        bleak_wrapper.py:214
         C6:37:2E:00:CD:31: GoPro 0532...                                       
INFO     20:39:06.804 Pairing with bluetoothctl             bleak_wrapper.py:263
INFO     20:39:07.038 Discovering characteristics...        bleak_wrapper.py:359
INFO     20:39:07.994 Done discovering characteristics!     bleak_wrapper.py:404
INFO     20:39:07.996 Enabling notifications...             bleak_wrapper.py:322
INFO     20:39:08.000 Done enabling notifications           bleak_wrapper.py:328
INFO     20:39:08.002                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status_id" : "StatusId.ENCODING",                                 
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:08.093                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.ENCODING" : "False",                                 
             },                                                                 
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:08.095                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.ENCODING" : "False",                                 
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:08.098                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status_id" : "StatusId.BUSY",                                     
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:08.101                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.ENCODING" : "False",                                 
             },                                                                 
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:08.103                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.ENCODING" : "False",                                 
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:08.189 BLE is ready!                        gopro_wireless.py:596
INFO     20:39:08.190                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "CmdId.SET_DATE_TIME_DST",                                  
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
             "date_time" : "2025-03-14                                          
         20:39:08.190590+00:00",                                                
             "tz_offset" : "0",                                                 
             "is_dst" : "False",                                                
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:08.194                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.BUSY" : "False",                                     
             },                                                                 
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:08.197                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.BUSY" : "False",                                     
             },                                                                 
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:08.199                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.BUSY" : "False",                                     
             },                                                                 
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:08.202                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.BUSY" : "False",                                     
             },                                                                 
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:08.287                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "CmdId.SET_DATE_TIME_DST",                                  
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:08.289                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "CmdId.SET_DATE_TIME_DST",                                  
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:08.292                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "CmdId.GET_THIRD_PARTY_API_VERSION",                        
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:08.294                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "CmdId.SET_DATE_TIME_DST",                                  
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:08.296                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "CmdId.SET_DATE_TIME_DST",                                  
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:08.385                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "CmdId.GET_THIRD_PARTY_API_VERSION",                        
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : "2.0",                                                    
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:08.387                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "CmdId.GET_THIRD_PARTY_API_VERSION",                        
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : "2.0",                                                    
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:08.390 Using Open GoPro API version 2.0     gopro_wireless.py:310
INFO     20:39:08.391 Turning off the camera's Wifi radio  gopro_wireless.py:317
INFO     20:39:08.392                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "CmdId.SET_WIFI",                                           
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
             "enable" : "False",                                                
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:08.395                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "CmdId.GET_THIRD_PARTY_API_VERSION",                        
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : "2.0",                                                    
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:08.397                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "CmdId.GET_THIRD_PARTY_API_VERSION",                        
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : "2.0",                                                    
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:08.482                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "CmdId.SET_WIFI",                                           
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:08.484                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "CmdId.SET_WIFI",                                           
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:08.487                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "ActionId.REQUEST_GET_COHN_STATUS",                         
             "feature_id" : "FeatureId.QUERY",                                  
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
             "register_cohn_status" : "0",                                      
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:08.491                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "CmdId.SET_WIFI",                                           
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:08.493                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "CmdId.SET_WIFI",                                           
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         ----ASYNC----->>>>>>>>                                                 
                                                                                
ERROR    20:39:08.581 received too much data. parsing is in      response.py:382
         unknown state                                                          
ERROR    20:39:08.583 received too much data. parsing is in      response.py:382
         unknown state                                                          
ERROR    20:39:08.585 received too much data. parsing is in      response.py:382
         unknown state                                                          
ERROR    20:39:08.586 received too much data. parsing is in      response.py:382
         unknown state                                                          
ERROR    20:39:08.628 received too much data. parsing is in      response.py:382
         unknown state                                                          
ERROR    20:39:08.629 received too much data. parsing is in      response.py:382
         unknown state                                                          
ERROR    20:39:08.631 received too much data. parsing is in      response.py:382
         unknown state                                                          
ERROR    20:39:08.632 received too much data. parsing is in      response.py:382
         unknown state                                                          
2025-03-14 20:39:11,553 - EpicGoPro - INFO - Attempt 2/5: Connecting GoPro 7983 to network MRLTTL
INFO     20:39:11.560 Scanning for GoPro 7983 bluetooth     bleak_wrapper.py:121
         devices...                                                             
INFO     20:39:11.665    Discovered: CD:71:8A:99:00:AD:     bleak_wrapper.py:134
         GoPro 7983                                                             
INFO     20:39:11.670 Found 1 matching devices.             bleak_wrapper.py:147
INFO     20:39:11.672 Establishing the BLE connection              client.py:107
INFO     20:39:11.673 Establishing BLE connection to        bleak_wrapper.py:214
         CD:71:8A:99:00:AD: GoPro 7983...                                       
INFO     20:39:11.676 Pairing with bluetoothctl             bleak_wrapper.py:263
INFO     20:39:11.918 Discovering characteristics...        bleak_wrapper.py:359
INFO     20:39:12.922 Done discovering characteristics!     bleak_wrapper.py:404
INFO     20:39:12.923 Enabling notifications...             bleak_wrapper.py:322
INFO     20:39:12.928 Done enabling notifications           bleak_wrapper.py:328
INFO     20:39:12.930                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status_id" : "StatusId.ENCODING",                                 
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:13.020                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.ENCODING" : "False",                                 
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:13.023                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.ENCODING" : "False",                                 
             },                                                                 
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:13.025                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status_id" : "StatusId.BUSY",                                     
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:13.028                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.ENCODING" : "False",                                 
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:13.031                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.ENCODING" : "False",                                 
             },                                                                 
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:13.116 BLE is ready!                        gopro_wireless.py:596
INFO     20:39:13.118                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "CmdId.SET_DATE_TIME_DST",                                  
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
             "date_time" : "2025-03-14                                          
         20:39:13.118181+00:00",                                                
             "tz_offset" : "0",                                                 
             "is_dst" : "False",                                                
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:13.122                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.BUSY" : "False",                                     
             },                                                                 
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:13.124                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.BUSY" : "False",                                     
             },                                                                 
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:13.127                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.BUSY" : "False",                                     
             },                                                                 
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:13.129                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.BUSY" : "False",                                     
             },                                                                 
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:13.215                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "CmdId.SET_DATE_TIME_DST",                                  
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:13.217                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "CmdId.SET_DATE_TIME_DST",                                  
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:13.219                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "CmdId.GET_THIRD_PARTY_API_VERSION",                        
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:13.222                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "CmdId.SET_DATE_TIME_DST",                                  
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:13.224                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "CmdId.SET_DATE_TIME_DST",                                  
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:13.312                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "CmdId.GET_THIRD_PARTY_API_VERSION",                        
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : "2.0",                                                    
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:13.315                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "CmdId.GET_THIRD_PARTY_API_VERSION",                        
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : "2.0",                                                    
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:13.317 Using Open GoPro API version 2.0     gopro_wireless.py:310
INFO     20:39:13.318 Turning off the camera's Wifi radio  gopro_wireless.py:317
INFO     20:39:13.320                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "CmdId.SET_WIFI",                                           
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
             "enable" : "False",                                                
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:13.323                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "CmdId.GET_THIRD_PARTY_API_VERSION",                        
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : "2.0",                                                    
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:13.325                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "CmdId.GET_THIRD_PARTY_API_VERSION",                        
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : "2.0",                                                    
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:13.410                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "CmdId.SET_WIFI",                                           
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:13.412                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "CmdId.SET_WIFI",                                           
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:13.414                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "CmdId.SET_WIFI",                                           
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:13.416                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "CmdId.SET_WIFI",                                           
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         ----ASYNC----->>>>>>>>                                                 
                                                                                
2025-03-14 20:39:13,579 - EpicGoPro - WARNING - Initial setup error for GoPro 0532: 
INFO     20:39:18.585 Terminating the BLE connection               client.py:131
INFO     20:39:18.587 Disconnecting...                      bleak_wrapper.py:414
INFO     20:39:18.588                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "ActionId.REQUEST_GET_COHN_STATUS",                         
             "feature_id" : "FeatureId.QUERY",                                  
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
             "register_cohn_status" : "0",                                      
         <<<<<<<<--------------                                                 
                                                                                
ERROR    20:39:18.677 received too much data. parsing is in      response.py:382
         unknown state                                                          
ERROR    20:39:18.679 received too much data. parsing is in      response.py:382
         unknown state                                                          
ERROR    20:39:18.680 received too much data. parsing is in      response.py:382
         unknown state                                                          
ERROR    20:39:18.682 received too much data. parsing is in      response.py:382
         unknown state                                                          
ERROR    20:39:18.723 received too much data. parsing is in      response.py:382
         unknown state                                                          
ERROR    20:39:18.725 received too much data. parsing is in      response.py:382
         unknown state                                                          
ERROR    20:39:18.726 received too much data. parsing is in      response.py:382
         unknown state                                                          
ERROR    20:39:18.728 received too much data. parsing is in      response.py:382
         unknown state                                                          
INFO     20:39:21.304 Device disconnected!                  bleak_wrapper.py:417
2025-03-14 20:39:21,306 - EpicGoPro - INFO - Attempt 2/5: Connecting GoPro 0532 to network MRLTTL
INFO     20:39:21.314 Scanning for GoPro 0532 bluetooth     bleak_wrapper.py:121
         devices...                                                             
INFO     20:39:21.445    Discovered: CD:71:8A:99:00:AD:     bleak_wrapper.py:134
         GoPro 7983                                                             
WARNING  20:39:21.450 Failed to find a device in 15 seconds.        client.py:86
         Retrying #1                                                            
INFO     20:39:21.452 Scanning for GoPro 0532 bluetooth     bleak_wrapper.py:121
         devices...                                                             
INFO     20:39:21.598    Discovered: CD:71:8A:99:00:AD:     bleak_wrapper.py:134
         GoPro 7983                                                             
WARNING  20:39:21.603 Failed to find a device in 15 seconds.        client.py:86
         Retrying #2                                                            
INFO     20:39:21.605 Scanning for GoPro 0532 bluetooth     bleak_wrapper.py:121
         devices...                                                             
INFO     20:39:21.613    Discovered: C6:37:2E:00:CD:31:     bleak_wrapper.py:134
         GoPro 0532                                                             
INFO     20:39:21.618 Found 1 matching devices.             bleak_wrapper.py:147
INFO     20:39:21.619 Establishing the BLE connection              client.py:107
INFO     20:39:21.621 Establishing BLE connection to        bleak_wrapper.py:214
         C6:37:2E:00:CD:31: GoPro 0532...                                       
2025-03-14 20:39:23,676 - EpicGoPro - WARNING - Initial setup error for GoPro 7983: 
INFO     20:39:24.899 Pairing with bluetoothctl             bleak_wrapper.py:263
INFO     20:39:25.137 Discovering characteristics...        bleak_wrapper.py:359
INFO     20:39:26.088 Done discovering characteristics!     bleak_wrapper.py:404
INFO     20:39:26.090 Enabling notifications...             bleak_wrapper.py:322
INFO     20:39:27.014 Done enabling notifications           bleak_wrapper.py:328
INFO     20:39:27.016                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status_id" : "StatusId.ENCODING",                                 
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:27.113                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.ENCODING" : "False",                                 
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:27.118                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status_id" : "StatusId.BUSY",                                     
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:27.210                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.BUSY" : "False",                                     
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:27.213 BLE is ready!                        gopro_wireless.py:596
INFO     20:39:27.214                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "CmdId.SET_DATE_TIME_DST",                                  
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
             "date_time" : "2025-03-14                                          
         20:39:27.214557+00:00",                                                
             "tz_offset" : "0",                                                 
             "is_dst" : "False",                                                
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:27.307                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "CmdId.SET_DATE_TIME_DST",                                  
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:27.310                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "CmdId.GET_THIRD_PARTY_API_VERSION",                        
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:27.405                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "CmdId.GET_THIRD_PARTY_API_VERSION",                        
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : "2.0",                                                    
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:27.408 Using Open GoPro API version 2.0     gopro_wireless.py:310
INFO     20:39:27.409 Turning off the camera's Wifi radio  gopro_wireless.py:317
INFO     20:39:27.411                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "CmdId.SET_WIFI",                                           
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
             "enable" : "False",                                                
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:27.502                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "CmdId.SET_WIFI",                                           
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:28.678 Terminating the BLE connection               client.py:131
INFO     20:39:28.680 Disconnecting...                      bleak_wrapper.py:414
INFO     20:39:28.682                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "ActionId.REQUEST_GET_COHN_STATUS",                         
             "feature_id" : "FeatureId.QUERY",                                  
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
             "register_cohn_status" : "0",                                      
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:28.819                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "ActionId.RESPONSE_GET_COHN_STATUS",                        
             "status" : "ErrorCode.UNKNOWN",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "status" :                                                     
         "EnumCOHNStatus.COHN_PROVISIONED",                                     
                 "state" :                                                      
         "EnumCOHNNetworkState.COHN_STATE_NetworkConnected                      
         ",                                                                     
                 "username" : "gopro",                                          
                 "password" : "pJk6Lw4ZfI!m",                                   
                 "ipaddress" : "192.168.1.211",                                 
                 "enabled" : "True",                                            
                 "ssid" : "MRLTTL",                                             
                 "macaddress" : "0457474941af",                                 
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
2025-03-14 20:39:28,823 - EpicGoPro - INFO - Clearing existing certificate for GoPro 0532
INFO     20:39:28.824                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "ActionId.REQUEST_CLEAR_COHN_CERT",                         
             "feature_id" : "FeatureId.COMMAND",                                
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:29.160                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "ActionId.RESPONSE_CLEAR_COHN_CERT",                        
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "result" :                                                     
         "EnumResultGeneric.RESULT_SUCCESS",                                    
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
2025-03-14 20:39:29,163 - EpicGoPro - INFO - Configuring COHN for GoPro 0532
INFO     20:39:29.163                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "ActionId.REQUEST_GET_COHN_STATUS",                         
             "feature_id" : "FeatureId.QUERY",                                  
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
             "register_cohn_status" : "0",                                      
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:29.258                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "ActionId.RESPONSE_GET_COHN_STATUS",                        
             "status" : "ErrorCode.UNKNOWN",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "status" :                                                     
         "EnumCOHNStatus.COHN_UNPROVISIONED",                                   
                 "state" :                                                      
         "EnumCOHNNetworkState.COHN_STATE_Idle",                                
                 "username" : "None",                                           
                 "password" : "None",                                           
                 "ipaddress" : "None",                                          
                 "enabled" : "None",                                            
                 "ssid" : "None",                                               
                 "macaddress" : "None",                                         
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:29.262 Provisioning COHN                    gopro_wireless.py:400
INFO     20:39:29.264                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "ActionId.REQUEST_CREATE_COHN_CERT",                        
             "feature_id" : "FeatureId.COMMAND",                                
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
             "override" : "1",                                                  
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:31.110                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "ActionId.RESPONSE_CREATE_COHN_CERT",                       
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "result" :                                                     
         "EnumResultGeneric.RESULT_SUCCESS",                                    
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:31.114                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "ActionId.REQUEST_GET_COHN_STATUS",                         
             "feature_id" : "FeatureId.QUERY",                                  
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
             "register_cohn_status" : "1",                                      
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:31.118                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "QueryCmdId.STATUS_VAL_PUSH",                               
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.BUSY" : "False",                                     
                 "StatusId.ENCODING" : "False",                                 
             },                                                                 
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:31.257                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "ActionId.RESPONSE_GET_COHN_STATUS",                        
             "status" : "ErrorCode.UNKNOWN",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "status" :                                                     
         "EnumCOHNStatus.COHN_PROVISIONED",                                     
                 "state" :                                                      
         "EnumCOHNNetworkState.COHN_STATE_ConnectingToNetw                      
         ork",                                                                  
                 "username" : "gopro",                                          
                 "password" : "qOSNqNuxoK6s",                                   
                 "enabled" : "True",                                            
                 "ipaddress" : "None",                                          
                 "ssid" : "None",                                               
                 "macaddress" : "None",                                         
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:31.261 COHN is provisioned!!                gopro_wireless.py:414
INFO     20:39:31.263 Waiting for COHN to be connected     gopro_wireless.py:448
INFO     20:39:31.264                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "ActionId.REQUEST_GET_COHN_STATUS",                         
             "feature_id" : "FeatureId.QUERY",                                  
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
             "register_cohn_status" : "1",                                      
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:31.301 Device disconnected!                  bleak_wrapper.py:417
2025-03-14 20:39:31,303 - EpicGoPro - INFO - Attempt 3/5: Connecting GoPro 7983 to network MRLTTL
INFO     20:39:31.311 Scanning for GoPro 7983 bluetooth     bleak_wrapper.py:121
         devices...                                                             
INFO     20:39:31.403                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "ActionId.RESPONSE_GET_COHN_STATUS",                        
             "status" : "ErrorCode.UNKNOWN",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "status" :                                                     
         "EnumCOHNStatus.COHN_PROVISIONED",                                     
                 "state" :                                                      
         "EnumCOHNNetworkState.COHN_STATE_ConnectingToNetw                      
         ork",                                                                  
                 "username" : "gopro",                                          
                 "password" : "qOSNqNuxoK6s",                                   
                 "enabled" : "True",                                            
                 "ipaddress" : "None",                                          
                 "ssid" : "None",                                               
                 "macaddress" : "None",                                         
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:31.493    Discovered: CD:71:8A:99:00:AD:     bleak_wrapper.py:134
         GoPro 7983                                                             
INFO     20:39:31.497 Found 1 matching devices.             bleak_wrapper.py:147
INFO     20:39:31.499 Establishing the BLE connection              client.py:107
INFO     20:39:31.500 Establishing BLE connection to        bleak_wrapper.py:214
         CD:71:8A:99:00:AD: GoPro 7983...                                       
INFO     20:39:33.760 Pairing with bluetoothctl             bleak_wrapper.py:263
INFO     20:39:33.998 Discovering characteristics...        bleak_wrapper.py:359
INFO     20:39:34.957 Done discovering characteristics!     bleak_wrapper.py:404
INFO     20:39:34.959 Enabling notifications...             bleak_wrapper.py:322
INFO     20:39:35.834 Done enabling notifications           bleak_wrapper.py:328
INFO     20:39:35.836                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status_id" : "StatusId.ENCODING",                                 
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:35.933                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.ENCODING" : "False",                                 
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:35.936                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status_id" : "StatusId.BUSY",                                     
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:36.030                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "QueryCmdId.REG_STATUS_VAL_UPDATE",                         
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "StatusId.BUSY" : "False",                                     
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:36.033 BLE is ready!                        gopro_wireless.py:596
INFO     20:39:36.035                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "CmdId.SET_DATE_TIME_DST",                                  
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
             "date_time" : "2025-03-14                                          
         20:39:36.034836+00:00",                                                
             "tz_offset" : "0",                                                 
             "is_dst" : "False",                                                
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:36.176                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "CmdId.SET_DATE_TIME_DST",                                  
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:36.179                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "CmdId.GET_THIRD_PARTY_API_VERSION",                        
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:36.230                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "ActionId.RESPONSE_GET_COHN_STATUS",                        
             "status" : "ErrorCode.UNKNOWN",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "status" :                                                     
         "EnumCOHNStatus.COHN_PROVISIONED",                                     
                 "state" :                                                      
         "EnumCOHNNetworkState.COHN_STATE_ConnectingToNetw                      
         ork",                                                                  
                 "username" : "gopro",                                          
                 "password" : "qOSNqNuxoK6s",                                   
                 "ipaddress" : "",                                              
                 "enabled" : "True",                                            
                 "ssid" : "",                                                   
                 "macaddress" : "",                                             
             },                                                                 
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:36.274                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "CmdId.GET_THIRD_PARTY_API_VERSION",                        
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : "2.0",                                                    
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:36.276 Using Open GoPro API version 2.0     gopro_wireless.py:310
INFO     20:39:36.278 Turning off the camera's Wifi radio  gopro_wireless.py:317
INFO     20:39:36.280                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "CmdId.SET_WIFI",                                           
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
             "enable" : "False",                                                
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:36.284                                      gopro_wireless.py:662
         ----ASYNC----->>>>>>>>                                                 
             "id" : "ActionId.RESPONSE_GET_COHN_STATUS",                        
             "status" : "ErrorCode.UNKNOWN",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "status" :                                                     
         "EnumCOHNStatus.COHN_PROVISIONED",                                     
                 "state" :                                                      
         "EnumCOHNNetworkState.COHN_STATE_NetworkConnected                      
         ",                                                                     
                 "username" : "gopro",                                          
                 "password" : "qOSNqNuxoK6s",                                   
                 "ipaddress" : "192.168.1.211",                                 
                 "enabled" : "True",                                            
                 "ssid" : "MRLTTL",                                             
                 "macaddress" : "0457474941af",                                 
             },                                                                 
         ----ASYNC----->>>>>>>>                                                 
                                                                                
INFO     20:39:36.288                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "ActionId.REQUEST_GET_COHN_CERT",                           
             "feature_id" : "FeatureId.QUERY",                                  
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:36.371                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "CmdId.SET_WIFI",                                           
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:37.253                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "ActionId.RESPONSE_GET_COHN_CERT",                          
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "result" :                                                     
         "EnumResultGeneric.RESULT_SUCCESS",                                    
                 "cert" : "-----BEGIN CERTIFICATE-----                          
         MIIDnzCCAoegAwIBAgIUFOhI65Cj54y0WnwHDZl3gS5OlkgwD                      
         QYJKoZIhvcNAQEL                                                        
         BQAwaTELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRIwEAYDV                      
         QQHDAlTYW4gTWF0                                                        
         ZW8xDjAMBgNVBAoMBUdvUHJvMQ0wCwYDVQQLDARIZXJvMRowG                      
         AYDVQQDDBFHb1By                                                        
         byBDYW1lcmEgUm9vdDAeFw0yNTAzMTQyMDM5MzBaFw0zNTAzM                      
         TIyMDM5MzBaMGkx                                                        
         CzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTESMBAGA1UEBwwJU                      
         2FuIE1hdGVvMQ4w                                                        
         DAYDVQQKDAVHb1BybzENMAsGA1UECwwESGVybzEaMBgGA1UEA                      
         wwRR29Qcm8gQ2Ft                                                        
         ZXJhIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKA                      
         oIBAQDjostyLIjZ                                                        
         4FS14V1Po7LaHYjdpRKKANBCnormMzgpkYAvAt8pJHdgEjYqa                      
         l6bOVVN+KB7+fQH                                                        
         EZW1sJScuUKShLRVgWtqhPjsTDS9PmgVjFy6FJCibnarH4uyD                      
         fQ8yTs4hZbDVr36                                                        
         kS03mkiawpVRZE6qVhZG3v/omb9Q7z0gVwt/MAjs                      
         AmXmiuDvP5aRVgW                                                        
         DO9kGJWmoREzypoKtaOACXxYB5Dkai1nNao546sUidVE6kDWt                      
         M+l9PLlFRHApbAr                                                        
         Mn4z/0A1KvFn6INY24S41E70EzULlN2sdezV09g40viisyseh                      
         VP4U44B+vAXvipJ                                                        
         a2/+XsDVyQcBAgMBAAGjPzA9MA8GA1UdEwQIMAYBAf8CAQAwC                      
         wYDVR0PBAQDAgGG                                                        
         MB0GA1UdDgQWBBT0pB/xS9a+ZuZ3ElMYQ+1AkZoyiTANBgkqh                      
         kiG9w0BAQsFAAOC                                                        
         AQEAavdkeKsmYLPbsXDrAtPuj1YnHlIdblfKd+HjlUaNtsQqT                      
         4pprcX9NQmPVq3O                                                        
         hfLTJZHSyXAgzWzWHJQClD7wj65Z3sNVBnsBW2YCa5mkb0UW7                      
         LomSRkeK6dz+apQ                                                        
         Bdk/+tP3NzBlzak/yVY4K2AGdlOjuMqMEcw6YsL3rTNb7d1aL                      
         35T6q6qNvRTEWyl                                                        
         eZF345Wmg+OuV5HmGTjs01J/972AF9S8gkYNSL5KhKVxM5sgu                      
         oK4X4qHD1ardBXi                                                        
         T8J27aidtUoZZ2vaPe67Gb6ZoaU6gyzYFw8f4rM1FIE3Cr19O                      
         hlbkKoHkE4B+WUR                                                        
         k0r0dojW+0kTmxMuirtlTXFnqQ==                                           
         -----END CERTIFICATE-----                                              
         ",                                                                     
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:37.264 Using COHN Credentials:              gopro_wireless.py:453
         CohnInfo(ip_address='192.168.1.211',                                   
         username='gopro', password='qOSNqNuxoK6s',                             
         certificate='-----BEGIN                                                
         CERTIFICATE-----\nMIIDnzCCAoegAwIBAgIUFOhI65Cj54y                      
         0WnwHDZl3gS5OlkgwDQYJKoZIhvcNAQEL\nBQAwaTELMAkGA1                      
         UEBhMCVVMxCzAJBgNVBAgMAkNBMRIwEAYDVQQHDAlTYW4gTWF                      
         0\nZW8xDjAMBgNVBAoMBUdvUHJvMQ0wCwYDVQQLDARIZXJvMR                      
         owGAYDVQQDDBFHb1By\cmEgUm9vdDAeFw0yNTAzM                      
         TQyMDM5MzBaFw0zNTAzMTIyMDM5MzBaMGkx\nCzAJBgNVBAYT                      
         AlVTMQswCQYDVQQIDAJDQTESMBAGA1UEBwwJU2FuIE1hdGVvM                      
         Q4w\nDAYDVQQKDAVHb1BybzENMAsGA1UECwwESGVybzEaMBgG                      
         A1UEAwwRR29Qcm8gQ2Ft\nZXJhIFJvb3QwggEiMA0GCSqGSIb                      
         3DQEBAQUAA4IBDwAwggEKAoIBAQDjostyLIjZ\n4FS14V1Po7                      
         LaHYjdpRKKANBCnormMzgpkYAvAt8pJHdgEjYqal6bOVVN+KB                      
         7+fQH\nEZW1sJScuUKShLRVgWtqhPjsTDS9PmgVjFy6FJCibn                      
         arH4uyDfQ8yTs4hZbDVr36\nkS03mkiawpVRZEZyEvwgzL76q                      
         VhZG3v/omb9Q7z0gVwt/MAjsAmXmiuDvP5aRVgW\nDO9kGJWm                      
         oREzypoKtaOACXxYB5Dko546sUidVE6kDWtM+l9PLlF                      
         RHApbAr\nMn4z/0A1KvFn6INY24S41E70EzULlN2sdezV09g4                      
         0viisysehVP4U44B+vAXvipJ\na2/+XsDVyQcBAgMBAAGjPzA                      
         9MA8GA1UdEwQIMAYBAf8CAQAwCwYDVR0PBAQDAgGG\nMB0GA1                      
         UdDgQWBBT0pB/xS9a+ZuZ3ElMYQ+1AkZoyiTANBgkqhkiG9w0                      
         BAQsFAAOC\nAQEAavdkeKsmYLPbsXDrAtPuj1YnHlIdblfKd+                      
         HjlUaNtsQqT4pprcX9NQmPVq3O\nhfLTJZHSyXAgzWzWHJQCl                      
         D7wj65Z3sNVBnsBW2YCa5mkb0UW7LomSRkeK6dz+apQ\nBdk/                      
         +tP3NzBlzak/yVY4K2AGdlOjuMqMEcw6YsL3rTNb7d1aL35T6                      
         q6qNvRTEWyl\neZF345Wmg+OuV5HmGTjs01J/972AF9S8gkYN                      
         SL5KhKVxM5sguoK4X4qHD1ardBXi\nT8J27aidtUoZZ2vaPe6                      
         7Gb6ZoaU6gyzYFw8f4rM1FIE3Cr19OhlbkKoHkE4B+WUR\nk0                      
         r0dojW+0kTmxMuirtlTXFnqQ==\n-----END                                   
         CERTIFICATE-----\n',                                                   
         cert_path=PosixPath('cohn.crt'))                                       
2025-03-14 20:39:37,269 - EpicGoPro - INFO - Verifying camera state for GoPro 0532
INFO     20:39:37.270                                          gopro_base.py:380
         <<<<<<<<--------------                                                 
             "id" : "Camera State",                                             
             "protocol" : "Protocol.HTTP",                                      
             "endpoint" : "gopro/camera/state",                                 
         <<<<<<<<--------------                                                 
                                                                                
WARNING  20:39:37.604                                          gopro_base.py:391
         SSLError(MaxRetryError("HTTPSConnectionPool(host='192                  
         .168.1.211', port=443): Max retries exceeded with                      
         url: /gopro/camera/state (Caused by                                    
         SSLError(SSLCertVerificationError(1, '[SSL:                            
         CERTIFICATE_VERIFY_FAILED] certificate verify failed:                  
         self-signed certificate (_ssl.c:1010)')))"))                           
WARNING  20:39:39.609 Retrying #1 to send the command...       gopro_base.py:396
CRITICAL 20:39:39.763 Unexpected error:                        gopro_base.py:395
         FormatFieldError("Error in path (building)\nstruct                     
         '>B' error during building, given value 128859")                       
WARNING  20:39:39.765 Retrying #2 to send the command...       gopro_base.py:396
CRITICAL 20:39:39.883 Unexpected error:                        gopro_base.py:395
         FormatFieldError("Error in path (building)\nstruct                     
         '>B' error during building, given value 128859")                       
WARNING  20:39:39.885 Retrying #3 to send the command...       gopro_base.py:396
CRITICAL 20:39:39.990 Unexpected error:                        gopro_base.py:395
         FormatFieldError("Error in path (building)\nstruct                     
         '>B' error during building, given value 128859")                       
WARNING  20:39:39.992 Retrying #4 to send the command...       gopro_base.py:396
CRITICAL 20:39:40.122 Unexpected error:                        gopro_base.py:395
         FormatFieldError("Error in path (building)\nstruct                     
         '>B' error during building, given value 128859")                       
WARNING  20:39:40.124 Retrying #5 to send the command...       gopro_base.py:396
2025-03-14 20:39:40,126 - EpicGoPro - WARNING - Configuration error for GoPro 0532: Response timeout occurred of 5 seconds
INFO     20:39:45.131 Terminating the BLE connection               client.py:131
INFO     20:39:45.133 Disconnecting...                      bleak_wrapper.py:414
INFO     20:39:45.134                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "ActionId.REQUEST_GET_COHN_STATUS",                         
             "feature_id" : "FeatureId.QUERY",                                  
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
             "register_cohn_status" : "0",                                      
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:45.244                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "ActionId.RESPONSE_GET_COHN_STATUS",                        
             "status" : "ErrorCode.UNKNOWN",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "status" :                                                     
         "EnumCOHNStatus.COHN_PROVISIONED",                                     
                 "state" :                                                      
         "EnumCOHNNetworkState.COHN_STATE_NetworkConnected                      
         ",                                                                     
                 "username" : "gopro",                                          
                 "password" : "OfY5q7T!Wkkn",                                   
                 "ipaddress" : "192.168.1.139",                                 
                 "enabled" : "True",                                            
                 "ssid" : "MRLTTL",                                             
                 "macaddress" : "04574748ece7",                                 
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
2025-03-14 20:39:45,248 - EpicGoPro - INFO - Clearing existing certificate for GoPro 7983
INFO     20:39:45.249                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "ActionId.REQUEST_CLEAR_COHN_CERT",                         
             "feature_id" : "FeatureId.COMMAND",                                
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:45.634                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "ActionId.RESPONSE_CLEAR_COHN_CERT",                        
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "result" :                                                     
         "EnumResultGeneric.RESULT_SUCCESS",                                    
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
2025-03-14 20:39:45,637 - EpicGoPro - INFO - Configuring COHN for GoPro 7983
INFO     20:39:45.637                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "ActionId.REQUEST_GET_COHN_STATUS",                         
             "feature_id" : "FeatureId.QUERY",                                  
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Query",                                                  
             "register_cohn_status" : "0",                                      
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:45.732                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "ActionId.RESPONSE_GET_COHN_STATUS",                        
             "status" : "ErrorCode.UNKNOWN",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "status" :                                                     
         "EnumCOHNStatus.COHN_UNPROVISIONED",                                   
                 "state" :                                                      
         "EnumCOHNNetworkState.COHN_STATE_Idle",                                
                 "username" : "None",                                           
                 "password" : "None",                                           
                 "ipaddress" : "None",                                          
                 "enabled" : "None",                                            
                 "ssid" : "None",                                               
                 "macaddress" : "None",                                         
             },                                                                 
         -------------->>>>>>>>                                                 
                                                                                
INFO     20:39:45.736 Provisioning COHN                    gopro_wireless.py:400
INFO     20:39:45.737                                      gopro_wireless.py:723
         <<<<<<<<--------------                                                 
             "id" : "ActionId.REQUEST_CREATE_COHN_CERT",                        
             "feature_id" : "FeatureId.COMMAND",                                
             "protocol" : "Protocol.BLE",                                       
             "uuid" : "Command",                                                
             "override" : "1",                                                  
         <<<<<<<<--------------                                                 
                                                                                
INFO     20:39:47.295 Device disconnected!                  bleak_wrapper.py:417
2025-03-14 20:39:47,297 - EpicGoPro - INFO - Attempt 3/5: Connecting GoPro 0532 to network MRLTTL
INFO     20:39:47.305 Scanning for GoPro 0532 bluetooth     bleak_wrapper.py:121
         devices...                                                             
INFO     20:39:47.340                                      gopro_wireless.py:656
         -------------->>>>>>>>                                                 
             "id" : "ActionId.RESPONSE_CREATE_COHN_CERT",                       
             "status" : "ErrorCode.SUCCESS",                                    
             "protocol" : "Protocol.BLE",                                       
             "data" : {                                                         
                 "result" :                                                     
         "EnumResultGeneric.RESULT_SUCCESS",                                    
             },                                                                 
         -------------->>>>>>>>                                                 

MRL-00 avatar Mar 14 '25 20:03 MRL-00

Here's a fair warning that none of the following is going to help you unfortunately but anyway...

Yeah there are certainly a lot of errors there. This is also probably the most complicated use case I could imagine. You have the following, all of which are either not supported or not stable:

  • multiple connections
  • multiple simultaneous connections
  • reconnects, recovery, etc
  • COHN
  • raspberry PI which seems to randomly throw BLE when connecting to GoPro's

This needs to be split out for debugging and tracking. Like this ticket specifically is only considering reconnects and recovery for one connection. If we're going to solve this problem, we need a simple test to continuously connect and reconnect for:

  • Windows
  • Mac
  • RPI

The other topics also need separate investigation. Specifically this error you are seeing: received too much data. parsing is in unknown state is almost certainly because the SDK does not support simultaneous connections

Unfortunately, the bigger issue here is that there is no plan (at least for me) to perform any of these investigations any time soon. So basically the SDK still currently only supports serialized individual connections with very limited testing on RPI. ☹

tcamise-gpsw avatar Mar 14 '25 21:03 tcamise-gpsw

@tcamise-gpsw messaging here as #645 is closed now. You mention that this is possibly an issue with the BLEAK library but I have seen this issue running in Kotlin as well as writing our own SDK. There are lots of strange intermittent issues where the GoPros do not connect again to BLE after being off for extended periods of time or the battery disconnected. Would be great if someone from GoPro could put some time into researching it. We see the same with COHN where sometimes it just refuses to connect where the day prior the device was connected and running perfectly with COHN.

MRL-00 avatar Nov 09 '25 23:11 MRL-00