Я ищу способ превратить питание выключено (и обратно) для USB-порта. Решение может быть в C, bash и т. Д. Я использую BeagleBone с 32-разрядным Ubuntu 16.04 для armhf.Отключите питание USB-порта
> uname -srvm
Linux 4.4.6-ti-r15 #1 SMP Tue Apr 5 12:32:22 UTC 2016 armv7l
Я пробовал много вещей, обсуждавшиеся на StackOverflow и AskUbuntu, в том числе:
#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;
}
USB-устройство мне нужно отключить (и в конечном итоге обратно) является сканер штрих-кодов Champtek FS310, который показывает до как считыватель магнитных карт полосы, когда я бегу 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
Я обнаружил, что эти две команды результатов в устройстве выключения:
echo "1-1" > /sys/bus/usb/drivers/usb/unbind
echo "1-1" > /sys/bus/usb/drivers/usb/bind
Как ни странно, он отключается только во время «связывания», а не «развязывает». Но как только он отключится таким образом, единственный способ, по которому я вернул его, - перезагрузить компьютер, который не является полезным решением.
Возможный дубликат [Включите питание USB/выключают с BeagleBone Черного ядра> = 3,8] (HTTP://stackoverflow.com/questions/24039420/turn-usb-power-off-on-with-beaglebone-black-kernel-3-8) – duskwuff