2023-11-18

手動重新安裝 WiFi USB 的驅動程式

在下其中一位朋友,由於購買了一部新電腦,但使用速度非常慢,都想嘗試使用 Linux
但在 Live Boot 的進度卻無法完成,並且出現一些疑似錯誤的訊息,因此向在下查詢
最後發現自己類似的裝置都有相同問題,因此尋找解決方法

WiFi USB 外觀

見下文

一支細小的 USB裝置,支援 WiFi 及 藍牙

見下文

使用 Realtek 的 RTL8821CU晶片

故障情況

最初使用時,不需要安裝及額外操作便能夠隨插即用
但最近在連接後,電腦雖然能夠偵測 WiFi 及 藍牙訊號,但卻無法 以WiFi連接 及 以藍牙配對裝置

在下打算重新開機後便會正常運作,但起動時卻出現了
usb 1-6: reset high-speed USB device number 4 using xhci-hcd

的錯誤訊息,而且載入進度無法完成,但拔除 USB裝置 後,便正常載入
估計是起動時,系統找到 USB裝置,但無法辨識,因此不斷嘗試導致載入進度無法完成

見下文
拔除 USB裝置 起動後,再次接駁 USB裝置 ,在 Terminal 輸入:
lsusb -t

顯示 USB裝置 正在使用 rtw_8821cu 驅動程式,而不是 rtl8821cu
看似是因為使用錯誤的驅動程式導致無法正常運作

安裝驅動程式

見下文

從網上查找資料後,需要重新安裝驅動程式
https://codeload.github.com/morrownr/8821cu-20210916/zip/refs/heads/main
下載 驅動程式原始碼,並編譯及安裝才能正確使用

見下文

將 zip檔案 解壓縮

見下文

雖然需要由原始碼編譯及安裝,但目錄中已經包含自動編譯及安裝的腳本,因此只需要執行該腳本程式即可完成
不過在安裝 驅動程式 前需要安裝 build-essentialdkms
在 Terminal 輸入:

sudo apt install build-essential dkms

安裝 build-essential 及 dkms

然後在驅動程式原始碼的目錄 輸入:

sudo bash "install-driver.sh"

(必須使用 root 或 sudo)

見下文
見下文

便會自動編譯及安裝驅動程式

見下文

由於在下的電腦啟動 Secure Boot ,因此安裝驅動程式前有安全查詢

見下文

安裝非官方或沒有簽署的驅動程式,需要在下設定 Machines Owner Keys (MOK)
因為在下已經設定 MOK ,所以在下選擇 No 來略過此步驟
即使沒有設定 MOK 亦可以選擇 No 不設定 MOK 來繼續執行

見下文

完成安裝 驅動程式 後,可以立即修改 驅動程式設定 及 是否需要立即重新開機
沒有特殊需要的情況,在下不建議修改 驅動程式設定 ,以免發現異常問題

見下文

重新開機後,便可以連接到 WiFi

見下文

同時藍牙亦能夠與藍牙裝置配對

補充資料

在下使用另一部 Linux 電腦測試,卻出現另一個錯誤:

rtw8821cu 2-3:1.0: read register 0x20 failed with -110

在下估計這些訊息並非真正的錯誤,而是出錯前的所執行的指令
實際的錯誤因為不斷嘗試某些操作而沒有顯示

在下發現在 Windows 都有一些操作問題,同樣無法使用 以WiFi連接 及 以藍牙配對
連接後, Windows 將 USB裝置 當作 USB儲存裝置,顯示儲存裝置中的安裝檔
但在下不打算在 Windows 安裝這些不明的驅動程式,因此在下嘗試其他方法
在下將當作 USB儲存裝置 卸載後,竟然能夠正常使用 WiFi 及 藍牙功能
看來不安裝附帶的驅動程式是正確的決定

在下尋找其他資料時,發現 Kernel 6.2 整合大量無線驅動程式,當中包括支援 WiFi 7 ,例如 RTW8821CU
因此在下之前能夠正常使用,應該是因為當時並未使用 Kernel 6.2
當使用 Kernel 6.2 驅動程式,有機會是因此在下使用 USB裝置 使用較舊的 RTL8821CU晶片
卻因為系統正在使用較新的 RTW8821CU驅動程式 ,無法兼容較舊 RTL8821CU晶片 導致不能正常使用

總結

雖然出師不利,但很快便解決了問題,在下的朋友覺得沒有問題
使用上非常順暢,與很快便熟習


參考資料

沒有留言 :

張貼留言