KPC650 EVDO wireless with NEC USB -> usbserial -> ohci-hcd -> pcmcia -> pppd problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi David

I sent this to Greg initially, but it occurs to me that this may be an ohci
problem and not a usbserial problem.  I'm hoping you can offer some
direction.

We're trying to use Fedora Core 4 with the Kyocera Passport 1xEV-DO PC Card
KPC650, which is capable of data speeds of up to 2.4 Mbps on EV-DO services.
We've also tried the 2.6.15-rc7 kernel.  With both kernels, we see a
problem, with, for instance, ping packets coming back to the card but then
not passing through between the usbserial driver and the pppd ppp0
interface, but only after attempting downloads of multi-megabyte files with
higher speeds - averaging around 400-500kbps.  We've tried this both with
the anydata driver and the usbserial driver alone, with the same results.
This is in an HP Vectra with a 650MHz PIII.

The lower speed upload always seems to work, and the download seems to
always work until downloading a large file and reaching higher download
speeds.  Then, the download path fails, with packets continuing to reach the
usbserial driver, but nothing coming out the pppd ppp0 interface.  Even when
the download path fails, the upload path continues to work normally.  I have
to wonder if the upload path would lock up if the upload speed were higher,
but that is not a problem here.

The Kyocera card contains a Qualcomm MSM6500 - which contains the USB slave
interface - and an NEC USB to PCCard adapter - I don't know the chip part
number - "NEC Corporation USB (rev 43)".  This is connected to a PCCard to
PCI adapter card, with the "Ricoh Co Ltd RL5c475 (rev 81)" chip.

I'm hoping you might have some suggestions about where to look for the
problem.  Please tell me if you think this is actually a problem with the
pcmcia drivers.

One thing that concerns me is a comment in
linux-2.6.15/Documentation/usb/usb-serial.txt

 Generic Serial driver

  If your device is not one of the above listed devices, compatible with
  the above models, you can try out the "generic" interface. This
  interface does not provide any type of control messages sent to the
  device, and does not support any kind of device flow control. All that
  is required of your device is that it has at least one bulk in endpoint,
  or one bulk out endpoint.

The USB connection speed should be 12Mbps, and the maximum data speed 2.4Mbps.
Is lack of flow control going to be a problem?

Software flow control can be set up between the DCE and pppd, but, as I
understand, XON/XOFF flow control is limited to text transmission.  It cannot be
used with binary data.


In this state where packets do not reach the ppp0 interface, killing pppd and
then attaching to /dev/ttyUSB0 with cu produces "garbage" characters:

 $ sudo cu -l/dev/ttyUSB0 dir
 Connected.
[ typed in "at<return>", but nothing echoed ]
 Eªªªªªªªª~[localhost].
 Disconnected.

Perhaps pppd was not able to properly shut-down its connection?  Or maybe the
USB drivers are now in a corrupted state?

If I unload and reload the usbserial driver, and then connect with cu, the
/dev/ttyUSB0 interface is still in the same state, producing "garbage"
characters.  Perhaps the ohci_hcd driver is now in a corrupted state?

If I unload and reload the ohci_hcd driver, leaving the usbserial driver loaded,
and then connect with cu, the /dev/ttyUSB0 interface is again functioning
normally.

Does this suggest some problem with the ohci_hcd driver when operating at high
speed?  Or some interaction between the usbserial driver and the ohci_hcd
driver when operating at high speed?  Or with the ohci_hcd driver
interacting with the pcmcia drivers?


I've included some usb listing info and log file info below.  Please let me know
what I might do next to debug this problem.


Thanks

James


------------------------------------------------------------------------------


Turning on debugging in the usbserial driver, we continue to see activity in
response to a ping, with things like:

