-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 シェル コマンドを 1 つ以上入力するだけで、PC を更新して Android 携帯番号を取得できますか?

4

2 に答える 2

0

adb get-serialno私があなたの質問を正しく解釈すれば、一貫して実行できるようになりたいと思います。このコマンドが失敗する理由は 3 つあります。

  1. デバイスの ADB デーモンが悪い状態になります。
  2. ホストまたはデバイスの USB が失敗します。
  3. ホスト PC 上の ADB サーバーが悪い状態になります。

私は Ubuntu で Samsung の携帯電話をよく使ってきましたが、最も頻繁に見た問題からそれほど頻繁ではない問題へと順番に並べました。ケース 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)。

adb kill-server3 の場合は、aに続けてコマンドを再度実行することでこれを修正できます。

于 2012-10-16T01:22:27.270 に答える
0

以下のコマンドを使用してドライバーのバインドを解除します

*# $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')"

宣言 -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 ソニー エリクソン モバイル コミュニケーションズ 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に接続するためにAndroidデバイスを更新するにはどうすればよいですか? 以下のコマンドを実行しています: sudo sh -c "echo 0 > /sys/bus/usb/devices/2-5/authorized" Android モバイルを更新して PC に接続しますが、失敗しました。

于 2012-10-18T02:42:27.830 に答える