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

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.