Il est possible de modifier le firmware de la puce de communication FTDI présente sur la carte Arduino pour qu'elle soit reconnue comme un périphérique USB HID de type joystick. C'est ce que permet de faire le projet UnoJoy d' Alan Chatham.
Cloner le projet
git clone https://github.com/AlanChatham/UnoJoy.git cd UnoJoy
Le système se compose de 3 parties:
Installer le paquet dfu-programmer
sudo apt install dfu-programmer
Activer le mode DFU1):
Flasher le firmware en exécutant le script:
$ cd UnoJoy $ sudo ./TurnIntoAJoystick.sh
La commande retourne les messages suivants:
. Abracadabra! Trying to program for Arduino Uno R1/R2... Validating... 2596 bytes used (63.38%) Unplug your Arduino and plug it back in. It's a joystick now!
Déconnecter/reconnecter la carte sur le port USB. Si on affiche à présent les périphériques USB, on peut voir dans la liste un device “Silicon Labs UnoJoy Joystick”
$ lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 003: ID 04f2:b541 Chicony Electronics Co., Ltd Integrated Camera Bus 001 Device 002: ID 8087:0a2b Intel Corp. Bus 001 Device 008: ID 10c4:82c0 Silicon Labs UnoJoy Joystick Bus 001 Device 004: ID 275d:0ba6 USB OPTICAL MOUSE Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Dans cet exemple présent sur le bus 001 périphérique 008, on peut afficher ces informations détaillées avec la commande:
lsusb -D /dev/bus/usb/001/008
Tester/recalibrer le périphérique avec l'application jstest-gtk:
sudo apt install jstest-gtk