USB déportés sur raspberry

Hello,
je voudrais signaler à ceux qui ne connaissent pas un outil génial pour utiliser les ports USB d’un raspberry déporté (ou un autre Linux d’ailleurs)
Dans mon cas, j’ai un Jeedom en VM et plusieurs raspberry en Wifi dans la maison, connectés à différents devices et protocoles.

Par exemple, j’utilise le module teleinfo branché à mon linky, ou du Zwave.
Dans les 2 cas les controlleurs USB sont branchés sur un raspberry, et sont vu directement dans Jeedom.
Pour cela j’utilise USBIP.
A noter que j’ai eu des soucis d’instabilité et de comportements incohérents en Debian9 sur ma VM et le dernier Raspbian (basé debian 10).
En Debian 10 (et donc Jeedom4), tres stable, un bonheur.

Pour installer sur le jeedom ou le raspberry : apt install usbip et c’est tout.
Sur le raspberry :

modprobe usbip-core
modprobe usbip-host
modprobe vhci-hcd

root@RaspberryST:/# usbip list -l
 - busid 1-1.1.1 (0424:7800)
   Standard Microsystems Corp. : unknown product (0424:7800)

 - busid 1-1.1.3 (0403:6015)
   Future Technology Devices International, Ltd : Bridge(I2C/SPI/UART/FIFO) (0403:6015)

 - busid 1-1.2.4 (0658:0200)
   Sigma Designs, Inc. : Aeotec Z-Stick Gen5 (ZW090) - UZB (0658:0200)

 - busid 1-1.3 (04d8:f897)
   Microchip Technology, Inc. : unknown product (04d8:f897)

Sur le jeedom : (L’IP 192.168.30.27 étant celle du raspberry concerné)
modprobe vhci-hcd
modprobe usbip-core
usbip attach -d 1-1.1.3 -r 192.168.30.27
usbip attach -d 1-1.2.4 -r 192.168.30.27

Et voila, les devices USB sont disponibles dans Jeedom.

Pour rendre tout cela automatique, j’ai fait un petit script sur le raspberry qui se lance automatiquement au boot et remonte les ports USB sur le Jeedom :

1/
Ajout d’une clé SSH pour pouvoir executer des commandes SSH sur le Jeedom, depuis le raspberry, sans saisie de mot de passe (Le Jeedom est en 192.168.30.43)

Sur le Raspberry :

sudo ssh-keygen -t rsa
SSH_AUTH_SOCK=/tmp/ssh-agVZL13989/agent.13989; export SSH_AUTH_SOCK;
SSH_AGENT_PID=13990; export SSH_AGENT_PID;
eval $(ssh-agent)
ssh-add /root/.ssh/id_rsa 

sudo cat /root/.ssh/id_rsa.pub | ssh root@192.168.30.43 'cat >> .ssh/authorized_keys'

2/
puis un petit script sur le raspberry :
root@RaspberryST:/# cat /home/pi/usbip_Server

#!/bin/bash

modprobe usbip-core
modprobe usbip-host
modprobe vhci-hcd
sleep 5

usbip unbind --busid=1-1.1.3
usbip unbind --busid=1-1.2.4
sleep 5

sudo usbipd -D
sudo usbip bind -b 1-1.1.3
sudo usbip bind -b 1-1.2.4
sleep 5

ssh 'root@192.168.30.43' modprobe vhci-hcd
ssh 'root@192.168.30.43' modprobe usbip-core
sleep 2

ssh 'root@192.168.30.43' usbip attach -d 1-1.1.3 -r 192.168.30.27
ssh 'root@192.168.30.43' usbip attach -d 1-1.2.4 -r 192.168.30.27

3/
puis j’ajoute un simple cron au démarrage (crontab -e, prenez nano comme choix si vous débutez)
@reboot sleep 10 && /home/pi/usbip_Server

Voila, si cela peut aider ou donner des idées.

EDIT : N"oubliez pas de mettre des IP fixes partout ou de faire une réservation DHCP…

5 « J'aime »

Bonjour,
Merci pour le partage.
Même type d’outils qu’ici : [TUTO] Installation de USB Redirector for Linux

Hello,
effectivement. Je ne l’avais pas vu ce post. Heureusement ce n’est pas tout à fait la meme solution et j’ai évité le doublon :slight_smile:

Merci pour ce tuto, je regardais justement ce sujet et j’ajoute qu’on peut déporter via cette solution les ports usb vers un windows et vice-versa : il y a pour cela un projet sous Github.

Bonjour à tous

J’envisage d’utiliser ce tuto pour le projet suivant :

  • Prod = VM (Debian Stretch) sur Synology DS718+ avec Zwave, RFxcom et Zigbee
  • Preprod = Raspberry PI 3+ (debian Stretch)
    Tous en Jeedom V4 dernier niveau

L’idée est de transmettre toutes les infos des capteurs ZWave/RFXCom et Zigbee sur la machine de Prerod .
cela vous parait-il Compatible ?
Risque de perte de signaux ?
Baisse de performance ?
Merci de votre avis

Hello,
je dirais plutôt Debian Buster (Debian 10)…
Sur un réseau local, meme en wifi, meme avec des switch pourris, la latence ne dépasse pas les 3msec.
La communication sur le réseau est en TCP.
Donc pas de risque de de perte de données ou de latences en trop… Apres c’est plutôt les latences sur le Zwave en lui meme ou le Zigbee.
Mais si tu mets un raspberry en position centrale, tu vas certainement avoir des réseaux radios plus performants et plus stables.

/Klona

Hello,
coté windows pas testé.
Le développement de USBIP s’est arreté il y a des années, et USBIP a été intégré dans le package Debian et est maintenu comme cela.
Par contre coté windows, c’est à l’abandon. Pas sur que cela fonctionne bien. A tester, chaque configuration étant unique et chaque mise à jour windows pouvant tout casser…

/Klona

Petite update.
Je conseille d’avoir USBIP dans la meme version sur toutes les machines.
Pour vérifier la version de USBIP installée et celle disponible depuis les sources APT :
apt-cache policy usbip

Et si les sources raspberry ne sont pas les bonnes :
https://packages.debian.org/buster/armhf/usbip/download
et récupérer un lien vers la version désirée puis :

cd /tmp
wget http://ftp.us.debian.org/debian/pool/main/l/linux/usbip_2.0+4.19.118-2_armhf.deb
dpkg -i usbip_2.0+4.19.118-2_armhf.de

/Klona

Salut j essaye de suivre ton tuto mais je bloque sur le passage:

il me dit :

sudo cat /root/.ssh/id_rsa.pub | ssh root@192.168.xxx.xxx 'cat >> .ssh/authorized_keys'/root/.ssh/id_rsa" failed: No such file or directory

que dois-je entrer aux question posé ?
merci