09.10.2007 - Dieses Howto ist komplett veraltert
NICHT mehr hotplug verwenden!

USB Installieren

1.0 Einleitung

Dieses Howto zeigt auf, wie man unter einem 2.6.x Linux System usb
so konfiguriert, dass angesteckte mass-storage Geräte richtig
erkannt werden.

1.1 Last updated on 08.05.2004

2.0 Kernel konfigurieren

Versuch am 22.03.2003 usb mass storage (sony digitalkamera) unter debian
linux woody in Betrieb zu nehmen


2.1 Fehlerhafte logs

Beim Anstecken:

Mar 22 15:53:24 superbyte Mar 22 15:53:57 superbyte kernel: hub.c: new USB device 00:07.4-2, assigned address 2
Mar 22 15:53:57 superbyte kernel: usb.c: USB device 2 (vend/prod 0x54c/0x10) is not claimed by any active driver.
Mar 22 15:53:58 superbyte /etc/hotplug/usb.agent: Setup usb-storage for USB product 54c/10/210
Mar 22 15:53:58 superbyte kernel: SCSI subsystem driver Revision: 1.00
Mar 22 15:53:58 superbyte kernel: Initializing USB Mass Storage driver...
Mar 22 15:53:58 superbyte kernel: usb.c: registered new driver usb-storage
Mar 22 15:53:58 superbyte kernel: scsi0 : SCSI emulation for USB Mass Storage devices
Mar 22 15:53:58 superbyte kernel:   Vendor: Sony      Model: Sony DSC          Rev: 2.10
Mar 22 15:53:58 superbyte kernel:   Type:   Direct-Access                      ANSI SCSI revision: 02
Mar 22 15:53:58 superbyte kernel: WARNING: USB Mass Storage data integrity not assured
Mar 22 15:53:58 superbyte kernel: USB Mass Storage device found at 2
Mar 22 15:53:58 superbyte kernel: USB Mass Storage support registered.
Mar 22 15:53:58 superbyte /etc/hotplug/usb.agent: missing kernel or user mode driver usb-storage

zu beachten ist die letzte Fehlermeldung!

2.2 hotplug

Wenn ich die Kamera anstecke höre ich nicht dieses typische Piepsen, obwohl, hotplug installiert ist.

also auf die Hompage:

http://linux-hotplug.sourceforge.net/

Ich überprüfe einmal kurz, ob mein Kernel überhaupt die hotplug funktionen integriert hat:

CONFIG_HOTPLUG=y

schaut gut aus!

http://linux-hotplug.sourceforge.net/?selected=usb

dort steht, dass man mit
/sbin/hotplug usb
das hotplug für usb einschalten kann! Also am besten startup- Skripte überprüfen

3.0 sg Utils

danach habe ich die usbiew und sg3-utils (wegen kernel 2.4) installiert!

3.1 sg_map:

output: sg_map

/dev/sg0

hier sollte aber die Verbindung zu einem blockorientierten Geräte sein, damit
man es auch mounten kann, leider nicht -> (kernel falsch eingestellt?)

outpus für diverse sg commands:

superbyte:/mnt# sg_debug /dev/sg0
System is using sg version 3 driver. Hence the user can execute:
  'cat /proc/scsi/sg/debug' themselves. Here is an example:
dev_max(currently)=7 max_active_device=1 (origin 1)
 scsi_dma_free_sectors=48 sg_pool_secs_aval=320 def_reserved_size=32768
 >>> device=sg0 scsi0 chan=0 id=0 lun=0   em=1 sg_tablesize=255 excl=0
   FD(1): timeout=60000ms bufflen=32768 (res)sgat=0 low_dma=0
   cmd_q=0 f_packid=0 k_orphan=0 closed=0
     No requests active

3.2 sg_scan:

superbyte:/mnt# sg_scan -i
/dev/sg0: scsi0 channel=0 id=0 lun=0 [em]  type=0
         [wide=0 sync=0 cmdq=0 sftre=0 pq=0x1]

3.2 cdrecord

scanbus von cdrecord gibt bessere auskünfte hier erfährt man sogar
den Namen des Devices:

