[Momonga-devel.ja:00356] Sony Cybershot U10 (DSC-U10) patch


尾崎です。

SONYのサイバーショット U10 を USB の Mass Storage として
動かす事ができたので報告します。

最初は、kernel-2.4.18-110m を使っていたのですが、動きませんでした。
U10を刺す前の状態と刺した後の /proc/bus/usb/devices の状態は
添付の proc.bus.usb.devices.txt です。

なので、これを元に linux/drivers/usb/storage/unusual_devs.h に
あてるパッチを作り、CVSの kernel-2.4.18-114m にあてて、
kernel-2.4.18-115m として再コンパイルしてみました。

新しいkernelで再起動して、試したところ、USB Mass Storage 
として認識し、mount もでき、使えたので、そのパッチを送ります。
添付の usb-storage-sony-dsc.patch です。

ただあまり詳しくないので対処方法が適切ではないかもしれません。
詳しい方フォローお願いします。

また、新しくU10が動作するkernelで、U10をUSBに差し込んだ後の
dmesg も添付します。dmesg.txt です。ちょっと怪しげが事が
書いてあったので…

試した環境は、ノートPC Sony VAIO Z505D に Kondara2.1から
momonga に update をしている状態です。


--
Kyoichi Ozaki <k@xxxxxxxxxxxxx>
with camera
[k-ozaki@stoned k-ozaki]$ cat /proc/bus/usb/devices 
T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 0.00
S:  Product=USB UHCI Root Hub
S:  SerialNumber=fcc0
C:* #Ifs= 1 Cfg#= 1 Atr=40 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=   8 Ivl=255ms
T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  7 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=054c ProdID=0010 Rev= 4.30
S:  Manufacturer=Sony
S:  Product=Sony DSC
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=ff Prot=01 Driver=(none)
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
E:  Ad=83(I) Atr=03(Int.) MxPS=   8 Ivl=255ms

without camera
[k-ozaki@stoned storage]$ cat /proc/bus/usb/devices 
T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 0.00
S:  Product=USB UHCI Root Hub
S:  SerialNumber=fcc0
C:* #Ifs= 1 Cfg#= 1 Atr=40 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=   8 Ivl=255ms
--- linux/drivers/usb/storage/unusual_devs.h.orig	2002-08-20 23:21:23.000000000 +0900
+++ linux/drivers/usb/storage/unusual_devs.h	2002-08-20 23:29:07.000000000 +0900
@@ -202,6 +202,15 @@
 		US_SC_SCSI, US_PR_CB, NULL,
 		US_FL_SINGLE_LUN | US_FL_START_STOP | US_FL_MODE_XLATE ),
 
