Linux ACM 驱动 v0.16¶
版权所有 (c) 1999 Vojtech Pavlik <vojtech@suse.cz>
由 SuSE 赞助
0. 免责声明¶
本程序是自由软件;您可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它;无论是许可证的第 2 版,还是(由您选择)任何后续版本。
发布本程序的目的是希望它有用,但不提供任何担保;甚至没有对适销性或针对特定用途的适用性的暗示担保。有关更多详细信息,请参阅 GNU 通用公共许可证。
您应该已经收到一份 GNU 通用公共许可证的副本以及此程序;如果没有,请写信给自由软件基金会,地址为:59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
如果您需要联系我,作者,您可以通过电子邮件 - 将您的消息发送至 <vojtech@suse.cz>,或通过纸质邮件:Vojtech Pavlik, Ucitelska 1576, Prague 8, 182 00 Czech Republic
为了您的方便,GNU 通用公共许可证第 2 版包含在软件包中:请参阅文件 COPYING。
1. 用法¶
drivers/usb/class/cdc-acm.c 驱动程序与符合通用串行总线通信设备类抽象控制模型 (USB CDC ACM) 规范的 USB 调制解调器和 USB ISDN 终端适配器配合使用。
许多调制解调器都支持,以下是我所知道的列表
3Com OfficeConnect 56k
3Com Voice FaxModem Pro
3Com Sportster
MultiTech MultiModem 56k
Zoom 2986L 传真调制解调器
Compaq 56k 传真调制解调器
ELSA Microlink 56k
我知道有一个 ISDN TA 可以与 acm 驱动程序一起使用
3Com USR ISDN Pro TA
一些手机也通过 USB 连接。 我知道以下手机可以使用
SonyEricsson K800i
不幸的是,许多调制解调器和大多数 ISDN TA 使用专有接口,因此无法与此驱动程序一起使用。购买前检查 ACM 合规性。
要使用调制解调器,您需要加载以下模块
usbcore.ko
uhci-hcd.ko ohci-hcd.ko or ehci-hcd.ko
cdc-acm.ko
之后,调制解调器应该可以访问。您应该能够将 minicom、ppp 和 mgetty 与它们一起使用。
2. 验证它是否工作¶
第一步是检查 /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”,那么一切正常。