Drivers

如何檢查給定的驅動核心模組是否支持給定的設備?

  • February 17, 2018

我正在嘗試為報告為的 USB WiFi 適配器找到合適的驅動lsusb程序

0bda:a811 Realtek Semiconductor Corp.

WikiDevi上,它被描述為“Realtek RTL8811AU Wireless 802.11ac 1x1 USB 2.0”。

似乎有多個儲存庫為 RTL8811AU 提供驅動程序,例如這個(它基於這個聲稱支持 rtl8811AU)。但是,我想在嘗試將其安裝到核心之前檢查編譯的模組是否支持該設備(這是我試圖弄亂的其他人的系統)。

modinfo通過線上搜尋,我得出結論,驅動模組的命令輸出返回這樣的一行就足夠了

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

其中將包含正確的供應商 ID ( 0BDA) 和正確的產品 ID ( A811)。

這種檢查驅動程序與設備兼容性的方法有多可靠?這是核心選擇驅動程序的方式嗎?

供應商 ID 和設備 ID 是否必須完全匹配?例如,我首先嘗試使用(在 Ubuntu 上)安裝rtl8812au-dkms軟體包。apt-get但是,輸出modinfo 8812au | grep A811

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

– 設備 ID 沒問題,但供應商 ID 不匹配。這是否意味著該驅動程序不適用於該設備?

這種方法是可靠的,這就是核心(或udevand kmod)選擇要載入的模組的方式:當出現新設備時(包括在啟動時,當探測到所有設備時),它會查找與modalias設備描述符匹配的模組。

如果modinfo列出與您的設備匹配的模組的別名,則表示該模組聲稱支持該設備。在您的情況下,該模組支持與 7392:A811 匹配的設備(可能還有其他與您的不匹配的grep設備),但不支持您的設備,因此它似乎rtl8812au-dkms沒有太大幫助(至少在目前狀態下)…… Linux USB 系統資料庫目前處於離線狀態,因此我無法進一步檢查。請注意,別名是第一級過濾,並不絕對保證支持——模組在初始化時使用它們自己的探測函式,並且可以使用其他資訊。有關更多詳細資訊,請參閱此問題,有關別名中可以包含的所有內容的資訊,請參閱核心文件

(標識符的相似性確實表明驅動程序也可以支持您的設備,因此您可以嘗試將 id 添加到模組中以查看會發生什麼。)

引用自:https://unix.stackexchange.com/questions/424839