Bug 186326 - I/O error when reading from Nikon D50 camera
Bug#: 186326 Product:  Gentoo Linux Version: 2006.1 Platform: All
OS/Version: Linux Status: RESOLVED Severity: normal Priority: P2
Resolution: FIXED Assigned To: dsd@gentoo.org Reported By: nshephard@gmail.com
Component: Core system
URL: 
Summary: I/O error when reading from Nikon D50 camera
Keywords:  
Status Whiteboard: patch upstream: commit 4f47bb567368f732989058e26dc282f7fe931dab
Opened: 2007-07-23 13:23 0000
Description:   Opened: 2007-07-23 13:23 0000
Until recently I could mount my Nikon D50 as a USB mass storage device without
any problems, but recently this has broken and I can no longer mount.

I haven't changed my kernel config at all, it just stopped working after a
regular eix-sync && emerge -uDN world



Reproducible: Always

Steps to Reproduce:
1. Buy a Nikon D50 ;-)
2. Format a memory card in the camera
3. Take some pictures
4. Plug in to computer
5. Turn camera on
6. mount the device reported by dmesg | tail (e.g. mount -t vfat /dev/sdb1
/mnt/nikon)

Actual Results:  
# dmesg | tail -n70
usb 1-1: USB disconnect, address 6
usb 1-1: new high speed USB device using ehci_hcd and address 7
usb 1-1: configuration #1 chosen from 1 choice
scsi2 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 7
usb-storage: waiting for device to settle before scanning
scsi 2:0:0:0: Direct-Access     NIKON    D50              1.00 PQ: 0 ANSI: 2
SCSI device sdb: 4022273 512-byte hdwr sectors (2059 MB)
sdb: Write Protect is off
sdb: Mode Sense: 0f 00 00 00
sdb: assuming drive cache: write through
SCSI device sdb: 4022273 512-byte hdwr sectors (2059 MB)
sdb: Write Protect is off
sdb: Mode Sense: 0f 00 00 00
sdb: assuming drive cache: write through
 sdb: sdb1
sd 2:0:0:0: Attached scsi removable disk sdb
sd 2:0:0:0: Attached scsi generic sg1 type 0
usb-storage: device scan complete
end_request: I/O error, dev sdb, sector 4022272
printk: 277 messages suppressed.
Buffer I/O error on device sdb, logical block 4022272
end_request: I/O error, dev sdb, sector 4022272
Buffer I/O error on device sdb, logical block 4022272
end_request: I/O error, dev sdb, sector 4022272
Buffer I/O error on device sdb, logical block 4022272
end_request: I/O error, dev sdb, sector 4022272
Buffer I/O error on device sdb, logical block 4022272
end_request: I/O error, dev sdb, sector 4022272
Buffer I/O error on device sdb, logical block 4022272
end_request: I/O error, dev sdb, sector 4022272
Buffer I/O error on device sdb, logical block 4022272
end_request: I/O error, dev sdb, sector 4022272
Buffer I/O error on device sdb, logical block 4022272
end_request: I/O error, dev sdb, sector 40
Buffer I/O error on device sdb, logical block 40
Buffer I/O error on device sdb, logical block 41
Buffer I/O error on device sdb, logical block 42
end_request: I/O error, dev sdb, sector 40
end_request: I/O error, dev sdb, sector 40
end_request: I/O error, dev sdb, sector 40
end_request: I/O error, dev sdb, sector 40
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243
end_request: I/O error, dev sdb, sector 243 

Expected Results:  
Should mount device.

This seems similar to a problem reported with the D100 (see
http://bugs.gentoo.org/show_bug.cgi?id=185517), and has been mentioned on the
linux-kernel dev mailing list (see http://lkml.org/lkml/2007/7/3/297)

Some useful system information...

# uname -a
Linux fisher 2.6.20-gentoo-r6 #10 SMP Fri Jul 13 13:40:56 BST 2007 i686 AMD
Athlon(tm) XP 2600+ AuthenticAMD GNU/Linux

# lsusb
Bus 004 Device 001: ID 0000:0000 
Bus 004 Device 002: ID 10df:0100 In-Win Development, Inc.
Bus 003 Device 003: ID 045e:00db Microsoft Corp.
Bus 003 Device 002: ID 046d:c016 Logitech, Inc. M-UV69a Optical Wheel Mouse
Bus 003 Device 001: ID 0000:0000 
Bus 002 Device 001: ID 0000:0000 
Bus 001 Device 007: ID 04b0:0409 Nikon Corp.
Bus 001 Device 001: ID 0000:0000 

Will post emerge --info later if required (currently at work and can't access
the box).

------- Comment #1 From Neil 2007-07-23 13:24:32 0000 -------
Forgot to mention, submitting this as a bug as advised in
http://forums.gentoo.org/viewtopic.php?p=4154065

------- Comment #2 From Maarten Bressers 2007-07-27 20:57:04 0000 -------
I'm attaching the patch from the lkml link you provided, apply it as follows:
in /usr/src/linux, type:
patch -p1 < usb-storage-nikon-d50-quirk.patch

Please let us know if this fixes the problem for you.

------- Comment #3 From Maarten Bressers 2007-07-27 20:57:31 0000 -------
Created an attachment (id=126181) [details]
usb-storage-nikon-d50-quirk.patch

------- Comment #4 From Neil 2007-07-31 17:35:47 0000 -------
(In reply to comment #2)
> 
> Please let us know if this fixes the problem for you.
> 

Yep the patch works, but only after I un-emerged libgphoto2/gphoto2 due to
conflicts with hald (see http://bugs.gentoo.org/show_bug.cgi?id=172830).

Thanks for the helping sort this out.

Some relevant information with regards to the kernel...

$ uname -sr
Linux 2.6.22-gentoo-r2

(Not sure if I should change this to fixed or whether that should be done by
someone who would add the patch to kernel source patches, so opting for the
later)

------- Comment #5 From Daniel Drake 2007-08-22 20:11:42 0000 -------
Thanks for testing, this is fixed upstream and in the latest
gentoo-sources-2.6.22 release