expertenaustausch > comp.os.* > comp.os.unix.linux.misc

Wolfgang Becker (09.04.2011, 04:07)
Wenn ich einen gemounteten USB-Stick mit eject "auswerfe" muss ich
ihn aus- und wieder einstecken, damit er neu erkannt wird und wieder
verwendet werden kann. Kann man den Stick auch per Software neu
starten, so daß er ohne umstecken wieder vom System erkannt wird?
Reboot würde klappen, da ist aber frisch einstecken schneller.

Tschüß,
Wolfgang
Henning Paul (09.04.2011, 08:11)
Wolfgang Becker wrote:

> Wenn ich einen gemounteten USB-Stick mit eject "auswerfe" muss ich
> ihn aus- und wieder einstecken, damit er neu erkannt wird und wieder
> verwendet werden kann. Kann man den Stick auch per Software neu
> starten, so daß er ohne umstecken wieder vom System erkannt wird?


Nein, das ist in der USB-Spezifikation nicht vorgesehen. Manche USB-Geräte
kennen proprietäre Kommandos, mit denen sie sich vom Bus ab- und wieder
anhängen (dabei wird die Kommunikation auf dem Bus "elektrisch"[1]
unterbrochen), aber allgemein ist das nicht zu erwarten.

Gruß
Henning

[1] Streng genommen gehen die D+ und D--Pins dabei einfach nur in den High-
Z.
Martin Schoenbeck (09.04.2011, 20:43)
Hallo Henning,

Henning Paul schrieb:

> Wolfgang Becker wrote:
>> Wenn ich einen gemounteten USB-Stick mit eject "auswerfe" muss ich
>> ihn aus- und wieder einstecken, damit er neu erkannt wird und wieder
>> verwendet werden kann. Kann man den Stick auch per Software neu
>> starten, so daß er ohne umstecken wieder vom System erkannt wird?

> Nein, das ist in der USB-Spezifikation nicht vorgesehen.


Mit der Spezifikation hat das nichts zu tun.

> Manche USB-Geräte
> kennen proprietäre Kommandos, mit denen sie sich vom Bus ab- und wieder
> anhängen (dabei wird die Kommunikation auf dem Bus "elektrisch"[1]
> unterbrochen), aber allgemein ist das nicht zu erwarten.


Alle USB-Controller (Ok, XHCI kann ich nicht beschwören) unterstützen
problemlos ein Reset auf das Gerät. Jederzeit wenn der Software danach ist.
Ist also ausschließlich eine Frage des Treibers. Und der liegt ja im Source
vor. Also eigentlich trivial zu lösen.

Gruß Martin
Ralph Angenendt (09.04.2011, 20:56)
Well, Martin Schoenbeck <ms.usenet.nospam> wrote:
> Alle USB-Controller (Ok, XHCI kann ich nicht beschwören) unterstützen
> problemlos ein Reset auf das Gerät. Jederzeit wenn der Software danach ist.
> Ist also ausschließlich eine Frage des Treibers. Und der liegt ja im Source
> vor. Also eigentlich trivial zu lösen.


Und welchen Treiber nimmt man da, wenn man jetzt nicht genau weiß,
welches Gerät da am Bus hängt? Einfach den letzten geladenen?

Ralph
Martin Schoenbeck (09.04.2011, 21:21)
Hallo Ralph,

Ralph Angenendt schrieb:

> Well, Martin Schoenbeck <ms.usenet.nospam> wrote:
> Und welchen Treiber nimmt man da, wenn man jetzt nicht genau weiß,
> welches Gerät da am Bus hängt? Einfach den letzten geladenen?


Das baut man natürlich sinnvollerweise in den USB-Treiber ein. Also den,
für OHCI / UHCI / EHCI. Und dem sagt man dann, welchen Port er zurücksetzen
soll. Danach verhält sich das Gerät daran so, als hätte man es abgestöpselt
und wieder angestöpselt. Völlig egal, welches Gerät das ist.

Gruß Martin
Martin Schoenbeck (10.04.2011, 09:44)
Hallo Andreas,

Andreas Kohlbach schrieb:

> Sollte es nicht reichen, udev neu zu starten?


Das wirkt dann aber auf alle Geräte, die an USB hängen. Aber grundsätzlich
ja, die Treiberinitialisierung macht ein Reset auf alle Ports.

Gruß Martin
Dirk Thierbach (10.04.2011, 09:47)
Martin Schoenbeck <ms.usenet.nospam> wrote:
> Henning Paul schrieb:
>> Wolfgang Becker wrote:


