Linux에서 USB 장치를 분리했다가 다시 삽입하는 것을 시뮬레이션/강제/가짜로 만들 수 있습니까?

Linux에서 USB 장치를 분리했다가 다시 삽입하는 것을 시뮬레이션/강제/가짜로 만들 수 있습니까?

그래서 이상한 문제에 직면했습니다. 저는 비트코인 ​​USB 채굴기인 Bitfury를 가지고 있고 채굴을 위해 CGMiner를 사용하고 있습니다.

루트로 애플리케이션을 실행하면 USB 장치가 자동으로 감지되지 않습니다. CGMiner는 다시 삽입할 때만 스틱을 감지합니다(핫플러그 이벤트를 감지한 다음 예상대로 작동합니다).

헤드리스 미니 서버를 설정하고 싶어서 서버가 재부팅될 때마다 일어나서 장치를 뽑았다가 다시 연결해야 하는 게 귀찮아서 너무 게을러서 작업할 때는 좀 힘들거든요. 집에 없어요.

그렇다면 USB 시스템을 종료하고 다시 시작하는 것이 가능한가요? 아니면 더 좋은 방법이 있나요?

현재 HP t5730 터미널에서 Fedora 20을 실행하고 있는데 Raspberry PI에서 Raspbian 관련 문제가 있어서 OS 문제는 아닌 것 같습니다. 기기 자체의 문제일 수도 있고, CGMiner의 문제일 수도 있으나 해당 부분에 대해서는 아직 발견하지 못했습니다.

답변1

USB HCI 커널 모듈(*hci_hcd 및 *usb*)을 언로드하고 다시 로드합니다. 이는 USB 포트의 전원을 실제로 차단하는 신뢰할 수 있는 유일한 방법입니다.

동일한 작업을 수행하는 덜 엄격한 다른 방법이 있지만 장치 오류에 따라 작동이 보장되지는 않습니다.

답변2

이 답변이 유틸리티의 사용법에 대한 자세한 설명입니다 usbreset. 도움이 되셨다면 투표해주세요.

이것이 계속 작동하지 않는 USB 무선 어댑터를 "분리했다가 다시 연결"하는 방법입니다. 이 스크립트를 찾기 전에는 물리적으로 플러그를 뽑았다가 다시 연결하여 재설정해야 했습니다.

$ usbreset
Usage:
  usbreset PPPP:VVVV - reset by product and vendor id
  usbreset BBB/DDD   - reset by bus and device number
  usbreset "Product" - reset by product name

Devices:
  Number 001/003  ID 046d:080a  
  Number 003/002  ID 045e:07a5  Microsoft® 2.4GHz Transceiver v9.0
  Number 001/002  ID 0cf3:9271  USB2.0 WLAN

$ sudo usbreset 0cf3:9271
Resetting USB2.0 WLAN ... ok

보시다시피, 어떤 장치가 연결되어 있는지 확인하기 위해 매개 변수 없이 스크립트를 한 번 실행했습니다. 그런 다음 sudo 및 제품/공급업체 ID(재부팅 시 일관됨)를 사용하여 다시 실행하여 가상으로 장치를 분리했다가 다시 연결했습니다.

관련 정보