• Rechercher un mot :

Sony DSC-S600 in Linux

The Sony Cybershot DSC-S600 camera is "almost" supported as a mass-storage device by Linux. I write "Almost" because Linux does not immediatly recognize it as such when you plug it. So, here are two ways to make the camera work as a proper mass storage device in LInux. In the following, the camera USB mode is left at factory defaults ("auto"), "Mass Stoarge" should also work. Of course "PTP" mode is reserved to gphoto2 (see next paragraph).

Note: the camera is known to be supported by gphoto2 in PTP mode... Lucky people will be happy with this PTP mode of the camera, which allows some KDE ioslaves (kamera) or Gnome modules to browse the contents of the memory stick. Unlucky people like myself (fresh but buggy upgrade from Breezy to Dapper), won't be happy with this PTP mode since Kubuntu 6.06 seems to have problem with the kamera ioslave (need to use gtkam "by hand" to replace the faulty kamera !). Since I don't know anything about KDE configuration things, I decided to look at some simple way to fix the kernel to make the mass storage mode work properly.

Method 1: edit the kernel binary module

This is the uggliest method you could find, ever. It has the greatest advantage that you don't need to recompile a new kernel to make the camera work as an UMS device.
Tested with the i386 version of the 2.6.15 kernel (in ubuntu: linux-image-2.6.15-23-k7-2.6.15.deb). This should work with any kernel version, any architecture (on big endian hosts, don't forget to invert the order of bytes):

Now you can plug the camera, Linux should recognize it and usb-storage should make it appear as an SCSI drive as usual.

Method 2: update the kernel sources

This is the "normal" way of fixing the problem. Apply the following patch to drivers/usb/storage/unusual_devs.h:
--- unusual_devs.h-orig 2006-06-06 11:32:23.000000000 +0200
+++ unusual_devs.h      2006-06-06 11:32:53.000000000 +0200
@@ -416,9 +416,9 @@

 /* This entry is needed because the device reports Sub=ff */
-UNUSUAL_DEV(  0x054c, 0x0010, 0x0500, 0x0500,
+UNUSUAL_DEV(  0x054c, 0x0010, 0x0500, 0x0600,
-               "DSC-T1",
+               "DSC-T1/DSC-S600",
                US_SC_8070, US_PR_DEVICE, NULL,
                US_FL_SINGLE_LUN ),

No need to add any line to /etc/modules.