Ubuntu安裝無線網卡驅動,5G模塊RM500U-CN在ubuntu20.04上的驅動安裝
Ubuntu安裝無線網卡驅動,5G模塊RM500U-CN在ubuntu20.04上的驅動安裝
5GRM500U-CN在ubuntu20.04上的驅動安裝
- 簡述
- 問題發現
- 問題的解決
- 續集
簡述
記錄在ubuntu20.04上安裝RM500U-CN驅動的過程
問題發現
將5g模塊接入USB接口后無法自動撥號上網,使用命令查看串口信息:
ls /dev/tty*
Ubuntu安裝無線網卡驅動。發現沒有usb串口信息,再使用命令
lsusb
發現已經識別到了5g模塊的接入,因此推斷可能是已經識別到了串口的連接,但是沒有相應的驅動
問題的解決
查看linux內核版本并找到對應的驅動安裝包,使用此命令查看內核版本:
uname -r
找到對應的安裝包后,使用命令查看5g模塊對應的ID號:
看到倒數第二行的ID號為2C7C:0900,在./drivers/usb/serial文件夾下的option.c文件中找到如下代碼并加入相應的ID:
static const struct usb_device_id option_ids[] = {
#if 1 //Added by Quectel{ USB_DEVICE(0x05C6, 0x9090) }, /* Quectel UC15 */{ USB_DEVICE(0x05C6, 0x9003) }, /* Quectel UC20 */{ USB_DEVICE(0x05C6, 0x9215) }, /* Quectel EC20(MDM9215) */{ USB_DEVICE(0x2C7C, 0x0125) }, /* Quectel EC20(MDM9x07)/EC25/EG25 */{ USB_DEVICE(0x2C7C, 0x0121) }, /* Quectel EC21 */{ USB_DEVICE(0x2C7C, 0x0191) }, /* Quectel EG91 */{ USB_DEVICE(0x2C7C, 0x0195) }, /* Quectel EG95 */{ USB_DEVICE(0x2C7C, 0x0306) }, /* Quectel EG06/EP06/EM06 */{ USB_DEVICE(0x2C7C, 0x030B) }, /* Quectel EG065K/EG060K */{ USB_DEVICE(0x2C7C, 0x0514) }, /* Quectel BL EG060K RNDIS Only */{ USB_DEVICE(0x2C7C, 0x0512) }, /* Quectel EG12/EP12/EM12/EG16/EG18 */{ USB_DEVICE(0x2C7C, 0x0296) }, /* Quectel BG96 */{ USB_DEVICE(0x2C7C, 0x0700) }, /* Quectel BG95/BG77/BG600L-M3/BC69 */{ USB_DEVICE(0x2C7C, 0x0435) }, /* Quectel AG35 */{ USB_DEVICE(0x2C7C, 0x0415) }, /* Quectel AG15 */{ USB_DEVICE(0x2C7C, 0x0452) }, /* Quectel AG520 */{ USB_DEVICE(0x2C7C, 0x0455) }, /* Quectel AG550 */{ USB_DEVICE(0x2C7C, 0x0620) }, /* Quectel EG20 */{ USB_DEVICE(0x2C7C, 0x0800) }, /* Quectel RG500/RM500/RG510/RM510 */{ USB_DEVICE(0x2C7C, 0x0801) }, /* Quectel RG520/RM520/SG520 */{ USB_DEVICE(0x2C7C, 0x6026) }, /* Quectel EC200 */{ USB_DEVICE(0x2C7C, 0x6120) }, /* Quectel UC200 */{ USB_DEVICE(0x2C7C, 0x6000) }, /* Quectel EC200/UC200 */##此處加入RM500U-CN相應的ID{ USB_DEVICE(0x2C7C, 0x0900) }, /* Quectel RM500U-CN */{ .match_flags = USB_DEVICE_ID_MATCH_VENDOR, .idVendor = 0x2C7C }, /* Match All Quectel Modules */
#endif
Ubuntu 網卡驅動?保存后在Makefile文件的目錄下進行編譯:
sudo make install
在Makefile文件中可以看到,將驅動模塊.ko文件放在了./drivers/usb/serial文件夾下,在對應文件夾下找到三個驅動文件:
1、option.ko
2、usb_wwan.ko
3、qcserial.ko
之后將三個驅動文件移植到內核即可。有兩種方法:
(1)方法一 :進入test.ko驅動模塊文件所在的目錄,然后直接 insmod test.ko (在我的筆記本上始終行不通)
(2)方法二 :將test.ko文件拷貝到/lib/module/#uname-r#/目錄下,這里,#uname -r#意思是,在終端中輸入“uname -r“后顯示的內核版本及名稱。(只能在終端里sudo cp 命令來復制)
然后 sudo depmod(會在/lib/modules/#uname -r#/目錄下生成modules.dep和modules.dep.bb文件,表明模塊的依賴關系)
最后 sudo modprobe test(注意這里無需輸入.ko后綴) 即可(一定要加sudo,不然不成功)
注:兩種方法的區別:modprobe和insmod類似,都是用來動態加載驅動模塊的,區別在于modprobe可以解決load module時的依賴關系,它是通過/lib/modules/#uname -r/modules.dep(.bb)文件來查找依賴關系的;而insmod不能解決依賴問題。也就是說,如果你確定你要加載的驅動模塊不依賴其他驅動模塊的話,既可以insmod也可以modprobe,當然insmod可以在任何目錄下執行,更方便一些。而如果你要加載的驅動模塊還依賴其他ko驅動模塊的話,就只能將模塊拷貝到上述的特定目錄,depmod后再modprobe。
最后再次使用命令:
ubuntu安裝網卡驅動,ls /dev/tty*
看到如圖所示的usb串口信息:
斷開wifi和網線,發現仍有以太網接入,證明5g模塊已經可以正常使用,到此為止,驅動安裝結束。
續集
在我的另一臺筆記本上總是insmod出錯,忍無可忍,重裝系統,直接超度了它,最后問題解決!