Sto usando l'RPI per creare un programma, ma devo disabilitare le porte USB in modo che l'utente finale non possa collegare una tastiera o un mouse e pasticciare con il dispositivo.
È possibile, e se sì, come si fa?
Sto usando l'RPI per creare un programma, ma devo disabilitare le porte USB in modo che l'utente finale non possa collegare una tastiera o un mouse e pasticciare con il dispositivo.
È possibile, e se sì, come si fa?
Risposte:
Puoi trovare fortuna con questo comando:
echo 0x0> / sys / devices / platform / bcm2708_usb / buspower
Questo sembra disabilitare le porte USB. Non l'ho provato però.
Ogni controller host USB in Linux espone un'impostazione chiamata authorized_default
, che controlla lo stato di tutti i nuovi dispositivi collegati. Impostandolo su 0, tutti i nuovi dispositivi vengono disabilitati per impostazione predefinita:
for host in /sys/bus/usb/devices/usb*; do echo 0 > $host/authorized_default; done
Un modo consigliato di eseguire questo script consiste nell'utilizzare le udev
regole. In questo modo, sei sicuro che lo script verrà eseguito al momento giusto, quando il driver del controller host è già caricato, ma nessuno dei dispositivi è stato ancora autorizzato. Vedi questa domanda per un esempio di questo approccio.
Una cosa che dovresti capire è che i blocchi software sono efficaci solo se l'utente finale non può scollegare la scheda SD e rimuovere le protezioni che hai messo in atto.
Non so davvero che sia direttamente possibile ... Perché non bloccare fisicamente la capacità degli utenti di farlo? O posizionandolo dove non riescono, riempiendo le porte o posizionando un meccanismo di blocco sopra / attorno ad esso.
sudo sh -c "echo 0 > /sys/devices/platform/soc/3f980000.usb/buspower"
Disabiliterà le porte USB ma anche la porta LAN.
sudo sh -c "echo 1 > /sys/devices/platform/soc/3f980000.usb/buspower"
Li riattiva.