J'ai un problème avec un appareil spécifique qui n'est pas un appareil Android/mobile.
Il s’agit d’un lecteur multimédia avec un disque dur interne que je tente de connecter en tant que périphérique de stockage de masse afin de pouvoir copier des films/séries aussi.
Je vois ce qui suit lorsque je le connecte à mon système
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 me montre
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
Mon noyau et ma 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
Après beaucoup de lecture et de test.
J'ai découvert que cela est lié à une modification récente des règles Udev par défaut pour définir une règle fourre-tout pour les périphériques à gérer par MTP si elles ne correspondent à aucune autre règle udev pour les périphériques USB.
Au lieu que mon appareil soit monté comme un périphérique de stockage de masse USB, comme il le faisait auparavant.
J'ai constaté que je devais faire savoir à udev que ce périphérique devait être géré comme un périphérique de stockage de masse USB au lieu de la règle de capture de MTP.
J'ai d'abord besoin de mon identifiant d'appareil. En dessous c'est le dernier de la 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
Je suis sûr qu'il y a plus que cela ici, mais ça marche pour moi. Je prends l'ID de périphérique qui 174c:5106
et le remplace dans les règles udev ci-dessous.
$ cat /etc/udev/rules.d/90-myrules.rules
SUBSYSTEMS=="usb", ENV{MODALIAS}=="usb:174c:5106", ENV{MODALIAS}="usb-storage"
Je vois maintenant ce qui suit dans les journaux de mon système
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
Copiez d'abord le fichier /lib/udev/rules.d/69-libmtp.rules
dans /etc/udev/rules.d/69-libmtp.rules
:
$ Sudo cp /lib/udev/rules.d/69-libmtp.rules /etc/udev/rules.d/69-libmtp.rules
En haut de ce fichier, vous pouvez trouver:
# Some sensitive devices we surely don't wanna probe
ATTR{idVendor}=="0670", GOTO="libmtp_rules_end"
ATTR{idVendor}=="0471", ATTR{idProduct}=="083f", GOTO="libmtp_rules_end"
Ensuite, excluez le périphérique de mtp-probe
en ajoutant la ligne suivante après les lignes mentionnées:
ATTR{idVendor}=="093a", ATTR{idProduct}=="2516", GOTO="libmtp_rules_end"
J'ai trouvé mon ID de périphérique USB avec la commande lsusb
Shell. C'est 093a:2516