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 }
};
