diff --git a/backend/camera.py b/backend/camera.py index 41f61b9..6aa8f8e 100644 --- a/backend/camera.py +++ b/backend/camera.py @@ -82,6 +82,8 @@ class Camera: try: self.camera = gp.Camera() self.camera.init() + # Desactiver la mise en veille auto du DSLR (sinon il se deconnecte tout seul) + self._desactiver_veille_init() # Viewfinder activé AVANT de rendre la caméra visible au thread preview self._activer_viewfinder_init() self.connectee = True @@ -239,6 +241,25 @@ class Camera: except Exception as e: log.debug(f"configurer_flash : {e}") + def _desactiver_veille_init(self): + """Desactive la mise en veille auto du boitier (Canon : autopoweroff en minutes, 0=jamais). + Sans ca, le DSLR s'eteint seul apres quelques minutes d'inactivite et apparait deconnecte.""" + candidats = ["autopoweroff", "auto_power_off", "/main/settings/autopoweroff"] + try: + cfg = self.camera.get_config() + for nom in candidats: + try: + widget = cfg.get_child_by_name(nom) + widget.set_value(0) + self.camera.set_config(cfg) + log.info(f"Mise en veille DSLR désactivée ({nom})") + return + except Exception: + continue + log.debug("Widget autopoweroff non trouvé sur ce modèle") + except Exception as e: + log.debug(f"_desactiver_veille_init : {e}") + def _activer_viewfinder_init(self): """Active le LiveView pendant l'init (pas de lock, appelé avant que le thread démarre).""" try: diff --git a/scripts/99-canon-no-autosuspend.rules b/scripts/99-canon-no-autosuspend.rules new file mode 100644 index 0000000..e6b5d60 --- /dev/null +++ b/scripts/99-canon-no-autosuspend.rules @@ -0,0 +1 @@ +SUBSYSTEM=="usb", ATTR{idVendor}=="04a9", TEST=="power/control", ATTR{power/control}="on" diff --git a/scripts/install-x86.sh b/scripts/install-x86.sh index 7372689..1691135 100644 --- a/scripts/install-x86.sh +++ b/scripts/install-x86.sh @@ -19,6 +19,10 @@ sudo apt install -y \ xinput \ xdotool +# Empecher le DSLR Canon de se mettre en veille USB (sinon il se deconnecte seul) +sudo cp "$(dirname "$0")/99-canon-no-autosuspend.rules" /etc/udev/rules.d/ +sudo udevadm control --reload-rules + # Repertoire du projet APP_DIR="/home/jules/photobooth"