Ich bin auf der Suche nach einer Möglichkeit, power aus (und wieder an) für einen USB-Anschluss. Die Lösung kann in C, bash usw. sein. Ich benutze einen BeagleBone mit 32-bit Ubuntu 16.04 für armhf.Schalten Sie die Stromversorgung zu einem USB-Port
> uname -srvm
Linux 4.4.6-ti-r15 #1 SMP Tue Apr 5 12:32:22 UTC 2016 armv7l
Ich habe auf Stackoverflow und AskUbuntu diskutiert viele Dinge ausprobiert, darunter:
#include <linux/usbdevice_fs.h>
int main(void)
{
int fd = open("/dev/bus/usb/001/002", O_WRONLY);
if (fd < 0) return 1;
int rc = ioctl(fd, USBDEVFS_RESET, 0);
if (rc < 0) return 2;
close(fd);
return 0;
}
Das USB-Gerät muss ich (wieder auf und schließlich) auszuschalten ist ein Champtek FS310 Barcode-Leser, die zeigt, up als Leser Magnetkartenstreifen, wenn ich laufen lsusb:
> lsusb
Bus 001 Device 002: ID 040b:6543 Weltrend Semiconductor Manhattan Magnetic Card Strip Reader
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
> lsusb -t
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=musb-hdrc/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 1: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
ich habe festgestellt, dass diese beiden Befehle Ergebnisse in dem Gerät ausgeführt wird ausgeschaltet:
echo "1-1" > /sys/bus/usb/drivers/usb/unbind
echo "1-1" > /sys/bus/usb/drivers/usb/bind
Merkwürdigerweise schaltet es nur während "binden" aus, nicht "unbind". Aber sobald es auf diese Weise ausgeschaltet wird, ist der einzige Weg, den ich gefunden habe, es wieder einzuschalten, den Computer neu zu starten, was keine brauchbare Lösung ist.
Mögliches Duplikat [USB- Gerät ausschalten/auf mit BeagleBone Schwarz kernel> = 3.8] (http://stackoverflow.com/questions/24039420/turn-usb-power-off-on-with-beaglebone-black-kernel-3-8) – duskwuff