USB - FAQ mit Schwerpunkt SuSE

Aus Linupedia.org
Wechseln zu: Navigation, Suche

Die kleine USB FAQ

Allgemein: Viele USB-Geräte haben Anlaufprobleme. Bitte prüfen Sie in solchen Fällen folgendes:

  1. ohne USB-Verlängerungskabel anschliessen
  2. an anderen USB-Büchsen anschliessen
  3. USB-Hub mit eigener Stromversorgung verwenden,am besten über PS/2 Anschluss.
  4. 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):

  1. Rechtes Mausklick auf dem Desktop
  2. "Neu erstellen"
  3. "Verknüpfung zu Programm..."
  4. Einen Namen reinsetzen z.B. "USB-Raus"
  5. Kartei "Programme" -> "Befehl" -> den Befehl "eject /media/usbstick"reinschreiben.Falls es so nicht klappt, den Befehl ändern in:kdesu "umount /media/usbstick"
  6. 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:

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