Bug 113636

Summary: ttyACM device not created on connecting phone
Product: [openSUSE] SUSE LINUX 10.0 Reporter: Deepak Sarda <antrix>
Component: HotplugAssignee: Greg Kroah-Hartman <gregkh>
Status: RESOLVED FIXED QA Contact: E-mail List <qa-bugs>
Severity: Major    
Priority: P5 - None CC: ihno
Version: Beta 3   
Target Milestone: ---   
Hardware: Other   
OS: All   
Whiteboard:
Found By: Other Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Deepak Sarda 2005-08-28 13:27:57 UTC
I have a Motorola e680 phone which has a modem mode that works over USB. It uses
a Belcarra USB LAN driver under kernel 2.4 with which one can connect to the phone. 

Recently, a driver/fix for usblan was merged with the mainline kernel. 
http://kernel.org/git/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=blobdiff;h=1748159e462e7b86c5f1827abc96263d95b854de;hp=0eefc14449aa01749246eddf4482e52b0f898028

Hence, it is now possible to use this phone in a 'plug and play' fashion with
the new kernel. E.g.: http://pashkovsky.com/phpbb/viewtopic.php?t=20
According to that reporter, the phone works out of the box on Fedora Core 4.

I have tried the same on SUSE beta3 but no drivers get loaded for the phone.

On connecting the phone, output from /var/log/messages:
kernel: usb 2-1: new full speed USB device using uhci_hcd and address 2

Output of lsusb:
calvin@dungeon:~> lsusb
Duplicate product spec at line 2453 product 0846:4240 WG111 WiFi
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 002: ID 22b8:3802 Motorola PCS C330/A780 GSM Phone
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000

But the device isn't associated with any driver and no /dev/ttyACM0 device is
created. I think it should either use cdc-acm or usbnet device.. not sure though. 

I am trying to get access to a Fedora Core 4 system and see how things work
there. Will update this report then.
Comment 1 Deepak Sarda 2005-08-30 14:21:12 UTC
Okay, experimenting a bit more, I was able to telnet to my phone :-) This is how
it worked:

1) Put the phone into modem mode and connect it to the usb port.
2) This causes the event (in /var/log/messages)
kernel: usb 2-2: new full speed USB device using uhci_hcd and address 2
3) Then 'modprobe cdc_acm' This creates /dev/ttyACM0
 kernel: cdc_acm 2-2:1.0: ttyACM0: USB ACM device
 kernel: usbcore: registered new driver cdc_acm
 kernel: drivers/usb/class/cdc-acm.c: v0.23:USB Abstract Control Model driver
for USB modems and ISDN adapters
4) Now I set the phone in usblan mode. This is done by "echo 'at+mode=99' >
/dev/ttyACM0" This mode is specific to this phone, afaik. Why the phone goes
into usblan mode:
 kernel: usb 2-2: USB disconnect, address 2
 kernel: usb 2-2: new full speed USB device using uhci_hcd and address 3
5) Then I load the usbnet module: 'modprobe usbnet' 
 kernel: usb0: register usbnet at usb-0000:00:1d.1-2, pseudo-MDLM (BLAN) device,
ee:b7:58:5c:97:50
 kernel: usbcore: registered new driver usbnet
6) As soon as usb0 device was created, yast came up and offered to configure the
interface. I did and now I can telnet to the phone.

> ifconfig usb0
usb0      Link encap:Ethernet  HWaddr EE:B7:58:5C:97:50
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::ecb7:58ff:fe5c:9750/64 Scope:Link
          
I don't know how much of this could or should be automated.. at least the
autoloading of 'cdc_acm'?

Thanks.
Comment 2 Greg Kroah-Hartman 2005-08-31 18:00:33 UTC
What does /proc/bus/usb/devices show when your phone is first plugged in?
Comment 3 Deepak Sarda 2005-09-01 15:32:21 UTC
Output of /proc/bus/usb/devices
--------------------------------
T:  Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh= 6
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 2.06
S:  Manufacturer=Linux 2.6.13-rc6-git13-4-default ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=0000:00:1d.7
C:* #Ifs= 1 Cfg#= 1 Atr=e0 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=   2 Ivl=256ms

T:  Bus=03 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.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 2.06
S:  Manufacturer=Linux 2.6.13-rc6-git13-4-default uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:1d.2
C:* #Ifs= 1 Cfg#= 1 Atr=c0 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=   2 Ivl=255ms

