-1

我在linux PC上做一个android手机测试,有时,发现PC无法读取手机号码如下:

             **XXXXX@XXXXXX:~$ adb devices
             List of devices attached**

我运行 lsusb 命令并得到以下结果:

*Bus 002 Device 088: ID 0fce:5178 Sony Ericsson Mobile Communications AB 

Device Descriptor:

  bLength                18

  bDescriptorType         1

  bcdUSB               2.00

  bDeviceClass            0 (Defined at Interface level)

  bDeviceSubClass         0 

  bDeviceProtocol         0 

  bMaxPacketSize0        64

  idVendor           0x0fce Sony Ericsson Mobile Communications AB

  idProduct          0x5178 

  bcdDevice            2.28

  iManufacturer           2 Sony

  iProduct                3 LT*****

  iSerial                 4 CB5A****

  **bNumConfigurations      0**

Device Qualifier (for other device speed):

  bLength                10

  bDescriptorType         6

  bcdUSB               2.00

  bDeviceClass            0 (Defined at Interface level)

  bDeviceSubClass         0 

  bDeviceProtocol         0 

  bMaxPacketSize0        64

  bNumConfigurations      1

Device Status:     0x0000

  (Bus Powered)*


Based on this, if reconnet my mobile phone into linux PC, this is OK,and running lsusb commands, it will get the below:

*Bus 002 Device 089: ID 0fce:5178 Sony Ericsson Mobile Communications AB

Device Descriptor:

  bLength                18

  bDescriptorType         1

  bcdUSB               2.00

  bDeviceClass            0 (Defined at Interface level)

  bDeviceSubClass         0 

  bDeviceProtocol         0 

  bMaxPacketSize0        64

  idVendor           0x0fce Sony Ericsson Mobile Communications AB

  idProduct          0x5178 

  bcdDevice            2.28

  iManufacturer           2 Sony

  iProduct                3 LT*****

  iSerial                 4 CB5A****

  **bNumConfigurations      1**

配置描述符:

bLength                 9

bDescriptorType         2

wTotalLength           62

bNumInterfaces          2

bConfigurationValue     1

iConfiguration          0 

bmAttributes         0xc0

  Self Powered

MaxPower              500mA

Interface Descriptor:

  bLength                 9

  bDescriptorType         4

  bInterfaceNumber        0

  bAlternateSetting       0

  bNumEndpoints           3

  bInterfaceClass       255 Vendor Specific Class

  bInterfaceSubClass    255 Vendor Specific Subclass

  bInterfaceProtocol      0 

  iInterface              5 MTP

  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     0x01  EP 1 OUT

    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     0x82  EP 2 IN

    bmAttributes            3

      Transfer Type            Interrupt

      Synch Type               None

      Usage Type               Data

    wMaxPacketSize     0x001c  1x 28 bytes

    bInterval               6

Interface Descriptor:

  bLength                 9

  bDescriptorType         4

  bInterfaceNumber        1

  bAlternateSetting       0

  bNumEndpoints           2

  bInterfaceClass       255 Vendor Specific Class

  bInterfaceSubClass     66 

  bInterfaceProtocol      1 

  iInterface              0 

  Endpoint Descriptor:

    bLength                 7

    bDescriptorType         5

    bEndpointAddress     0x83  EP 3 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

设备限定符(用于其他设备速度):

 bLength                10

  bDescriptorType         6

  bcdUSB               2.00

  bDeviceClass            0 (Defined at Interface level)

  bDeviceSubClass         0 

  bDeviceProtocol         0 

  bMaxPacketSize0        64

  bNumConfigurations      1

Device Status:     0x0000

(总线供电)*

很明显,bNumConfigurations 值为 1 会得到正确的结果。如果有可能,我没有重新连接android手机和linux PC,只输入一个或多个linux shell命令,让PC可以更新获取android手机号码?

4

2 回答 2

0

