it-swarm.com.de

Android USB Host und versteckte Geräte

Ich entwickle eine Android Anwendung, in der ich mit einem USB-Gerät kommunizieren muss. Ich habe versucht, die standardmäßige Google API in meiner App zu verwenden, aber die Liste der Geräte ist immer leer.

Gleiche Dinge, wenn ich USB-Geräteinformationen mit Google API verwende. Die Liste der von Google API durchsuchten Geräte ist leer.

lsusb liefert folgende Ergebnisse:

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

mein Gerät ist 2226: 0014

protokoll von 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

Wenn ich Geräte wie RS232-Adapter, Bluetooth-Dongle einstecke, passiert nichts und es gibt keine Ergebnisse von API und lsusb.

Das Protokoll eines Geräts basiert auf der ezusb-Bibliothek. Android v .: 4.0.3 kernel v .: 3.0.8 firmware build: crane_evb-eng 4.0.3 IMLK74k 20120330

Gibt es eine Möglichkeit, über die API auf versteckte USB-Geräte zuzugreifen, oder sollte ich die Unterstützung dieses Geräts implementieren, indem ich einen Treiber schreibe und ihn in die Firmware einpatche?

UPDATE: Auch wenn ich eine Info-Datei in * system/etc/usb_modeswitch.d/* mit dem Namen 2226_0014 erstelle

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

ich erhalte den gleichen Fehler: "Keine solche Datei oder Verzeichnis"

24

Um die USB-Host-API-Unterstützung zu aktivieren, müssen Sie eine Datei mit dem Namen hinzufügen
Android.hardware.usb.Host.xml und enthält die folgenden Zeilen:

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

in Ordner

/system/etc/permissions

in diesem Ordner finden Sie die Datei mit dem Namen

handheld_core_hardware.xml or tablet_core_hardware.xml 

und hinzufügen

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

in <permissions> Sektion.

Starte dein Gerät neu. USB-Host-API sollte funktionieren.

Getestet auf CUBE U30GT mit Android 4.

43
Greg-q

Ausgezeichnet! Dies funktionierte auf meinem Envizen V700NA unter Android 4.0.4.

Kleiner Tippfehler: <feature name="Android.hardware.usb.Host">

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

Verfahren:

  1. adb pull /system/etc/permissions/tablet_core_hardware.xml
  2. Aktualisieren Sie diese Datei und erstellen Sie Android.hardware.usb.Host.xml, wie von Greg-q angegeben.
  3. adb Push Android.hardware.usb.Host.xml/system/etc/permissions
  4. adb Push tablet_core_hardware.xml/system/etc/permissions
  5. Starten Sie neu.
6
markjuggles

Arbeitete wie ein Zauber auf einem Micromax A120 Canvas 2-Telefon (KitKat 4.4.2). Jetzt kann ich mein Arduino steuern! Ich habe die gesamte Kommandozeilenarbeit mit Busybox-Tools erledigt (sonst würde chmod nicht funktionieren). Meine Schritte (vielleicht waren einige nicht erforderlich):

(0) Installieren Sie die PDAnet-Treiber ( http://pdanet.co/a/ ) auf meinem Windows 8-Computer. (1) Rooten Sie das Telefon mit Vroot (jetzt iRoot) unter http://www.mgyun.com/m/en . Sehr einfach, der einzige Haken ist, dass die su grant/deny-Seite teilweise auf Chinesisch ist, keine große Sache. (2) installiere busybox und jackpals Android-Terminal-Emulator (siehe github https://github.com/jackpal/Android-Terminal-Emulator oder Play Store https: // play). google.com/store/apps/details?id=jackpal.androidterm&hl=en )

(3) Öffnen Sie ein Terminalfenster und werden Sie zum Superuser:

# su

(4) Das Dateisystem ist möglicherweise schreibgeschützt, sodass Sie es möglicherweise erneut bereitstellen müssen:

# mount -o rw,remount -t yaffs2 /

oder

# mount -o rw,remount -t rootfs /

oder

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

siehe http://www.pocketmagic.net/write-on-the-Android-read-only-file-system/ Siehe auch Android 2.3: Nur-Lese-Dateisystem hängt also, https://ckirbach.wordpress.com/2012/11/27/how-to-remount-system-as-read-write-in-Android/

(5) setze default.prop auf read/write:

chmod 666 /default.prop

(6) Bearbeiten Sie /default.prop und nehmen Sie die folgenden Änderungen vor:

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

siehe https://Android.stackexchange.com/questions/28653/beibehalten-der-stammdaten-durch-modifizieren-default-propro-secure oder http://bclary.com/blog/ 2014/04/14/Aufteilen und Packen von Android-Boot-Images /

Zum Schluss, nur der Vollständigkeit halber, wie die Antwort oben sagt ( https://stackoverflow.com/a/11992683/979369 ):

(7) Um die USB-Host-API-Unterstützung zu aktivieren, sollten Sie eine Datei mit dem Namen Android.hardware.usb.Host.xml hinzufügen, die die folgenden Zeilen enthält:

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

in Ordner

/system/etc/permissions

in diesem Ordner finden Sie die Datei mit dem Namen

handheld_core_hardware.xml or tablet_core_hardware.xml 

und hinzufügen

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

in Abschnitt.

(8) Starten Sie Ihr Gerät neu. USB-Host-API sollte funktionieren.

2
mahesh

ich habe AdB auf MK809 verwendet, Android 4.1 Jelly Bean, und der Befehl sind:

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

mit normalem Befehl erhalte ich die Erlaubnis und die Datei ist schreibgeschützt

Entschuldigung für mein schlechtes Englisch: P

1
Marco