Dec 28 12:20:37 localhost kernel: /home/linux-2.6.15/drivers/usb/serial/generic.c: usb_serial_generic_read_bulk_callback - port 0
Dec 28 12:20:37 localhost kernel: generic ttyUSB0: usb_serial_generic_read_bulk_callback - length = 28, data = 8e 08 00 f6 c8 b3 12 00 18 83 e 5 b2 43 29 e0 03 00 08 09 0a 0b 0c 0d 0e 0f 10 11 12
Dec 28 12:20:38 localhost kernel: /home/linux-2.6.15/drivers/usb/serial/generic.c: usb_serial_generic_read_bulk_callback - port 0
Dec 28 12:20:38 localhost kernel: generic ttyUSB0: usb_serial_generic_read_bulk_callback - length = 64, data = 37 eb ed 7e 7e ff 03 00 21 45 0 0 00 54 00 18 40 00 32 01 d9 00 32 01 d9 e4 c7 2d 9b 15 46 da c5 8e 08 00 15 c8 b3 12 00 7e ff 03 00 21 45 00 00 54 00 19 40 00 32 01 d9 e4 c7 2d 9b 15 46 da c5

or occasionally things like:

Dec 28 12:20:18 localhost kernel: /home/linux-2.6.15/drivers/usb/serial/usb-serial.c: usb_serial_port_softint - port 0
Dec 28 12:20:18 localhost kernel: /home/linux-2.6.15/drivers/usb/serial/usb-serial.c: serial_write - port 0, 28 byte(s)
Dec 28 12:20:18 localhost kernel: /home/linux-2.6.15/drivers/usb/serial/generic.c: usb_serial_generic_write - port 0
Dec 28 12:20:18 localhost kernel: /home/linux-2.6.15/drivers/usb/serial/generic.c: usb_serial_generic_write - already writing
Dec 28 12:20:18 localhost kernel: /home/linux-2.6.15/drivers/usb/serial/generic.c: usb_serial_generic_write_bulk_callback - port 0
Dec 28 12:20:18 localhost kernel: /home/linux-2.6.15/drivers/usb/serial/usb-serial.c: usb_serial_port_softint - port 0
Dec 28 12:20:18 localhost kernel: /home/linux-2.6.15/drivers/usb/serial/usb-serial.c: serial_write - port 0, 28 byte(s)
Dec 28 12:20:18 localhost kernel: /home/linux-2.6.15/drivers/usb/serial/generic.c: usb_serial_generic_write - port 0
Dec 28 12:20:18 localhost kernel: generic ttyUSB0: usb_serial_generic_write - length = 28, data = 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 4a b0 7e
Dec 28 12:20:18 localhost kernel: /home/linux-2.6.15/drivers/usb/serial/usb-serial.c: usb_serial_port_softint - port 0
Dec 28 12:20:18 localhost kernel: /home/linux-2.6.15/drivers/usb/serial/generic.c: usb_serial_generic_write_bulk_callback - port 0
Dec 28 12:20:18 localhost kernel: /home/linux-2.6.15/drivers/usb/serial/usb-serial.c: usb_serial_port_softint - port 0
Dec 28 12:20:18 localhost kernel: /home/linux-2.6.15/drivers/usb/serial/usb-serial.c: usb_serial_port_softint - port 0
Dec 28 12:20:19 localhost kernel: /home/linux-2.6.15/drivers/usb/serial/generic.c: usb_serial_generic_read_bulk_callback - port 0
Dec 28 12:20:19 localhost kernel: generic ttyUSB0: usb_serial_generic_read_bulk_callback - length = 64, data = 23 24 25 26 27 28 29 2a 2b 2c 2 d 2e 2f 30 31 32 33 34 35 36 37 4b e3 7e 80 00 13 c5 8e c7 2d 9b 15 00 00 0c ec b3 12 00 7e ff 03 00 21 45 00 00 54 00 06 40 00 32 01 d9 f7 c7 2d 9b 15 46 da c5

but, in the problem state, nothing comes out of the ppp0 interface.


