5G模块RM500U-CN在ubuntu20.04上的驱动安装

5GRM500U-CN在ubuntu20.04上的驱动安装

简述

记录在ubuntu20.04上安装RM500U-CN驱动的过程

问题发现

将5g模块接入USB接口后无法自动拨号上网,使用命令查看串口信息:

ls /dev/tty*

发现没有usb串口信息,再使用命令

lsusb

发现已经识别到了5g模块的接入,因此推断可能是已经识别到了串口的连接,但是没有相应的驱动

问题的解决

查看linux内核版本并找到对应的驱动安装包,使用此命令查看内核版本:

uname -r

找到对应的安装包后,使用命令查看5g模块对应的ID号:
倒数第二行看到ID号为2C7C:0900
看到倒数第二行的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

保存后在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。

最后再次使用命令:

ls /dev/tty*

看到如图所示的usb串口信息:
在这里插入图片描述
断开wifi和网线,发现仍有以太网接入,证明5g模块已经可以正常使用,到此为止,驱动安装结束。

续集

在我的另一台笔记本上总是insmod出错,忍无可忍,重装系统,直接超度了它,最后问题解决!

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值