当前位置: 首页 > article >正文

Linux ACM 驱动程序

使用

drivers/usb/class/cdc-acm.c 驱动程序可与符合通用串行总线通信设备类抽象控制模型 (USB CDC ACM) 规范的 USB 调制解调器和 USB ISDN 终端适配器配合使用。

许多调制解调器都具有这种功能,下面是我所知道的调制解调器的列表:

  • 3Com OfficeConnect 56k

  • 3Com 语音传真调制解调器 Pro

  • 3Com Sportster

  • MultiTech MultiModem 56k

  • Zoom 2986L 传真调制解调器

  • Compaq 56k 传真调制解调器

  • ELSA 微链接 56k

我知道有一个 ISDN TA 可以与 acm 驱动程序配合使用:

  • 3Com USR ISDN Pro TA

有些手机也可以通过 USB 连接。我知道以下手机可以使用:

  • 索尼爱立信 K800i

不幸的是,许多调制解调器和大多数 ISDN TA 使用专有接口,因此无法与此驱动程序配合使用。购买前请检查是否符合 ACM 标准。

要使用调制解调器,您需要加载以下模块:

usbcore.ko
uhci-hcd.ko ohci-hcd.ko or ehci-hcd.ko
cdc-acm.ko

此后,调制解调器应该可以访问了。您应该能够使用 minicom、ppp 和 mgetty。

验证其是否有效

第一步是检查 /sys/kernel/debug/usb/devices,它应该如下所示:

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 0.00
S:  Product=USB UHCI Root Hub
S:  SerialNumber=6800
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=255ms
T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
D:  Ver= 1.00 Cls=02(comm.) Sub=00 Prot=00 MxPS= 8 #Cfgs=  2
P:  Vendor=04c1 ProdID=008f Rev= 2.07
S:  Manufacturer=3Com Inc.
S:  Product=3Com U.S. Robotics Pro ISDN TA
S:  SerialNumber=UFT53A49BVT7
C:  #Ifs= 1 Cfg#= 1 Atr=60 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=acm
E:  Ad=85(I) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=128ms
C:* #Ifs= 2 Cfg#= 2 Atr=60 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=acm
E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=128ms
I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=acm
E:  Ad=85(I) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS=  64 Ivl=  0ms

这三行(以及 Cls= ‘comm’ 和 ‘data’ 类)的存在很重要,这意味着它是 ACM 设备。Driver=acm 表示该设备使用 acm 驱动程序。如果您只看到 Cls=ff(vend.),那么您就不走运了,您拥有的是具有供应商特定接口的设备:

D:  Ver= 1.00 Cls=02(comm.) Sub=00 Prot=00 MxPS= 8 #Cfgs=  2
I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=acm
I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=acm

您应该在系统日志中看到:

usb.c: USB new device connect, assigned device number 2
usb.c: kmalloc IF c7691fa0, numif 1
usb.c: kmalloc IF c7b5f3e0, numif 2
usb.c: skipped 4 class/vendor specific interface descriptors
usb.c: new device strings: Mfr=1, Product=2, SerialNumber=3
usb.c: USB device number 2 default language ID 0x409
Manufacturer: 3Com Inc.
Product: 3Com U.S. Robotics Pro ISDN TA
SerialNumber: UFT53A49BVT7
acm.c: probing config 1
acm.c: probing config 2
ttyACM0: USB ACM device
acm.c: acm_control_msg: rq: 0x22 val: 0x0 len: 0x0 result: 0
acm.c: acm_control_msg: rq: 0x20 val: 0x0 len: 0x7 result: 7
usb.c: acm driver claimed interface c7b5f3e0
usb.c: acm driver claimed interface c7b5f3f8
usb.c: acm driver claimed interface c7691fa0

如果一切正常,启动 minicom 并将其设置为与 ttyACM 设备通信,然后尝试输入“at”。如果它响应“OK”,则一切正常。


http://www.kler.cn/a/459930.html

相关文章:

  • CSS——5. 外部样式
  • UE4_用户控件_3_用户控件输入数据的方法
  • Java SpringBoot使用Apache POI导入导出Excel文件
  • RIP配置实验
  • mysql 死锁案例及简略分析
  • mask-R-cnn模型详解
  • 【UE5】UnrealEngine源码构建2:windows构建unreal engine 5.3.2
  • Kali Linux系统上配置Git的全局代理
  • CentOS中使用SSH远程登录
  • STM32F103 I2C软件模拟(AT24C02)
  • 如何用Python爬取网站数据:基础教程与实战
  • 【AIGC-ChatGPT职业提示词指令】智能职业规划助手:基于SVG可视化的职业发展指南系统
  • JVM实战—3.JVM垃圾回收的算法和全流程
  • ubuntu18.04使用ndk编译protobuf库
  • Kafka数据迁移全解析:同集群和跨集群
  • 记一次 .NET某电商医药网站 CPU爆高分析
  • MySQL 可重复读隔离级别,完全解决幻读了吗?
  • uniapp 微信小程序开发使用高德地图、腾讯地图
  • Excel基础知识
  • 命令行之巅:Linux Shell编程的至高艺术(中)
  • 加强版十六章视频读写
  • Oracle SqlPlus常用命令简介
  • SDL2音视频播放的常用API库
  • Redis字符串底层结构对数值型的支持常用数据结构和使用场景
  • 安装torch-geometric库
  • 正则表达式:高级应用与性能优化