I recently bought a Sony DSC P-10 digital camera which is a USB 2.0 mass storage device. Unfortunately the usb-storage driver included in 2.4.21 does not recognize it. After I did some simple modifications (attachted to this mail) to the usb-storage driver it works perfectly well.
FYI: The descriptor looks like that:
ID 054c:0010 Sony Corp. DSC-S30/S70/S75/F505V/F505/FD92 Cybershot/Mavica Digital Camera
...
bNumEndpoints 3
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 255
bInterfaceProtocol 1
...
it's a plain and simple "bulk without interrrupt" device.
Please test, refine and apply this patch to the current kernel trees.
Deti
diff -ru linux-2.4.21/drivers/usb/storage/protocol.h /usr/src/linux-2.4.21/drivers/usb/storage/protocol.h --- linux-2.4.21/drivers/usb/storage/protocol.h 2001-11-22 20:49:34.000000000 +0100 +++ /usr/src/linux-2.4.21/drivers/usb/storage/protocol.h 2003-07-05 14:00:19.000000000 +0200 @@ -54,8 +54,9 @@ #define US_SC_8070 0x05 /* Removable media */ #define US_SC_SCSI 0x06 /* Transparent */ #define US_SC_ISD200 0x07 /* ISD200 ATA */ +#define US_SC_SONY 0xff /* Sony vendor specific */ #define US_SC_MIN US_SC_RBC -#define US_SC_MAX US_SC_ISD200 +#define US_SC_MAX US_SC_SONY extern void usb_stor_ATAPI_command(Scsi_Cmnd*, struct us_data*); extern void usb_stor_qic157_command(Scsi_Cmnd*, struct us_data*); --- linux-2.4.21/drivers/usb/storage/usb.c 2003-06-13 16:51:37.000000000 +0200 +++ /usr/src/linux-2.4.21/drivers/usb/storage/usb.c 2003-07-05 14:08:47.000000000 +0200 @@ -155,6 +155,8 @@ { USB_INTERFACE_INFO(USB_CLASS_MASS_STORAGE, US_SC_UFI, US_PR_BULK) }, { USB_INTERFACE_INFO(USB_CLASS_MASS_STORAGE, US_SC_8070, US_PR_BULK) }, { USB_INTERFACE_INFO(USB_CLASS_MASS_STORAGE, US_SC_SCSI, US_PR_BULK) }, + + { USB_INTERFACE_INFO(USB_CLASS_MASS_STORAGE, US_SC_SONY, US_PR_CB) }, /* Terminating entry */ { } @@ -231,6 +233,9 @@ { useProtocol: US_SC_SCSI, useTransport: US_PR_BULK}, + { useProtocol: US_SC_RBC, + useTransport: US_PR_CB}, + /* Terminating entry */ { 0 } };