>>> Wenn ich einen gemounteten USB-Stick mit eject "auswerfe" muss ich
>>> ihn aus- und wieder einstecken, damit er neu erkannt wird und wieder
>>> verwendet werden kann. Kann man den Stick auch per Software neu
>>> starten, so daß er ohne umstecken wieder vom System erkannt wird?


Wieso wirfst Du ihn ueberhaupt mit eject aus? unmount reicht doch voellig,
danach kann man ihn auch wieder mounten.

>> Nein, das ist in der USB-Spezifikation nicht vorgesehen.


Und wieso in der USB-Spezifikation? eject sollte meine Verstaendnis
nach doch nur SCSI-Kommandos schicken. Gerade mal ausprobiert: USB
eingesteckt, wurde vom System auf /dev/sdf gemountet. Mit eject
ausgeworfen, /dev/sdf ist noch da und reagiert auch auf SCSI-Befehle:

$ sg_turs -v /dev/sdf
test unit ready cdb: 00 00 00 00 00 00
test unit ready: Fixed format, current; Sense key: Not Ready
Additional sense: Medium not present
device not ready

Und "eject -t" versteht es auch brav:

$ eject -t /dev/sdf
$ sg_turs -v /dev/sdf
test unit ready cdb: 00 00 00 00 00 00
$ sudo mount -tvfat -onoexec,nodev,noatime,nodiratime /dev/sdf /media/usb0
$

Geht alles. Also entweder kein "eject", nur "umount". Oder nach dem
"eject" eben wieder ein "eject -t".

> Alle USB-Controller (Ok, XHCI kann ich nicht beschwören) unterstützen
> problemlos ein Reset auf das Gerät. Jederzeit wenn der Software danach ist.
> Ist also ausschließlich eine Frage des Treibers. Und der liegt ja im Source
> vor. Also eigentlich trivial zu lösen.


Geht offenbar alles auf der SCSI-Ebene, USB-Reset usw. scheint nicht
noetig (zumindest bei mir).

- Dirk
Wolfgang Becker (11.04.2011, 00:17)
Dirk Thierbach <dthierbach> wrote:
> Wieso wirfst Du ihn ueberhaupt mit eject aus? unmount reicht doch voellig,
> danach kann man ihn auch wieder mounten.


Damit das Licht ausgeht. :) An der Konsole hab ich natürlich die
Auswahl, wie ich den Stick auswerte ich muß nur 'dran denken. Mit
einer grafischen Oberfläche hab ich die Auswahl nicht und da sieht
es so aus als macht Gnome eher ein eject als ein umount. Zumindest
ist der Effekt da dann auch: kann nicht mehr verwendete werden ohne
ausstecken. Udev neu starten ist auch nicht ideal, das weckt die
schlafende Festplatte auf. Zugegeben, das ganze ist ein vermeidbares
Problem, trotzdem interessiert mich die Lösung, falls es überhaupt
eine gibt.

> Geht alles. Also entweder kein "eject", nur "umount". Oder nach
> dem "eject" eben wieder ein "eject -t".


Klingt schonmal gut. Klappt aber leider mit dem Stick, den ich
gerade da habe nicht. Nach einem "eject /dev/sda1" wird der Stick
nicht mehr von "blkid" angezeigt. "eject -t /dev/sda1" kennt das
device nicht mehr und "eject -t /dev/sda" bringt zwar keine
Fehlermeldung, aber auch keine erkennbare Wirkung.

Tschüß,
Wolfgang
Wolfgang Becker (11.04.2011, 00:37)
Andreas Kohlbach <april11.20.ankman> wrote:
> Ich hatte auch ein Kommando mit "trigger" (eine Option des Kommandos) im
> Kopf, will mir aber eben nicht einfallen. Das scannt nach eingesteckten
> Geräten, und sollte sie dann mounten.


udevadm trigger sieht vielversprechend aus.

Tschüß,
Wolfgang
Dirk Thierbach (11.04.2011, 12:20)
Wolfgang Becker <uafr> wrote:
> Dirk Thierbach <dthierbach> wrote:
>> Wieso wirfst Du ihn ueberhaupt mit eject aus? unmount reicht doch voellig,
>> danach kann man ihn auch wieder mounten.


> Damit das Licht ausgeht. :)


Hm, bei mir geht das Licht damit nicht aus.

> An der Konsole hab ich natürlich die Auswahl, wie ich den Stick
> auswerte ich muß nur 'dran denken. Mit einer grafischen Oberfläche
> hab ich die Auswahl nicht und da sieht es so aus als macht Gnome
> eher ein eject als ein umount.


Ich boykottiere zwar mittlerweile Gnome als Oberflaeche, aber irgendwo
muss man das da ja auch einstellen koennen.

