특정 드라이버 커널 모듈이 특정 장치를 지원하는지 확인하는 방법은 무엇입니까?

특정 드라이버 커널 모듈이 특정 장치를 지원하는지 확인하는 방법은 무엇입니까?

lsusb보고하는 USB WiFi 어댑터에 적합한 드라이버를 찾으려고 합니다.

0bda:a811 Realtek Semiconductor Corp.

존재하다위키피디아이것은설명하다"Realtek RTL8811AU 무선 802.11ac 1x1 USB 2.0"입니다.

RTL8811AU용 드라이버를 제공하는 것으로 보이는 여러 저장소가 있습니다.이것a (그것은 기반으로이것rtl8811AU를 지원한다고 주장함). 그러나 커널에 장치를 설치하기 전에 컴파일된 모듈이 장치를 지원하는지 확인하고 싶습니다(이것은 내가 엉망으로 만들려고 하는 다른 사람의 시스템입니다).

modinfo온라인 검색을 통해 드라이버 모듈의 명령 출력이 다음과 같은 줄을 반환하는 것으로 충분하다는 결론에 도달했습니다.

alias:          usb:v0BDApA811d*dc*dsc*dp*ic*isc*ip*in*

여기에는 올바른 공급업체 ID( 0BDA)와 올바른 제품 ID( A811)가 포함됩니다.

드라이버 및 장치 호환성을 확인하는 이 방법은 얼마나 안정적입니까? 이것이 커널이 드라이버를 선택하는 방법입니까?

공급업체 ID와 장치 ID가 정확히 일치해야 하나요? 예를 들어, 먼저 (on Ubuntu) 를 사용하여 패키지 설치를 시도했습니다 rtl8812au-dkms. apt-get그러나 출력 modinfo 8812au | grep A811

alias:          usb:v7392pA811d*dc*dsc*dp*ic*isc*ip*in*

-- 기기 ID는 맞는데 공급업체 ID가 일치하지 않습니다. 이는 드라이버가 장치에 적합하지 않다는 의미입니까?

답변1

이 접근 방식은 신뢰할 수 있습니다. 이는 커널(또는 udevkmod)이 로드할 모듈을 선택하는 방법입니다. 새 장치가 나타날 때(부팅 시 포함, 모든 장치가 검색될 때 포함) 장치 설명자와 일치하는 모듈을 찾습니다 modalias.

modinfo장치와 일치하는 모듈의 별칭이 나열 되면 모듈이 해당 장치를 지원한다고 주장한다는 의미입니다. 귀하의 경우 모듈은 7392:A811(및 귀하의 것과 일치하지 않는 다른 장치)과 일치하는 장치를 지원 하지만 귀하의 장치는 지원하지 않으므로 (적어도 현재 상태에서는) 별로 도움이 될 grep것 같지 않습니다 ...rtl8812au-dkms리눅스 USB 레지스트리현재는 오프라인 상태여서 더 이상 확인할 수 없습니다. 앨리어싱은 필터링의 첫 번째 수준이며 지원이 절대적으로 보장되지는 않습니다. 모듈은 초기화될 때 자체 프로브 기능을 사용하며 이러한 기능은 추가 정보를 사용할 수 있습니다. 바라보다이 문제자세한 내용을 알아보고커널 문서별칭에 나타날 수 있는 모든 것에 대한 정보입니다.

(식별자의 유사성은 드라이버가 귀하의 장치도 지원할 수 있음을 시사하므로 모듈에 ID를 추가하고 어떤 일이 발생하는지 확인할 수 있습니다.)

관련 정보