Octoprint et webcam 1080p HD Papalook PA452

une bête webcam

Pour ceux qui ne connaissent pas le logiciel octoprint, il s’agit d’une distribution pour raspberry-pi permettant la surveillance des impressions 3D via USB ou autre. C’est très pratique pour vérifier que tout va bien.

Couplé à un logiciel type jeedom, nous l’utilisons pour nous transmettre le status des impressions et ainsi couper l’imprimante 3D si un souci est détecté.

En bonus non négligeable il est également possible de rajouter une webcam pour réaliser des vidéos, voir le résultat de l’impression etc.

Vu que je n’avais pas prévu de racheter une caméra supplémentaire, j’ai souhaité utiliser une webcam USB que je possédais déjà ; Il s’agit de la caméra “papalook PA452” (lien affilié) qui est ‘amazon choice’ ; Elle est (soit disant) 1080p, fonctionne facilement avec skype, et autres logiciels windowsiens. Et pour faire plaisir aux enfants, elle a tout un tas de led de couleurs qui clignote (… et heureusement, un bouton pour les arrêter!).

Malheureusement, la fiche amazon n’a aucune indication sur une éventuelle compatibilité linux, et encore moins avec octoprint… Et le wiki d’octoprint n’est pas très bavard non plus!

Alors en un mot : oui, c’est utilisable, mais comme quasi toute webcam sous linux ça ne fonctionne pas toute seule. En effet, en suivant les tutoriaux pour ajouter une webcam, écran noir sur l’interface octoprint. Pourtant, j’arrive à la fonctionner assez facilement sur le RPI en dehors d’octoprint, via mjpg-streamer.

Le souci vient d’un bug d’octoprint qui cherche à imposer un nombre d’image par seconde (fps) or, ce modèle ne supporte pas ce genre de commande.

En me basant sur les instructions présentes dans le wiki d’octoprint, j’ai identifié le contournement suivant:

Editer le fichier octopi.txt

sudo vi /boot/octopi.txt

Rechercher la ligne commençant par #additional_brokenfps_usb_devices

La modifier ainsi

additional_brokenfps_usb_devices=("046d:082b" "0bda:58b0" "aabb:ccdd")

Sauvegarder le fichier, arrêter puis redémarrer le service webcamd

sudo systemctl stop webcamd.service
sudo systemctl start webcamd.service

Vérifier le fichier de log que la modification a bien été prise en compte

cat /var/log/webcamd.log | grep 0bda

Le message suivant doit être visible

Camera model 0bda:58b0 is known to not work with -f parameter, stripping it out

Vous pouvez ensuite vous rendre sur  octoprint et vérifier dans le menu control que la caméra est visible :

La webcam fonctionne… mais pas bien dans le noir 🙂