web-dev-qa-db-ja.com

Android USBホストと隠しデバイス

USBデバイスと通信する必要があるAndroidアプリケーションを開発しています。アプリで標準のgoogle APIを使用しようとしましたが、デバイスのリストは常に空です。

Google APIでUSBデバイス情報を使用する場合も同じです。 Google APIで検索されたデバイスのリストは空です。

lsusbの結果は次のとおりです。

Bus 001 Device 001: ID 1d6b:0001
Bus 002 Device 001: ID 1d6b:0002
Bus 003 Device 001: ID 1d6b:0001
Bus 002 Device 002: ID 2226:0014

私のデバイスは2226:0014です

eclipseのログ:

I/USB3G(92): event { 'add', '/devices/platform/sw-ehci.1/usb2/2-1', 'usb', '', 189, 133 }
I/USB3G(92): path : '/sys/devices/platform/sw-ehci.1/usb2/2-1'
I/USB3G(92): VID :size 5,vid_path '/sys/devices/platform/sw-ehci.1/usb2/2-1/idVendor',VID  '2226
I/USB3G(92): '.
I/USB3G(92): PID :size 5,Pid_path '/sys/devices/platform/sw-ehci.1/usb2/2-1/idProduct',PID  '0014
I/USB3G(92): '.
I/USB3G(92): cmd=/system/etc/usb_modeswitch.sh /system/etc/usb_modeswitch.d/2226_0014 &,
I/USB3G(92): excute ret : 0,err:No such file or directory

RS232アダプタ、Bluetoothドングルなどのデバイスを接続しても何も起こりません。APIとlsusbからの結果はありません。

デバイスのプロトコルは、ezusbライブラリに基づいています。 Android v .: 4.0.3カーネルv .: 3.0.8ファームウェアビルド:crane_evb-eng 4.0.3 IMLK74k 20120330

APIを介して非表示のUSBデバイスにアクセスする方法はありますか?または、ドライバーを記述してファームウェアにパッチを適用することにより、このデバイスのサポートを実装する必要がありますか?

更新:* system/etc/usb_modeswitch.d/*に名前2226_0014を含む情報ファイルを作成しても

DefaultVendor= 0x2226
DefaultProduct=0x0014
TargetVendor=  0x2226
TargetProductList="0014"
MessageEndpoint="0x00"
NeedResponse=1
CheckSuccess=20

私は同じエラーを受け取ります:「そのようなファイルまたはディレクトリはありません」

24

USBホストAPIサポートを有効にするには、次の名前のファイルを追加する必要があります
Android.hardware.usb.Host.xmlおよび次の行が含まれます。

<permissions>
 <feature name="Android.hardware.usb.Host"/>
</permissions>

フォルダーに

/system/etc/permissions

そのフォルダ内のファイルを見つけます

handheld_core_hardware.xml or tablet_core_hardware.xml 

そして追加

<feature name="Android.hardware.usb.Host" />

<permissions> セクション。

デバイスを再起動します。 USBホストAPIは動作するはずです。

CUBE U30GTでAndroid 4。

43
Greg-q

優れた!これは、Android 4.0.4を実行しているEnvizen V700NAで機能しました。

マイナータイプミス:<feature name="Android.hardware.usb.Host">

<feature name="Android.hardware.usb.Host"/>

手順:

  1. adb pull /system/etc/permissions/tablet_core_hardware.xml
  2. そのファイルを更新し、Greg-qの指定に従ってAndroid.hardware.usb.Host.xmlを作成します。
  3. adb Push Android.hardware.usb.Host.xml/system/etc/permissions
  4. adb Push tablet_core_hardware.xml/system/etc/permissions
  5. リブート。
6
markjuggles

Micromax A120 canvas 2電話(KitKat 4.4.2)でチャームのように機能しました。今、私は私のArduinoを制御することができます!私はbusyboxツールを使用してすべてのコマンドライン作業を行いました(そうでなければchmodは機能しません)。私の手順(おそらくいくつかは必要ありませんでした):

(0)Windows 8コンピューターにPDAnetドライバー( http://pdanet.co/a/ )をインストールします。 (1)Vroot(現在はiRoot)を使用して http://www.mgyun.com/m/en で電話のルートを設定します。非常に簡単なのは、su grant/denyページが部分的に中国語であり、大したことではないことです。 (2)busyboxとjackpalのAndroid-Terminal-Emulatorをインストールします(github https://github.com/jackpal/Android-Terminal-Emulator またはPlay Store https:// play。 google.com/store/apps/details?id=jackpal.androidterm&hl=en

(3)ターミナルウィンドウを開き、スーパーユーザーになります。

# su

(4)ファイルシステムは読み取り専用であるため、再マウントする必要があります。

# mount -o rw,remount -t yaffs2 /

または

# mount -o rw,remount -t rootfs /

または

# mount -o rw,remount -t rootfs rootfs /system

http://www.pocketmagic.net/write-on-the-Android-read-only-file-system/ も参照してください。 Android 2.3:読み取り専用ファイルシステムがスタックしています また、 https://ckirbach.wordpress.com/2012/11/27/how-to-remount-system-as-read-write-in-Android/

(5)default.propを読み書き可能にします:

chmod 666 /default.prop

(6)/default.propを編集し、次の変更を行います。

ro.secure=0
ro.debuggable=1
persist.service.adb.enable=1

https://Android.stackexchange.com/questions/28653/obtaining-root-by-modifying-default-propro-secure または http://bclary.com/blog/ 2014/04/14/splitting-and-packing-Android-boot-images /

最後に、上記の答えが示すように、完全を期すために( https://stackoverflow.com/a/11992683/979369 ):

(7)USBホストAPIサポートを有効にするには、次の行を含むAndroid.hardware.usb.Host.xmlという名前のファイルを追加する必要があります。

<permissions>
 <feature name="Android.hardware.usb.Host"/>
</permissions>

フォルダーに

/system/etc/permissions

そのフォルダ内にあるという名前のファイルを見つける

handheld_core_hardware.xml or tablet_core_hardware.xml 

そして追加

<feature name="Android.hardware.usb.Host" />

セクションに。

(8)デバイスを再起動します。 USBホストAPIは動作するはずです。

2
mahesh

mK809でadbを使用しました、Android 4.1 Jelly bean、およびコマンドは次のとおりです。

adb remount /../../file.xml rw adb Push ...

通常のコマンドでi'ventパーミッションがあり、ファイルは読み取り専用です

私の悪い英語でごめんなさい:P

1
Marco