PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : usb storage funktioniertt nur manchmal



netriot
30.12.04, 18:50
Hallo!

Habe hier ein Problem mitmeiner Digitalkamera (Olympus C-100). Nach einem dist-upgrade funktioniert diese nur manchmal. (lief vor dem upgrade wunderbar). Durch das upgrade wurde udev samt Abhängigkeiten installiert. Durch eine Regel in der /etc/udev/rules.d/z_hal-plugdev.rules habe ich mir die Cam auf /dev/cam legen lassen:



blackbox:/home/xunil# cat /etc/udev/rules.d/z_hal-plugdev.rules
# put removable IDE/SCSI devices into the hal group instead of 'disk'
BUS="scsi",KERNEL="sd[a-z]*", PROGRAM="/etc/udev/scripts/device-removable.sh %k", RESULT="1", NAME="cam", MODE="0640", GROUP="hal"


Ab und an funktioniert das auch fehlerfrei: usb-kabel anschließen -> mounten -> unmounten -> abstöpseln

Größtenteils sieht es aber so in den logs aus:
digicam anschließen:


cat /var/log/messages/
Dec 29 16:24:09 blackbox kernel: usb 1-3: new full speed USB device using address 2
Dec 29 16:24:09 blackbox kernel: scsi0 : SCSI emulation for USB Mass Storage devices
Dec 29 16:24:14 blackbox kernel: usb 1-3: control timeout on ep0in
Dec 29 16:24:19 blackbox hal.hotplug[5020]: timout(10000 ms) waiting for /devices/pci0000:00/0000:00:02.0/usb1/1-3/1-3:1.0
Dec 29 16:24:19 blackbox usb.agent[5039]: usb-storage: already loaded
Dec 29 16:24:19 blackbox usb.agent[5039]: libgphoto2: loaded successfully


Das wars dann auch. Es wird kein /dev/* erstellt. Es scheint mir ebenso als wenn sich dann hald aufhängt, denn bei einem neuen ein und ausstecken der Kamera wird nichtmal mehr die log file verändert.

Hat jemand ne Ahnung was das sein kann?

netriot

Nutze Debian SID, kernel-image-2.6.9-1-k7, und gnome2.8
(habe auch schon andere kernel probiert, von selfbaked bis image)

(bei Ubuntu 4.10 funktioniert alles bestens :confused: )

Hitman
30.12.04, 19:00
Hmmm, sieht so aus, als daß das "usb-storage"-Modul beim abstöpseln nicht entladen wird.

netriot
30.12.04, 19:39
Hallo!

Hoa genau das ist es! Wenn ich nach dem booten rmmod usb-storage eingebe wird das Modul entladen und die Kamera funktioniert einwandfrei!

Nur sobald ich die Cam abziehe wird das crasht das USB System im Kernel und ein erneutes entfernen bringt nur den Terminal zum Absturz.

Was also tun?

tictactux
30.12.04, 20:20
Hallo,
ich hatte gestern zum ersten Mal ähnliche Probleme mit meiner Digitalkamera
(Nikon E2000) unter Debian sarge. Auslöser muß ebenfalls ein distupgrade
mit Umstellung auf udev sein (Kernel 2.6.9-1), das ich Anfang Dezember
machte (die Kamera wurde seither zum ersten Mal angeschlossen).
Interessanterweise funktionert ein USB2.0-Stick problemlos.
Meine Erkenntnisse bislang (noch nicht im Detail erforscht): usbstorage
und die SCSI-Module sind korrekt geladen, das Gerät taucht auch als
SCSI-Gerät auf (/proc/scsi/scsi und scsiadd -p). Allerdings kann
darauf nicht zugegrifffen werden (z.B. mit fdisk).

Da der Rechner auch 2 SCSI-Kontroller mit diversen echten SCSI-Geräten
(Platten,Brenner..) hat, habe ich zunächst einen Zusammenhang damit
vermutet (z.B. Scheitern des Ladens des SCSI-Disk Moduls durch hotplug
da es fest einkompiliert ist). Aber der Stick tut es :confused:
Werde das noch weiter untersuchen, kann aber etwas dauern.

Noch was Interessantes in dem Zusammenhang: vor ein paar Tagen
hatte ich das Modul ub (für langsame USB-Blockgeräte) aus
dem Kernel entfernt, das Probleme mit dem USB2.0-Stick machte.
Vielleicht braucht die Kamera das (hatte damit bislang noch nichts zu tun)?

Gruß,
Wolfgang

tictactux
01.01.05, 21:28
Mein erwähntes Problem mit einer Nikon Coolpix hat wohl andere Ursachen
als das hier mit der Olympus geschilderte. Das Problem ist Kernel 2.6-spezifisch
(2.4 lief wunderbar).

Eine Lösung (die bei mir mit Kernel 2.6.9-1 funktioniert) gibt es hier:
http://www.linuxquestions.org/questions/history/138791

Fazit: es ist ein Kernel-Patch im SCSI-Diskmodul (sd.c) nötig, wegen eines
Kamera-(oder Kernel!)fehlers in der Kommunikation des Attributs
"removable disk" bei der Initialisierung.
Es handelt sich somit nicht um ein USB, sondern SCSI-Problem.

Die Lösung liegt in der Anbringung des folgenden Patches gegen die Datei
<kernel-directory>/drivers/scsi/sd.c:

--- sd.c Mon Nov 10 10:26:50 2003
+++ sd.c Sun Jan 4 15:30:59 2004
@@ -606,9 +606,13 @@
* by sd_spinup_disk() from sd_revalidate_disk(), which happens whenever
* sd_revalidate() is called.
*/
+#if 0
retval = -ENODEV;
if (scsi_block_when_processing_errors(sdp))
retval = scsi_ioctl(sdp, SCSI_IOCTL_TEST_UNIT_READY, NULL);
+#else
+ retval = 0;
+#endif

/*
* Unable to test, unit probably not ready. This usually
Zitat: Credit goes to Alan Stern from the linux-usb-devel team for the patch.

Hoffe das erspart noch jemandem längeres Suchen :)
Wolfgang

EDIT: für Leute die noch andere SCSI-Wechselmedien einsetzen:
obiger Patch ist keine "saubere" Lösung, sondern ein Workaround.
Also gilt es abzuwägen, ob die Nutzung der Camera über SCSI-Emulation
oder potentielle Probleme mit andern Medien wichtiger sind (ich denke
dabei z.B. an SCSI-ZIPs oder USB-Media-Reader).

EDIT: obiger Patch ist bei meiner DigiCam auch bei Kernel 2.6.10-4 noch
erforderlich.