DSLR : empecher la mise en veille (autopoweroff Canon + udev no-autosuspend)

Le boitier se mettait en veille apres quelques minutes d'inactivite et
apparaissait deconnecte. Deux causes possibles traitees :
- autopoweroff Canon desactive a la connexion (cote firmware)
- USB autosuspend du host desactive pour les peripheriques Canon (cote noyau)
This commit is contained in:
2026-06-21 22:15:56 +02:00
parent 66847dccf8
commit b8f3bef852
3 changed files with 26 additions and 0 deletions

View File

@@ -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:

View File

@@ -0,0 +1 @@
SUBSYSTEM=="usb", ATTR{idVendor}=="04a9", TEST=="power/control", ATTR{power/control}="on"

View File

@@ -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"