Tengo un teléfono HTC Android.
Cada vez que lo conecto a la computadora recibo un mensaje:
Android Phone: Could not open MTP device "[usb:002,003]"
Los números pueden ser diferentes. Pero el teléfono se conecta correctamente.
usb-devices
salida
T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 28 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=0bb4 ProdID=0f91 Rev=02.33
S: Manufacturer=HTC
S: Product=Android Phone
S: SerialNumber=FA41BWB00560
C: #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=06(still) Sub=01 Prot=01 Driver=usbfs
I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=00 Driver=(none)
lsusb
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 048d:1336 Integrated Technology Express, Inc. SD/MMC Cardreader
Bus 002 Device 004: ID 0bb4:0f91 HTC (High Tech Computer Corp.)
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 04b8:0898 Seiko Epson Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 046d:c05a Logitech, Inc. M90/M100 Optical Mouse
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
lsusb -t
/: Bus 07.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/2p, 12M
/: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M
/: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M
|__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/3p, 12M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
|__ Port 1: Dev 4, If 0, Class=Imaging, Driver=usbfs, 480M
|__ Port 1: Dev 4, If 1, Class=Vendor Specific Class, Driver=, 480M
|__ Port 3: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 480M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
|__ Port 2: Dev 2, If 0, Class=Vendor Specific Class, Driver=, 480M
|__ Port 2: Dev 2, If 1, Class=Printer, Driver=usblp, 480M
|__ Port 2: Dev 2, If 2, Class=Mass Storage, Driver=usb-storage, 480M
udevadm info -q all -n /dev/bus/usb/002/004
P: /devices/pci0000:00/0000:00:13.2/usb2/2-1
N: bus/usb/002/004
S: libmtp-2-1
E: BUSNUM=002
E: COLORD_DEVICE=1
E: COLORD_KIND=camera
E: DEVLINKS=/dev/libmtp-2-1
E: DEVNAME=/dev/bus/usb/002/004
E: DEVNUM=004
E: DEVPATH=/devices/pci0000:00/0000:00:13.2/usb2/2-1
E: DEVTYPE=usb_device
E: DRIVER=usb
E: GPHOTO2_DRIVER=PTP
E: ID_BUS=usb
E: ID_FOR_SEAT=usb-pci-0000_00_13_2-usb-0_1
E: ID_GPHOTO2=1
E: ID_MEDIA_PLAYER=1
E: ID_MODEL=Android_Phone
E: ID_MODEL_ENC=Android\x20Phone
E: ID_MODEL_ID=0f91
E: ID_MTP_DEVICE=1
E: ID_PATH=pci-0000:00:13.2-usb-0:1
E: ID_PATH_TAG=pci-0000_00_13_2-usb-0_1
E: ID_REVISION=0233
E: ID_SERIAL=HTC_Android_Phone_FA41BWB00560
E: ID_SERIAL_SHORT=FA41BWB00560
E: ID_USB_INTERFACES=:060101:ffff00:
E: ID_VENDOR=HTC
E: ID_VENDOR_ENC=HTC
E: ID_VENDOR_FROM_DATABASE=HTC (High Tech Computer Corp.)
E: ID_VENDOR_ID=0bb4
E: MAJOR=189
E: MINOR=131
E: PRODUCT=bb4/f91/233
E: SUBSYSTEM=usb
E: TAGS=:seat:uaccess:
E: TYPE=0/0/0
E: USEC_INITIALIZED=611981507
dmesg
[ 40.632283] usb 2-1: new high-speed USB device number 3 using ehci-pci
[ 40.765458] usb 2-1: New USB device found, idVendor=0bb4, idProduct=0f91
[ 40.765469] usb 2-1: New USB device strings: Mfr=2, Product=3, SerialNumber=4
[ 40.765475] usb 2-1: Product: Android Phone
[ 40.765480] usb 2-1: Manufacturer: HTC
[ 40.765485] usb 2-1: SerialNumber: FA41BWB00560
[ 40.766646] usb-storage 2-1:1.1: USB Mass Storage device detected
[ 40.767102] scsi host10: usb-storage 2-1:1.1
[ 40.864690] usb 2-1: USB disconnect, device number 3
[ 41.613079] usb 2-1: new high-speed USB device number 4 using ehci-pci
[ 41.746616] usb 2-1: New USB device found, idVendor=0bb4, idProduct=0f91
[ 41.746626] usb 2-1: New USB device strings: Mfr=2, Product=3, SerialNumber=4
[ 41.746633] usb 2-1: Product: Android Phone
[ 41.746638] usb 2-1: Manufacturer: HTC
[ 41.746643] usb 2-1: SerialNumber: FA41BWB00560
[ 101.942087] usb 2-1: reset high-speed USB device number 4 using ehci-pci
También descubrí que durante un corto período de tiempo después de conectar el teléfono, se declara un dispositivo de almacenamiento USB
I: If#= 0 Alt= 0 #EPs= 3 Cls=06(still) Sub=01 Prot=01 Driver=usbfs
I: If#= 1 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
Luego se desconecta y la clase cambia a ff
.
I: If#= 0 Alt= 0 #EPs= 3 Cls=06(still) Sub=01 Prot=01 Driver=usbfs
I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=00 Driver=(none)
lsusb
y encuentre su dispositivo o sus dispositivos (Bus y Dispositivo). 2) Inicie el comandoudevadm info -q all -n /dev/bus/usb/your_bus_id/your_device_id
y use Bus y Dispositivo. Agregue el resultado del comando en el paso 2 en su pregunta.lsusb
también, solo necesito la parte de tu teléfonousb-devices
. @ABRespuestas:
Desde la
dmesg
salida, está claro que el teléfono se conectó dos veces.El problema es:
Ambos modos de conexión telefónica utilizan los mismos atributos
idVendor
/idProduct
/bcdDevice
.Las reglas de libmtp udev usan solo
idVendor
/idProduct
para filtrar dispositivos además de atributos no importantes / comunesACTION!="add"
,ENV{MAJOR}!="?*"
ySUBSYSTEM=="usb"
El uso de las reglas libmtp udev
ATTR
(noATTRS
), se dirige exactamente a este nodo del dispositivo/devices/pci0000:00/0000:00:13.2/usb2/2-1
. Por lo tanto, no podemos usar los detalles de los nodos de las interfaces, ya que son nodos secundarios para este.Para saber qué está pasando, use
udevadm monitor
. Para ver solo eventos sin detalles.udevadm monitor -u
,-u
para mostrar solo eventos UDEV (para salida limpia)Para obtener detalles (propiedades del entorno) use
udevadm monitor -u -p
en su lugar y compare la salida en ese nodo:UDEV [107.024195] add /devices/pci0000:00/0000:00:13.2/usb2/2-1 (usb)
UDEV [107.998137] add /devices/pci0000:00/0000:00:13.2/usb2/2-1 (usb)
Note la diferencia en
ID_USB_INTERFACES
Otra forma más limpia, utilizando una regla udev para recopilar solo lo que necesitamos:
Agregue una regla a
/lib/udev/rules.d/69-libmtp.rules
justo despuésLABEL="libmtp_usb_rules"
:Reglas de recarga
Vuelva a enchufar el teléfono una vez.
Esta regla debe activarse dos veces. Comparación de salida en ese nodo:
diff udev-phone-mtp_*.log
debería traer: (esta es solo la parte interesante)
Exactamente qué Pilot6 (OP) podría atraparlo usando
usb-devices
antes de que se volviera a conectar.Sugiero agregar esta regla a
/lib/udev/rules.d/69-libmtp.rules
, justo después deLABEL="libmtp_usb_rules"
:fuente