Deaktivieren Sie die MTP-Udev-Regeln für ein bestimmtes Gerät, damit es als USB-Massenspeichergerät eingehängt werden kann

9109
nelaaro

Ich habe ein Problem mit einem bestimmten Gerät, das kein Android / Mobilgerät ist.
Es ist ein Mediaplayer mit einer internen Festplatte, den ich als Massenspeichergerät verbinden möchte, damit ich Filme / Serien auch davon kopieren kann.

Ich sehe Folgendes, wenn ich es mit meinem System verbinde

kernel: usb 1-4: new high-speed USB device number 7 using xhci_hcd systemd[1]: Starting Cleanup of Temporary Directories... systemd[1]: Started Cleanup of Temporary Directories. mtp-probe[4978]: checking bus 1, device 7: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-4" kernel: usb 1-4: can't set config #1, error -110 mtp-probe[4978]: bus: 1, device: 7 was not an MTP device kernel: usb 1-4: USB disconnect, device number 7 

lsusb zeigt es mir

Bus 001 Device 008: ID 174c:5106 ASMedia Technology Inc. ASM1051 SATA 3Gb/s bridge Couldn't open device, some information will be missing Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.10 bDeviceClass 0  bDeviceSubClass 0  bDeviceProtocol 0  bMaxPacketSize0 64 idVendor 0x174c ASMedia Technology Inc. idProduct 0x5106 ASM1051 SATA 3Gb/s bridge bcdDevice 0.01 iManufacturer 2  iProduct 3  iSerial 1  bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 32 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0  bmAttributes 0xc0 Self Powered MaxPower 0mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 8 Mass Storage bInterfaceSubClass 6 SCSI bInterfaceProtocol 80 Bulk-Only iInterface 0  Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 

Mein Kernel und meine Distribution

uname -a Linux aaron-pc 4.9.24-1-MANJARO #1 SMP PREEMPT Fri Apr 21 08:32:28 UTC 2017 x86_64 GNU/Linux 
4

2 Antworten auf die Frage

4
nelaaro

Nach vielem Lesen und Testen.

Ich habe herausgefunden, dass dies mit einer kürzlich vorgenommenen Änderung der Udev-Standardregeln zusammenhängt, um eine Catch-All-Regel für Geräte festzulegen, die von MTP behandelt werden, wenn sie nicht mit anderen udev-Regeln für USB-Geräte übereinstimmen.

Statt dass mein Gerät wie früher als USB-Massenspeichergerät angebracht wurde.

Ich habe festgestellt, dass ich udev wissen lassen muss, dass dieses Gerät ein USB-Massenspeichergerät verwaltet werden sollte, anstatt die MTP-Regel "catch all"

Zuerst brauche ich meine Geräte-ID. Darunter ist der letzte in der Liste

$ lsusb  Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 003: ID 8087:0a2a Intel Corp.  Bus 001 Device 002: ID 04f2:b51d Chicony Electronics Co., Ltd  Bus 001 Device 006: ID 04e8:6860 Samsung Electronics Co., Ltd Galaxy (MTP) Bus 001 Device 005: ID 0b05:181b ASUSTek Computer, Inc.  Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 007: ID 174c:5106 ASMedia Technology Inc 

Ich bin sicher, es gibt mehr als das, was ich hier habe, aber das funktioniert für mich. Ich nehme die Geräte-ID 174c:5106und ersetze sie in den folgenden udev-Regeln.

$ cat /etc/udev/rules.d/90-myrules.rules  SUBSYSTEMS=="usb", ENV=="usb:174c:5106", ENV="usb-storage" 

Ich sehe jetzt in meinen Systemprotokollen Folgendes

journalctl -fe  kernel: usb 1-2: USB disconnect, device number 9 kernel: usb 1-2: new high-speed USB device number 10 using xhci_hcd mtp-probe[9850]: checking bus 1, device 10: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2" mtp-probe[9850]: bus: 1, device: 10 was not an MTP device kernel: usb-storage 1-2:1.0: USB Mass Storage device detected kernel: scsi host3: usb-storage 1-2:1.0 kernel: usbcore: registered new interface driver usb-storage kernel: usbcore: registered new interface driver uas kernel: scsi 3:0:0:0: Direct-Access ST310005 24AS JC4B PQ: 0 ANSI: 0 kernel: sd 3:0:0:0: Attached scsi generic sg2 type 0 kernel: sd 3:0:0:0: [sdb] 1953525168 512-byte logical blocks: (1.00 TB/932 GiB) kernel: sd 3:0:0:0: [sdb] Write Protect is off kernel: sd 3:0:0:0: [sdb] Mode Sense: 23 00 00 00 kernel: sd 3:0:0:0: [sdb] No Caching mode page found kernel: sd 3:0:0:0: [sdb] Assuming drive cache: write through kernel: sdb: sdb1 kernel: sd 3:0:0:0: [sdb] Attached SCSI disk 
scheint nur für einen konkreten USB-Stick zu funktionieren. kyb vor 6 Jahren 1
@kyb Das ist ein Beispiel, wie diese Regel hinzugefügt wird, damit sie für mein Laufwerk funktioniert. Ich werde die Antwort aktualisieren und zeigen, wie ich die Geräte-ID meines Laufwerks erhalten habe nelaaro vor 6 Jahren 1
2
Eugen Konkov

Kopieren Sie zuerst die Datei /lib/udev/rules.d/69-libmtp.rulesnach /etc/udev/rules.d/69-libmtp.rules:

$ sudo cp /lib/udev/rules.d/69-libmtp.rules /etc/udev/rules.d/69-libmtp.rules 

Oben in dieser Datei finden Sie:

# Some sensitive devices we surely don't wanna probe ATTR=="0670", GOTO="libmtp_rules_end" ATTR=="0471", ATTR=="083f", GOTO="libmtp_rules_end" 

Dann schließen Sie das Gerät aus, mtp-probeindem Sie nach den genannten Zeilen die nächste Zeile hinzufügen:

ATTR=="093a", ATTR=="2516", GOTO="libmtp_rules_end" 

Ich habe meine USB-Geräte-ID mit dem lsusbShell-Befehl gefunden. Es ist093a:2516

Das ist falsch, bearbeiten Sie Dateien nicht manuell unter `/ lib`. Ihre Änderungen werden mit der nächsten Paketaktualisierung gelöscht. Machen Sie stattdessen eine Überschreibung unter `/ etc / udev / rules.d`. ulidtko vor 6 Jahren 0
@ulidtko: Ich habe das in einigen offiziellen Foren gesehen. Aber Sie haben Recht. Soll ich ganze `69-libmtp.rules` von` / lib` nach `/ etc / udev / rules.d` kopieren und dann Änderungen daran vornehmen? Eugen Konkov vor 6 Jahren 0
Ja. Regeldateien unter `/ etc / udev / rules.d` überschreiben diejenigen in` / lib / udev / rules.d`, wenn sie identisch benannt sind. Ähnlich wie mit systemd überschreibende Unit-Dateien. ulidtko vor 6 Jahren 1
@ulidtko: Habe die Antwort aktualisiert Eugen Konkov vor 6 Jahren 0