Отключение USB-устройства

В настоящее время я работаю над PyUSB. Поскольку я новичок в USB, я не знаю, как я могу сделать следующее.

Я успешно подключился к своему USB-устройству из Python PyUSB. В коде мне потребовалось выполнить сброс устройства USB Device. Что я и сделал, отправив команду на оборудование. Теперь после аппаратного сброса я хочу освободить текущее USB-устройство от Python PyUSB. А затем я хочу снова подключиться к USB-устройству после его сброса.

Пожалуйста, дайте мне знать, как я могу отключить USB Device Connection, интерфейсы и т. Д., Чтобы я мог подключиться?

Заранее большое спасибо.

3 ответа

my_device = usb.core.find(...)

...

# necessary to allow further claim_interface calls
#   (bulk read), generally not needed
usb.util.dispose_resources(my_device)
#!/usr/bin/python
from usb.core import find as finddev
dev = finddev(idVendor=0x1234, idProduct=0x5678)
dev.reset()

Хотя приведенный выше ответ совершенно верен, я несколько раз сталкивался с тем, что сброса USB-устройства недостаточно.

Хороший способ справиться с ними — отключить питание USB-контроллера, заставив его перезапуститься, как если бы он был отключен/подключен.

Вкратце: я написал небольшой скрипт на Python для сброса USB-устройств или USB-контроллеров. См. эту ссылку , которая работала для меня, когда никакое другое решение для сброса не работало (некоторые плохие USB-ИБП). Использование:

      usb_reset --reset
#or
usb_reset --list && usb_reset -d 1234:1234

Оригинальная идея использования bash взята отсюда

          for i in /sys/bus/pci/drivers/[uoex]hci_hcd/*:*; do
      [ -e "$i" ] || continue
      echo "Resetting ${i%/*}/${i##*/}"
      echo "${i##*/}" > "${i%/*}/unbind"
      echo "${i##*/}" > "${i%/*}/bind"
    done
Другие вопросы по тегам