멋진 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