+/* This entry is needed for Sony DSC-U10 to work.
+ * also should get P5 working as well. 
+ */
+UNUSUAL_DEV(  0x054c, 0x0010, 0x0106, 0x0430, 
+		"Sony",
+		"Sony DSC", 
+		US_SC_SCSI, US_PR_CB, NULL,
+		US_FL_SINGLE_LUN | US_FL_START_STOP | US_FL_MODE_XLATE ),
+
 /* Reported by wim@xxxxxxxx */
 UNUSUAL_DEV(  0x054c, 0x0025, 0x0100, 0x0100, 
 		"Sony",
hub.c: port 1 connection change
hub.c: port 1, portstatus 100, change 1, 12 Mb/s
hub.c: port 1 connection change
hub.c: port 1, portstatus 101, change 1, 12 Mb/s
hub.c: port 1, portstatus 103, change 0, 12 Mb/s
hub.c: USB new device connect on bus1/1, assigned device number 2
usb.c: kmalloc IF c9180920, numif 1
usb.c: new device strings: Mfr=1, Product=2, SerialNumber=0
usb.c: USB device number 2 default language ID 0x409
Manufacturer: Sony
Product: Sony DSC
usb.c: unhandled interfaces on device
usb.c: USB device 2 (vend/prod 0x54c/0x10) is not claimed by any active driver.
  Length              = 18
  DescriptorType      = 01
  USB version         = 1.10
  Vendor:Product      = 054c:0010
  MaxPacketSize0      = 8
  NumConfigurations   = 1
  Device version      = 4.30
  Device Class:SubClass:Protocol = 00:00:00
    Per-interface classes
Configuration:
  bLength             =    9
  bDescriptorType     =   02
  wTotalLength        = 0027
  bNumInterfaces      =   01
  bConfigurationValue =   01
  iConfiguration      =   00
  bmAttributes        =   80
  MaxPower            =  500mA

  Interface: 0
  Alternate Setting:  0
    bLength             =    9
    bDescriptorType     =   04
    bInterfaceNumber    =   00
    bAlternateSetting   =   00
    bNumEndpoints       =   03
    bInterface Class:SubClass:Protocol =   08:ff:01
    iInterface          =   00
    Endpoint:
      bLength             =    7
      bDescriptorType     =   05
      bEndpointAddress    =   81 (in)
      bmAttributes        =   02 (Bulk)
      wMaxPacketSize      = 0040
      bInterval           =   00
    Endpoint:
      bLength             =    7
      bDescriptorType     =   05
      bEndpointAddress    =   02 (out)
      bmAttributes        =   02 (Bulk)
      wMaxPacketSize      = 0040
      bInterval           =   00
    Endpoint:
      bLength             =    7
      bDescriptorType     =   05
      bEndpointAddress    =   83 (in)
      bmAttributes        =   03 (Interrupt)
      wMaxPacketSize      = 0008
      bInterval           =   ff
usb.c: kusbd: /sbin/hotplug add 2
Initializing USB Mass Storage driver...
usb.c: registered new driver usb-storage
usb-storage: act_altsettting is 0
usb-storage: id_index calculated to be: 25
usb-storage: Array length appears to be: 86
usb-storage: Vendor: Sony
usb-storage: Product: Sony DSC
usb-storage: USB Mass Storage device detected
usb-storage: Endpoints: In: 0xcbeae9a0 Out: 0xcbeae9b4 Int: 0xcbeae9c8 (Period 2 
55)
usb-storage: New GUID 054c00100000000000000000
usb-storage: Transport: Control/Bulk
usb-storage: Protocol: Transparent SCSI
usb-storage: *** thread sleeping.
scsi0 : SCSI emulation for USB Mass Storage devices
usb-storage: queuecommand() called
usb-storage: *** thread awakened.
usb-storage: Command INQUIRY (6 bytes)
usb-storage: 12 00 00 00 ff 00 57 c7 40 00 00 00
usb-storage: Invoking Mode Translation
usb-storage: Call to usb_stor_control_msg() returned 6
usb-storage: usb_stor_transfer_partial(): xfer 255 bytes
usb-storage: usb_stor_bulk_msg() returned 0 xferred 56/255
usb-storage: CB data stage result is 0x1
usb-storage: -- CB transport device requiring auto-sense
usb-storage: Issuing auto-REQUEST_SENSE
usb-storage: Call to usb_stor_control_msg() returned 6
usb-storage: usb_stor_transfer_partial(): xfer 18 bytes
usb-storage: usb_stor_bulk_msg() returned 0 xferred 18/18
usb-storage: usb_stor_transfer_partial(): transfer complete
usb-storage: CB data stage result is 0x0
usb-storage: -- Result from auto-sense is 0
usb-storage: -- code: 0x70, key: 0x0, ASC: 0x0, ASCQ: 0x0
usb-storage: No Sense: no additional sense information
usb-storage: Fixing INQUIRY data to show SCSI rev 2
usb-storage: scsi cmd done, result=0x0
usb-storage: *** thread sleeping.
  Vendor: Sony      Model: Sony DSC          Rev: 4.30
  Type:   Direct-Access                      ANSI SCSI revision: 02
usb-storage: queuecommand() called
usb-storage: *** thread awakened.
usb-storage: Bad LUN (0/1)
usb-storage: *** thread sleeping.
usb-storage: queuecommand() called
usb-storage: *** thread awakened.
usb-storage: Bad target number (1/0)
usb-storage: *** thread sleeping.
usb-storage: queuecommand() called
usb-storage: *** thread awakened.
usb-storage: Bad target number (2/0)
usb-storage: *** thread sleeping.
usb-storage: queuecommand() called
usb-storage: *** thread awakened.
usb-storage: Bad target number (3/0)
usb-storage: *** thread sleeping.
usb-storage: queuecommand() called
usb-storage: *** thread awakened.
usb-storage: Bad target number (4/0)
usb-storage: *** thread sleeping.
usb-storage: queuecommand() called
usb-storage: *** thread awakened.
usb-storage: Bad target number (5/0)
usb-storage: *** thread sleeping.
usb-storage: queuecommand() called
usb-storage: *** thread awakened.
usb-storage: Bad target number (6/0)
usb-storage: *** thread sleeping.
usb-storage: queuecommand() called
usb-storage: *** thread awakened.
usb-storage: Bad target number (7/0)
usb-storage: *** thread sleeping.
Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
usb-storage: queuecommand() called
usb-storage: *** thread awakened.
usb-storage: Command TEST_UNIT_READY (6 bytes)
usb-storage: 00 00 00 00 00 00 00 00 00 00 12 c0
usb-storage: Invoking Mode Translation
usb-storage: Call to usb_stor_control_msg() returned 6
usb-storage: -- CB transport device requiring auto-sense
usb-storage: Issuing auto-REQUEST_SENSE
usb-storage: Call to usb_stor_control_msg() returned 6
usb-storage: usb_stor_transfer_partial(): xfer 18 bytes
usb-storage: usb_stor_bulk_msg() returned 0 xferred 18/18
usb-storage: usb_stor_transfer_partial(): transfer complete
usb-storage: CB data stage result is 0x0
usb-storage: -- Result from auto-sense is 0
usb-storage: -- code: 0x70, key: 0x0, ASC: 0x0, ASCQ: 0x0
usb-storage: No Sense: no additional sense information
usb-storage: scsi cmd done, result=0x0
usb-storage: *** thread sleeping.
usb-storage: queuecommand() called
usb-storage: *** thread awakened.
usb-storage: Command READ_CAPACITY (10 bytes)
usb-storage: 25 00 00 00 00 00 00 00 00 00 12 c0
usb-storage: Invoking Mode Translation
usb-storage: Call to usb_stor_control_msg() returned 10
usb-storage: usb_stor_transfer_partial(): xfer 8 bytes
usb-storage: usb_stor_bulk_msg() returned 0 xferred 8/8
usb-storage: usb_stor_transfer_partial(): transfer complete
usb-storage: CB data stage result is 0x0
usb-storage: -- CB transport device requiring auto-sense
usb-storage: Issuing auto-REQUEST_SENSE
usb-storage: Call to usb_stor_control_msg() returned 10
usb-storage: usb_stor_transfer_partial(): xfer 18 bytes
usb-storage: usb_stor_bulk_msg() returned 0 xferred 18/18
usb-storage: usb_stor_transfer_partial(): transfer complete
usb-storage: CB data stage result is 0x0
usb-storage: -- Result from auto-sense is 0
usb-storage: -- code: 0x70, key: 0x0, ASC: 0x0, ASCQ: 0x0
usb-storage: No Sense: no additional sense information
usb-storage: scsi cmd done, result=0x0
usb-storage: *** thread sleeping.
SCSI device sda: 15840 512-byte hdwr sectors (8 MB)
usb-storage: queuecommand() called
usb-storage: *** thread awakened.
usb-storage: Command MODE_SENSE (6 bytes)
usb-storage: 1a 00 3f 00 ff 00 00 00 00 00 12 c0
usb-storage: Invoking Mode Translation
usb-storage: Call to usb_stor_control_msg() returned 12
usb-storage: usb_stor_transfer_partial(): xfer 255 bytes
usb-storage: usb_stor_bulk_msg() returned 0 xferred 8/255
usb-storage: CB data stage result is 0x1
usb-storage: -- CB transport device requiring auto-sense
usb-storage: Issuing auto-REQUEST_SENSE
usb-storage: Call to usb_stor_control_msg() returned 12
usb-storage: usb_stor_transfer_partial(): xfer 18 bytes
usb-storage: usb_stor_bulk_msg() returned 0 xferred 18/18
usb-storage: usb_stor_transfer_partial(): transfer complete
usb-storage: CB data stage result is 0x0
usb-storage: -- Result from auto-sense is 0
usb-storage: -- code: 0x70, key: 0x0, ASC: 0x0, ASCQ: 0x0
usb-storage: No Sense: no additional sense information
usb-storage: -- converting 10 byte sense data to 6 byte
usb-storage: scsi cmd done, result=0x0
usb-storage: *** thread sleeping.
sda: Write Protect is off
 sda:<7>usb-storage: queuecommand() called
usb-storage: *** thread awakened.
usb-storage: Command READ_10 (10 bytes)
usb-storage: 28 00 00 00 00 00 00 00 08 00 00 00
usb-storage: Invoking Mode Translation
usb-storage: Call to usb_stor_control_msg() returned 10
usb-storage: usb_stor_transfer_partial(): xfer 4096 bytes
usb-storage: usb_stor_bulk_msg() returned 0 xferred 4096/4096
usb-storage: usb_stor_transfer_partial(): transfer complete
usb-storage: CB data stage result is 0x0
usb-storage: -- CB transport device requiring auto-sense
usb-storage: Issuing auto-REQUEST_SENSE
usb-storage: Call to usb_stor_control_msg() returned 10
usb-storage: usb_stor_transfer_partial(): xfer 18 bytes
usb-storage: usb_stor_bulk_msg() returned 0 xferred 18/18
usb-storage: usb_stor_transfer_partial(): transfer complete
usb-storage: CB data stage result is 0x0
usb-storage: -- Result from auto-sense is 0
usb-storage: -- code: 0x70, key: 0x0, ASC: 0x0, ASCQ: 0x0
usb-storage: No Sense: no additional sense information
usb-storage: scsi cmd done, result=0x0
usb-storage: *** thread sleeping.
 sda1
WARNING: USB Mass Storage data integrity not assured
USB Mass Storage device found at 2
usb.c: usb-storage driver claimed interface c9180920
USB Mass Storage support registered.