USB-이더넷 어댑터가 시작 시 CD 드라이브로 표시되지 않도록 하려면 어떻게 해야 합니까?

USB-이더넷 어댑터가 시작 시 CD 드라이브로 표시되지 않도록 하려면 어떻게 해야 합니까?

서문: 일부 사용자는 이 질문을 별로 좋아하지 않는 것 같습니다. 이유는 모르겠습니다. 이 문제에 공감할 가치가 있다고 생각하시면 이유를 설명하는 댓글을 남겨서 해결 방법을 알려주세요. 내 문제에 대한 해결책이 필요하며 필요한 경우 내 질문을 편집할 의향이 있습니다.

TP-Link UE200저는 Debian Buster(글을 쓰는 시점의 최신 안정 버전)에서 USB-이더넷 어댑터를 사용 하려고 합니다 . 정상 작동 시 어댑터는 처음 연결될 때 USB CD-ROM 드라이브로 나타나며 해당 드라이버를 사용하여 이더넷 모드로 전환합니다.

이미 실행 중인 시스템에 어댑터를 연결하면 어댑터가 제대로 작동합니다. Linux는 어댑터를 올바르게 감지하고 자동으로 장치를 올바른 모드로 전환합니다. 그러나 시스템 시작 중에 어댑터를 연결하면 시스템이 자동으로 올바른 모드로 전환되지 않습니다.

또한 장치를 기계적으로 뽑았다가 다시 삽입하지 않고 CD-ROM 상태에 있을 때 장치가 이더넷 어댑터로 표시되도록 하는 방법을 찾을 수 없습니다. 시스템은 수동 개입 없이 실행되고 다시 시작되도록 설계되었으므로 매번 수동으로 개입하는 것은 바람직하지 않습니다.

내 질문은 다음과 같습니다: 시스템 시작 시 연결된 어댑터를 물리적으로 분리하지 않고도 이더넷 어댑터로 표시되도록 하려면 어떻게 해야 합니까?


참고 사항:

  • Raspberry Pi 4 + Ubuntu 19.10에서 비슷한 설정이 실행되고 있다는 점을 덧붙이고 싶습니다. 이더넷 어댑터가 연결된 상태로 시스템을 부팅하더라도 이더넷 어댑터가 올바르게 인식됩니다. 지금까지 나는 Debian Buster/x86_64에서만 이 문제를 겪었습니다.

  • USB의 경우 어댑터는 두 개의 별도 USB 장치로 작동합니다. 장치의 두 가지 모드 각각에는 고유한 USB 제품 ID가 있습니다(예: CD-ROM 드라이브로 작동하는 경우 0601, 이더넷 어댑터로 작동하는 경우 0602).

  • 지금까지 시도한 것:

    1. 장치 바인딩 해제 및 리바인딩은 /sys/bus/usb/drivers/usb/{unbind,bind}어댑터가 다시 표시 0601되고 커널이 해당 장치를 CD-ROM 장치로 다시 등록함으로써 발생합니다. 제대로 다시 초기화하려면 장치의 전원을 완전히 꺼야 할 것 같습니다.

    2. usb-storage장치에서 드라이버를 수동으로 바인딩 해제하고 및를 cdc_ether통해 /sys/bus/usb/drivers/usb-storage/unbind드라이버를 바인딩합니다 /sys/bus/usb/drivers/cdc_ether/bind(모듈을 수동으로 로드한 후). 당연하게도 장치가 커널에 USB 대용량 저장 장치로 표시되기 때문에 이 방법은 작동하지 않습니다.

    3. 장치가 0602로 표시되도록 수동으로 강제하는 데 사용됩니다 usb_modeswitch. 장치는 단순히 메시지를 무시하거나 작동을 거부합니다. 장치를 꺼내고 -K재설정해도 -R아무런 효과가 없는 것 같습니다.

    4. 다음을 통해 장치 연결 끊기 /sys/bus/usb/devices/XXX/remove: 완벽하게 작동하지만 Linux가 장치를 물리적으로 다시 연결하지 않고 장치를 "제거"하도록 할 수 있는 방법은 없습니다 .

    5. 내 initramfs에 모듈을 포함 하고 초기 부팅 시 누락된 커널 모듈로 인해 문제가 발생했다는 헛된 희망으로 cdc_ether커널 명령줄 인수를 통해 모듈을 미리 로드했습니다 . Linux는 여전히 이것을 사용합니다 .modules_loadusb-storage

답변1

설치하다 usb-modeswitch:

sudo apt install usb-modeswitch

를 사용하여 장치 ID를 가져옵니다 lsusb. 예:

Bus 001 Device 004: ID 2357:0601 TP-Link UE300 10/100/1000 LAN (ethernet mode) [Realtek RTL8153]

실행 명령:

/usr/sbin/usb_modeswitch -v 2357 -p 0600 -R

그리고 그것은 고쳐졌습니다. 시작 시 이 작업을 수행하는 서비스를 만들었습니다.

이는 TP-Link UE300에도 적용됩니다.

답변2

[댓글보다 더 값진 답변을 써서 죄송합니다. 모드를 조옮김할 수 있다면 매우 감사하겠습니다. ]

BIOS가 어댑터를 부팅 가능한 USB 장치로 취급하고 커널이 다시 점유할 수 없도록 관련 인터럽트 및 IO 포트의 처리를 잠글 수 있습니까? 이 경우 USB 장치를 부팅 가능한 장치 목록에서 강제로 제거하고 BIOS가 PnP 시스템으로 구성되었는지 확인하세요.

관련 정보