xref: /openbmc/linux/Documentation/usb/acm.rst (revision 0898782247ae533d1f4e47a06bc5d4870931b284)
1*ecefae6dSMauro Carvalho Chehab======================
2*ecefae6dSMauro Carvalho ChehabLinux ACM driver v0.16
3*ecefae6dSMauro Carvalho Chehab======================
4*ecefae6dSMauro Carvalho Chehab
5*ecefae6dSMauro Carvalho ChehabCopyright (c) 1999 Vojtech Pavlik <vojtech@suse.cz>
6*ecefae6dSMauro Carvalho Chehab
7*ecefae6dSMauro Carvalho ChehabSponsored by SuSE
8*ecefae6dSMauro Carvalho Chehab
9*ecefae6dSMauro Carvalho Chehab0. Disclaimer
10*ecefae6dSMauro Carvalho Chehab~~~~~~~~~~~~~
11*ecefae6dSMauro Carvalho ChehabThis program is free software; you can redistribute it and/or modify it
12*ecefae6dSMauro Carvalho Chehabunder the terms of the GNU General Public License as published by the Free
13*ecefae6dSMauro Carvalho ChehabSoftware Foundation; either version 2 of the License, or (at your option)
14*ecefae6dSMauro Carvalho Chehabany later version.
15*ecefae6dSMauro Carvalho Chehab
16*ecefae6dSMauro Carvalho ChehabThis program is distributed in the hope that it will be useful, but
17*ecefae6dSMauro Carvalho ChehabWITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
18*ecefae6dSMauro Carvalho Chehabor FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
19*ecefae6dSMauro Carvalho Chehabmore details.
20*ecefae6dSMauro Carvalho Chehab
21*ecefae6dSMauro Carvalho ChehabYou should have received a copy of the GNU General Public License along
22*ecefae6dSMauro Carvalho Chehabwith this program; if not, write to the Free Software Foundation, Inc., 59
23*ecefae6dSMauro Carvalho ChehabTemple Place, Suite 330, Boston, MA 02111-1307 USA
24*ecefae6dSMauro Carvalho Chehab
25*ecefae6dSMauro Carvalho ChehabShould you need to contact me, the author, you can do so either by e-mail -
26*ecefae6dSMauro Carvalho Chehabmail your message to <vojtech@suse.cz>, or by paper mail: Vojtech Pavlik,
27*ecefae6dSMauro Carvalho ChehabUcitelska 1576, Prague 8, 182 00 Czech Republic
28*ecefae6dSMauro Carvalho Chehab
29*ecefae6dSMauro Carvalho ChehabFor your convenience, the GNU General Public License version 2 is included
30*ecefae6dSMauro Carvalho Chehabin the package: See the file COPYING.
31*ecefae6dSMauro Carvalho Chehab
32*ecefae6dSMauro Carvalho Chehab1. Usage
33*ecefae6dSMauro Carvalho Chehab~~~~~~~~
34*ecefae6dSMauro Carvalho ChehabThe drivers/usb/class/cdc-acm.c drivers works with USB modems and USB ISDN terminal
35*ecefae6dSMauro Carvalho Chehabadapters that conform to the Universal Serial Bus Communication Device Class
36*ecefae6dSMauro Carvalho ChehabAbstract Control Model (USB CDC ACM) specification.
37*ecefae6dSMauro Carvalho Chehab
38*ecefae6dSMauro Carvalho ChehabMany modems do, here is a list of those I know of:
39*ecefae6dSMauro Carvalho Chehab
40*ecefae6dSMauro Carvalho Chehab	- 3Com OfficeConnect 56k
41*ecefae6dSMauro Carvalho Chehab	- 3Com Voice FaxModem Pro
42*ecefae6dSMauro Carvalho Chehab	- 3Com Sportster
43*ecefae6dSMauro Carvalho Chehab	- MultiTech MultiModem 56k
44*ecefae6dSMauro Carvalho Chehab	- Zoom 2986L FaxModem
45*ecefae6dSMauro Carvalho Chehab	- Compaq 56k FaxModem
46*ecefae6dSMauro Carvalho Chehab	- ELSA Microlink 56k
47*ecefae6dSMauro Carvalho Chehab
48*ecefae6dSMauro Carvalho ChehabI know of one ISDN TA that does work with the acm driver:
49*ecefae6dSMauro Carvalho Chehab
50*ecefae6dSMauro Carvalho Chehab	- 3Com USR ISDN Pro TA
51*ecefae6dSMauro Carvalho Chehab
52*ecefae6dSMauro Carvalho ChehabSome cell phones also connect via USB. I know the following phones work:
53*ecefae6dSMauro Carvalho Chehab
54*ecefae6dSMauro Carvalho Chehab	- SonyEricsson K800i
55*ecefae6dSMauro Carvalho Chehab
56*ecefae6dSMauro Carvalho ChehabUnfortunately many modems and most ISDN TAs use proprietary interfaces and
57*ecefae6dSMauro Carvalho Chehabthus won't work with this drivers. Check for ACM compliance before buying.
58*ecefae6dSMauro Carvalho Chehab
59*ecefae6dSMauro Carvalho ChehabTo use the modems you need these modules loaded::
60*ecefae6dSMauro Carvalho Chehab
61*ecefae6dSMauro Carvalho Chehab	usbcore.ko
62*ecefae6dSMauro Carvalho Chehab	uhci-hcd.ko ohci-hcd.ko or ehci-hcd.ko
63*ecefae6dSMauro Carvalho Chehab	cdc-acm.ko
64*ecefae6dSMauro Carvalho Chehab
65*ecefae6dSMauro Carvalho ChehabAfter that, the modem[s] should be accessible. You should be able to use
66*ecefae6dSMauro Carvalho Chehabminicom, ppp and mgetty with them.
67*ecefae6dSMauro Carvalho Chehab
68*ecefae6dSMauro Carvalho Chehab2. Verifying that it works
69*ecefae6dSMauro Carvalho Chehab~~~~~~~~~~~~~~~~~~~~~~~~~~
70*ecefae6dSMauro Carvalho Chehab
71*ecefae6dSMauro Carvalho ChehabThe first step would be to check /sys/kernel/debug/usb/devices, it should look
72*ecefae6dSMauro Carvalho Chehablike this::
73*ecefae6dSMauro Carvalho Chehab
74*ecefae6dSMauro Carvalho Chehab  T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
75*ecefae6dSMauro Carvalho Chehab  B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
76*ecefae6dSMauro Carvalho Chehab  D:  Ver= 1.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
77*ecefae6dSMauro Carvalho Chehab  P:  Vendor=0000 ProdID=0000 Rev= 0.00
78*ecefae6dSMauro Carvalho Chehab  S:  Product=USB UHCI Root Hub
79*ecefae6dSMauro Carvalho Chehab  S:  SerialNumber=6800
80*ecefae6dSMauro Carvalho Chehab  C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
81*ecefae6dSMauro Carvalho Chehab  I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
82*ecefae6dSMauro Carvalho Chehab  E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=255ms
83*ecefae6dSMauro Carvalho Chehab  T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
84*ecefae6dSMauro Carvalho Chehab  D:  Ver= 1.00 Cls=02(comm.) Sub=00 Prot=00 MxPS= 8 #Cfgs=  2
85*ecefae6dSMauro Carvalho Chehab  P:  Vendor=04c1 ProdID=008f Rev= 2.07
86*ecefae6dSMauro Carvalho Chehab  S:  Manufacturer=3Com Inc.
87*ecefae6dSMauro Carvalho Chehab  S:  Product=3Com U.S. Robotics Pro ISDN TA
88*ecefae6dSMauro Carvalho Chehab  S:  SerialNumber=UFT53A49BVT7
89*ecefae6dSMauro Carvalho Chehab  C:  #Ifs= 1 Cfg#= 1 Atr=60 MxPwr=  0mA
90*ecefae6dSMauro Carvalho Chehab  I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=acm
91*ecefae6dSMauro Carvalho Chehab  E:  Ad=85(I) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
92*ecefae6dSMauro Carvalho Chehab  E:  Ad=04(O) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
93*ecefae6dSMauro Carvalho Chehab  E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=128ms
94*ecefae6dSMauro Carvalho Chehab  C:* #Ifs= 2 Cfg#= 2 Atr=60 MxPwr=  0mA
95*ecefae6dSMauro Carvalho Chehab  I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=acm
96*ecefae6dSMauro Carvalho Chehab  E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=128ms
97*ecefae6dSMauro Carvalho Chehab  I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=acm
98*ecefae6dSMauro Carvalho Chehab  E:  Ad=85(I) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
99*ecefae6dSMauro Carvalho Chehab  E:  Ad=04(O) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
100*ecefae6dSMauro Carvalho Chehab
101*ecefae6dSMauro Carvalho ChehabThe presence of these three lines (and the Cls= 'comm' and 'data' classes)
102*ecefae6dSMauro Carvalho Chehabis important, it means it's an ACM device. The Driver=acm means the acm
103*ecefae6dSMauro Carvalho Chehabdriver is used for the device. If you see only Cls=ff(vend.) then you're out
104*ecefae6dSMauro Carvalho Chehabof luck, you have a device with vendor specific-interface::
105*ecefae6dSMauro Carvalho Chehab
106*ecefae6dSMauro Carvalho Chehab  D:  Ver= 1.00 Cls=02(comm.) Sub=00 Prot=00 MxPS= 8 #Cfgs=  2
107*ecefae6dSMauro Carvalho Chehab  I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=acm
108*ecefae6dSMauro Carvalho Chehab  I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=acm
109*ecefae6dSMauro Carvalho Chehab
110*ecefae6dSMauro Carvalho ChehabIn the system log you should see::
111*ecefae6dSMauro Carvalho Chehab
112*ecefae6dSMauro Carvalho Chehab  usb.c: USB new device connect, assigned device number 2
113*ecefae6dSMauro Carvalho Chehab  usb.c: kmalloc IF c7691fa0, numif 1
114*ecefae6dSMauro Carvalho Chehab  usb.c: kmalloc IF c7b5f3e0, numif 2
115*ecefae6dSMauro Carvalho Chehab  usb.c: skipped 4 class/vendor specific interface descriptors
116*ecefae6dSMauro Carvalho Chehab  usb.c: new device strings: Mfr=1, Product=2, SerialNumber=3
117*ecefae6dSMauro Carvalho Chehab  usb.c: USB device number 2 default language ID 0x409
118*ecefae6dSMauro Carvalho Chehab  Manufacturer: 3Com Inc.
119*ecefae6dSMauro Carvalho Chehab  Product: 3Com U.S. Robotics Pro ISDN TA
120*ecefae6dSMauro Carvalho Chehab  SerialNumber: UFT53A49BVT7
121*ecefae6dSMauro Carvalho Chehab  acm.c: probing config 1
122*ecefae6dSMauro Carvalho Chehab  acm.c: probing config 2
123*ecefae6dSMauro Carvalho Chehab  ttyACM0: USB ACM device
124*ecefae6dSMauro Carvalho Chehab  acm.c: acm_control_msg: rq: 0x22 val: 0x0 len: 0x0 result: 0
125*ecefae6dSMauro Carvalho Chehab  acm.c: acm_control_msg: rq: 0x20 val: 0x0 len: 0x7 result: 7
126*ecefae6dSMauro Carvalho Chehab  usb.c: acm driver claimed interface c7b5f3e0
127*ecefae6dSMauro Carvalho Chehab  usb.c: acm driver claimed interface c7b5f3f8
128*ecefae6dSMauro Carvalho Chehab  usb.c: acm driver claimed interface c7691fa0
129*ecefae6dSMauro Carvalho Chehab
130*ecefae6dSMauro Carvalho ChehabIf all this seems to be OK, fire up minicom and set it to talk to the ttyACM
131*ecefae6dSMauro Carvalho Chehabdevice and try typing 'at'. If it responds with 'OK', then everything is
132*ecefae6dSMauro Carvalho Chehabworking.
133