Commander un appareil domestique en RS-232

En rangeant mes affaires, je suis tombé sur un appareil que j’avais utilisé pas mal à une époque : un switch HDMI. Ce modèle Aten (un VS481a) offre une sortie HDMI et quatre entrées, mais (surtout) une prise DB9 qui permet de commander le switch depuis un appareil externe.


Le but ultime est de commander le switch depuis un Raspberry Pi pour passer directement sur la bonne entrée sans me lever pour presser un bouton ou utiliser la piètre télécommande fournie. la première étape, présentée ici, consiste surtout à essayer de le faire fonctionner.

L’intégration d’un connecteur DB9 à la norme RS-232 reste assez classique dans les appareils de salon, comme les amplis, les switchs, certains lecteurs audio, etc. Ca permet de commander facilement un appareil depuis un ordinateur ou un périphérique dédié (il existe des écrans de commandes pour cet usage précis), avec un système fiable et peu coûteux. Sur le papier, ça semble pratique (même si les commandes sur IP remplacent heureusement ça très bien), en pratique ça peut être un cauchemar.

La prise série

Premièrement, la connexion. Les ordinateurs modernes n’intègrent généralement pas de prises RS-232 (série) et la solution va donc passer par un adaptateur USB. Le choix va être important, pour des questions de pilotes. Les modèles à (très) bas prix (moins de 5 $) utilisent des copies de puces chinoises, avec une fiabilité moyenne, alors que le milieu de gamme (5 à 20 $) se base sur une puce Prolific, la PL2303. Les modèles plus onéreux (on va dire audessus de 20 €) ont une puce FTDI. Soyons clairs, abandonnez les premiers. La puce PL2303, elle, est bien supportée avec des pilotes pour pas mal d’OS, donc macOS Sierra. Le convertisseur FTDI a le gros avantage de fonctionner nativement sous Mac OS X (depuis Mavericks) mais les adaptateurs sont plus chers.

Mon adaptateur

Le choix du type d’adaptateur joue aussi : vous trouverez des modèles compacts, avec une prise directement derrière le port USB, alors que d’autres se présentent sous la forme d’un câble avec une prise USB d’un côté et une prise DB9 de l’autre. Le choix dépend surtout de vos besoins : le premier type est pratique si vous devez utiliser un câble série, le second permet de s’en passer. Personnellement, j’ai un noname compact, qui utilise une puce PL2303.

La connexion entre l’adaptateur et le switch n’est pas totalement triviale et dépend de l’appareil. certains imposent un câble Null Modem (croisé), d’autres (la majorité) un câble droit, etc. La documentation devrait vous indiquer le modèle adéquat. Avec mon boîtier Aten, un câble droit suffisait, donc j’ai branché directement l’adaptateur sur la prise.

La partie amusante commence maintenant. Les commandes ne sont absolument pas standardisées, ni même les paramètres. Et j’ai perdu 1/2 journée de tests pour une raison totalement idiote : il existe plusieurs versions de mon switch sous le même nom, mais avec des commandes différentes. Le manuel disponible sur le site donne donc des commandes qui ne fonctionnent pas sur mon modèle. En cherchant une vieille version du manuel, je suis tombé sur ManualsLib qui possédait la bonne version, avec les bonnes commandes.

Pour envoyer les commandes, j’utilise CoolTerm qui permet de configurer proprement le port et d’envoyer les commandes. La documentation (correcte) de l’Aten indique qu’il faut communiquer à 19 200 bauds, avec 8 bits sans parité, un bit de stop et pas de flow control.

Les réglages dans Coolterm

Ensuite, les commandes sont détaillées. Ce modèle nécessite des commandes en hexadécimal, d’autres acceptent des chaînes de caractères plus lisibles (c’est le cas des versions récentes du boîtier). Avec ma version, 5A7E81080133BD81A5 active l’entrée 3, alors qu’il suffit d’envoyer sw i03 sur les variantes actuelles.

Le tableau

Le tableau donne la liste des commandes à taper pour activer les fonctions du VS481a, à envoyer en hexadécimal. CoolTerm a l’avantage d’avoir une fenêtre de dialogue qui permet d’envoyer directement de l’hexadécimal, ça simplifie les choses. Et avec les bonnes commandes, ça fonctionne directement. Le côté ergonomique reste tout de même assez léger : il n’y a aucun retour de l’appareil, sauf évidemment le changement d’entrée quand la commande passe.

Envoi d’une commande

Prochaine étape, s’arranger pour que le Raspberry Pi envoie la commande directement au démarrage. Un jour. A noter que la méthode est globalement la même avec les autres appareils (amplis, TV, etc.), mais les commandes et les paramètres diffèrent.