Back to home page

OSCL-LXR

 
 

    


0001 ======================
0002 Linux ACM driver v0.16
0003 ======================
0004 
0005 Copyright (c) 1999 Vojtech Pavlik <vojtech@suse.cz>
0006 
0007 Sponsored by SuSE
0008 
0009 0. Disclaimer
0010 ~~~~~~~~~~~~~
0011 This program is free software; you can redistribute it and/or modify it
0012 under the terms of the GNU General Public License as published by the Free
0013 Software Foundation; either version 2 of the License, or (at your option)
0014 any later version.
0015 
0016 This program is distributed in the hope that it will be useful, but
0017 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
0018 or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
0019 more details.
0020 
0021 You should have received a copy of the GNU General Public License along
0022 with this program; if not, write to the Free Software Foundation, Inc., 59
0023 Temple Place, Suite 330, Boston, MA 02111-1307 USA
0024 
0025 Should you need to contact me, the author, you can do so either by e-mail -
0026 mail your message to <vojtech@suse.cz>, or by paper mail: Vojtech Pavlik,
0027 Ucitelska 1576, Prague 8, 182 00 Czech Republic
0028 
0029 For your convenience, the GNU General Public License version 2 is included
0030 in the package: See the file COPYING.
0031 
0032 1. Usage
0033 ~~~~~~~~
0034 The drivers/usb/class/cdc-acm.c drivers works with USB modems and USB ISDN terminal
0035 adapters that conform to the Universal Serial Bus Communication Device Class
0036 Abstract Control Model (USB CDC ACM) specification.
0037 
0038 Many modems do, here is a list of those I know of:
0039 
0040         - 3Com OfficeConnect 56k
0041         - 3Com Voice FaxModem Pro
0042         - 3Com Sportster
0043         - MultiTech MultiModem 56k
0044         - Zoom 2986L FaxModem
0045         - Compaq 56k FaxModem
0046         - ELSA Microlink 56k
0047 
0048 I know of one ISDN TA that does work with the acm driver:
0049 
0050         - 3Com USR ISDN Pro TA
0051 
0052 Some cell phones also connect via USB. I know the following phones work:
0053 
0054         - SonyEricsson K800i
0055 
0056 Unfortunately many modems and most ISDN TAs use proprietary interfaces and
0057 thus won't work with this drivers. Check for ACM compliance before buying.
0058 
0059 To use the modems you need these modules loaded::
0060 
0061         usbcore.ko
0062         uhci-hcd.ko ohci-hcd.ko or ehci-hcd.ko
0063         cdc-acm.ko
0064 
0065 After that, the modem[s] should be accessible. You should be able to use
0066 minicom, ppp and mgetty with them.
0067 
0068 2. Verifying that it works
0069 ~~~~~~~~~~~~~~~~~~~~~~~~~~
0070 
0071 The first step would be to check /sys/kernel/debug/usb/devices, it should look
0072 like this::
0073 
0074   T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
0075   B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
0076   D:  Ver= 1.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
0077   P:  Vendor=0000 ProdID=0000 Rev= 0.00
0078   S:  Product=USB UHCI Root Hub
0079   S:  SerialNumber=6800
0080   C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
0081   I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
0082   E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=255ms
0083   T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
0084   D:  Ver= 1.00 Cls=02(comm.) Sub=00 Prot=00 MxPS= 8 #Cfgs=  2
0085   P:  Vendor=04c1 ProdID=008f Rev= 2.07
0086   S:  Manufacturer=3Com Inc.
0087   S:  Product=3Com U.S. Robotics Pro ISDN TA
0088   S:  SerialNumber=UFT53A49BVT7
0089   C:  #Ifs= 1 Cfg#= 1 Atr=60 MxPwr=  0mA
0090   I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=acm
0091   E:  Ad=85(I) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
0092   E:  Ad=04(O) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
0093   E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=128ms
0094   C:* #Ifs= 2 Cfg#= 2 Atr=60 MxPwr=  0mA
0095   I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=acm
0096   E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=128ms
0097   I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=acm
0098   E:  Ad=85(I) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
0099   E:  Ad=04(O) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
0100 
0101 The presence of these three lines (and the Cls= 'comm' and 'data' classes)
0102 is important, it means it's an ACM device. The Driver=acm means the acm
0103 driver is used for the device. If you see only Cls=ff(vend.) then you're out
0104 of luck, you have a device with vendor specific-interface::
0105 
0106   D:  Ver= 1.00 Cls=02(comm.) Sub=00 Prot=00 MxPS= 8 #Cfgs=  2
0107   I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=acm
0108   I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=acm
0109 
0110 In the system log you should see::
0111 
0112   usb.c: USB new device connect, assigned device number 2
0113   usb.c: kmalloc IF c7691fa0, numif 1
0114   usb.c: kmalloc IF c7b5f3e0, numif 2
0115   usb.c: skipped 4 class/vendor specific interface descriptors
0116   usb.c: new device strings: Mfr=1, Product=2, SerialNumber=3
0117   usb.c: USB device number 2 default language ID 0x409
0118   Manufacturer: 3Com Inc.
0119   Product: 3Com U.S. Robotics Pro ISDN TA
0120   SerialNumber: UFT53A49BVT7
0121   acm.c: probing config 1
0122   acm.c: probing config 2
0123   ttyACM0: USB ACM device
0124   acm.c: acm_control_msg: rq: 0x22 val: 0x0 len: 0x0 result: 0
0125   acm.c: acm_control_msg: rq: 0x20 val: 0x0 len: 0x7 result: 7
0126   usb.c: acm driver claimed interface c7b5f3e0
0127   usb.c: acm driver claimed interface c7b5f3f8
0128   usb.c: acm driver claimed interface c7691fa0
0129 
0130 If all this seems to be OK, fire up minicom and set it to talk to the ttyACM
0131 device and try typing 'at'. If it responds with 'OK', then everything is
0132 working.