J'utilise le RPI pour créer un programme, mais je dois désactiver les ports USB afin que l'utilisateur final ne puisse pas brancher un clavier ou une souris et jouer avec l'appareil.
Est-ce possible et si oui, comment cela se fait-il?
J'utilise le RPI pour créer un programme, mais je dois désactiver les ports USB afin que l'utilisateur final ne puisse pas brancher un clavier ou une souris et jouer avec l'appareil.
Est-ce possible et si oui, comment cela se fait-il?
Réponses:
Vous pouvez trouver de la chance avec cette commande:
echo 0x0> / sys / devices / platform / bcm2708_usb / buspower
Cela semble désactiver les ports USB. Je ne l'ai pas testé cependant.
Chaque contrôleur hôte USB sous Linux expose un paramètre appelé authorized_default
, qui contrôle l'état de tout nouveau périphérique connecté. La définition de 0 rend tous les nouveaux appareils désactivés par défaut:
for host in /sys/bus/usb/devices/usb*; do echo 0 > $host/authorized_default; done
Une façon recommandée d'exécuter ce script consiste à utiliser des udev
règles. De cette façon, vous êtes sûr que le script s'exécute au bon moment, lorsque le pilote du contrôleur hôte est déjà chargé, mais qu'aucun des périphériques n'a encore été autorisé. Voir cette question pour un exemple de cette approche.
Une chose que vous devez comprendre est que les verrous logiciels ne sont efficaces que tant que l'utilisateur final ne peut pas débrancher la carte SD et supprimer les protections que vous avez mises en place.
Je ne sais pas vraiment si c'est directement possible ... Pourquoi ne pas simplement bloquer physiquement la capacité des utilisateurs à le faire? Soit en le plaçant là où ils ne peuvent pas se rendre, en remplissant les ports ou en mettant un mécanisme de verrouillage sur / autour.
sudo sh -c "echo 0 > /sys/devices/platform/soc/3f980000.usb/buspower"
Désactivera les ports USB mais aussi le port LAN.
sudo sh -c "echo 1 > /sys/devices/platform/soc/3f980000.usb/buspower"
Les réactive.