Speichergerät, das als Drucker erkannt wird

502
recluze

Ich habe ein HP USB-Thumbdrive. Es funktionierte gut, aber nach einem schlechten Auswurf hörte es auf. Wenn ich es jetzt einsetze, wird es als Drucker erkannt (was ich sagen kann).

Meine syslogzeigt dies, wenn ich den USB einstecke.

Dec 15 09:10:44 namviper kernel: [ 797.472422] usb 3-3: new high-speed USB device number 10 using xhci_hcd Dec 15 09:10:44 namviper kernel: [ 797.614558] usb 3-3: New USB device found, idVendor=03f0, idProduct=5a07 Dec 15 09:10:44 namviper kernel: [ 797.614562] usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 Dec 15 09:10:44 namviper kernel: [ 797.614565] usb 3-3: Product: v220w Dec 15 09:10:44 namviper kernel: [ 797.614566] usb 3-3: Manufacturer: HP Dec 15 09:10:44 namviper kernel: [ 797.614568] usb 3-3: SerialNumber: 0426400000006660 Dec 15 09:10:44 namviper kernel: [ 797.615308] usb-storage 3-3:1.0: USB Mass Storage device detected Dec 15 09:10:44 namviper kernel: [ 797.615599] scsi host6: usb-storage 3-3:1.0 Dec 15 09:10:44 namviper root: loading HP Device 003 010 Dec 15 09:10:45 namviper python3: io/hpmud/musb.c 2183: [3413] hpmud_make_usb_uri() bus=003 dev=010 Dec 15 09:10:45 namviper python3: io/hpmud/musb.c 2281: hpmud_make_usb_uri() uri=hp:/usb/v220w?serial=SMART_INSTALL_ENABLED bytes_read=42 Dec 15 09:10:45 namviper /hp-config_usb_printer: hp-config_usb_printer[3413]: error: This is not a valid device Dec 15 09:10:45 namviper colord[1002]: (colord:1002): Cd-WARNING **: CdMain: failed to emit DeviceAdded: failed to register object: An object is already exported for the interface org.freedesktop.ColorManager.Device at /org/freedesktop/ColorManager/devices/sysfs_HP_v220w 

lsblk zeigt das Gerät nicht an und die Internetsuche für den Fehler zeigt nur die Debugging-Informationen zur Druckerinstallation an.

Ich denke, ich muss meinem System mitteilen, dass es als Speichergerät dienen soll, aber ich bin mir nicht sicher, wie.

Hier ist mein uname -a:

Linux namviper 4.10.0-42-generic #46~16.04.1-Ubuntu SMP Mon Dec 4 15:57:59 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 

Update: Laut der Antwort von KamilMaciorowski wurde der richtige Fahrer bereits erkannt:

$> cd "/sys/bus/usb/devices/3-3:1.0/" $> readlink ./driver ../../../../../../bus/usb/drivers/usb-storage 

Jetzt muss ich wissen, was ich mit diesen Informationen anfangen soll.

2

1 Antwort auf die Frage

3
Kamil Maciorowski

Anmerkung (Bearbeiten): Es stellte sich heraus, dass meine ursprüngliche Antwort (unten) das OP-Problem nicht löst, sondern nur eingegrenzt wird. Ich hatte Mühe, die Antwort zu löschen oder nicht, und ich lasse es für pädagogische Zwecke bleiben.


Ihr USB scheint 5a07statt 5307(?) Zu berichten. Vergleichen Sie usb.ids . 5a07ist nicht da, aber vielleicht stimmt etwas mit dem Druckertreiber überein. Der Mechanismus wird in dieser Antwort beschrieben (was im Hinblick auf das manuelle Anhängen eines Treibers zu pessimistisch erscheint).

Ich weiß nicht was genau passiert ist. Eigentlich usb-storage 3-3:1.0von syslogmir macht mich der Verdacht, dass usb-storage(welches das richtige Modul für einen Thumbdrive ist) geladen wurde, dann hpmud(?) Getreten; Ich bin mir nicht sicher.

Aber lassen Sie uns annehmen :

  • das falsch gemeldete idProductist das einzige Problem (dh in jedem anderen Aspekt funktioniert Ihr USB-Laufwerk einwandfrei),
  • es ist tatsächlich ein falscher Treiber angeschlossen
  • und alles, was Sie brauchen, ist, es abzunehmen und das Richtige anzubringen.

Sehen Sie sich diese andere Antwort an, sie zeigt auf diesen LWN-Artikel und sieht aus wie ein guter Anhaltspunkt (es gibt auch diese Antwort, die auf diesen Artikel verweist ). Das generische Beispiel ist:

Um ein Gerät von einem Treiber zu trennen, schreiben Sie einfach die Bus-ID des Geräts in die Unbind-Datei:

echo -n "1-1:1.0" > /sys/bus/usb/drivers/ub/unbind 

[…]

Um ein Gerät an einen Treiber zu binden, darf das Gerät nicht von einem anderen Treiber gesteuert werden.

[…]

Dann schreiben Sie einfach die Bus-ID des Geräts, das Sie binden möchten, in die Bindedatei für diesen Treiber:

echo -n "1-1:1.0" > /sys/bus/usb/drivers/usb-storage/bind 

In Ihrem Fall lautet die Bus-ID 3-3:1.0. Beachten Sie, dass dies vom verwendeten USB-Anschluss abhängt. Wenn Sie den USB-Stick in einen anderen Sockel stecken, ist dies anders. In einem Moment benötigen wir Root-Zugriff und aufgrund von Weiterleitungen ( >) ist es einfacher, eine separate Shell ( sudo -s) zu starten .

Überprüfen Sie zunächst den aktuell angeschlossenen Treiber:

cd "/sys/bus/usb/devices/3-3:1.0/" readlink ./driver 

Wenn Sie recht haben, wird es etwas anderes sein usb-storage.

Trennen Sie den Fahrer, was immer es ist:

echo -n "3-3:1.0" > ./driver/unbind 

Laden Sie den richtigen Treiber, falls er noch nicht geladen ist:

modprobe usb-storage 

Befestigen Sie es am Gerät:

echo -n "3-3:1.0" > /sys/bus/usb/drivers/usb-storage/bind 

Und bestätigen Sie:

readlink ./driver lsblk 

Vergiss nicht exitdie Wurzelschale.

Die Lösung ist nicht dauerhaft. Derzeit weiß ich nicht, wie ich Linux anweisen soll, immer den gewünschten Treiber zu laden (ich könnte ein Skript schreiben, um das obige zu automatisieren, aber es fühlt sich nicht nach dem richtigen Weg an). Trotzdem änderte sich der Thumbdrive vermutlich idProductnach einem schlechten Auswurf, so dass ich ihm auf lange Sicht nicht trauen würde. Sobald es mit einem erzwungenen usb-storageTreiber klappte, wollte ich ddrescuealle Daten sichern.

Vielen Dank für den ausführlichen Kommentar. Ich bin über den ersten Schritt verblüfft. `readlink. / driver` gibt` ../../../../../../../bus/usb/drivers/usb-storage `zurück recluze vor 6 Jahren 0
@recluze Das heißt, der richtige Fahrer ist schon da, denke ich. Bearbeiten Sie Ihre Frage, um diese Tatsache anzuzeigen. Meine Antwort trifft nicht zu und ich werde sie wahrscheinlich löschen. Kamil Maciorowski vor 6 Jahren 0
Klar, aber bitte lösche deine Antwort nicht. (Vielleicht nur oben kommentieren.) Es hat mir geholfen, viel über das Thema zu lernen. recluze vor 6 Jahren 0