USB resets with Nokia 6131 in Data Storage mode

From: Bárður Árantsson
Date: Sat Sep 30 2006 - 03:46:16 EST


Hi all,

I'm having some problems using a Nokia 6131 in 'Data Storage' mode, i.e. when it acts as a USB mass storage device. This is with a Gentoo patched kernel 2.6.18, but AFAICT there are no patches against the USB subsystem in Gentoo's version of the kernel.

The symptoms: The system scans the partitions fine, I can mount the device and see the directory contents fine, but when I try to actually transfer files the USB subsystem seems to be doing bus resets continually until either of the sides simply gives up; I think it may be the phone that simply goes out of data storage mode into normal mode after a number of resets (or a fixed amount of time with no data transfer).

I've done a run with all the above steps with USB mass storage verbose debug enabled, the log can be retrieved from here:

http://imada.sdu.dk/~bardur/usb-storage.log.gz

The thing I that my untrained eye noticed was that most of the small transfers seem to succeed (at least before the bus resets kick in), while all the large transfers fail. This of course explains why reading the partition table and directory contents works.

Here's the phone's lsusb -v data:

Bus 002 Device 004: ID 0421:047c Nokia Mobile Phones
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x0421 Nokia Mobile Phones
idProduct 0x047c
bcdDevice 3.70
iManufacturer 1 Nokia
iProduct 2 Nokia 6131
iSerial 3 359390005710019
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 32
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 8mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 80 Bulk (Zip)
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 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 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0

(I should note that the product ID changes to 0x47b when the phone is NOT in data storage mode just in case it matters.)

Does anyone have any clues to impart or anything I can try to make it work?

--
Bardur Arantsson
<bardurREMOVE@xxxxxxxxxxxxxxxxxxx>

- Sometimes it's hard to see your own face without a mirror.
Dr. Phil, 'Dr. Phil'

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/