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:
@@ -82,6 +82,8 @@ class Camera:
|
|||||||
try:
|
try:
|
||||||
self.camera = gp.Camera()
|
self.camera = gp.Camera()
|
||||||
self.camera.init()
|
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
|
# Viewfinder activé AVANT de rendre la caméra visible au thread preview
|
||||||
self._activer_viewfinder_init()
|
self._activer_viewfinder_init()
|
||||||
self.connectee = True
|
self.connectee = True
|
||||||
@@ -239,6 +241,25 @@ class Camera:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.debug(f"configurer_flash : {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):
|
def _activer_viewfinder_init(self):
|
||||||
"""Active le LiveView pendant l'init (pas de lock, appelé avant que le thread démarre)."""
|
"""Active le LiveView pendant l'init (pas de lock, appelé avant que le thread démarre)."""
|
||||||
try:
|
try:
|
||||||
|
|||||||
1
scripts/99-canon-no-autosuspend.rules
Normal file
1
scripts/99-canon-no-autosuspend.rules
Normal file
@@ -0,0 +1 @@
|
|||||||
|
SUBSYSTEM=="usb", ATTR{idVendor}=="04a9", TEST=="power/control", ATTR{power/control}="on"
|
||||||
@@ -19,6 +19,10 @@ sudo apt install -y \
|
|||||||
xinput \
|
xinput \
|
||||||
xdotool
|
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
|
# Repertoire du projet
|
||||||
APP_DIR="/home/jules/photobooth"
|
APP_DIR="/home/jules/photobooth"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user