USB - FAQ openSUSE

Aus Linupedia
Wechseln zu: Navigation, Suche

Autor: misiu


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 ). Bei Laptops kommt auch oft vor: angeschlossene Festplatte mit 2 USB-Steckern funktioniert nicht oder nur manchmal. Es ist ein Hinweis darauf, dass der Laptop die benötigte Strommenge nicht liefert, das selbe könnte auch andere USB-Geräte betreffen, die stärkere Stromansprüche stellen. Ein Ausweg wäre da ein externe USB-Hub mit eigener Stromversorgung.

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. In seltenen Fällen verhindert genau diese Option den Start einer Linux-Installation.

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

"acpi=off noapic"

einstellen (geht bei SuSE mit Yast)

Andere Bootstartparameter zum nachlesen hier:

KERNELPARAMETER (Bootparameter die beim Start des Rechners in der Optionszeile des Bootmanagers eingegeben werden):

/usr/src/linux/Documentation/kernel-parameters.txt
(Kernelquellen müssen installiert sein).

Seitdem UDEV und HAL verwendet werden, kann mit Hilfe des Befehls

lshal -m

live beobachtet werden, was beim Einstecken eines USB-Gerätes passiert. Dieses liefert viele wertvolle Informationen und Fehlermeldungen.

Zusammenfassung von Problemen mit USB-Speichermedien ab SuSE / openSUSE

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 openSUSE, YaST und YOU-Onlineupdate. Falls kein schneller Internetzugang vorhanden ist, auf Zugaben bei Linux-Zeitschriften achten:

  • Easy Linux
  • Linux-User
  • Linux-Magazin und anderen.

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.

Bei Opensuse 10.3 im KDE-Desktop können USB-Speichermedien über Arbeitsplatz-->Datenträger mit Hilfe vom Kontextmenü-Eintrag (rechte Maustaste), sicher entfernt werden ("Sicher Entfernen"). Dabei sollte man achten, dass keine Programme mehr drauf zugreifen (Dateimanager, Brennprogramme, Fotomanager, Musiksammlungverwaltungsprogramme und ähnliche).

Falls es Probleme bereitet, solches Medium abzuhängen, sollte ein Befehl eingesetzt werden um das USB-Medium zu entfernen. Der Befehl lautet:

eject /media/usbdisk


Ausführen in der Textkonsole, bzw. ein Desktop-Ikon erstellen (KDE):

  • 1. Rechtes Mausklick auf dem Desktop
  • 2. "Neu erstellen"
  • 3. "Verknüpfung zu Programm..."
  • 3. Einen Namen reinsetzen z.B. "USB-Raus"
  • 4. Kartei "Programme" -> "Befehl" -> den Befehl

"eject /media/usbstick"

reinschreiben. Falls es so nicht klappt, den Befehl ändern in:

kdesu "umount /media/usbstick"

  • 5. mit "OK" bestätigen .

( Es kann auch "/media/usbdisk" heissen! )

Auf die schnelle Art:

  • 1. Alt + F2 drücken
  • 2. Den Befehl reinschreiben :
eject /media/usbstick

oder

eject /media/usbdisk

3. "Ausführen" drücken

Weitere Möglichkeit die "störrischen" USB-Speichermedien abzuhängen ist diese mit dem Befehl "umount" abzuhängen. Dazu die Shell / Textkonsole starten und ausführen:

misiu@linux:~> 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:

sudo umount /media/usbstick

in der Textkonsole / Shell verwenden.

Hilfe zu Befehlen mount und umount: (Textkonsole / Shell)

misiu@linux:~> man mount
misiu@linux:~> man umount


Optionen zu diesen Befehlen:

mount --help
umount --help

Bei Problemen mit USB-Stick( USB 2.0 )

Booten mit der Option:

insmod=usb-storage

danach :

modprobe -r ehci-hcd

( entfernen des USB 2.0 - Moduls )

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:

  • 1.Grafisch:

Der "hal-device-manager" zeigt es unter Gnome an (evtl. Paket "hal-gnome" nachinstallieren),ist aber nicht für Gerätekonfigurationen gedacht.

  • 2.Listen der USB-Geräte, die HAL erkannt mit dem Befehl:
lshal

in der Kommandozeile , dabei kann die Ausgabe in eine Textdatei umgelenkt werden:

lshal > /home/benutzer/lshal.txt

2.Befehl hwinfo (als root) nutzen:

Ausgabe umlenken:

hwinfo > /root/hwinfo.txt

(landet im Verzeichnis /root)

Devices ID können mit:

su
+ Passwort

und

lsusb

ermittelt werden.

Als welches Device USB-Geräte angesprochen werden kann mit dem Befehl:

su
+ Passwort

und

lsscsi

ermittelt werden.

Hilfreich kann auch der Befehl:

dmesg | tail -n 10

(funktioniert auch mit anderen Befehlen -> Befehl | tail -n 10 zeigt letzte 10 Zeilen eines Befehls.)

sein.

( Pipe-Zeichen "|" wird mit AltGr + < erzeugt )


Mit Befehl:

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:

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) :


Automatisches Mounten ohne sync-Option (Bezieht sich auf: SUSE LINUX 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.

ab/bei(?) openSUSE 10.0

Siehe 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:

  1. Ist die Datei im richtigem Verzeichnis gelandet ?
  2. Das USB-Gerät (Stick/Festplatte) abgehängt/abgestöpselt (unmount) bevor HAL neu gestartet wurde?
  3. 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/ab openSuSE 10.0

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!


klassisch mounten bei/ab (?) openSUSE 10.0

/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 Eberhard 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.


zurück zu USB