debian9에서 USB를 다시 시작하지 못했습니다.

debian9에서 USB를 다시 시작하지 못했습니다.

멋진 USB LAN 기가비트 어댑터가 포함된 작은 Linux 테스트 상자가 있습니다. 어댑터는 먼저 4포트 USB3 허브에 연결한 다음 기기에 연결합니다.

기기->USB3 4포트 허브->LAN 어댑터

또한 외부에서 허브에 전원을 공급해 보았지만 결과는 바뀌지 않았습니다. 임의의 시간이 지나면 USB LAN 포트가 죽습니다.

이것은로그 제어로그에서 인터페이스 이름은 eth1입니다.

myhost kernel: usb 2-1: USB disconnect, device number 3
myhost kernel: usb 2-1.1: USB disconnect, device number 5
myhost kernel: ax88179_178a 2-1.1:1.0 eth1: unregister 'ax88179_178a' usb-0000:00:14.0-1.1, ASIX AX88179 
myhost kernel: ax88179_178a 2-1.1:1.0 eth1: Failed to read reg index 0x0002: -19
myhost kernel: ax88179_178a 2-1.1:1.0 eth1: Failed to write reg index 0x0002: -19
myhost systemd[1]: Stopping ifup for eth1...
myhost kernel: ax88179_178a 2-1.1:1.0 eth1 (unregistered): Failed to write reg index 0x0002: -19
myhost kernel: ax88179_178a 2-1.1:1.0 eth1 (unregistered): Failed to write reg index 0x0001: -19
myhost kernel: ax88179_178a 2-1.1:1.0 eth1 (unregistered): Failed to write reg index 0x0002: -19

대신에 이런 일이 일어나요LSSB장치가 응답하지 않게 되기 전에 로깅:

Bus 002 Device 007: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
Bus 002 Device 006: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
Bus 002 Device 003: ID 05e3:0626 Genesys Logic, Inc. 
Bus 002 Device 004: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
Bus 002 Device 002: ID 05e3:0626 Genesys Logic, Inc. 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 8087:07dc Intel Corp. 
Bus 001 Device 003: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

장치가 응답하지 않는 경우:

Bus 002 Device 007: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
Bus 002 Device 006: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
Bus 002 Device 004: ID 05e3:0626 Genesys Logic, Inc. 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 8087:07dc Intel Corp. 
Bus 001 Device 003: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

USB3 허브에는 2개의 장치 주소 USB2 및 USB3 부분이 있는 것 같습니다... USB3 부분버스 002 장치 002죽음버스 001 장치 002아직.

30분 더 시스템을 다시 시작하면 문제가 해결됩니다.

그러나 시스템을 다시 시작하는 것은 매우 성가신 일입니다.

30분마다 시스템을 재부팅하지 않고도 USB 허브 또는 전체 USB 루트를 물리적으로 비활성화하고 다시 활성화하는 코드를 호출할 수 있습니까?

이렇게 불안정한 하드웨어를 바꾸기 전에, 저는 이 문제를 해결하기 위해 cron 스크립트를 작성하고 싶었습니다.

또한 다른 질문에서 요청한 다른 해결 방법도 시도했지만 더 이상 액세스할 수 없는 단일 장치를 재부팅하는 대신 사용할 수 있는 장치의 전체 USB 루트를 재부팅하고 싶습니다.

감사해요

답변1

uhubctl포트의 전원을 껐다가 켜볼 수 있습니다 . 이로 인해 장치가 재설정되고 커널이 이를 다시 감지해야 합니다.

예를 들어 내 컴퓨터에서는 USB 포트 1-2.2를 끄거나 켭니다.

# /usr/sbin/uhubctl -l 1-2 -p 2 -a off  
Current status for hub 1-2 [0bda:5411 Generic 4-Port USB 2.0 Hub, USB 2.10, 4 ports]
  Port 2: 0101 power connect []
Sent power off request
New status for hub 1-2 [0bda:5411 Generic 4-Port USB 2.0 Hub, USB 2.10, 4 ports]
  Port 2: 0000 off

# uhubctl -l 1-2 -p 2 -a on 
Current status for hub 1-2 [0bda:5411 Generic 4-Port USB 2.0 Hub, USB 2.10, 4 ports]
  Port 2: 0000 off
Sent power on request
New status for hub 1-2 [0bda:5411 Generic 4-Port USB 2.0 Hub, USB 2.10, 4 ports]
  Port 2: 0101 power connect []

모든 USB 포트를 이 방법으로 제어할 수 있는 것은 아니지만 이전에 USB 장치를 다시 감지하는 데 이 방법을 사용한 적이 있습니다.

`-p에 대한 올바른 값을 계산하려면 -l시행착오가 필요할 수 있습니다.

당신이 쓴

myhost kernel: usb 2-1.1: USB disconnect, device number 5

그러니 내가 먼저 해볼게-l 2-1 -p 1

관련 정보