Cellular.py olympe example script fails

Bonjour,

Je cherche à connecter un drone anafi AI en 4G via olympe et le skyctrl. En suivant l’exemple présent dans le git d’olympe cellular.py (fonction test_cellular_explicite), j’obtiens l’erreur “ssl.SSLEOFError: [SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol”. Quelqu’un a-t-il déjà eu ce type de problème ? Est-ce un problème de version d’une librairie dans pip ?

Test of cellular explicite pairing
- SkyController connected
- Drone connected
    cellular link status: "olympe.enums.<property object at 0x73e94d2bede0>.LinkStatus.ready"
- Cellular pairing of the SkyController and the Drone
- Connect cellular using the new user APC token
- Waiting for cellular link to be running
    cellular link status: "olympe.enums.<property object at 0x73e94d2bede0>.LinkStatus.running"
    cellular user_apc_token: [MY NEW APC TOKEN]
2025-08-29 10:45:30,692 [ERROR] 	olympe.cellular - step - Unhandled coroutine exception
Traceback (most recent call last):
  File "/home/blabla/olympe_samples/.venv/lib/python3.10/site-packages/olympe/concurrent/_task.py", line 132, in step
    result = self._coro.send(None)
  File "/home/blabla/olympe_samples/.venv/lib/python3.10/site-packages/olympe/networking.py", line 1063, in _process_data
    data = await self._process_tls_data()
  File "/home/blabla/olympe_samples/.venv/lib/python3.10/site-packages/olympe/networking.py", line 1029, in _process_tls_data
    data = self._ssl_object.read()
  File "/home/blabla/.pyenv/versions/3.10.16/lib/python3.10/ssl.py", line 917, in read
    v = self._sslobj.read(len)
ssl.SSLEOFError: [SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:2578)
2025-08-29 10:45:30,692 [ERROR] 	olympe.cellular - step -   File "/home/blabla/.pyenv/versions/3.10.16/lib/python3.10/threading.py", line 973, in _bootstrap
    self._bootstrap_inner()
  File "/home/blabla/.pyenv/versions/3.10.16/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
    self.run()
  File "/home/blabla/olympe_samples/.venv/lib/python3.10/site-packages/olympe/concurrent/__init__.py", line 520, in run
    self._run_task_list(self.async_pomp_task)
  File "/home/blabla/olympe_samples/.venv/lib/python3.10/site-packages/olympe/concurrent/__init__.py", line 458, in _run_task_list
    ret = f(*args, **kwds)
  File "/home/blabla/olympe_samples/.venv/lib/python3.10/site-packages/olympe/concurrent/_task.py", line 199, in _wakeup
    self.step()
  File "/home/blabla/olympe_samples/.venv/lib/python3.10/site-packages/olympe/concurrent/_task.py", line 157, in step
    self._loop.logger.error("".join(traceback.format_stack()))

2025-08-29 10:45:30,693 [ERROR] 	olympe.cellular - step - Unhandled coroutine exception
Traceback (most recent call last):
  File "/home/blabla/olympe_samples/.venv/lib/python3.10/site-packages/olympe/concurrent/_task.py", line 132, in step
    result = self._coro.send(None)
  File "/home/blabla/olympe_samples/.venv/lib/python3.10/site-packages/olympe/networking.py", line 1063, in _process_data
    data = await self._process_tls_data()
  File "/home/blabla/olympe_samples/.venv/lib/python3.10/site-packages/olympe/networking.py", line 1029, in _process_tls_data
    data = self._ssl_object.read()
  File "/home/blabla/.pyenv/versions/3.10.16/lib/python3.10/ssl.py", line 917, in read
    v = self._sslobj.read(len)
ssl.SSLEOFError: [SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:2578)
2025-08-29 10:45:30,693 [ERROR] 	olympe.cellular - step -   File "/home/blabla/.pyenv/versions/3.10.16/lib/python3.10/threading.py", line 973, in _bootstrap
    self._bootstrap_inner()
  File "/home/blabla/.pyenv/versions/3.10.16/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
    self.run()
  File "/home/blabla/olympe_samples/.venv/lib/python3.10/site-packages/olympe/concurrent/__init__.py", line 520, in run
    self._run_task_list(self.async_pomp_task)
  File "/home/blabla/olympe_samples/.venv/lib/python3.10/site-packages/olympe/concurrent/__init__.py", line 458, in _run_task_list
    ret = f(*args, **kwds)
  File "/home/blabla/olympe_samples/.venv/lib/python3.10/site-packages/olympe/concurrent/_task.py", line 199, in _wakeup
    self.step()
  File "/home/blabla/olympe_samples/.venv/lib/python3.10/site-packages/olympe/concurrent/_task.py", line 157, in step
    self._loop.logger.error("".join(traceback.format_stack()))

2025-08-29 10:45:30,755 [ERROR] 	ulog - mux - mux_channel_ip_disconnected err=2(No such file or directory)

Bonjour @Remi ,

A première vue ce n’est pas un problème qui a été remonté.

  • Avez-vous modifié ou ajouté des certificats TLS/SSL sur la machine ?
  • Avez-vous testé sur une autre machine ou un autre environnement pour voir si le problème se reproduit ?

Bien cordialement,
Hugo

Bonjour,

Je viens d"essayer sur une install neuve en ubuntu 24.04 avec python 3.12.3, sans pare-feu ou proxy qui pourrait gêner la communication.

J’ai exactement le même message.

Est-ce la version ubuntu/python qui ne serait pas compatible ? Une version de librairie python ?

“pip3 list” me retourne les versions suivantes des libs:

  • requests: 2.32.5
  • urllib3: 2.5.0
  • parrot-olympe: 7.7.5

Cordialement,
Rémi

Bonjour,

Olympe et ses exemples (y compris cellular.py) ont été principalement testés et validés sur Ubuntu 22.04. Certaines erreurs SSL ou comportements inattendus peuvent donc apparaître sur d’autres versions d’Ubuntu (ou avec certaines versions de Python/pip) en raison de différences dans OpenSSL ou les librairies système.

Nous allons investiguer ce problème sur Ubuntu 24.04 afin d’identifier la cause et proposer une solution adaptée.

Bien cordialement,
Hugo

Bonjour,

Je viens de faire tourner le script cellular.py sur un ordinateur en ubuntu 22.04 sans contrainte réseau (proxy, …). Le résultat est identique. Pourriez-vous m’envoyer le pip3 list de votre setup fonctionnel ?

Voici ci-dessous les commandes testées:

(.venv) my_machine@my_machine:~/workspace/examples$ pip3 list
Package Version


aenum 3.1.16
asn1tools 0.167.0
asttokens 3.0.0
bitstruct 8.21.0
black 25.1.0
boltons 25.0.0
certifi 2025.8.3
charset-normalizer 3.4.3
click 8.2.1
colorlog 6.9.0
dacite 1.9.2
decorator 5.2.1
exceptiongroup 1.3.0
executing 2.2.1
future 1.0.0
geographiclib 2.1
geopy 2.4.1
h11 0.16.0
idna 3.10
ipython 8.37.0
jedi 0.19.2
matplotlib-inline 0.1.7
mypy_extensions 1.1.0
numpy 2.2.6
packaging 25.0
parrot-olympe 7.7.5
parso 0.8.5
pathspec 0.12.1
pexpect 4.9.0
pip 22.0.2
platformdirs 4.4.0
prompt_toolkit 3.0.52
protobuf 3.19.4
ptyprocess 0.7.0
pure_eval 0.2.3
pycryptodomex 3.23.0
Pygments 2.19.2
pyparsing 3.2.3
pytz 2025.2
PyYAML 6.0.2
requests 2.32.5
setuptools 59.6.0
six 1.17.0
stack-data 0.6.3
tomli 2.2.1
traitlets 5.14.3
typing_extensions 4.15.0
tzlocal 3.0
urllib3 2.5.0
wcwidth 0.2.13
wsproto 1.2.0

(.venv) my_machine@my_machine:~/workspace/examples$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.5 LTS
Release: 22.04
Codename: jammy

(.venv) my_machine@my_machine:~/workspace/examples$ python3 cellular.py
Test of automatic cellular pairing and configuration

  • SkyController connected
  • Drone connected
    cellular link status: “olympe.enums.<property object at 0x7fb02d7b6f70>.LinkStatus.ready”
  • Waiting for cellular link to be running
    cellular link status: “olympe.enums.<property object at 0x7fb02d7b6f70>.LinkStatus.running”
    2025-09-08 16:40:44,985 [ERROR] olympe.cellular - step - Unhandled coroutine exception
    Traceback (most recent call last):
    File “~/workspace/examples/.venv/lib/python3.10/site-packages/olympe/concurrent/_task.py”, line 132, in step
    result = self._coro.send(None)
    File “~/workspace/examples/.venv/lib/python3.10/site-packages/olympe/networking.py”, line 1063, in _process_data
    data = await self._process_tls_data()
    File “~/workspace/examples/.venv/lib/python3.10/site-packages/olympe/networking.py”, line 1029, in _process_tls_data
    data = self._ssl_object.read()
    File “/usr/lib/python3.10/ssl.py”, line 917, in read
    v = self._sslobj.read(len)
    ssl.SSLEOFError: [SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:2578)
    2025-09-08 16:40:44,994 [ERROR] olympe.cellular - step - File “/usr/lib/python3.10/threading.py”, line 973, in _bootstrap
    self._bootstrap_inner()
    File “/usr/lib/python3.10/threading.py”, line 1016, in _bootstrap_inner
    self.run()
    File “~/workspace/examples/.venv/lib/python3.10/site-packages/olympe/concurrent/init.py”, line 520, in run
    self._run_task_list(self.async_pomp_task)
    File “~/workspace/examples/.venv/lib/python3.10/site-packages/olympe/concurrent/init.py”, line 458, in _run_task_list
    ret = f(*args, **kwds)
    File “~/workspace/examples/.venv/lib/python3.10/site-packages/olympe/concurrent/_task.py”, line 199, in _wakeup
    self.step()
    File “~/workspace/examples/.venv/lib/python3.10/site-packages/olympe/concurrent/_task.py”, line 157, in step
    self._loop.logger.error(“”.join(traceback.format_stack()))

2025-09-08 16:40:44,997 [ERROR] olympe.cellular - step - Unhandled coroutine exception
Traceback (most recent call last):
File “~/workspace/examples/.venv/lib/python3.10/site-packages/olympe/concurrent/_task.py”, line 132, in step
result = self._coro.send(None)
File “~/workspace/examples/.venv/lib/python3.10/site-packages/olympe/networking.py”, line 1063, in _process_data
data = await self._process_tls_data()
File “~/workspace/examples/.venv/lib/python3.10/site-packages/olympe/networking.py”, line 1029, in _process_tls_data
data = self._ssl_object.read()
File “/usr/lib/python3.10/ssl.py”, line 917, in read
v = self._sslobj.read(len)
ssl.SSLEOFError: [SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:2578)
2025-09-08 16:40:44,999 [ERROR] olympe.cellular - step - File “/usr/lib/python3.10/threading.py”, line 973, in _bootstrap
self._bootstrap_inner()
File “/usr/lib/python3.10/threading.py”, line 1016, in _bootstrap_inner
self.run()
File “~/workspace/examples/.venv/lib/python3.10/site-packages/olympe/concurrent/init.py”, line 520, in run
self._run_task_list(self.async_pomp_task)
File “~/workspace/examples/.venv/lib/python3.10/site-packages/olympe/concurrent/init.py”, line 458, in _run_task_list
ret = f(*args, **kwds)
File “~/workspace/examples/.venv/lib/python3.10/site-packages/olympe/concurrent/_task.py”, line 199, in _wakeup
self.step()
File “~/workspace/examples/.venv/lib/python3.10/site-packages/olympe/concurrent/_task.py”, line 157, in step
self._loop.logger.error(“”.join(traceback.format_stack()))

2025-09-08 16:40:45,029 [ERROR] ulog - mux - mux_channel_ip_disconnected err=2(No such file or directory)
^CTraceback (most recent call last):
File “~/workspace/examples/cellular.py”, line 208, in
test_cellular_auto()
File “~/workspace/examples/cellular.py”, line 195, in test_cellular_auto
skyctrl.destroy()
File “~/workspace/examples/.venv/lib/python3.10/site-packages/olympe/mixins/cellular.py”, line 579, in destroy
super().destroy()
File “~/workspace/examples/.venv/lib/python3.10/site-packages/olympe/mixins/streaming.py”, line 42, in destroy
super().destroy()
File “~/workspace/examples/.venv/lib/python3.10/site-packages/olympe/mixins/media.py”, line 50, in destroy
super().destroy()
File “~/workspace/examples/.venv/lib/python3.10/site-packages/olympe/arsdkng/cmd_itf.py”, line 655, in destroy
self._thread_loop.stop()
File “~/workspace/examples/.venv/lib/python3.10/site-packages/olympe/concurrent/init.py”, line 190, in stop
self.join()
File “/usr/lib/python3.10/threading.py”, line 1096, in join
self._wait_for_tstate_lock()
File “/usr/lib/python3.10/threading.py”, line 1116, in _wait_for_tstate_lock
if lock.acquire(block, timeout):
KeyboardInterrupt

Salut Remi,
Pourrais-tu nous indiquer la version d’openssl que tu utilises? Que ce soit pour ton test en 22.04 et en 24.04, s’il te plait :slight_smile:

python -c "import ssl; print(ssl.OPENSSL_VERSION)"

avec python la commande qui pointe sur le python que tu utilises (donc potentiellement à remplacer si tu l’as nommée autrement)

Bonjour,

En ubuntu 22.04: openSSL 3.0.2
En ubuntu 24.04: openSSL 3.0.13

Cordialement,
Rémi

Hello de nouveau,
Ca marche je te remercie, je vais me charger de ce sujet, mais j’aimerais savoir s’il te plait ce que tu souhaites faire exactement, et si ce que tu souhaites faire est bien de te connecter à une skycontroller, elle-même connectée en 4G au drone?

Bonjour,

Mon objectif est d’utiliser olympe pour contrôler un drone via lien 4G et non wifi.

Cordialement,
Rémi

Hello de nouveau,
Ca marche, je suis en train d’investiguer le problème mais je ne tombe pas sur la même erreur
Je te tiens bien évidemment au courant au plus vite dès que je peux avancer sur ce sujet

Hello de nouveau Remi!
J’ai tourné le problème dans tous les sens, je ne reproduis pas ton erreur

Pourrais-tu me confirmer que tu utilises une carte sim 4G fonctionnelle (à tester sur un appareil mobile par exemple), qu’elle ne soit pas bridée et qu’elle ait un fonctionnement normal (comme si elle avait été achetée pour un particulier), que ton pc ne soit pas sur le réseau de l’entreprise (qu’il soit en partage de co avec un téléphone par exemple)
Pour cette partie là je n’ai pas trop de doute au vu des logs, mais il vaut mieux confirmer

Sinon, peux-tu me confirmer que ton apc token est une chaîne de caractères en 3 parties séparées par des “.” ?

This topic was automatically closed after 30 days. New replies are no longer allowed.