Изключване на USB устройства
#1
Оказа се проблем. +5 не се комутира, явно самото изключване/включване на устройствата е команда.

Ако устройството е "тъпо" и е директно закачено на USB захранването, тогава по време на работа на машината то не може да се изключи.

Ето колеги с подобен проблем: https://superuser.com/questions/1732500/...tion-helps


Цитат:I have a strange serial USB device (ID 17ff:1012) that won't show up anymore after rebooting my hardware until somebody physically unplugs and replugs the device. Since the machine is locate at a remote site, this means that I effectively usually cannot reboot without somebody going there physically.
After a reboot the device will simply not show up in
Код:
lsusb
anymore, and it's interface in
Код:
/dev/ttyACM0
will be missing.



Нахвърлям някои линкове и команди, с които все пак пробвах да изключа самия USB хъб, но засега без да успявам да изключа самото +5 захранване.


Код:
lsusb
lsusb -t
lsusb -v -s bus:id
lspci


https://www.linux.org/threads/resetting-...tem.10404/

Взимаме адресите на USB хъбовете:

Код:
lspci | grep USB

Виж също и

Код:
ls -la /sys/bus/usb/devices


Всъщност не открих по какъв ред точно може да се установи кое устройство на кой хъб е и това го установих експериментално - с изключване на хъба и проверка с lsusb кои устройства ги няма (но си пуснете някакъв шел или друго, с което да си разрешите клавиатурата).

Давам цитат от горния линк, за пълнота:

Цитат:So, let's look back at Figure 2. Here, we can see there are seven Root Hubs listed as Bus 1 through 7. To be able to disable the Bus, we need to have a number for it which is made up as follows:

Domain:Bus:Slot.Function
0000:00:00.0


lspci дава информацията за Bus и Slot, но не дава домейн. С ls -la /sys/bus/usb/devices ще се види и домейнът, но се съмнявам да е различно от 0000

Командата, с която хъбът се забранява е

Код:
# echo -n "0000:00:14.0" | tee /sys/bus/pci/drivers/xhci_hcd/unbind

и разрешава съответно

Код:
# echo -n "0000:00:14.0" | tee /sys/bus/pci/drivers/xhci_hcd/bind


-------

Още по-твърд начин намерих в тези коментари:

https://unix.stackexchange.com/questions...e-in-linux

Цитат:The problem with the solutions above is that they require the cooperativity of the device; however in most scenarios the reason to reset it is exactly its non-cooperativity.
However, as it is described here, there is another, "harder" way to reset it on the PCI level: we remove it from the PCI bus and then re-insert it by a rescan.
The steps:
  1. echo 1 >/sys/bus/pci/<pci-id-of-device>/remove
  2. . We can find its PCI ID with an
    lspci
  3. command.
    echo 1 >/sys/bus/pci/rescan
Отговори


Отваряне на:


Потребители разглеждащи темата: 1 гост(и)