如果我正确解释您的问题,您希望能够adb get-serialno始终如一地运行。我发现这个命令失败有以下三个原因:

  1. 设备上的 ADB 守护程序处于错误状态。
  2. 主机或设备上的 USB 出现故障。
  3. 主机 PC 上的 ADB 服务器处于错误状态。

我在 Ubuntu 上使用三星手机进行了很多工作,并从我最常看到的问题到不太常见的问题订购了这些手机。对于情况 1 和 2,我通常会找到分离并重新附加来修复它,或者有时会重复命令调用。同样,如果我正确解释您的问题,您希望能够从命令行执行所有操作。在 Ubuntu 上,您取消绑定并重新绑定设备,这应该接近分离和重新连接周期。从命令行看,应该是这样的:

# $1 - VID[:PID]
usb_id_to_bind()
{
  declare -r dev_name="$(lsusb|sed -rn 's_^Bus ([0-9]{3}) Device ([0-9]{3}): ID '"$1"'.*_/dev/bus/usb/\1/\2_p')"
  declare -r dev_path="$(udevadm info -q path -n"$dev_name")"

  basename "$dev_path"
}

usb_unbind()
{
  echo "$(usb_id_to_bind "$@")"|sudo tee /sys/bus/usb/drivers/usb/unbind
}

usb_bind()
{
  echo "$(usb_id_to_bind "$@")"|sudo tee /sys/bus/usb/drivers/usb/bind
}

usb_unbind 04e8:6866; usb_bind 04e8:6866

如果这不起作用,您可能需要重新启动手机 ( adb reboot)。

对于 3,您可以使用 aadb kill-server后跟该命令再次修复此问题。

于 2012-10-16T01:22:27.270 回答
0

使用以下命令取消绑定驱动程序

*# $1 - VID[:PID]

usb_id_to_bind()

{

声明 -r dev_name="$(lsusb|sed -rn 's_^Bus ([0-9]{3}) 设备 ([0-9]{3}): ID '"$1"'.*_/dev /bus/usb/\1/\2_p')"

声明 -r dev_path="$(udevadm info -q path -n"$dev_name")"

基本名称“$dev_path”}

usb_unbind()

{

echo "$(usb_id_to_bind "$@")"|sudo tee /sys/bus/usb/drivers/usb/unbind

}

usb_bind()

{

echo "$(usb_id_to_bind "$@")"|sudo tee /sys/bus/usb/drivers/usb/bind

}

usb_unbind 04e8:6866;

但是在运行 lsusb 命令时,手机似乎仍然连接如下:

*总线 008 设备 001:ID 1d6b:0001 Linux Foundation 1.1 根集线器

总线 007 设备 002:ID 03f0:0325 Hewlett-Packard

总线 007 设备 001:ID 1d6b:0001 Linux Foundation 1.1 根集线器

总线 006 设备 001:ID 1d6b:0001 Linux Foundation 1.1 根集线器

总线 005 设备 001:ID 1d6b:0001 Linux Foundation 1.1 根集线器

总线 004 设备 001:ID 1d6b:0001 Linux Foundation 1.1 根集线器

总线 003 设备 001:ID 1d6b:0001 Linux Foundation 1.1 根集线器

总线 002 设备 014:ID 0fce:5178 Sony Ericsson Mobile Communications AB

总线 002 设备 006:ID 046d:c03d Logitech, Inc. M-BT96a Pilot 光学鼠标

总线 002 设备 003:ID 0409:005a NEC Corp. 高速集线器

总线 002 设备 001:ID 1d6b:0002 Linux Foundation 2.0 根集线器

总线 001 设备 001:ID 1d6b:0002 Linux Foundation 2.0 根集线器*

如何让安卓设备更新连接linux PC?我运行以下命令: sudo sh -c "echo 0 > /sys/bus/usb/devices/2-5/authorized" 让我们的 android 手机更新连接 PC,它失败了。

于 2012-10-18T02:42:27.830 回答