[SOLVED] Leonardo (USB Keyboard): VendorID ProductID /Name ändern

Herzlichen Glückwunsch, das Teil bringt dir überhaupt nichts. Der USB-Chip ist nicht ausbaubar und passt außerdem nicht in so eine Fassung. Das gilt für den Leonardo genau so wie für den Uno, nur dass bei letzterem wenigstens der andere Chip, der mit dem eigentlichen Programmcode, entfernt, umprogrammiert und gewechselt werden kann (sofern es nicht die SMD-Variante ist).
Was du brauchst ist ein In-System-Programmer oder ISP. Den kannst du dir notfalls auch aus einem anderen Arduino zusammenbauen, aber der muss auf jeden Fall an die 6 ISP-Pins am rechten Rand vom Arduino angeschlossen werden können.

Und Uwe, deine Beschreibung von VID und PID stimmt auch nicht ganz. VID und PID stellen gemeinsam eine Gerätesignatur dar, die für alle gleichartigen Geräte (und manchmal auch etwas mehr) identisch ist. Der Unterschied ist lediglich, dass die VID vom USB-IF an einzelne Hersteller vergeben wird, welche dann 65536 verschiedene Gerätetypen damit herausgeben können.

DreiMalNull, wenn du soweit bist dass du eine Hex-File draufgebrannt kriegst kannst du ihn beim Schreiben einer falschen Hex-Datei auch ohne weiteres wiederherstellen, wenn er nicht mehr antwortet. Das einzige was du so kaputt machen kannst dass du den Chip mit einem Programmiergerät nicht mehr beschreiben kannst sind die Fuses, und an die solltest du bei deinen Programmieraktionen gar nicht drankommen.
Gut, streng genommen könntest du deinen Chip noch elektrisch zerstören, aber das liegt dann nicht an der falschen Hex-Datei, sondern an falschen Spannungen. Ein ordentliches Programmiergerät sollte sowas aber nicht ermöglichen, wenn du den Stecker richtig draufsteckst.

Hallo,

benutzt du dafür einen extra Programmer? z.B. http://www.watterott.com/de/Atmel-AVR-ISP-MKII-USB

Bernd

Ok, gut, dann brauch ich keinen brenner für den Leonardo... nur, was soll ich dann machen? Ich gebe wirklich bald auf, das bringt doch alles nichts.

Habe mit avrdude rumgespielt ( avrdude -c avrispmkII -p atmega32u4 -P /dev/tty.usbmodem1d1311121 -v ) und das hier erhalten:

Last login: Tue Jan 22 13:48:22 on ttys000
meinserver:~ mApple$ avrdude -c avrispmkII -p atmega32u4 -P /dev/tty.usbmodem1d1311121 -v

avrdude: Version 5.11.1, compiled on Jan 22 2013 at 11:44:50
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch

System wide configuration file is "/usr/local/Cellar/avrdude/5.11.1/etc/avrdude.conf"
User configuration file is "/Users/mApple/.avrduderc"
User configuration file does not exist or is not a regular file, skipping

Using Port : /dev/tty.usbmodem1d1311121
Using Programmer : avrispmkII
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
AVR Part : ATmega32U4
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PA0
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :

Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack


eeprom 65 10 8 0 no 1024 8 0 9000 9000 0x00 0x00
flash 65 6 128 0 yes 32768 128 256 4500 4500 0x00 0x00
lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00

Programmer Type : STK500V2
Description : Atmel AVR ISP mkII
Programmer Model: Unknown
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout

Was mach ich mit der info?

Lustig dabei ist, ich habe ja auch im Internationalen Forum gepostet... und mir wird immer nur die Frage gestellt warum ich da machen will, und ich soll das doch lieber bleiben lassen :=)

Anscheinend mache ich immer das was keiner normalerweise macht^^

Hmmm... also brauch ich doch Hardware zum brennen. Ich werde mal ein paar Arduinos verschalten (habe zig davon) und sehen ob sich damit irgendein programmer ergibt mit dem man was anfangen kann... nur frage ich mich, warum braucht ein Leonardo eine Hardware zum brennen, der hat doch den super neuen 32u2 ... dachte das ist so ein intelligentes flexibles Teil, dass man dazu keine extra Hardware mehr benötigt, so wie beim UNO und Del.

kannst du ihn beim Schreiben einer falschen Hex-Datei auch ohne weiteres wiederherstellen

das ist schon mal gut... habe da negative Erfahrungen mit Android Tabletts = Brick = 500€ futsch :frowning: und das 2 mal 2x :frowning:

Du weisst schon, dass Du den Bootloader auch mit der IDE brennen kannst?

Du weisst schon, dass Du den Bootloader auch mit der IDE brennen kannst?

Ja, ist ja unter "Tools -> install bootloader"

aber das klappt nicht :slight_smile: (wie schon beschrieben)

Wenn Du weisst wie es geht, sag es uns :wink:

Zwar hätte ich das so machen können: Arduino Leonardo (early) Resources | H i F i D U I N O

Aber um Zeit zu sparen... habe ich das jetzt hier bestellt:

Werde ich morgen per DHL bekommen... mal schauen ob dies die Lösung des Rätsels ist.

DreiMalNull:

Du weisst schon, dass Du den Bootloader auch mit der IDE brennen kannst?

Ja, ist ja unter "Tools -> install bootloader"