> Zumindest ist der Effekt da dann auch: kann nicht mehr verwendete
> werden ohne ausstecken. Udev neu starten ist auch nicht ideal, das
> weckt die schlafende Festplatte auf. Zugegeben, das ganze ist ein
> vermeidbares Problem, trotzdem interessiert mich die Lösung, falls
> es überhaupt eine gibt.


Mich auch :-)

>> Geht alles. Also entweder kein "eject", nur "umount". Oder nach
>> dem "eject" eben wieder ein "eject -t".


> Klingt schonmal gut. Klappt aber leider mit dem Stick, den ich
> gerade da habe nicht. Nach einem "eject /dev/sda1" wird der Stick
> nicht mehr von "blkid" angezeigt.


Hm, hast Du eine Partitionstabelle auf dem Stick? Verschwendet doch
nur Platz :-)

Wenn das eine Partition ist, ist klar, dass sie verschwindet, wenn
der SCSI-Level gesagt bekommt, dass das Medium nicht mehr da ist.

Probier's mal mit "/dev/sda" und/oder dem Weglassen der Partitionstabelle
auf dem Stick. Bei mir geht's:

$ eject /dev/sdf
$ /sbin/blkid -o full /dev/sdf
$ eject -t /dev/sdf
$ /sbin/blkid -o full /dev/sdf
/dev/sdf: UUID="5320-D8DE" TYPE="vfat"

> "eject -t /dev/sda1" kennt das device nicht mehr und "eject -t
> /dev/sda" bringt zwar keine Fehlermeldung, aber auch keine
> erkennbare Wirkung.


Moeglicherweise muss man nach "eject -t /dev/sda" dem Kernel noch sagen,
dass er nach Partitionstabellen suchen soll. Mit "fdisk -l /dev/sda"
probieren, ob er sie nach dem "eject -t" ueberhaupt wieder lesen kann.
Zu diesem Zweck irgendetwas mit udevadm zu probieren, ist bestimmt keine
schlechte Idee. Berichte mal :-)

Wenn gar nicht's geht, hol Dir sg3_utils (oder das Aequivalent auf
Deiner Distribution), dann kannst mit sg_turs etc. auf der SCSI-Ebene
testen.

- Dirk
Henning Paul (11.04.2011, 12:28)
Dirk Thierbach wrote:

> Wolfgang Becker <uafr> wrote:
> Hm, hast Du eine Partitionstabelle auf dem Stick? Verschwendet doch
> nur Platz :-)
> Wenn das eine Partition ist, ist klar, dass sie verschwindet, wenn
> der SCSI-Level gesagt bekommt, dass das Medium nicht mehr da ist.


Manche USB-Sticks hängen sich komplett vom Bus, wenn sie ejected werden.
Sie tauchen dann auch nicht mehr im Output von lsusb auf. Die müssen
dann eventuell von der Spannungsversorgung getrennt werden, bevor sie
sich wieder am Bus anmelden können. Ich weiß nicht, ob da ein USB-
Hostcontrollerreset reichen würde.

Gruß
Henning
Martin Schoenbeck (11.04.2011, 13:47)
Hallo Henning,

Henning Paul schrieb:

> Manche USB-Sticks hängen sich komplett vom Bus, wenn sie ejected werden.
> Sie tauchen dann auch nicht mehr im Output von lsusb auf. Die müssen
> dann eventuell von der Spannungsversorgung getrennt werden, bevor sie
> sich wieder am Bus anmelden können. Ich weiß nicht, ob da ein USB-
> Hostcontrollerreset reichen würde.


Der muß reichen. Sonst ist das Ding defekt.

Gruß Martin
Dirk Thierbach (11.04.2011, 18:02)
Henning Paul <henningpaul> wrote:
> Dirk Thierbach wrote:


>> Wolfgang Becker <uafr> wrote:
>>> Klingt schonmal gut. Klappt aber leider mit dem Stick, den ich
>>> gerade da habe nicht. Nach einem "eject /dev/sda1" wird der Stick
>>> nicht mehr von "blkid" angezeigt.

>> Hm, hast Du eine Partitionstabelle auf dem Stick? Verschwendet doch
>> nur Platz :-)


>> Wenn das eine Partition ist, ist klar, dass sie verschwindet, wenn
>> der SCSI-Level gesagt bekommt, dass das Medium nicht mehr da ist.


> Manche USB-Sticks hängen sich komplett vom Bus, wenn sie ejected werden.
> Sie tauchen dann auch nicht mehr im Output von lsusb auf.


Das sollte sich dann ja leicht testen lassen. Aber wenn /dev/sda noch
da ist, ist dieses Verhalten bei seinem Stick eher unwahrscheinlich,
das muesste dann naemlich auch weg sein.

- Dirk
Ähnliche Themen