栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Ubuntu下使用ECM上网介绍

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Ubuntu下使用ECM上网介绍

1、背景

为了验证展锐原厂的USB CDC EMC(Ethernet Control Model)驱动的上网功能,需要搭建Linux系统。现将整个流程整理如下。

2、环境搭建

安装虚拟机

VMware-workstation-full-16.2.3-19376536.exe

安装Ubuntu系统

ubuntu-16.04.5-desktop-amd64.iso

3、执行终端命令行

3.1 Linux 下使用

Linux 下 Kernel 自带USB 串口、 ECM 和MTP驱动,比较新的版本可能还自带 RNDIS 驱动。但是Linux使用 USB 网卡建议直接用 ECM。

Linux 下 ECM 驱动是通过 CLASS ID 来识别的,所以在Linux下不需要额外装驱动也不需要其他操作就可以被识别。

USB 串口没有标准 CLASS,在Linux要根据PID/VID 去识别。

1)    在命令行下配置

a)    挂载 option 驱动

/sbin/modprobe option

b)    把 8850 可能用到的模式加入 option 驱动的识别列表

# 4D30 可以不加,这个模式通常只在 Windows 下使用

echo 1782 4d11 ff > /sys/bus/usb-serial/drivers/option1/new_id

echo 1782 4d13 ff > /sys/bus/usb-serial/drivers/option1/new_id

echo 1782 4d17 ff > /sys/bus/usb-serial/drivers/option1/new_id

2)    修改 Kernel 代码(最新8850基线版本不需要了,可忽略)

需要修改的文件为 drivers/usb/serial/option.c,在 option_ids 里增加:

// Rndis and four serials

{ USB_DEVICE_AND_INTERFACE_INFO(0x1782, 0x4d11, 0xff, 0, 0) },

// ECM and four serials

{ USB_DEVICE_AND_INTERFACE_INFO(0x1782, 0x4d13, 0xff, 0, 0) },

// Four Serials

{ USB_DEVICE_AND_INTERFACE_INFO(0x1782, 0x4d17, 0xff, 0, 0) }

3.2 shell命令行log

hz47**@hz47**-virtual-machine:~$ sudo -i

[sudo] hz47** 的密码:

root@hz47**-virtual-machine:~# /sbin/modprobe option

root@hz47**-virtual-machine:~# echo 1782 4d11 ff>/sys/bus/usb-serial/drivers/option1/new_id

root@hz47**-virtual-machine:~# echo 1782 4d13 ff>/sys/bus/usb-serial/drivers/option1/new_id

root@hz47**-virtual-machine:~# echo 1782 4d17 ff>/sys/bus/usb-serial/drivers/option1/new_id

root@hz47**-virtual-machine:~# ls /dev/tty*

/dev/tty    /dev/tty23  /dev/tty39  /dev/tty54      /dev/ttyS10  /dev/ttyS26

/dev/tty0   /dev/tty24  /dev/tty4   /dev/tty55      /dev/ttyS11  /dev/ttyS27

/dev/tty1   /dev/tty25  /dev/tty40  /dev/tty56      /dev/ttyS12  /dev/ttyS28

/dev/tty10  /dev/tty26  /dev/tty41  /dev/tty57      /dev/ttyS13  /dev/ttyS29

/dev/tty11  /dev/tty27  /dev/tty42  /dev/tty58      /dev/ttyS14  /dev/ttyS3

/dev/tty12  /dev/tty28  /dev/tty43  /dev/tty59      /dev/ttyS15  /dev/ttyS30

/dev/tty13  /dev/tty29  /dev/tty44  /dev/tty6       /dev/ttyS16  /dev/ttyS31

/dev/tty14  /dev/tty3   /dev/tty45  /dev/tty60      /dev/ttyS17  /dev/ttyS4

/dev/tty15  /dev/tty30  /dev/tty46  /dev/tty61      /dev/ttyS18  /dev/ttyS5

/dev/tty16  /dev/tty31  /dev/tty47  /dev/tty62      /dev/ttyS19  /dev/ttyS6

/dev/tty17  /dev/tty32  /dev/tty48  /dev/tty63      /dev/ttyS2   /dev/ttyS7

/dev/tty18  /dev/tty33  /dev/tty49  /dev/tty7       /dev/ttyS20  /dev/ttyS8

/dev/tty19  /dev/tty34  /dev/tty5   /dev/tty8       /dev/ttyS21  /dev/ttyS9

/dev/tty2   /dev/tty35  /dev/tty50  /dev/tty9       /dev/ttyS22  /dev/ttyUSB0

/dev/tty20  /dev/tty36  /dev/tty51  /dev/ttyprintk  /dev/ttyS23  /dev/ttyUSB1

/dev/tty21  /dev/tty37  /dev/tty52  /dev/ttyS0      /dev/ttyS24  /dev/ttyUSB2

/dev/tty22  /dev/tty38  /dev/tty53  /dev/ttyS1      /dev/ttyS25  /dev/ttyUSB3

3.3、效果

模组激活PDP后,连接虚拟机设备,查看有线网络参数

 

 使用USB CDC ECM驱动,打开火狐浏览器上网

4 注意事项 4.1 Linux 下的串口设备通常不是按照 Interface ID 顺序排列的

    插入usb 就可以看到 ttyUSB{*} device。因为Linux下 tty 设备不显示设备名称,所以需要使用 udevinfo 来确认具体设备对应端口。注意 ttyUSB0 通常不是 Port0。

udevadm info –n /dev/ttyUSB{0-5}

    看其中的 ID_USB_INTERFACE_NUM=${id}:对于 pid 4d17,id 是 0-3;对于pid 4d13,id 是 2-5。从小到大依次对应 Windows 下的 *Port0 - *Port3。

如果想给固定端口指定名称的话可以通过增加 udev rules 来解决。

增加文件 /etc/udev/rules.d/98-unisoc-usb-udev.rules ,加入下述内容

# 给串口起别名,这样第一个串口就会被改名为 /dev/unisoc.at,想要增加其他端口类似方式

SUBSYSTEM=="tty", ATTRS{idVendor}=="1782", ATTRS{idProduct}=="4d17", ENV{ID_USB_INTERFACE_NUM}=="00", SYMLINK+="unisoc.at"

SUBSYSTEM=="tty", ATTRS{idVendor}=="1782", ATTRS{idProduct}=="4d13", ENV{ID_USB_INTERFACE_NUM}=="02", SYMLINK+="unisoc.at"

4.2 Linux 下的 modem manager 可能会自作主张操作 ttyUSB 设备

此问题通常只出现在 Linux 桌面 PC 上,同样可以在 udev rules 增加信息来解决。

在上面的文件 /etc/udev/rules.d/98-unisoc-usb-udev.rules 中增加几行

# 禁止 Modem Manager 访问串口

ATTRS{idVendor}=="1782", ATTRS{idProduct}=="4d11", ENV{ID_MM_DEVICE_IGNORE}="1"

ATTRS{idVendor}=="1782", ATTRS{idProduct}=="4d13", ENV{ID_MM_DEVICE_IGNORE}="1"

ATTRS{idVendor}=="1782", ATTRS{idProduct}=="4d17", ENV{ID_MM_DEVICE_IGNORE}="1"

4.3 ECM 和 RNDIS 虽然是即插即用,但是前提需要激活网络

可以设置开机自动激活,也可以使用 AT 命令激活

# AT 命令激活

AT+CFUN=1

AT+CGDCONT=5,"IP"

AT+CGACT=1,5

4.4 MTP模式虽然是即插即用,但是需要提前准备好存储文件夹

#建立FLASH分区mtp根目录

AT+FSMKDIR="/mtp"

#查看是否成功创建mtp根目录

AT+FSLSTFILE="/"

4.5 其他

RNDIS 在多数Linux PC 上也可以正常使用,但是支持的并不如 Windows,建议Linux 下网卡仍选用 ECM。

5、后续工作

通过本文档得出模组ECM驱动是OK的,后续需要把模组直接接在具有Linux系统的板卡下上网,比如正点原子提供的阿尔法开发板,这需要具备相关Linux开发能力,涉及固件编译和下载、驱动开发调试、系统移植和优化等。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/963491.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号