aber das klappt nicht :slight_smile: (wie schon beschrieben)

Wenn Du weisst wie es geht, sag es uns :wink:

Du hast uns ja noch nicht verraten, welchen Programmer Du dafür verwendet hast, ob Du den Programmer im Menu richtig eingestellt hast und welches Board Du ausgewählt hast. Alles relevante Faktoren. Ich hab zwar keinen Mac, um das dort zu probieren, aber unter Linux lief's problemlos, wenn alles richtig eingestellt war (ich benutzte einen USBtiny Programmer).

Noch mit keinem programmer. Dachte ja das man beim Leonardo das nicht braucht. Den TinyProgrammer gabs bei www.watterott.com auch für 20€ ... aber ich wusste nicht genau ob der reicht.

Morgen bekomme ich ja meinen Programmer (http://www.watterott.com/de/Atmel-AVR-ISP-MKII-USB) und mal sehen ob die Funktion "install bootloader" dann ohne Fehlermeldung abläuft.

Ansonsten bleibt noch die Möglichkeit das hiermit zu machen (über XP in VirtualBox auf Mac):

Wenn ich überlege... so einen Riesenaufwand um nur mal VID und PID zu ändern^^

Wir leben echt in der Steinzeit.

DreiMalNull:
Wenn ich überlege... so einen Riesenaufwand um nur mal VID und PID zu ändern^^

Wir leben echt in der Steinzeit.

Sei froh, daß sich damals jemand Gedanken gemacht hat wie man Programme einfach auf den Atmega bekommt ansonsten müßtest Du jeden Sketch über einen ISP-Programmierer Draufspielen.

Uwe

Sei froh, ...

da hast Du natürlich irgendwo recht, aber auch irgendwie nicht.

Man kennt ja die PC Kisten, oder die alten Handys. Bis dato glaubte man, PC sind nun mal so, dass man ständig daran rumreparieren muss, und von Handys glaubte man auch das es so nicht anders geht.

Bis Apple kam. Ich bin kein Apple Fan... aber so einfach müssen die Dinge sein, und nicht verkompliziert. Die Leute die diese komplizierten Sachen entwickeln sind Ingenieure und Technikfreaks, und keine Anwender. Das ist das Problem (Tunnelblick).

Deshalb ist alles kompliziert. Die verschwenden 99% der Gedanken und Entwicklungsarbeit in die Technik und 1% in Usability und Workflow^^

Apple macht das anders... die Denken von der Usablilty und Workflow abwärts, hinunter zur Technik. 99% der Anderen machen es von der Technik abwärts... und dann "irgendwie benutzen" (siehe Videorekorder :wink:

Der Vergleich geht meiner Meinung nach mit 1:0 für Arduino aus.
Die Arduinos sind in erster Linie so konzipiert, dass sie einfach zu bedienen sind. Für die gängigen normalen Sachen. Wie bei den Äppls.
VID und PID ändern sind ja nun schon keine Standardaktionen mehr und dürfte 99,9% der Leonardo User nicht interessieren. Aber es geht, man muss halt etwas mehr Aufwand reinstecken. Mach mal mit dem komischen Eierfon was, was von Äppl nicht direkt vorgesehen ist...

Mach mal mit dem komischen Eierfon was, was von Äppl nicht direkt vorgesehen ist...

:slight_smile:

Ich wollte damit ja nur zum Ausdruck bringen, dass man nicht damit zufrieden sein sollte was man geboten bekommt :wink:

Werde heute mal schauen, ob wir dieses Kapitel, mit meinem neuen ISP-Programmer schliessen können.

So, AVR Programmer bekommen... angeschlossen, Kabel an Leonardo angeschlossen... einige LED's blinken, lInk zum Leonardo scheint ok. Soweit super.

Doch, es funktioniert nicht, siehe Screenshots (Analyse und dann Arduino IDE Fehler):

Ok, Firmware konnte überspielt werden. Der Fehler war: schliesse den Leonardo nicht per USB an den Mac, sondern an ein USB Netzteil an um ihn zu programmieren!

Aber... VID und PID haben sich nicht verändert :slight_smile:

Mist! :smiley:

Ich Depp... habe natürlich vergessen das neu compilierte .hex File hier hin zu kopieren:
"/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/bootloaders/caterina"

Den original Bootloader ("Caterina-Leonardo.hex") sollte man vorher in "Caterina-Leonardo_x.hex" umbennen.

Ausserdem muss man noch das File hier ändern und einige Zeilen hinzufügen: ../arduino/bootloaders/caterina/Descriptors.c

#elif DEVICE_PID == 0x0011
.UnicodeString = L"USB Keyboard "

#elif DEVICE_VID == 0x046a
.UnicodeString = L"Cherry GmbH"

... und dann compilieren.

Und Voila, das Arduino Bord ist nun ein echtes USB Keyboard :slight_smile: und kein Arduino USB IO Board mehr!

Der Thread kann "resolved" und "geschlossen" werden.

Ich danke für die Aufmerksamkeit.

Eine Information am Rande.
Du weißt schon, daß der VID an Firmen vergeben wird und nur diese ihn verwenden dürfen und dafür bezahlen müssen. Der VID ist kein freier Kode der den Hersteller identifiziert.
Grüße Uwe

Du weißt schon...

Jep, ist mir bekannt :slight_smile: