Convertisseur PS2 à USB HID

Introduction

Ce document présente une réalisation d'un convertisseur PS2 à USB permettant de raccorder un clavier PS2 et une souris PS2 sur une entrée USB d'une carte qui n'a que L'USB ou le réseau comme moyens d'entrée. Il y a bien sur d'autres solutions

Un peu d'histoire

Jouant depuis quelques années avec des Raspberri pi, banana pi, beaglebone et dernièrement une tvbox, je me rend compte que, des fois, il serait bon de pouvoir y mettre un clavier et une souris. Comme les claviers PS2 ne sont pas rares autant les utiliser. Pour cela j'ai trouvé un adaptateur à moins de un euro dont voici la photo.

Photo de l'adaptateur ps2
photo de l'adaptateur ps2

Dès réception, je le teste sur mon PC, où je n'ai nullement l'intention de l'installer, en remplacant le clavier et la souris actuels par l'adaptateur, toute l'après midi sans problème.

Je l'installe sur la tvbox, où je veux l'utiliser, et là, l'adaptateur est reconnu à peu près une fois sur 10, quand il est reconnu il fonctionne correctement. Mais une fois sur 10, cela devient vite pénible.

Je fais le tour de tous les ports USB de la maison, et c'est le même problème sur à peu près 50 %. Donc avant d'acheter, réfléchissez, vous avez 50 % de chance d'avoir le même problème avec ce modèle. Si vous persistez et que ça ne marche pas, vous aurez toujours les prises (introuvables) pour le montage que je propose.

Présentation du convertisseur

Le convertisseur est raccordé au clavier et à la souris par les prises mini din et est connecté au pc ou à la carte utilisatrice par un cable USB qui fournit l'alimentation 5 volts. Le microproceseur utilisé est un stm32f102 et est monté sur un module appelé bluepill (coût environ 1.5 euros). Il dispose d'une prise micro USB.

synoptique du convertisseur
synoptique du convertisseur

Schéma du convertisseur

Comme on peut le voir, c'est très simple : 1 microprocesseur, 2 prises, 4 résistances pour limiter le courant sur les pins du micro, qui est alimenté en 3.3 V alors que le clavier et la souris sont en 5 V.

La partie supérieure du schéma est une partie de ce qui est embarqué sur le module. Il manque le convertisseur d'alimentation 3.3 V et les quartz.

schéma du convertisseur - cliquer pour agrandir
schéma du convertisseur

Photo du convertisseur

Le module bluepill n'est pas tout à fait prêt pour l'emploi. On soude des broches de support tulipe là où il faut et la même chose sur la plaque support. Le module est ainsi démontable. Les fils sont soudès. Le bloc prises mini din est démonté d'une carte mère. Les résistances CMS prennent effectivement moins de place !.

photo du convertisseur
photo du convertisseur

Fonctionnement de usbps2

La fonction usbps2 utilise le protoole PS2 (bien décris sur internet) pour d'abord initialiser le clavier et la souris, puis se met à l'écoute des informations transmises lors d'un évenement comme appui sur une touche ou mouvement de la souris. Ces informations sont transmises à la couche ps2hid.

La fonction usbhid initialise la couche USB device en s'appuyant sur la librairie opencm3 et qui consiste à transmettre les descripteurs USB ainsi que descripteur spécifique à HID, le hid report descriptor. Pour en savoir plus, il faut se reporter aux spécifications HID de l'USB.

La fonction ps2hid convertit en hid report les informations reçues du clavier et de la souris. Ces reports sont envoyés sur le endpoint hid et reçus par le host sur la couche ushhid.

La fonction cdcacm fournit un canal série entre la carte et le host qui peut être utilisé comme console en remplacement de la liaison série ou comme convertisseur usb-série avec l'usart. Cette fonction n'est pas utilisée par la conversion ps2 hid.

Compiler usbps2

Commencez par prendre connaissance des documents cités en référence qui regroupent des informations communes.

Usbps2 dépend de la librairie opencm3 [3] Développement sur stm32, qui doit donc être installée au préalable. Après avoir téléchargé les sources de usbps2, extraire les sources et compiler avec le compilateur précédemment installé:

Le Makefile définit la variable BLUEPILL=1. Si vous utilisez maple-mini il faut commenter cette variable. Si vous n'utiliser ni l'un ni l'autre, il faudra adapter !.

tar Jxvf usbps2-20yy.mm.dd.xz
cd usbps2-20yy.mm.dd
make

Pour l'installation, on suppose que usbdfu a été installé au préalable et la commande suivante permet de flasher.

make flash

Utilisation de usbps2

Pour l'installation, il suffit de brancher le cable usb et le clavier et la souris en évitant de les inverser, car le code n'est pas symétrique !.

Références

  1. Programmation du processeur stm32f103 par liaison série.
  2. usbdfu : Device Firmware Upgrade par USB.
  3. Développement sur stm32.
  4. fonctions communes pour stm32.
  5. Utilisation du circuit stm32 appelé bluepill.
  6. Utilisation du circuit Maple Mini clone.

License

The usbps2 software is licensed under the terms of the GNU General Public License as published by the Free Software Foundation. See the file COPYING in the archive.

Download