Ich habe einen mySmartUSB light und wollte darüber den Arduino UNO
programmieren.
Ich habe gerade schon mit avrdudess ( GUI ) die Fuses ausgelesen.
Hat ein paar mal geklappt, jetzt nicht mehr ohne dass ich den USBlight
reconnecten muss...
Danach wollte ich mit der Arduino IDE eine Programm hochladen.
Habe dann auch unterschiedliche USB Eingänge getestet. Aber es kommt
immer die gleiche Meldung.
1
avrdude: Version 6.3-20171130
2
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
3
Copyright (c) 2007-2014 Joerg Wunsch
4
5
System wide configuration file is "/etc/avrdude.conf"
6
User configuration file is "/root/.avrduderc"
7
User configuration file does not exist or is not a regular file, skipping
8
9
Using Port : /dev/ttyUSB1
10
Using Programmer : arduino
11
Overriding Baud Rate : 115200
12
avrdude: ser_open(): can't open device "/dev/ttyUSB1": Input/output error
13
14
avrdude done. Thank you.
Der ausgewählte serielle Port
ist nicht vorhanden oder das Board ist nicht angeschlossen
Habe auch schon
Stefan F. schrieb:> sudo dmesg -w
Da war einer der ersten Schritte.
Der Arduino ist einmal mit USB -B verbunden
Und einmal zum Programmieren mit dem mySmartUSBLight.
--
Ich konnte weder mit USB noch mit dem mySmartUSBLigth programmieren.
--
sudo dmesg -w zeigt mir für den mySmartUSBlight:
aktuell:
ttyUSB1
1
[48425.814115] usb 1-2.2: new full-speed USB device number 66 using xhci_hcd
2
[48426.073838] usb 1-2.2: New USB device found, idVendor=10c4, idProduct=ea60, bcdDevice= 2.04
3
[48426.073843] usb 1-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
4
[48426.073845] usb 1-2.2: Product: myAVR - mySmartUSB light
5
[48426.073846] usb 1-2.2: Manufacturer: Silicon Labs
6
[48426.073847] usb 1-2.2: SerialNumber: mySmartUSBlight-0001
Also das Ding hängt an ttyUSB1 und trotzdem kannst du diesen Port nicht
öffnen.
Dann ist er wohl kaputt, oder dein USB Kabel. Oder ein anderes Programm
belegt des Port schon.
Da ich ja bereits die FUSES lesen konnte, nehme ich auch an, dass ich
den ISP richtig rum an die 6 Pins angeschlossen habe.
Ab und zu kommt in dmesg -w:
[48623.854920] cp210x ttyUSB1: failed set request 0x12 status: -110
[48628.975111] cp210x ttyUSB1: failed set request 0x0 status: -110
1
~$ ls -l /proc/[0-9]*/fd/* |grep /dev/ttyUSB1
2
ls: Zugriff auf '/proc/64741/fd/255' nicht möglich: Datei oder Verzeichnis nicht gefunden
3
ls: Zugriff auf '/proc/64741/fd/3' nicht möglich: Datei oder Verzeichnis nicht gefunden
Portabler_Wein schrieb:> Da ich ja bereits die FUSES lesen konnte, nehme ich auch an, dass ich> den ISP richtig rum an die 6 Pins angeschlossen habe.
Ja, das wird nicht der Fehler sein, denn es scheitert ja schon daran,
den (virtuellen) seriellen Port zu öffnen.
Portabler_Wein schrieb:> can't open device "/dev/ttyUSB1
Vergiss den ls Befehl, der funktioniert nicht. Den hatte ich voreilig
von einer anderen Diskussion kopiert.
Portabler_Wein schrieb:> aber tortzdem kann man was davon lesen..> SUCCESSUC: _READHFUSE> _SUCCESSUC: _READLFUSE> _SUCCESSUC: _READEFUSE
SO aus dem Kontext gerissen kann ich damit nichts anfangen. Wenn avrdude
den seriellen Port nicht öffnen kann, dann kann er nicht mit dem
Programmieradapter kommunizieren. Ergo kann er auch keine Fuses lesen.
Portabler_Wein schrieb:> Wenn ich was hochladen will in der IDE kommt in dmesg -w: ....
Wie gesagt: Dein USB Programmieradapter ist kaputt, oder das USB Kabel.
Ein anderen USB Port hast du sicher schon versucht (hoffe ich).
habe gerade mal auf "hochladen mit programmer" geklickt da steht :
Fehler beim Hochladen: Konfigurationsparameter 'program.tool' fehlt
Mit avrdude gehts aber anscheinend, wenn ich eine *.hex hochladen will:
>>>: avrdude -c stk500 -p m328p -P /dev/ttyUSB1 -U
flash:w:"/home/oem/Dokumente/(...)ARD/main.hex":a
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100%
0.01s
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be
performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "/home/oem (..)/main.hex"
avrdude: input file /home/oem/Dokumente(..)/main.hex auto detected as
Intel Hex
avrdude: writing flash (172 bytes):
Writing | ################################################## | 100%
0.06s
avrdude: 172 bytes of flash written
avrdude: verifying flash memory against /home/oem/D/(...)RD/main.hex:
avrdude: load data flash data from input file
/home/oem/Dokumente/MeineD(...)/main.hex:
avrdude: input file /hom(...)ARD/main.hex auto detected as Intel Hex
avrdude: input file /hom(...)ARD/main.hex contains 172 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100%
0.08s
avrdude: verifying ...
avrdude: 172 bytes of flash verified
avrdude done. Thank you.
Stefan F. schrieb:> Wie gesagt: Dein USB Programmieradapter ist kaputt, oder das USB Kabel.> Ein anderen USB Port hast du sicher schon versucht (hoffe ich).
Ich weiß nicht, habe ich etwas den Bootloader überschrieben?
Ich denke nicht oder?
Ich weiß gar nicht wie das geht.
Also muss es eine Einstellung in der IDE sein..
Ich hoffe ich habe noch einen neuen Arduino UNO um das mal zu testen...
Portabler_Wein schrieb:> Fehler beim Hochladen: Konfigurationsparameter 'program.tool' fehlt
Das ist aber jetzt ein ganz anderes Problem, als im Eröffnungsbeitrag.
Um dies zu lösen, würde ich die Arduino IDE vollständig* löschen und neu
installieren.
*) also auch diese Verzeichnisse:
C:\Users\(username)\AppData\Roaming\Arduino15
C:\Users\(username)\AppData\Local\Arduino15
Portabler_Wein schrieb:> Mit avrdude gehts aber anscheinend, wenn ich eine *.hex hochladen will:
Also funktioniert dein Programmieradapter bzw. das Kabel manchmal, und
manchmal nicht.
Portabler_Wein schrieb:> Ich weiß nicht, habe ich etwas den Bootloader überschrieben?
Ja, wenn du einen Arduino Sketch mittels ISP Programmieradapter
hochlädst, wird der eventuell vorher vorhandene Bootloader
überschrieben. Das ist so gewollt, denn den brauchst du nicht.
AH sch.... das lag an den beiden Arduinos.
Die sind beide komisch..
Hatte hier noch nen dritten...
da gings auf Anhieb mit USB-B Kabel..
Aber mit smartusblight gehts auch an dem nicht
Wie hab ich das hin bekommen, dass die beiden nur noch per avrdude über
ISP ansprechbar sind ?
Bootloader oder was?
Also der dritte scheint noch frisch zu sein.
Über USB programmierung geht das :
Portabler_Wein schrieb:> Bootloader oder was?
Wie gesagt, du brauchst keinen Bootloader wenn du einen ISP
Programmieradapter verwendest.
Portabler_Wein schrieb:> Wie hab ich das hin bekommen, dass die beiden nur noch per avrdude über> ISP ansprechbar sind ?
Arduino benutzt avrdude.
Portabler_Wein schrieb:> da gings auf Anhieb mit USB-B Kabel.
Wie jetzt, dieses mal ohne ISP Programmieradapter? Kannst du dich mal
bitte sortieren und nachvollziehbar dokumentieren, was du machst und
wann du welches Problem hast? Mache Fotos!
Offenbar bringst du zwei USB Verbindungen durcheinander:
a) vom Arduino Board zum PC
b) vom Programmieradapter zum PC
Beide "sprechen" das stk500v2 Protokoll und beide haben einen virtuellen
seriellen Port. Aber wenn du deinen Arduino mittels Programmieradapter
bespielst, wird dessen Bootloader überschrieben. Danach ist er nur noch
mit Programmieradapter programmierbar. Es sei denn, du installiert den
Bootloader erneut (wozu die Arduino IDE einen Menüpunkt hat). Aber
solange du einen Programmieradapter verwendest, brauchst du keinen
Bootloader.
Stefan F. schrieb:> Portabler_Wein schrieb:>> Bootloader oder was?>> Wie gesagt, du brauchst keinen Bootloader wenn du einen ISP> Programmieradapter verwendest.>> Portabler_Wein schrieb:>> da gings auf Anhieb mit USB-B Kabel.>> Wie jetzt, dieses mal ohne ISP Programmieradapter? Kannst du dich mal> bitte sortieren und nachvollziehbar dokumentieren, was du machst und> wann du welches Problem hast?
Ganz am Anfang wollte ich nur mit meinem mysmartusb light den arduino
(2stück hatte ich zum testen) in der arduino IDE programmieren.
Das ging nicht.
dann habe ich es mit USB versucht.
das ging auch nicht.
Dann habe ich einen dritten Arduino genommen.
bei dem ging die Programmierung in der IDE mit einem USB Kabel.
Aber nicht mit dem mysmartUSB
Jetzt ist es möglicherweise so, dass ich zum einen den mysmartUSB nicht
richtig eingebunden habe in die IDE und zum anderen dass, die beiden
ersten Arduinos keinen Arduino-bootlaoder mehr haben.
Ich würde jetzt erst mal den optiboot per *.hex mit dem mysmartusb drauf
laden.
https://github.com/Optiboot/optiboot/blob/master/optiboot/bootloaders/optiboot/optiboot_atmega328.hex
Mal schauen, ob man dann von der IDE wenigsten wieder mit USB
programmieren kann.
Stefan F. schrieb:> Offenbar bringst du zwei USB Verbindungen durcheinander:
Ja kann mich auch nicht mehr lange konzentrieren mit den ganzen
Arduinos hier xD
Stimmt der ISP Adapter brauch' dann keinen Bootloader mehr.
Was mir jetzt aufgefallen ist:
* Außerhalb der IDE klappt das hochladen der Firmware ja sogar mit ISP
(getestet mit den ersten beiden Arduinos)
* Nur in der IDE nicht (auch nicht mit dem Arduino der per USB erkannt
wurde)
* Das wundert mich und ich würde gerne verstehen woran das liegt.
* Es muss an einer Fehlkonfiguration in der IDE liegen.
Stefan F. schrieb:> Aber wenn du deinen Arduino mittels Programmieradapter> bespielst, wird dessen Bootloader überschrieben.
Das war mir am Anfang nicht mehr so klar. Aber ja das ist wohl der Grund
warum die beiden nicht gefunden werden.
Also letztenendes will ich in der Lage sein, den Arduino sowohl mit
Programmer als auch über USB programmieren zu können, aus der Arduino
IDE heraus. Natürlich weiß ich jetzt, dass auch wenn ich dann per
Programmer porgrammieren würde wieder der Bootloader überschrieben
werden würde.
Portabler_Wein schrieb:> AH sch.... das lag an den beiden Arduinos.> Die sind beide komisch..
Komisch ist aus meiner Sicht eher, wie Du Deine Aktivitäten beschreibst.
Sieht für mich so aus, als wenn Du zu viel rumprobierst, ohne recht zu
wissen, was Du tust. Ein Arduino UNO funktioniert in der Arduino IDE nur
dann problemlos, wenn er
a) sein Bootloader-Programm korrekt geladen hat und
b) der auf der Platine vorhandene 2.Prozessor sein Arbeitsprogramm
korrekt geladen hat.
Mit dem mysmartUSBlight, der ein ISP-Programmer ist, kann man aber
leicht in beiden Prozessoren mithilfe von avrdude diese Programme
überschreiben. Dann ist der Arduino UNO in der Arduino IDE erst dann
problemlos zu benutzen, wenn beide Prozessoren wieder ihre richtigen
Programme geladen haben. Das sollte mit dem mysmartUSBlight problemlos
möglich sein. Allerdings sollte man Anfängerfehler wie gleichzeitige
Verbindung des UNO über USB-A/B-Kabel und mysmartUSBlight vermeiden,
wenn man Datensalat vermeiden möchte (auch wenn der CCC mal behauptet
hat, daß der gesund sei).
Gruß Klaus (der soundsovielte)
Guck dir das mal an, und vergleiche es mit deiner Konfiguration:
http://dev.tbf-blog.com/2020/07/07/programmer-mysmartusb-light/
Aber erst morgen. Du brauchst eine Pause.
Und bevor du morgen direkt wieder durcheinander kommst, lässt du morgen
die ganze Zeit dmesg nebenher laufen. Stecke ZUERST den
Programmieradapter an und lasse ihn angesteckt. Er müsste dann permanent
an ttyUSB0 hängen.
Danach steckst du das Arduino Board an, welchem dann ttyUSB1 zugewiesen
wird.
Klaus S. schrieb:> Allerdings sollte man Anfängerfehler wie gleichzeitige> Verbindung des UNO über USB-A/B-Kabel und mysmartUSBlight vermeiden,> wenn man Datensalat vermeiden möchte
Warum kann es dann zum Datensalat kommen?
Klaus S. schrieb:> leicht in beiden Prozessoren mithilfe von avrdude diese Programme> überschreiben
Wie kann man den zweiten Prozessor überschreiben?
Ach so wahrscheinlich die andere ISP-Verbindung..
Stefan F. schrieb:> Aber erst morgen. Du brauchst eine Pause.
Das war wirklich so.
_____
1.) Habe zuerst den mySmartUSB angeschlossen, dann das USB Kabel.
Portabler_Wein schrieb:> Wie kann man den zweiten Prozessor überschreiben?> Ach so wahrscheinlich die andere ISP-Verbindung..
Ja, steht in der Dokumentation des Boardes.
Portabler_Wein schrieb:> Die Option Bootloader brennen geht aber gar nicht
Ich vermute, dass du dabei nicht den Programmieradapter an ttyUSB0
sondern den Bootloader an ttyACM0 verwendet hast. Der Bootloader kann
nicht sich selbst überschreiben.
Oder du verwendest die Arduino IDE in Version 1.6.10, da war genau das
ein bekannter Bug.
Oder du hast immer noch ein USB Problem. Was hat dmesg während dessen
angezeigt, irgendwelche Fehlermeldungen?
Leider fehlen in deinem Beiträgen sämtliche Angaben, mit denen man das
prüfen könnte. Du beschreibst immer noch nicht ausreichend, was du da
machst. Du könntest wenigstens mal Fotos vom Aufbau und deinen
Einstellungen in der IDE machen. DU willst dioch Hilfe bekommen, oder
nicht?
* Ok, habe gerade optiboot mit avrdude(ss) auf einen Arduino hochgeladen
* Dann konnte ich auch endlich, mit der IDE, 'nur' USB zum Hochladen
eines Sketches verwendet
* Der Arduino wird dann also wieder von der IDE erkannt.
Und warum hat es zuvor nicht geklappt? Was hast du anders gemacht?
Nochmal bettele ich dich nicht an, Infos zu liefern. Du bist
derjenige, der Hilfe haben will.
Also meiner Meinung nach warum ich nicht auf Anhieb mit dem Programmer e
in der Arduino IDE programmieren konnte war (vlt.) zum Einen:
1
mySmartUSB.name=mySmartUSB
2
mySmartUSB.protocol=stk500v2
3
mySmartUSB.communication=serial
(also da fehlen ja ein paar Zeilen siehe
http://dev.tbf-blog.com/2020/07/07/programmer-mysmartusb-light/)
Und zum anderen, weil ich immer nur nach der Einstellung des
Programmer-USB-Ports und des Programmer-Namens auf 'Hochladen' anstatt
auf 'Hochladen mit Programmer' geklickt habe.
Am Anfang hatte ich ja zwei Arduinos, bei denen ich auch keine
Verbindung mit USB aufbauen konnte(8u2). Nachdem ich aber einen
Bootloader mit avrdude(ss) ( nicht in der Arduino IDE) hochgeladen habe
, konnten die Arduinos wieder von der IDE per USB erkannt werden.
Damit habe ich meine Ausgangsfrage beantwortet und bin zufrieden.
Hast du noch eine Frage?
(Was mich höchsten noch wundert ist das mit der Option 'Bootloader
brennen'
Sollte doch voll einfach gehen wenn man einen ISP Programmer hat und
einen Arduino. Irgendwie kommt da immer ein Fehler. Aber werde bei
Bedarf Bootloader extern mit avrdude hochladen.)
Portabler_Wein schrieb:> Sollte doch voll einfach gehen wenn man einen ISP Programmer hat und> einen Arduino.
Das geht auch "voll einfach", jedenfalls bei mir. Ich mache mich aber
vorher schlau, wie mein Programmieradapter heißt und an welchem Port er
hängt. Damit ich eben nicht irgend etwas irgend wohin übertrage
(Datensalat).
Portabler_Wein schrieb:> Warum kann es dann zum Datensalat kommen?
Weil sowohl der USB-Eingang als auch der ISP-Adapter auf das Resetsignal
einwirken. Meistens kommen sie sich nicht in die Quere, aber wenn man
man Probleme hat und Fehler sucht, ist es eine gaaaanz alte und bewährte
Methode, soviele eventuelle Fehlerquellen wie möglich auszuschalten,
indem man nur das anschließt, was unbedingt nötig ist, weil der Fehler
in der Hälfte der Fälle nicht da liegt, wo man ihn vermutet. Wenn also
Power über mysmartUSBlight nicht ausreicht, die Hohlbuchse am UNO zur
Spannungsversorgung benutzen.
Portabler_Wein schrieb:> Wie kann man den zweiten Prozessor überschreiben?> Ach so wahrscheinlich die andere ISP-Verbindung..
Ja. Mein UNO hat als USB-UART-Bridge einen ATmega16U2 mit einem eigenen
6poligen ISP-Adapter drauf. Wer das nicht sauber auseinanderhält,
bekommt Probleme. Nach Deinen ersten Postings hätte ich Dir zugetraut,
das zu verwechseln, es klang alles nach husch-husch. Du scheinst aber
klüger zu sein, als es zuerst den Anschein hatte. Eine wirklich
brauchbare Beschreibung Deines Problems hast Du trotzdem bisher nicht
hinbekommen, wir müssen ziemlich viel erraten.
Für meinen Geschmack stocherst Du zuviel herum und gehst den
Fehlfunktionen nicht richtig nach, aber das ist nur meine
(unmaßgebliche) Meinung und jeder darf es so machen, wie er möchte. Für
mich gilt der Grundsatz: wenn ich nach einer Stunde Stochern keine
Lösung gefunden habe, ist es an der Zeit, ganz grundsätzlich und Schritt
für Schritt das Problem aufzurollen.
Gruß Klaus (der soundsovielte)
P.S. Stefan hat doch ausführlich dargelegt, welche Info helfen würde.
Entschuldigt wenn Ich mich hier dranhänge.
Aber hat schon jemand die 2.0.3 IDE damit ans laufen bekommen?
Die IDE ignoriert die programmers.txt scheinbar einfach.
Ich bekomme das nur mit der 1.8.19 IDE hin.
Allerdings unter Linux.
Finde die 2.0.3 optisch ansprechender :)
EDIT: Fehler gefunden.
Es gibt unter ~/.config Dateien die falsche Daten enthalten.
Bei mir war es
~/.config/arduino-ide
Nach verschieben und Starten der aktuellsten IDE wurden die
Daten korrekt aus dem alten übernommen. Allerdings nur einmal.
Ändert man die
~/.arduino15/packages/ATTinyCore/hardware/avr/1.5.2/programmers.txt muss
man auch wieder das
Verzeichnis ~/.config/arduino-ide löschen.
Und alles neu einstellen.
Mehr Hack als Lösung...