Quand j’ai parlé de la webcam 4K de Dell, j’avais noté un truc : le capteur de présence (utilisé sous Windows) fonctionne en permanence. Et je me suis rendu compte avec le temps que c’est assez vite énervant parce qu’il est bien utilisé par macOS (contrairement à ce que je pensais).
Sur le coup, ça va être un peu compliqué, parce que je n’ai pas encore exactement compris comment ça fonctionne. Mais entre le premier article et celui-ci, je me suis rendu compte d’une chose : la webcam réveille mon Mac. Plus exactement, elle empêche la mise en veille dans certains cas, et le réveille dans d’autres. De façon empirique, je me suis bien rendu compte que c’était elle, et il suffit de faire un signe devant la caméra (sans son cache) pour réveiller mon Mac (je mets uniquement l’écran en veille, pas le Mac lui-même). Dans certains cas, c’est même pire : l’activation de la caméra de surveillance qui est dans mon bureau, et qui a un projecteur infrarouge pour voir dans le noir, réveille le Mac.
Vous pourriez croire que la caméra détecte les mouvements (et filme en permanence) mais ce n’est pas le cas : d’abord, c’est assez visible dans le fonctionnement, mais surtout le capteur de présence réagit dans certains cas même si le cache est placé sur l’objectif. Donc la caméra ne filme pas en permanence, mais vérifie tout de même ma présence en permanence… et préviens l’ordinateur.
C’est là que je bloque. La caméra est bien vue comme une souris par macOS (oui, c’est bizarre) et j’ai supposé qu’elle faisait bouger le curseur de 1 pixel (ou un truc dans le genre) quand elle détectait un mouvement. Mais j’ai essayé avec l’application Colorimètre numérique (elle permet d’afficher les coordonnées du curseur) et… rien. J’ai tenté de sniffer l’USB avec Wireshark (ce qui nécessite de passer sur un vieil OS, je n’ai pas réussi sur un Mac M1) mais il y a trop de messages et je ne suis pas assez calé pour tout comprendre et voir exactement ce que la caméra envoie. J’ai tenté avec USB Prober (encore un soft Apple, plus vieux), là aussi sans succès.
Ce que je peux dire, c’est que passer devant la webcam réveille le Mac, donc qu’il y a une communication, et que comme la webcam est vue comme une souris, je suppose qu’elle envoie un mouvement quelconque. Mais je n’ai pas réussi à le montrer réellement. La documentation de Dell n’est pas très explicite sur le fonctionnement, mais certaines plaquettes commerciales indiquent que le capteur est là pour aider Windows Hello (le biométrie selon Microsoft) : il permet de réveiller le PC un peu avant la lecture du visage pour fluidifier les opérations (ce qui est plutôt une bonne idée). Si quelqu’un a une idée pour le faire (ou pour m’expliquer comment le vérifier), ça m’intéresse du coup.
Plutôt qu’un mouvement de souris, est ce qu’elle pourrait pas émuler un click ?
Est-ce que vous avez pensé à comparer la sortie de `ioreg -l` avant et après le changement de statut « idle » du détecteur de présence de la caméra ?
Je pense plus particulièrement à quelque chose dans le genre de cette commande qui permet de déterminer depuis combien de temps une machine est idle :
ioreg -c IOHIDSystem | awk ‘/HIDIdleTime/ {print $NF/1000000000; exit}’
AMHA, nul besoin de déplacer le curseur si un simple changement de ce statut au niveau du device dans l’IO tree notifie l’ensemble du système.