Lesen des scsi howtos:

http://www.linuxdocs.org/HOWTOs/SCSI-2.4-HOWTO/scsiaddr.html

SCSI CD-ROM devices are allocated the block major number of 11. Traditionally sr has been the device
name but scd probably is more recognizable and is favoured by several recent distributions. 256 SCSI
CD-ROM devices are allowed:


[b,11,0]   /dev/scd0          [or /dev/sr0]
[b,11,255] /dev/scd255        [or /dev/sr255]

Das hier ist der Wichtigste Teil. Es geht darum, dass man 255 cdroms als scsi verwenden kann. Das
besondere ist, dass diese auch gemountet werden können (im gegensatz zu /dev/sda ...)

# cdrecord -scanbus
superbyte:/home/markus# cdrecord -scanbus
Cdrecord 1.10 (i686-pc-linux-gnu) Copyright (C) 1995-2001 Jörg Schilling
Linux sg driver version: 3.1.24
Using libscg version 'schily-0.5'
scsibus0:
        0,0,0     0) 'PLEXTOR ' 'CD-R   PX-W1610A' '1.00' Removable CD-ROM
        0,1,0     1) *
        0,2,0     2) *
        0,3,0     3) *
        0,4,0     4) *
        0,5,0     5) *
        0,6,0     6) *
        0,7,0     7) *

Mit dem cdrecord Befehl kann man herausfinden, welche Laufwerke gerade verbunden sind!
	0,0,0	/dev/sr0
        0,1,0	/dev/sr1
        0,2,0	/dev/sr2
        0,3,0	/dev/sr3
        0,4,0	/dev/sr4
und so weiter.

Also kann ich meinen Plextorbrenner bereits mit:
mount /dev/scd0 /brenner
mounten, vielleicht noch ein -ro dazu (ist aber umsonst, kann sowieso nur read only gemounted werden)

also wird die Datei /etc/fstab ergänzt:

/dev/scd0       /burner         iso9660   ro,user,noauto        0       0

Der Eintrag burner wurde dazugegeben. Zu empfehlen ist mit mkdir /burner auch das Verzeichnis anzulegen.

Unter Kde kann man noch:
Desktop klicken -> Neu -> erstellen -> CD/DVD Rom -> Gerät -> /burner
und mit einem klick kann bereits der Inhalt angezeigt werden!

Aus einem USB howto:

http://linuxusbguide.sourceforge.net/USB-guide-1.0.9/book1.html

besonders intressant ist das mass-storage howto:

http://linuxusbguide.sourceforge.net/USB-guide-1.0.9/x485.html

4.0 fstab

Folgende minimale fstab wird benötigt, damit hotplug funktionieren kann:

#                        
#unbedingt benötigte Filesysteme
proc            /proc           proc      defaults              0       0
usbdevfs        /proc/bus/usb   usbdevfs  noauto                0       0

/dev/sda1       /mnt/kamera     vfat      rw,auto,user,exec     0       0


5.0 usbmap file

beim output von sg_map bin ich jetzt darauf gekommen, dass meine kamera gar nicht gemapped wird:

superbyte:/mnt/kamera# sg_scan
/dev/sg0: scsi0 channel=0 id=0 lun=0 [em]  type=0
/dev/sg1: scsi1 channel=0 id=0 lun=0 [em]  type=5
superbyte:/mnt/kamera# sg_map
/dev/sg0
/dev/sg1  /dev/scd0

also muss ich suchen, wie man überhaupt sowas mapped

http://www.edginet.org/techie/linux/canon.html#HOTPLUG

die Seite schaut recht intressant aus

der wichtiste Teil ist der folgende:

# gphoto2 --print-usb-usermap > usb.usermap.local
# update-usb.usermap


also: gphoto2 installieren und usermap erzeugen!

ich schaue mir mal die /var/log/messages an

