ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Linux之USB串口option驱动简介

Linux之USB串口option驱动简介 Linux之USB串口option驱动简介 | DDNotesLinux之USB串口option驱动简介概述在Linux内核中option 驱动源码位于 drivers/usb/serial/option.c是最重要、最常用的USB串口驱动之一。它最初是为了支持GSM/CDMA调制解调器Modem而开发的但现在广泛用于支持各种 3G/4G/5G 蜂窝网络模块如移远、广和通、华为、中兴、SIMCom等以及部分工业USB转串口设备它是 Linuhttps://notes.z-dd.online/2026/08/26/Linux%E4%B9%8BUSB%E4%B8%B2%E5%8F%A3option%E9%A9%B1%E5%8A%A8%E7%AE%80%E4%BB%8B/Linux之USB串口option驱动简介概述在Linux内核中option 驱动源码位于 drivers/usb/serial/option.c是最重要、最常用的USB串口驱动之一。它最初是为了支持GSM/CDMA调制解调器Modem而开发的但现在广泛用于支持各种 3G/4G/5G 蜂窝网络模块如移远、广和通、华为、中兴、SIMCom等以及部分工业USB转串口设备它是 Linux 移动宽带生态的基石。一、 option 驱动的核心作用option 驱动的主要任务是将USB蜂窝模块的串行通信接口映射为Linux系统中的字符设备通常是 /dev/ttyUSBx 或 /dev/ttyACMx。通过这些串口用户空间程序如 pppd, ModemManager, minicom可以发送 AT 指令控制模块拨号、查询信号、发短信。进行 PPP 拨号上网传统方式。抓取模块的底层 Debug 日志DM/DIAG 口。读取 GPS NMEA 数据。二、 核心匹配机制 (Device Matching)option 驱动如何知道该接管哪个USB设备它依赖以下三种机制1. 静态匹配 (VID/PID 白名单)在内核源码的 option_ids[] 数组中硬编码了大量已知模块的 Vendor ID (VID) 和 Product ID (PID)。当USB设备插入时内核会比对VID/PID如果命中则加载 option 驱动。2. 动态匹配 (Dynamic ID)如果你的模块是新产品内核中没有它的VID/PID可以通过 sysfs 动态添加无需重新编译内核BASH# 假设你的模块 VID 是 2c7cPID 是 0125 (移远 EC20)echo 2c7c 0125 /sys/bus/usb-serial/drivers/option1/new_id注重启后失效需写入 udev 规则实现持久化。3. 接口类匹配 (Class/SubClass/Protocol)某些模块不依赖具体的VID/PID而是通过USB接口描述符中的 Class通常为 0xFF Vendor Specific、SubClass 和 Protocol 来匹配。三、 多端口 (Multi-port) 与 接口过滤现代4G/5G模块通常是 **USB复合设备 (Composite Device)**包含多个USB接口Interface。一个模块可能同时暴露出 串口、网卡、存储CD-ROM等。1. 端口功能区分option 驱动接管串口后通常会生成多个 /dev/ttyUSBx 节点。常见的端口功能如下具体顺序因模块而异**DM / DIAG (Diagnostic)**用于高通 QXDM 等工具抓取底层 Log。GPS / NMEA输出 GPS 定位数据。**AT (AT Command)**用于发送 AT 指令控制模块。Modem / PPP用于传统的 PPP 数据拨号。ADBAndroid 调试桥端口针对运行 Android 系统的模块。2. 黑名单机制 (Blacklist)这是 option 驱动中最关键的设计之一。模块中的某些接口如 QMI, MBIM, ECM, RNDIS 网络接口绝对不能被 option 接管否则会导致无法上网。option 驱动内部维护了一个 option_blacklist。在 probe 阶段如果检测到当前接口是网络接口option 会返回 -ENODEV从而把该接口让给 qmi_wwan、cdc_mbim 或 cdc_ether 等网络驱动。四、 实战操作与调试指南1. 查看驱动是否加载及设备状态作者: Shell链接: https://notes.z-dd.online/2026/08/26/Linux%E4%B9%8BUSB%E4%B8%B2%E5%8F%A3option%E9%A9%B1%E5%8A%A8%E7%AE%80%E4%BB%8B/来源: DDNotes著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。。。。 。。。更多请关注我的博客https://notes.z-dd.online/或我的
返回列表