T:  Bus=02 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.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 2.06
S:  Manufacturer=Linux 2.6.13-rc6-git13-4-default uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:1d.1
C:* #Ifs= 1 Cfg#= 1 Atr=c0 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=   2 Ivl=255ms

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=02(comm.) Sub=02 Prot=00 MxPS=16 #Cfgs=  1
P:  Vendor=22b8 ProdID=3802 Rev= 0.00
S:  Manufacturer=Motorola
S:  Product=Motorola USB Modem
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=(none)
E:  Ad=83(I) Atr=03(Int.) MxPS=  16 Ivl=10ms
I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
E:  Ad=01(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms

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.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 2.06
S:  Manufacturer=Linux 2.6.13-rc6-git13-4-default uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:1d.0
C:* #Ifs= 1 Cfg#= 1 Atr=c0 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=   2 Ivl=255ms
Comment 4 Greg Kroah-Hartman 2005-10-06 17:16:55 UTC
Yes, the cdc-acm driver should have been loaded automatically when the device
was plugged in.  Please test the final version of 10.0 and reopen if this still
happens there.
Comment 5 Ihno Krumreich 2005-10-18 00:23:52 UTC
Closed.
Comment 6 Greg Kroah-Hartman 2005-10-18 04:49:32 UTC
Closed why?  This is a kernel bug...
Comment 7 Deepak Sarda 2005-10-18 05:14:16 UTC
Sorry, I couldn't update with a test on 10.0 final... haven't been running 10.0 :-) Will try to install 10.0 this weekend and update this report.
Comment 8 Deepak Sarda 2005-12-06 12:40:44 UTC
FWIW, this is what happens on 10.0 Final. It is identical to my last report from  10.0 Beta3

1. On connecting phone, event (from /var/log/messages):
kernel: usb 2-1: new full speed USB device using uhci_hcd and address 4

2. Output of /proc/bus/usb/devices:
---------------------------------------

T:  Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh= 6
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 2.06
S:  Manufacturer=Linux 2.6.13-15-default ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=0000:00:1d.7
C:* #Ifs= 1 Cfg#= 1 Atr=e0 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=   2 Ivl=256ms

T:  Bus=03 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.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 2.06
S:  Manufacturer=Linux 2.6.13-15-default uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:1d.2
C:* #Ifs= 1 Cfg#= 1 Atr=c0 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=   2 Ivl=255ms

T:  Bus=02 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.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 2.06
S:  Manufacturer=Linux 2.6.13-15-default uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:1d.1
C:* #Ifs= 1 Cfg#= 1 Atr=c0 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=   2 Ivl=255ms

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=02(comm.) Sub=02 Prot=00 MxPS=16 #Cfgs=  1
P:  Vendor=22b8 ProdID=3802 Rev= 0.00
S:  Manufacturer=Motorola
S:  Product=Motorola USB Modem
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=(none)
E:  Ad=83(I) Atr=03(Int.) MxPS=  16 Ivl=10ms
I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
E:  Ad=01(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms

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.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 2.06
S:  Manufacturer=Linux 2.6.13-15-default uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:1d.0
C:* #Ifs= 1 Cfg#= 1 Atr=c0 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=   2 Ivl=255ms
-----------------------------------------------------

3. Now 'modprobe cdc_acm' :
kernel: cdc_acm 2-1:1.0: ttyACM0: USB ACM device
kernel: usbcore: registered new driver cdc_acm
kernel: drivers/usb/class/cdc-acm.c: v0.23:USB Abstract Control Model driver for USB modems and ISDN adapters

4. # echo 'at+mode=99' > /dev/ttyACM0
kernel: usb 2-1: USB disconnect, address 4
kernel: usb 2-1: new full speed USB device using uhci_hcd and address 5

5. # modprobe usbnet
kernel: usb0: register usbnet at usb-0000:00:1d.1-1, pseudo-MDLM (BLAN) device, ce:4d:96:cd:b8:c8
kernel: usbcore: registered new driver usbnet
ifup: No configuration found for usb0

6. Yast hardware detection comes up offering to configure the network interface.
Comment 9 Greg Kroah-Hartman 2005-12-09 01:46:18 UTC
module should be loaded properly in the 10.1 kernel (or the updated 10 kernel), this was a kernel bug that is now fixed.
Comment 10 Greg Kroah-Hartman 2005-12-09 01:46:42 UTC
fixed