StreamDeck Sans Fil
Transformer un Stream Deck en contrôleur Bluetooth.
J'ai conçu une petite application macOS qui contrôle un Stream Deck en Bluetooth. Pour ajouter le Bluetooth au Stream Deck, j'utilise un Radxa Zero 3W connecté au Stream Deck.
Cette configuration permet d'utiliser le contrôleur sur batterie, et l'application permet d'exécuter facilement de petits AppleScripts afin de contrôler diverses applications depuis le Stream Deck.
Présentation
graph LR
subgraph AVANT[" "]
direction LR
n2["🔋 Externe Batterie"]
subgraph s1[" "]
SBC["🧠 Micro-ordinateur<br>(bridge USB → BLE)"]
n1["Carte SD"]
end
SD1["🎛️ Stream Deck"]
MAC["💻 Mac"]
end
class SD1,MAC device;
class SBC bridge;
style AVANT fill:transparent,stroke:transparent,color:transparent
style s1 fill:transparent,stroke:transparent,color:transparent
SD1 -->|"USB (câble court)"| SBC
SBC <-->|"Bluetooth (BLE)"| MAC
n1 --- SBC
n2 --- SBC
SBC -.->|"Stockage SD par cable pour lancement sans installation (optionnel)"| MAC
| Élément | Rôle | Requis | Notes |
|---|---|---|---|
| Elgato Stream Deck (modèle au choix) | Contrôleur physique (touches + affichage) | ✅ | Seul le Stream Deck 15 touches a été testé. |
| Radxa Zero 3W ou autre micro ordinateur compatible Linux et Bluetooth | Micro-ordinateur "bridge" USB → BLE | ✅ | Fait tourner ble_streamdeck.py et expose un service BLE vers le Mac. En théorie, n'importe quel micro-ordinateur avec Bluetooth peut convenir, à condition d'avoir un port USB OTG (si tu utilises le mode "mass storage"). |
| Carte microSD (≥ 16–32 Go) | OS + scripts + stockage images/config | ✅ | Idéalement "endurance" et rapide pour limiter les soucis sur le terrain. Si tu utilises l'option OTG / USB Mass Storage, l'OS ne doit pas être sur la microSD (sinon elle ne peut pas être exposée au Mac pendant que le Radxa tourne). |
| Alimentation USB-C | Alimente le Radxa (et donc le Stream Deck via USB) | ✅ | Sur secteur ou via powerbank ; viser une alimentation stable. |
| Batterie externe (powerbank) | Usage nomade / sans fil | ✅ | Requis si tu veux un setup 100% mobile. |
| Câble USB court (Stream Deck → Radxa) | Lien USB HID + alimentation Stream Deck | ✅ | Longueur courte pour éviter l'encombrement ; adaptateur selon ports (USB-A/USB-C). |
| Mac (Apple Silicon) | Machine hôte + app Stream Deck Connect.app | ✅ | Application testée uniquement sur Apple Silicon. MACOS 26 |
| Boîtier / support pour Radxa | Protection + fixation sur le set | ⭕ | Pratique sur un plateau (scratch, support, protection). |
| Câbles de rechange | Redondance terrain | ⭕ | Recommandé en shooting (les câbles sont un point de panne fréquent). |
Usage avant modification
Avant, comme beaucoup d’opérateurs, j’avais l’habitude d’utiliser un Stream Deck. Connecté à Capture One en filaire, il me permettait soit d’exécuter facilement des scripts / automatisations / raccourcis Capture One, soit, dans certaines configurations, de le prêter aux clients.
Dans ce cas, ils pouvaient faire eux-mêmes la sélection des images : naviguer, mettre des tags ou des étoiles. Ça faisait gagner du temps sur un shooting et évitait que le client touche directement à l’ordinateur. Il n’avait alors que quelques boutons simples à utiliser, pour une sélection claire et rapide.
Pour ça, j’utilisais l’application officielle Elgato Stream Deck Software pour macOS. Avec le super plugin créé par Emory Dunn (C1 Stream Deck Plugin, disponible sur la marketplace Elgato), je contrôlais Capture One très facilement depuis le Stream Deck.
Problème
Cette méthode fonctionne bien, mais elle oblige à avoir le Stream Deck à côté de moi, relié à l'ordinateur.
Contraintes physiques
Pour la phase d'editing / sélection, ça crée plusieurs problèmes : le client doit soit rester à côté de moi en permanence derrière mon écran, soit se déplacer sans cesse entre mon poste et l'écran de retour, plus proche du set, où il peut voir les images depuis la visionneuse Capture One.
J'utilise souvent un écran de retour pour que toute l'équipe présente sur le shooting voie bien les images. Mais selon la configuration (et parfois avec des iPad), ces écrans sont parfois loin de mon poste de travail. Résultat : je dois utiliser un long câble (plusieurs mètres) pour le Stream Deck, avec le risque que des gens marchent dessus. Ce n'est pas pratique.
Installation sur machines tierces
Le deuxième problème, c'est que je travaille régulièrement sur des ordinateurs fournis par des clients ou des photographes. Dans ces cas-là, je ne peux pas — ou je préfère éviter — d'installer trop de choses sur la machine, et je veux pouvoir ajouter / retirer facilement mes plugins.
Cette configuration m'obligeait à installer à chaque fois :
- Elgato Stream Deck Software
- C1 Stream Deck Plugin
- Fichier de presets
Et ça, en plus des scripts et des fichiers de configuration que j'installe aussi à chaque shooting sur la machine.
Solution
Ma solution repose sur une petite installation autour d'un micro-ordinateur (un Radxa Zero 3W) : c'est lui qui fait l'intermédiaire entre le Stream Deck et mon Mac. Concrètement, le Radxa est relié au Stream Deck en USB et exécute un script qui traduit les événements du Stream Deck (appuis sur les touches, état, etc.) en messages Bluetooth compréhensibles par mon application macOS.
Avantages de cette approche
Flexibilité du placement Grâce à ça, je ne suis plus obligé de brancher le Stream Deck directement sur l'ordinateur principal. Je peux le placer où c'est le plus pratique : près du client, près du set, sur un poste secondaire, voire à côté de l'écran de retour si j'ai de l'alimentation disponible. Et surtout, je peux l'utiliser sur batterie, ce qui règle immédiatement le problème des longs câbles qui traversent le plateau.
Mode portable avec OTG Ce montage règle aussi mon deuxième problème : l'installation sur machines tierces. Le Radxa Zero 3W dispose d'un port OTG : je l'utilise pour alimenter l'ensemble, mais aussi pour exposer son stockage comme un support amovible. En pratique, mon application macOS et mes fichiers (scripts, images, configuration) vivent sur ce support : je branche, j'exécute l'app, et je retrouve instantanément mon environnement, sans installer le logiciel Elgato, sans plugins, et sans copier de presets sur la machine hôte.
Fonctionnement sans installation permanente Enfin, l'application a été pensée pour un usage "portable" : elle peut se lancer depuis ce support, se recopier en mémoire, puis continuer à fonctionner même si j'éjecte le volume. Résultat : je peux démarrer l'app, débrancher/éjecter proprement, utiliser le Stream Deck à distance, et garder l'outil opérationnel tout au long du shooting — sans laisser d'installation permanente sur l'ordinateur du client.
Fonctionnalités
Configuration du Stream Deck
- Modifier l'image de chaque touche du Stream Deck
- Associer un AppleScript à chaque touche
- Configurer l'appui long sur une touche (durée et/ou action)
Modes d'utilisation
- Mode portable : aucune installation, aucun fichier à copier sur l'ordinateur
- Mode sans fil : connexion Bluetooth
- Éteindre le Stream Deck à distance
Utilisation
-
Stream Deck Connect.app: Application macOS portable
Stream Deck Connect.app (côté Mac ou carte SD) est l'application exécutable depuis un support amovible (ou sur n'importe quel Mac).
Compatibilité : Application testée uniquement sur Apple Silicon. MACOS 26.
-
ble_streamdeck.py: Script Python pour Radxa Zero 3W
ble_streamdeck.py (côté micro-ordinateur) est un script Python à installer sur le micro-ordinateur.
Fonctions :
- Détecte le Stream Deck et envoie les événements au Mac (« bouton 3 appuyé / relâché », « Stream Deck connecté / déconnecté »)
- Permet au Mac de demander l'arrêt (
shutdown) ou le redémarrage (reboot) du mini-PC - Reçoit et affiche des images sur les boutons du Stream Deck (stockage persistant sur le mini-PC)
Prérequis système
| Composant | Requis | Commande |
|---|---|---|
| python3-dbus | ✅ Obligatoire | sudo apt install python3-dbus |
| Bluetooth Linux (BlueZ) | ✅ Obligatoire | sudo apt install bluez |
| bluez-tools | ✅ Recommandé | sudo apt install bluez-tools |
| Modules Python | ✅ Obligatoire | pip install bluezero streamdeck Pillow |
Permissions sudo (recommandé)
Si tu veux que les commandes shutdown, reboot et l'optimisation Bluetooth via hcitool fonctionnent sans demander de mot de passe, il faut autoriser sudo sans mot de passe pour :
| Commande | Chemin |
|---|---|
| shutdown | /sbin/shutdown |
| reboot | /sbin/reboot |
| hcitool | /usr/bin/hcitool |
-
ums-microsd-on.sh: Script de montage USB Mass Storage
ums-microsd-on.sh sert à transformer le Radxa en « lecteur de carte microSD branché en USB » pour un Mac.
Lancement automatique au démarrage
Pour que ble_streamdeck.py et ums-microsd-on.sh s'exécutent au démarrage, il faut utiliser systemctl (systemd) afin de définir ces deux scripts comme services lancés automatiquement au boot.
