Parrot ANAFI USA/GOV Timeout Error

Hello,

We are trying to control a Parrot Anafi USA and an Anafi GOV drone with Parrot Olympe. We are able to connect and start the Olympe script, but after a few seconds of seemingly working, we receive a timeout error and the drone forcibly disconnects. This is the code we are attempting to run:

import olympe
import time

if __name__ == "__main__":
    drone = olympe.Drone('192.168.42.1')
    drone.connect()
    time.sleep(10)
    drone.disconnect()

Here is a snippet of the log:

2023-08-14 12:46:23,765 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - ardrone3.PilotingSettingsState.MotionDetection(enabled=0)
2023-08-14 12:46:23,765 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - rth.preferred_home_type(type='takeoff')
2023-08-14 12:46:23,765 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - ardrone3.GPSSettingsState.HomeTypeChanged(type='TAKEOFF')
2023-08-14 12:46:23,765 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - common.SettingsState.ProductNameChanged(name='goldeneagle')
2023-08-14 12:46:23,766 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - wifi.supported_security_types(types='wpa2')
2023-08-14 12:46:23,766 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - wifi.security_changed(type='wpa2', key='steeleagle', key_type='plain')
2023-08-14 12:46:23,766 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - wifi.ap_channel_changed(type='auto_all', band='2_4_ghz', channel=1)
2023-08-14 12:46:23,766 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - wifi.country_changed(selection_mode='auto', code='US')
2023-08-14 12:46:23,766 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - wifi.environment_changed(environment='outdoor')
2023-08-14 12:46:23,903 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - wifi.supported_countries(countries='AL;DZ;AR;AM;AW;AU;AT;AZ;BH;BD;BB;BY;BE;BZ;BO;BA;BR;BN;BG;KH;CA;CL;CN;CO;CR;HR;CY;CZ;DK;DO;EC;EG;SV;EE;FI;FR;GE;DE;GR;GL;GD;GU;GT;HT;HN;HK;HU;IS;IN;ID;IR;IE;IL;IT;JM;JP;JO;KZ;KE;KP;KR;KU;LV;LB;LI;LT;LU;MO;MK;MY;MT;MX;MC;MA;NP;NL;AN;NZ;NO;OM;PK;PA;PG;PE;PH;PL;PT;PR;QA;RO;RU;SA;SG;SK;SI;ZA;ES;LK;SE;CH;SY;TW;TH;TT;TN;TR;UA;AE;GB;US;PS;UY;UZ;VE;VN;YE;ZW
')
2023-08-14 12:46:23,904 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - gimbal.relative_attitude_bounds(gimbal_id=0, min_yaw=0.0, max_yaw=0.0, min_pitch=-135.0, max_pitch=105.0, min_roll=-38.0, max_roll=38.0, list_flags='')
2023-08-14 12:46:23,904 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - gimbal.absolute_attitude_bounds(gimbal_id=0, min_yaw=0.0, max_yaw=0.0, min_pitch=-90.0, max_pitch=90.0, min_roll=0.0, max_roll=0.0, list_flags='')
2023-08-14 12:46:23,905 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - gimbal.max_speed(gimbal_id=0, min_bound_yaw=0.0, max_bound_yaw=0.0, current_yaw=0.0, min_bound_pitch=0.0, max_bound_pitch=180.0, current_pitch=20.0, min_bound_roll=0.0, max_bound_roll=180.0, current_roll=20.0, list_flags='')
2023-08-14 12:46:23,905 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - camera.max_zoom_speed(cam_id=0, min=0.0, max=10.0, current=0.23000000417232513, list_flags='')
2023-08-14 12:46:23,906 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - camera.max_zoom_speed(cam_id=1, min=0.0, max=10.0, current=0.23000000417232513, list_flags='')
2023-08-14 12:46:23,906 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - camera.max_zoom_speed(cam_id=2, min=0.0, max=10.0, current=0.23000000417232513, list_flags='')
2023-08-14 12:46:23,906 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - camera.zoom_velocity_quality_degradation(cam_id=0, allowed=1, list_flags='')
2023-08-14 12:46:23,906 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - camera.zoom_velocity_quality_degradation(cam_id=1, allowed=1, list_flags='')
2023-08-14 12:46:23,906 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - camera.zoom_velocity_quality_degradation(cam_id=2, allowed=1, list_flags='')
2023-08-14 12:46:23,906 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - gimbal.calibration_state(state='ok', gimbal_id=0, list_flags='')
2023-08-14 12:46:23,906 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - gimbal.offsets(gimbal_id=0, update_state='inactive', min_bound_yaw=0.0, max_bound_yaw=0.0, current_yaw=0.0, min_bound_pitch=-5.0, max_bound_pitch=5.0, current_pitch=0.0, min_bound_roll=-5.0, max_bound_roll=5.0, current_roll=0.0, list_flags='')
2023-08-14 12:46:23,907 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - camera.autorecord(cam_id=0, state='active', list_flags='')
2023-08-14 12:46:23,907 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - camera.autorecord(cam_id=1, state='active', list_flags='')
2023-08-14 12:46:23,907 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - camera.autorecord(cam_id=2, state='active', list_flags='')
2023-08-14 12:46:23,907 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - dri.dri_state(mode='disabled')
2023-08-14 12:46:23,907 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - rth.ending_hovering_altitude(current=2.0, min=1.0, max=10.0)
2023-08-14 12:46:23,907 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - ardrone3.SettingsState.ProductGPSVersionChanged(software='3.01R', hardware='')
2023-08-14 12:46:23,907 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - common.SettingsState.AllSettingsChanged()
2023-08-14 12:46:23,908 [INFO] 	olympe.drone.goldeneagle - _send_protobuf_command - antiflicker.Command.GetState(include_default_capabilities=True) has been sent to the device
2023-08-14 12:46:23,917 [INFO] 	olympe.drone.goldeneagle - _send_protobuf_command - camera2.Command.GetState(include_default_capabilities=True) has been sent to the device
2023-08-14 12:46:24,267 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - wifi.rssi_changed(rssi=-29)
2023-08-14 12:46:25,269 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - wifi.rssi_changed(rssi=-28)
2023-08-14 12:46:27,979 [INFO] 	olympe.drone.goldeneagle - _link_quality_cb - Link quality: tx=55, rx=100, rx_useful=98
2023-08-14 12:46:28,268 [INFO] 	olympe.drone.goldeneagle - _recv_cmd_cb - wifi.rssi_changed(rssi=-29)
2023-08-14 12:46:28,934 [ERROR] 	olympe.drone.goldeneagle - connect - '192.168.42.1 connection timed out
2023-08-14 12:46:28,935 [INFO] 	olympe.drone.goldeneagle - _disconnected_cb - Disconnected from device: goldeneagle
2023-08-14 12:46:28,936 [ERROR] 	olympe.drone.goldeneagle - _do_connect - '192.168.42.1 connection retries failed
2023-08-14 12:46:28,938 [INFO] 	olympe.drone.goldeneagle - _on_device_removed - <olympe.arsdkng.cmd_itf.DisconnectedEvent object at 0x7fbe6795efe0>
2023-08-14 12:46:28,940 [INFO] 	olympe.drone.goldeneagle - disconnect - Disconnection with the device OK. IP: b'192.168.42.1'
2023-08-14 12:46:28,940 [INFO] 	olympe.media - _websocket_event_reader - websocket closed
2023-08-14 12:46:38,950 [INFO] 	olympe.drone.goldeneagle - disconnect - Disconnection with the device OK. IP: b'192.168.42.1'
2023-08-14 12:46:38,974 [INFO] 	olympe.drone.goldeneagle - _on_device_removed - <olympe.arsdkng.cmd_itf.DisconnectedEvent object at 0x7fbe6795dae0>
2023-08-14 12:46:38,975 [INFO] 	olympe.scheduler - _destroy_pomp_loop - Pomp loop has been destroyed: subscribers_thread
2023-08-14 12:46:39,176 [INFO] 	olympe.media - _destroy_pomp_loop - Pomp loop has been destroyed: Thread-3
2023-08-14 12:46:39,177 [INFO] 	olympe.backend - _destroy_pomp_loop - Pomp loop has been destroyed: Thread-2

This occurs about 2-3 seconds after startup. We have run several other scripts and this behavior persists. Strangely, the scripts work perfectly on our regular Parrot Anafi and Anafi Ai drones. We are running on an Ubuntu 22.04 laptop with Olympe 7.7.0. Our GOV drone has software version 1.9.5 and hardware version HW_03. Thanks for your help.

@mihirbala ,

I was able to reproduce this with my USA. I played around with the timeout/retry parameters to the connect method and was able to stay connected to the drone when timeout=5 and retry=3. It is unclear why exactly this makes a difference. Perhaps someone at Parrot can clarify. With timeout=30 and retry unset, it does take longer to receive the ‘connection timed out’ message, but I still get it. With retry=3 and timeout unset, it also times out. So there is some strange interplay between the retry attempts and how much time before a timeout.

UPDATE: I did an exhaustive search through all versions of Parrot Olympe available on PyPi. Versions 7.5.0 and before work as expected with Anafi USA and Anafi GOV drones. With 7.6.0 and later, connections sometimes work but no commands (like takeoff or movement) work and sending these commands results in a timeout. There is clearly a bug with these new releases when handling the USA/GOV. Regular Anafi and Anafi Ai work fine.

I have the exact same issue, up until now I haven’t been able to find a way to fix this. I have to run my code several times and after 5 or more attempts I can successfully connect to the drone. It’s quite annoying since it makes the developing process quite exhausting and slow. Hope someone can clarify why this happens, I’ve tried getting help on the forums but so far I’m on my own.

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.

Hello,

@Razr @mihirbala @teiszler , I am sorry for this late reply.

Olympe 7.7.1 has just been released. This version should fix the connectivity issues with Anafi USA/GOV drones.

pip install --upgrade parrot-olympe should now install Olympe 7.7.1 under Ubuntu 22.04.

This release is also available on pypi.org and github.com:

Please let me know if this release works for you. Thanks