$ cu -l/dev/ttyUSB0 dir
...
ati0
Manufacturer: Kyocera Wireless Corp.
Model: Catalina
Revision: CG1.0.06  1  [Apr 06 2005 08:50:45]
ESN: 0x373AC9C7
+GCAP: +CIS707-A, CIS-856, +MS, +ES, +DS, +FCLASS

OK

at$qcdmr?
$QCDMR: 115200

OK

at+ipr?
+IPR: 115200

OK


$ ./usbtree
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ohci_hcd/1p, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ohci_hcd/1p, 12M
    |__ Port 1: Dev 2, If 0, Class=vend., Driver=usbserial_generic, 12M
    |__ Port 1: Dev 2, If 1, Class=vend., Driver=usbserial_generic, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M


$ lspci -vv

00:12.0 CardBus bridge: Ricoh Co Ltd RL5c475 (rev 81)
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 168
        Interrupt: pin A routed to IRQ 11
        Region 0: Memory at 24040000 (32-bit, non-prefetchable) [size=4K]
        Bus: primary=00, secondary=02, subordinate=05, sec-latency=176
        Memory window 0: 20000000-21fff000 (prefetchable)
        Memory window 1: 22000000-23fff000
        I/O window 0: 00001800-000018ff
        I/O window 1: 00001c00-00001cff
        BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset- 16bInt- PostWrite+
        16-bit legacy interface ports at 0001

02:00.0 USB Controller: NEC Corporation USB (rev 43) (prog-if 10 [OHCI])
        Subsystem: Unknown device 0c88:17da
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 64 (250ns min, 10500ns max)
        Interrupt: pin A routed to IRQ 11
        Region 0: Memory at 22000000 (32-bit, non-prefetchable) [size=4K]
        Capabilities: [40] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-

02:00.1 USB Controller: NEC Corporation USB (rev 43) (prog-if 10 [OHCI])
        Subsystem: Unknown device 0c88:17da
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 64 (250ns min, 10500ns max)
        Interrupt: pin B routed to IRQ 11
        Region 0: Memory at 22001000 (32-bit, non-prefetchable) [size=4K]
        Capabilities: [40] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-


$ cat /proc/bus/usb/devices

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 1
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 2.06
S:  Manufacturer=Linux 2.6.15-rc7 ohci_hcd
S:  Product=OHCI Host Controller
S:  SerialNumber=0000:02:00.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

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0c88 ProdID=17da Rev= 0.00
S:  Manufacturer=Qualcomm, Incorporated
S:  Product=Qualcomm CDMA Technologies MSM
C:* #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=128ms
E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E:  Ad=84(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms


$ lsusb -v

Bus 002 Device 002: ID 0c88:17da Kyocera Wireless Corp.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x0c88 Kyocera Wireless Corp.
  idProduct          0x17da
  bcdDevice            0.00
  iManufacturer           1 Qualcomm, Incorporated
  iProduct                2 Qualcomm CDMA Technologies MSM
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           62
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xa0
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              3 Data Interface
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval             128
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              3 Data Interface
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x04  EP 4 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0

Bus 002 Device 001: ID 0000:0000
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            9 Hub
  bDeviceSubClass         0 Unused
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x0000
  idProduct          0x0000
  bcdDevice            2.06
  iManufacturer           3 Linux 2.6.15-rc7 ohci_hcd
  iProduct                2 OHCI Host Controller
  iSerial                 1 0000:02:00.0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           25
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xc0
      Self Powered
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0002  1x 2 bytes
        bInterval             255
Hub Descriptor:
  bLength               9
  bDescriptorType      41
  nNbrPorts             1
  wHubCharacteristic 0x0002
    No power switching (usb 1.0)
    Ganged overcurrent protection
  bPwrOn2PwrGood       15 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xe0
 Hub Port Status:
   Port 1: 0000.0103 power enable connect




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
Linux-usb-users@xxxxxxxxxxxxxxxxxxxxx
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-users

[Index of Archives]     [Linux USB]     [Linux SPI Devel]     [Linux USB Devel]     [Linux Media Support]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]