USB - FAQ mit Schwerpunkt SuSE
Die kleine USB FAQ
Allgemein: Viele USB-Geräte haben Anlaufprobleme. Bitte prüfen Sie in solchen Fällen folgendes:
- ohne USB-Verlängerungskabel anschliessen
- an anderen USB-Büchsen anschliessen
- USB-Hub mit eigener Stromversorgung verwenden,am besten über PS/2 Anschluss.
- BIOS: USB-Einstellungen prüfen (alle USB-Anschlüsse an?,IRQ zugewiesen?)
Somit verbessert sich oft die gelieferte Strommenge und
die Signalqualität des USB-Anschlusses. In seltenen Fällen
kann es auch an zu schwach ausgelegten Netzteilen liegen,
was sich auch an die gelieferte Strommenge für die
Mutterplatine (Motherboard) auswirkt. In solchen Fällen
treten oft auch Schwierigkeiten, wie Startprobleme des Rechners
(geht erst nach mehrmaligen betätigen der"Power"(Einschalttaste)an).
Legacy USB Support ( Bei Problemen mit USB - Tastatur/Maus ein/ausschalten ) Wenn auf Ihrem Board USB vorhanden ist, sollten Sie diese Option auf Enabled stehen haben. Hier wird dem USB-Anschluss ein IRQ zugewiesen. Falls sie keine USB-Geräte verwenden, dann sollten Sie diese Option auf Disabled stellen. Sie bekommen dadurch für andere Zwecke Ressourcen frei.
Falls mehrere Geräte um die Mutterplatinen-Resourcen (IRQ´s, Adressenbereiche etc.) kämpfen, sollte probeweise ACPI ausschaltet werden. also im BIOS unter PowerManagement:
ACPI Disabled
und dann in Grub als Boot - Option
Code:acpi=off noapic
einstellen (geht bei SuSE mit Yast)
Andere Bootstartparameter zum nachlesen hier:
KERNELPARAMETER (Bootparameter):/usr/src/linux/Documentation/kernel-parameters.txt
(Kernelquellen müssen installiert sein).
Hier erfolgt die Zusammenfassung, bei Problemen mit USB-Speichermedien die SuSE 10.0 und 9.3 betreffen.
Vor allem an regelmässige Updates denken, da ständig
Nachbesserungen im Linux-Kernel, im USB-Hotplug
und HAL-System gemacht werden. Dabei hilft bei
SuSE-Linux, YaST und YOU-Onlineupdate.
Falls kein schneller Internetzugang vorhanden sei,
auf Zugaben bei Linux-Zeitschriften achten:
- Easy Linux
- Linux-User
- Linux-Magazin und anderen.
Wie kann ich USB-Massenspeicher entfernen?
Im Normalfall kann das Speichergerät (Speicherstick, USB-Festplatte etc.) problemlos entfernt werden, ohne zusätzliche Kommandos auszuführen. Dabei ist es gut darauf zu achten, dass eine LED (Leuchtdiode) die die Daten- übertragung meistens durch schnelles blinken anzeigt, auch damit aufhört.
Falls es Probleme bereitet, solches Medium abzuhängen, sollte ein Befehl eingesetzt werden um das USB-Medium zu entfernen. Der Befehl lautet:
Code:eject /media/usbdisk
Ausführen in der Textkonsole, bzw. ein Desktop-Ikon erstellen (KDE):
- Rechtes Mausklick auf dem Desktop
- "Neu erstellen"
- "Verknüpfung zu Programm..."
- Einen Namen reinsetzen z.B. "USB-Raus"
- Kartei "Programme" -> "Befehl" -> den Befehl "eject /media/usbstick"reinschreiben.Falls es so nicht klappt, den Befehl ändern in:kdesu "umount /media/usbstick"
- mit "OK" bestätigen .
( Es kann auch "/media/usbdisk" heissen! )
Auf die schnelle Art:
- Alt + F2 drücken (KDE)
- Den Befehl reinschreiben :
Code:eject /media/usbstick
oder
Code:eject /media/usbdisk
- "Ausführen" drücken
Weitere Möglichkeit ist die "störrischen" USB-Speichermedien abzuhängen ist diese mit dem Befehl "umount" abzuhängen. Dazu die Shell / Textkonsole starten und ausführen:
Code:sudo umount /dev/sdx1
"sudo" bedeutet Administrationsrechte ( root ) erlangen.
"x" soll ersetzt werden durch den entsprechenden Partitionsbuchstaben (a,b,c,d,e usw.).
Die Partitionkennung (Buchstabe) kann mit dem Befehl:
mount
herausgefunden werden.
Sonst zum sicherem entfernen den Befehl:
Code:sudo umount /media/usbstick
in der Textkonsole / Shell verwenden.
Hilfe zu Befehlen mount und umount: (Textkonsole / Shell)
Code: man mount Code: man umount
Optionen zu diesen Befehlen:
Code: mount --help Code: umount --help
Bei Problemen mit USB-Stick ( USB 2.0 ):
Booten mit der Option:
Code:insmod=usb-storage
danach :
Code:modprobe -r ehci-hcd ( entfernen des USB 2.0 - Moduls ) Code:modprobe ehci-hcd ( laden des USB 2.0 - Moduls )
Danach evtl.:
rchal restart
Wie finde ich die UUID/volume.uuid raus?
Da gibts folgende Möglichkeiten:
- Grafisch: Der "hal-device-manager" zeigt es unter Gnome an
(evtl. Paket "hal-gnome" nachinstallieren),ist aber nicht für Gerätekonfigurationen gedacht.
- Listen der USB-Geräte, die HAL erkannt mit dem Befehl
Code:lshal
in der Kommandozeile ,dabei kann die Ausgabe in eine Textdatei umgelenkt werden:
Code:lshal > /home/benutzer/lshal.txt
- Befehl hwinfo (als root) nutzen:
Ausgabe umlenken:
Code:hwinfo > /root/hwinfo.txt
(landet im Verzeichnis /root)
Devices ID können mit:
Code:su + Passwort
und
Code:lsusb
ermittelt werden.
Als welches Device USB-Geräte angesprochen werden kann mit dem Befehl:
Code:su+ Passwort
und
Code:lsscsi
ermittelt werden.
Hilfreich kann auch der Befehl:
Code:dmesg | tail -n 10
sein. (funktioniert auch mit anderen Befehlen-> Befehl | tail -n 10 zeigt letzte 10 Zeilen eines Befehls. Pipe-Zeichen "|" wird mit AltGr + < erzeugt )
Mit Befehl:
Code:udevmonitor --env
können die USB-Ereignisse beobachtet werden (Zuerst Befehl ausführen, dann USB-Gerät anstöpseln, bzw. Stick/Speicherkarte reinstecken)
Was ist HAL (Hardware Abstraction Layer)?
Ist eine Zwischenschicht im Betriebsystem, die die Zugriffe auf die Hardware regeln soll: http://de.wikipedia.org/wiki/Hardware-Abstraktions-Schicht
Ein Gerät wird angeschlossen -> HAL erkennt es -> HAL veranlasst weitere Aktionen (Treiber laden, entsprechende Scripte starten, eintragungen vornehmen).
Betrifft SuSE 9.3 und 10.0 mit HAL (Hardware Abstraction Layer)
Problem:
Zu geringe Übertragungsgeschwindigkeiten bei USB.
Lösung (Auszug aus SuSE-Portal) :
http://portal.suse.com/sdb/de/2005/06/dkukawka_halnosync_html.html
Automatisches Mounten ohne sync-Option
Bezieht sich auf: SUSE LINUX 9.3 - 9.3 Anliegen Sie nehmen eine zu geringe Schreibgeschwindigkeit auf Medien wie USB-Sticks oder externen USB-Festplatten wahr. Aus diesem Grund oder da für Sie synchrones Schreiben auf ausgewählten Medien (z.B. USB-Sticks oder Flash-Medien) unerwünscht ist, wollen Sie die Option sync beim automatischen Mounten durch submount/HAL nicht verwenden.
Vorgehen:
Legen Sie als root in /usr/share/hal/fdi/95userpolicy/ eine Datei mit einem beliebigen Dateinamen und der Endung .fdi an, zum Beispiel nosync.fdi. Nun editieren Sie die Datei mit einem Editor ihrer Wahl:
<?xml version="1.0" encoding="ISO-8859-1"?> <deviceinfo version="0.2"> <device> <match key="block.is_volume" bool="true"> <match key="volume.fsusage" string="filesystem"> <match key="volume.uuid" string="UUID"> <merge key="volume.policy.mount_option.sync" type="bool">false</merge> </match> </match> </match> </device> </deviceinfo>
Sie müssen nur die folgende Zeile anpassen. Die nötigen Informationen können Sie der Ausgabe von 'lshal' auf der Konsole oder dem 'hal-device-manager' unter KDE/GNOME (ggf. installieren Sie hal-gnome.rpm nach) entnehmen.
<match key="volume.uuid" string="==UUID==">
Tragen Sie den unter volume.uuid eingetragenen Wert für "==UUID==" ein. Nachdem Sie die Datei angepasst haben, führen Sie folgenden Befehl als root aus:
rchal restart
submount sollte nun das betreffende Gerät ohne die Option sync mounten. Bitte beachten Sie, das Sie nun das betreffende Gerät vor dem Entfernen explizit unmounten müssen, da nicht mehr sichergestellt ist, dass die übertragenen Daten bereits geschrieben wurden. Andernfalls kann es zu Datenverlust kommen.
SuSE 10:
Sehe Bugtracker: https://bugzilla.novell.com/show_bug.cgi?id=105871 (Als root ausführen!) Kopiere diese Zeilen in ein Texteditor und speichere , als "nosync.fdi" in Verzeichnis: /usr/share/hal/fdi/policy/95userpolicy (falls der Verzeichnis nicht vorhanden, erstellen) :
<?xml version="1.0" encoding="ISO-8859-1"?> <deviceinfo version="0.2"> <device> <match key="block.is_volume" bool="true"> <match key="volume.fsusage" string="filesystem"> <match key="@info.parent:storage.bus" string="usb"> <merge key="volume.policy.mount_option.sync" type="bool">false</merge> </match> </match> </match> </device> </deviceinfo>
Und nicht vergessen:
- Ist die Datei im richtigem Verzeichnis gelandet ?
- Das USB-Gerät (Stick/Festplatte) abgehängt/abgestöpselt (unmount) bevor HAL neu gestartet wurde?
- HAL nach der änderung neu gestartet? (rchal restart) ,als root ?
Diese Zeilen haben Einfluss auf alle USB-Speichergeräte, sonst muss in die fdi-Datei mit der UUID/volume.uuid versorgt werden, die das Gerät beschreibt:
<match key="volume.uuid" string="==UUID==">
<match key="hier wird ersetzt" string="hier wird ersetzt">
Die Zeile:
<match key="@info.parent:storage.bus" string="usb">
veranlast das System, alle USB-Geräte ohne die "sync"-Option zu mounten:
<merge key="volume.policy.mount_option.sync" type="bool">false</merge>
Weitere Key-Beschreibungen befinden sich in: /usr/share/doc/packages/hal ( SuSE 9.3 HAL 0.4.7 Specification: /usr/share/doc/packages/hal/spec/hal-spec.html )
Rechteverwaltung / Zugriffsprobleme bei SuSE 10
Auszug aus SuSE-Portal: Ab SUSE Linux 10.0 erfolgt die Zugriffskontolle mit "Whitelist"-Semantik. Das bedeutet, dass es eine Liste der USB Scanner geben muss, für die der Zugriff explizit erlaubt ist. So eine Liste wird von der YaST Scannerkonfiguration automatisch für den resmgr eingerichtet:
/etc/resmgr.conf.d/50-scanner.conf
Das Format der Einträge ist beispielsweise
add usb:vendor=0x1a2b,product=0x3c4d scanner
Es betrifft auch andere USB-Geräte!
KLASSICH MOUNTEN BEI SUSE 10:
/TIPP VON ABGDF/
Zuerst macht man als root eine Sicherungskopie des Verzeichnisses
/usr/share/hal/fdi/policy
mit allen Unterverzeichnissen.
Im Verzeichnis
/usr/share/hal/fdi/policy/10osvendor
gibt es mehrere Konfigurationsdateien für hal.
In jeder davon sucht man alle Zeilen, die "should_mount" enthalten, z.B. die Zeile
<merge key="storage.policy.should_mount" type="bool">true</merge>
In allen diesen Zeilen (einige) setzt man den Wert von >true< auf >false<.
Wenn man das in allen Zeilen in allen Dateien getan hat, werden die Geräte (nach einem Neustart von hal) nicht mehr automatisch gemountet.
Allerdings wird zum Beispiel das Floppy-Laufwerk (amigaähnlich) trotzdem noch angesprochen, wenn eine neue Diskette eingelegt wird. Dies vermeidet man, indem man zusätzlich in der Datei
/usr/share/hal/fdi/policy/10osvendor/90-block-subfs.fdi
aus den Zeilen
<append key="info.callouts.add" type="strlist">hald-subfs-mount</append> <append key="info.callouts.remove" type="strlist">hald-subfs-mount</append>
das "hald-subfs-mount" entfernt.
Diese beiden Zeilen kommen zweimal vor, beide Varianten sollten geändert werden. Nun startet man hal mit dem Befehl
rchal restart
neu und ändert gegebenenfalls noch die Einträge in der Datei "/etc/fstab".
Auf diese Weise kann man unter SuSE 10.0 wieder traditionell mounten.
oder so: ( Dank an Herrn Niendorf )
1. in Verzeichnis wechseln (ggf. anlegen) # cd /usr/share/hal/fdi/policy/20thirdparty
2. Erstellen eines fdi-Files mit folgendem Ergebnis: # cat nomount_usb_disk.fdi <?xml version"1.0" encoding"ISO-8859-1"?> <deviceinfo version"0.2"> <device> <match key"storage.bus" string"usb"> <match key"storage.drive_type" string"disk"> <match key"storage.policy.should_mount" bool"true"> <merge key"storage.policy.should_mount" type"bool">false</merge> </match> </match> </match> </device> </deviceinfo> #
3. HAL neu starten
rchal restart
Hinweis! Das Kommando lshal gibt eine vollständige Liste der devices mit gesetzten Parametern aus. Innerhalb eines Gerätes erfolgt der Match von unten nach oben (storage.bus steht weiter unten als storage.drive_type; --> umgekehrte Matchreihenfolge im XML-File).
Viel Spass damit :-) misiu