superbyte:/etc/hotplug# tail -f /var/log/messages
Apr  7 09:48:41 superbyte /etc/hotplug/usb.agent: missing kernel or user mode driver usb-storage
Apr  7 09:54:29 superbyte kernel: usb.c: USB disconnect on device 00:07.4-2 address 6
Apr  7 10:06:02 superbyte kernel: hub.c: new USB device 00:07.4-2, assigned address 7
Apr  7 10:06:03 superbyte /etc/hotplug/usb.agent: Setup usb-storage for USB product 54c/10/210
Apr  7 10:06:03 superbyte /etc/hotplug/usb.agent: missing kernel or user mode driver usb-storage
Apr  7 10:24:12 superbyte -- MARK --
Apr  7 10:27:55 superbyte kernel: usb.c: USB disconnect on device 00:07.4-2 address 7
Apr  7 10:28:03 superbyte kernel: hub.c: new USB device 00:07.4-2, assigned address 8
Apr  7 10:28:04 superbyte /etc/hotplug/usb.agent: Setup usb-storage for USB product 54c/10/210
Apr  7 10:28:04 superbyte /etc/hotplug/usb.agent: missing kernel or user mode driver usb-storage

da passt irgendwas mit usb-storage nicht!

Nocheinmal die Messages in der xconsole:

Apr  7 13:36:46 superbyte kernel: hub.c: new USB device 00:07.4-2, assigned address 10
Apr  7 13:36:46 superbyte kernel: WARNING: USB Mass Storage data integrity not assured
Apr  7 13:36:46 superbyte kernel: USB Mass Storage device found at 10
Apr  7 13:36:47 superbyte /etc/hotplug/usb.agent: ... no modules for USB product 54c/10/210
Apr  7 13:37:12 superbyte modprobe: modprobe: Can't locate module block-major-8
Apr  7 13:38:22 superbyte kernel: usb.c: USB disconnect on device 00:07.4-2 address 10

Warning deutet darauf hin, dass die Integrität gefährdet ist.
Noch bedenklicher ist aber, dass block-major-8 nicht gefunden werden kann!
Blöderweise braucht /dev/sda1 genau black-major-8!

oje, der Fehler liegt im Kernel, ich habe vergessen:
     SCSI disk support
als Modul anzuwählen!

nunja, also kernel neu kompilieren

hier ist nun die letztendliche konfig des kernels:

CONFIG_BLK_DEV_FD=m
CONFIG_BLK_DEV_IDE=y
CONFIG_BLK_DEV_IDEDISK=y
CONFIG_IDEDISK_MULTI_MODE=y
CONFIG_BLK_DEV_IDESCSI=m

#
# SCSI support
#
CONFIG_SCSI=m
CONFIG_BLK_DEV_SD=m
CONFIG_SD_EXTRA_DEVS=40
CONFIG_BLK_DEV_SR=m
CONFIG_SR_EXTRA_DEVS=2
CONFIG_CHR_DEV_SG=m

#
# USB support
#
CONFIG_USB=m
# CONFIG_USB_DEBUG is not set
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_BANDWIDTH is not set
# CONFIG_USB_LONG_TIMEOUT is not set
CONFIG_USB_EHCI_HCD=m
CONFIG_USB_UHCI=m
CONFIG_USB_UHCI_ALT=m
CONFIG_USB_OHCI=m
CONFIG_USB_AUDIO=m
# CONFIG_USB_EMI26 is not set
CONFIG_USB_BLUETOOTH=m
# CONFIG_USB_MIDI is not set
CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set
CONFIG_USB_STORAGE_DATAFAB=y
CONFIG_USB_STORAGE_FREECOM=y
CONFIG_USB_STORAGE_ISD200=y
CONFIG_USB_STORAGE_DPCM=y
CONFIG_USB_STORAGE_HP8200e=y
CONFIG_USB_STORAGE_SDDR09=y
CONFIG_USB_STORAGE_SDDR55=y
CONFIG_USB_STORAGE_JUMPSHOT=y

Wobei natürlich nicht alle marken aktivert werden müssen, sonder
eigentlich nur die die gebraucht werden.

soda, jetzt ein neustart mit neuen Kernel...

und funktioniert auch

Fr Jul 30 13:54:24 CEST 2021
patent_button.gif valid-html401.png elektra.jpg fsfe-logo.png valid-css.png vim.gif anybrowser.gif