Forum: Mikrocontroller und Digitale Elektronik AVRs mit Android flashen, Problem mit USB-device


von michi099 (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich habe mir folgende Toolchain inkl. avrdude auf mein Android 
Smartphone (Xperia S, Android 4.1.2, gerootet + busybox) geladen:
https://code.google.com/p/andavr/

Danach habe ich ein kleines Testprogramm geschrieben, das Kompilieren 
funktionierte ohne Probleme.

Leider traten Probleme bei der Verwendung von avrdude auf, das Gerät 
/dev/ttyACM0, welches am Desktop zum Erfolg führt, gibt es hier nicht. 
Stattdessen sind alle möglichen tty aufgelistet (siehe Anhang).

lsusb:
2341:0042 (bus 1, device 3)
1d6b:0002 (bus 1, device 1)

avrdude:
avrdude -cstk500v2 -P/dev/* -b115200 -patmega2560 
-C/data/data/jackpal.androidterm/local/etc/avrdude.conf 
-Uflash:w:main.hex

Hat hier irgendjemand eine Idee, was man da machen kann?

Mfg Michael

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

die Frage ist ob Android hier den nötigen Treiber für USB-Serial 
mitbringt. Schau doch mal mit dmesg ob und als was dein Programmer 
erkannt wird.

Sascha

von michi099 (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

erstmal vielen Dank für die Antwort,
der Auszug von DMESG ist im Anhang.

Hast du hier einen Lösungsansatz?

Mfg Michael

von Sascha W. (sascha-w)


Lesenswert?

ok dann hat er keinen Treiber,

wenn ein Treiber geladen wird dann sollte das in etwa so aussehen (hier 
an meinem B Pi)

[Sat Feb 28 13:20:28 2015] ehci_irq: port change detect
[Sat Feb 28 13:20:29 2015] ehci_irq: port change detect
[Sat Feb 28 13:20:29 2015] The port change to OHCI now!
[Sat Feb 28 13:20:29 2015] usb 2-1: new full-speed USB device number 4 
using sw-ohci
[Sat Feb 28 13:20:29 2015] usb 2-1: New USB device found, idVendor=0403, 
idProduct=6001
[Sat Feb 28 13:20:29 2015] usb 2-1: New USB device strings: Mfr=1, 
Product=2, SerialNumber=0
[Sat Feb 28 13:20:29 2015] usb 2-1: Product: USB <-> Serial
[Sat Feb 28 13:20:29 2015] usb 2-1: Manufacturer: FTDI
[Sat Feb 28 13:20:29 2015] usbcore: registered new interface driver 
usbserial
[Sat Feb 28 13:20:29 2015] usbcore: registered new interface driver 
usbserial_generic
[Sat Feb 28 13:20:29 2015] USB Serial support registered for generic
[Sat Feb 28 13:20:29 2015] usbserial: USB Serial Driver core
[Sat Feb 28 13:20:29 2015] usbcore: registered new interface driver 
ftdi_sio
[Sat Feb 28 13:20:29 2015] USB Serial support registered for FTDI USB 
Serial Device
[Sat Feb 28 13:20:29 2015] ftdi_sio 2-1:1.0: FTDI USB Serial Device 
converter detected
[Sat Feb 28 13:20:29 2015] usb 2-1: Detected FT232BM
[Sat Feb 28 13:20:29 2015] usb 2-1: Number of endpoints 2
[Sat Feb 28 13:20:29 2015] usb 2-1: Endpoint 1 MaxPacketSize 64
[Sat Feb 28 13:20:29 2015] usb 2-1: Endpoint 2 MaxPacketSize 64
[Sat Feb 28 13:20:29 2015] usb 2-1: Setting MaxPacketSize 64
[Sat Feb 28 13:20:29 2015] usb 2-1: FTDI USB Serial Device converter now 
attached to ttyUSB0
[Sat Feb 28 13:20:29 2015] ftdi_sio: v1.6.0:USB FTDI Serial Converters 
Driver

an der Ausgabe hier kann man dann auch den zugeordneten Anschluss, hier 
ttyUSB0 ablesen.

Ob du unter Android den benötigten Treiber nachinstallieren kannst - 
keine Ahnung. Benötigt das Arduino unter WIN einen extra Treiber und 
wenn ja gibts den auch für Linux?

Sascha

: Bearbeitet durch User
von michi099 (Gast)


Lesenswert?

Unter Windows braucht das Board einen Treiber, ich verwende jedoch als 
Deskop auch Linux (erscheint dabei als /dev/ttyACM0).

Dabei habe ich mittlerweile herausgefunden, dass hier das Kernel-Modul 
cdc-acm benötigt wird:
http://wiki.openmoko.org/wiki/USB_CDC_ACM
http://stackoverflow.com/questions/16838667/run-avrdude-on-android-with-samsung-devices

Ich habe weiters mal nachgesehen ob ich das Modul möglicherweise schon 
habe und es möglicherweise nur nicht verwendet wird. Dies ist leider 
nicht der Fall:

ls /system/lib/modules
ansi_cprng.ko
bcm4330.ko
cls_flow.ko
dal_remotetest.ko
dma_test.ko
evbug.ko
gspca_main.ko
hid-logitech-dj.ko
lcd.ko
mmc_block_test.ko
mmc_test.ko
msm-buspm-dev.ko
qce.ko
qcedev.ko
qcrypto.ko
sch_dsmark.ko
scsi_wait_scan.ko
test-iosched.ko

Nun ist die Frage, wie man dieses Modul auf das Smartphone bekommnt, in 
manchen (custom) kernels ist es jedenfalls vorhanden:
http://forum.xda-developers.com/htc-sensation/help/usb-otg-usbmanager-t2842639

Hast du eine Idee wie man zu dem cdc-acm Modul kommt?

Mfg Michael

von michi099 (Gast)


Angehängte Dateien:

Lesenswert?

Erstmal möchte ich mich für deinen tollen Anstoß bedanken, es 
funktioniert nun alles wie gewollt.

Falls jemand interesse an der Vorgehensweise hat:

Um ein Funktionieren der LKMs zu gewährleisten habe ich mir die Sourcen 
für meine aktuell verwendete Linux-Version heruntergeladen 
(http://developer.sonymobile.com/downloads/xperia-open-source-archives/open-source-archive-for-build-6-2-b-1-96/).

-> Treiber für Arduino-Board
1) im build Verzeichnis in den Ordner drivers/usb/class/
2) Hier gibt es nun die Files cdc-acm.c und cdc-acm.h
3) Makefile erstellen (siehe Anhang - Makefile_cdc-acm)
4) make
5) adb push cdc-acm.ko <destination>
6) insmod cdc-acm.ko

Da ich auch 'eigenständige' Mikrocontroller habe, möchte ich auch 
mittels mySmartUSB light flashen können. Hier sind aber andere Treiber 
erforderlich - siehe dmesg_mySmartUSB.

-> Treiber für MySmartUSB light
1) im build Verzeichnis in den Ordner drivers/usb/serial/
2) Hier gibt es nun die Files usbserial.c usb-serial.c generic.c bus.c 
cp210x.c (evtl. auch Header, ich habe einfach das ganze Verzeichnis 
kopiert)
3) Makefile erstellen (siehe Anhang - Makefile_usbserial)
4) make
5) adb push usbserial.ko <destination>
   adb push cp210x.ko <destination>
6) insmod usbserial.ko
   insmod cp210x.c

Mfg Michael

von Sascha W. (sascha-w)


Lesenswert?

na schön das sich das Problem in einer weiteren Nachtschicht hat lösen 
lassen ;-)

Sascha

von michi099 (Gast)


Lesenswert?

Ich dachte für soetwas gäbe es Nächte? ;)

Mfg Michael

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.