Recyclez un PC ‘fanless’ en synthé autonome contrôlé à distance
Depuis une dizaine d’années, on trouve des PC complètement silencieux, bon marché, bien équipés (son, vidéo, wifi intégrés) et robustes (utilisés dans des applications industrielles notamment). Un tel appareil est parfaitement recyclable en PC-instrument de musique autonome, robuste et peu coûteux : synthé, boîte à rythme, piano virtuel...
-
démarrant en moins d’une minute, sans clavier, écran, ni souris ;
-
pilotable localement par un périphérique MIDI ;
-
contrôlable à distance depuis un autre appareil par wifi sécurisé, même sur scène ;
-
raccordable directement à un ampli par son jack 3.5mm « d’usine ».
Pour cela, il convient d’abord d’y installer une distribution Linux légère mais suffisamment bien équipée, par ex. celles recommandées par LinuxMAO (LibraZik, UbuntuStudio, …). Pour ma part, par souci d’homogénéité de mon parc PC familial, j’utilise un Mint dont j’ai ôté les composants inutiles (LibreOffice, la plupart des applications au démarrage, …). Une fois cette base réalisée, il faut :
A. Sur le PC-instrument, sur un compte disposant des droits administrateur :
A.1. Installer le synthé (boîte à rythme, piano, …) qu’on souhaite utiliser, et le cas échéant s’assurer qu’il fonctionne bien avec le contrôleur MIDI USB qu’on prévoit d’y raccorder.
A.2. Installer le paquet openssh qui contient client et serveur ssh
A.3. Installer le logiciel xpra à partir des dépôts xpra : voir les instructions sur https://github.com/Xpra-org/xpra/wiki/Download#-linux – une installation directement depuis les dépôts des distributions classiques ne fonctionnera pas bien.
Xpra va permettre de contrôler l’image du bureau du PC-instrument depuis un PC de contrôle. Il existe d’autres techniques que xpra, mais xpra gère à la fois la sécurité des flux par un tunnel ssh, et la persistance du serveur X du pc-instrument : xpra peut se brancher sur un écran existant, et le quitter sans le fermer. Ainsi le PC-instrument peut fonctionner indifféremment en mode autonome ou contrôlé. Il n’y a rien de spécifique à configurer sur le PC-instrument (hôte). Xpra devra aussi être installé sur le PC de contrôle (client).
A.4. déclarer un utilisateur normal (ici ‘toto’), avec peu de droits. Il faut s'assurer tout de même qu'il est dans le groupe 'audio' : en ligne de commande, sudo adduser toto audio
A.5. déclarer l'utilisateur toto comme login par défaut, sans mot de passe.
Dans le menu Administration → Ecran de connexion → Utilisateurs → Connexion automatique, renseigner le champ Identifiant de l’Utilisateur. Si votre gestionnaire de connexion est LightDM, cela peut aussi se faire zn ligne de commande en éditant le fichier de configuration : sudo nano /etc/lightdm/lightdm.conf et en s’assurant d’y faire figurer les 2 lignes suivantes :
autologin-user-timeout=0
autologin-user=toto
A.6. configurer le réseau du pc instrument en hotspot source: https://computingforgeeks.com/create-wi-fi-hotspot-on-linux/
Toujours depuis le compte administrateur du pc-instrument :
A.6.a. Retrouver le périphérique réseau
En ligne de commande, taper ip link show et rechercher une ligne avec 'wl' dans la sortie :
$ ip link show
1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s31f6: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether e8:6a:64:86:44:cc brd ff:ff:ff:ff:ff:ff
3: wlp6s0: mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000 link/ether 20:79:18:5e:4b:60 brd ff:ff:ff:ff:ff:ff
4: virbr0: mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000 link/ether 52:54:00:8e:f6:e5 brd ff:ff:ff:ff:ff:ff
5: virbr0-nic: mtu 1500 qdisc fq_codel master virbr0 state DOWN mode DEFAULT group default qlen 1000 link/ether 52:54:00...
A.6.b. On va créer le point d'accès (hotspot) en ligne de commande (nmcli = network manager command line interface) :
$ IFNAME="wlp6s0" (où il convient bien sûr de remplacer wlp6s0 par la référence de votre périphérque réseau)
$ CON_NAME="moninstrument" (à votre guise mais lettres et chiffres, pas d’accent ni espace)
$ sudo nmcli con add type wifi ifname $IFNAME con-name $CON_NAME autoconnect yes ssid $CON_NAME
A.6.c. Paramétrage de la méthode de connexion : partagée
$ sudo nmcli con modify $CON_NAME 802-11-wireless.mode ap 802-11-wireless.band bg ipv4.method shared
A.6.d. Protéger le réseau (mettez le mot de passe qui vous sied)
$ sudo nmcli con modify $CON_NAME wifi-sec.key-mgmt wpa-psk nmcli con modify $CON_NAME wifi-sec.psk "MyStrongPassword"
A.6.e. Démarrer le point d'accès
/!\ attention, si vous opérez la commande suivante depuis un autre PC via ssh à travers un routeur wifi, la connexion ssh va être instantanément perdue au moment de l'activation. Il suffit alors de se connecter au nouveau réseau local wifi intitulé 'moninstrument' qui apparaît dans le gestionnaire réseau. Si l'adresse IP par défaut du point de connexion (en principe 10.42.0.1) n'est pas connue sur le nouveau réseau local, il faudra rouvrir une session interactive sur le pc-instrument pour exécuter les instructions du point 6. Autrement, ce n'est pas nécessaire et il suffit de s’y connecter en ssh.
$ sudo nmcli con up $CON_NAME
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
A.6.f. Récupérer l'adresse IP du point d'accès
$ nmcli connection show
NAME UUID TYPE DEVICE
moninstrument ad31dc08-9175-4fe2-85e3-9f33324e1447 wifi wlp6s0
$ ip ad show wlp6s0
3: wlp6s0: mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 20:79:18:5e:4b:60 brd ff:ff:ff:ff:ff:ff
inet 10.42.0.1/24 brd 10.42.0.255 scope global noprefixroute wlp6s0 *
valid_lft forever preferred_lft forever
inet6 fe80::a119:b393:761c:d740/64 scope link noprefixroute
valid_lft forever preferred_lft forever
On en a fini de la configuration depuis le compte administrateur.
B. Se logger sur le compte utilisateur (toto) du pc-instrument
B.1. Définir votre synthé comme application au démarrage (Préférences → Applications au démarrage)
B.2. réduire au minimum la configuration en ôtant les autres applications au démarrage, y compris celles qui sont masquées.
B.3. Redémarrer le PC-instrument pour vérifier qu’il démarre bien le synthé sur le compte de l’utilisateur toto
C. Sur le PC de contrôle :
C.1. Comme pour le PC-instrument, il faudra installer xpra sur le PC-contrôleur à partir des dépôts xpra – voir https://github.com/Xpra-org/xpra/wiki/Download#-linux depuis un compte avec droits adminstrateur.
C.2. Depuis le compte qui sera utilisé pour piloter l’instrument, créer une clé crypto :
voir https://serverfault.com/questions/241588/how-to-automate-ssh-login-with-password
$ ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.
C.3. Passer le PC-contrôleur sur le réseau wifi ‘moninstrument’ du point d’accès du PC-instrument (à l’aide de l’applet de sélection de réseau, icône de la barre des tâches). Le mot de passe saisi à la place de ‘MyStrongPassword’ ci-dessus sera alors demandé.
C4. Partager la clé avec le compte toto du PC-instrument (évitera par la suite de retaper le mot de passe de toto à chaque login)
$ ssh-copy-id toto@10.42.0.1
toto@10.42.0.1’s password:
Se connecter par ssh au compte toto pour vérifier.
C.5. Pour tester, lancer le serveur xpra à distance pour contrôler l’écran du compte toto :
$ xpra shadow ssh:toto@10.42.0.1
Le contenu de l'écran de l'utilisateur toto s'affiche dans une fenêtre et peut être contrôlé.
C.6. Enfin, pour accéder en 1 clic au PC-instrument, utiliser la ligne ci-dessus dans un lanceur sur le bureau du PC-contrôleur.