Forum: Mikrocontroller und Digitale Elektronik Arduino - USB wird nicht erkannt


von Alexander S. (knut740)


Lesenswert?

Hallo,
mein PC mit windows 7 nimmt den per USB angeschlossenen Arduino Leonardo 
partout nicht zur Kenntnis!

Im Gerätemanager erscheint der Leonardo bei den Anschlüssen Com&LPT 
nicht (mehr), egal ob ich vorher alle seriellen Einträge deaktiviert und 
den Leonardo dann erst angesteckt habe oder ob ich die im Gerätemanager 
vorgefundenen Sachen (Com9 und Com16) belassen und den Leonardo einfach 
angesteckt habe.

Als es noch funktionierte, erschien in der Liste der Anschlüsse noch der 
Eintrag "Leonardo", jetzt nicht mehr. Außerdem quittierte der 
Windows-Rechner das Anstecken des Arduino mit einem Signalton, was es 
derzeit auch nicht mehr gibt.
Woran kann es liegen?
USB-Anschluß intern defekt?   andere Geräte werden erkannt;
Kabel defekt?    da dürften andere Geräte nicht auch nicht 
funktionieren;
kein passender Treiber?    hat vorher funktioniert;
Leonardo defekt???

Hat jemand einen guten Rat für mich?
VB
Alexander

von PittyJ (Gast)


Lesenswert?

Alles mal ersetzen:
anderen Arduino nehmen.
anderes Kabel nehmen.
an einen anderen PC anschliessen.
Ubuntu aufspielen

von Stefan F. (Gast)


Lesenswert?

Irgendwie ist es schon peinlich, das hier immer wieder Linux empfohlen 
wird, wenn Windows zu wenig hilfreiche Fehlermeldungen ausgibt.

Eigentlich müssten die kostenlosen Entwicklungs-Kits der Hersteller für 
Linux gemacht werden - nicht wie das Atmel Studio.

von Jim M. (turboj)


Lesenswert?

Alexander S. schrieb:
> Hat jemand einen guten Rat für mich?

Wenn auch nach Minuten gar nix passiert ist die USB Verbindung 
unterbrochen, d.h. D+ (oder GND/VCC) haben keine durchgehende 
elektrische Verbindung mehr.

Allerdings könnte auch im Atmega32U4 (das ist der µC) ein unpassendes 
Programm drin sein, oder er ist defekt.

Was passiert beim Druck auf den Reset Button?

von Alexander S. (knut740)


Lesenswert?

Sooo leicht ist das mit dem Linux auch wieder nicht, wenn der PC keine 
seriellen Schnittstellen mehr hat und man erst virtuelle Schnittstellen 
Com/USB einrichten muß.
Jedenfalls, wie in meinem Fall, wo ich an einem brav vor sich 
hinwerkelnden Arduinoprogramm nur eine Kleinigkeit modifizieren wollte 
und nicht viel Zeit hatte.
Nachdem das mit dem Windows nicht ging, dachte ich, ich boote das auf 
meinem Rechner befindliche Debian, installiere mit apt-get die 
Arduino-IDE und fertig.
Dann habe ich gelesen, was man alles tun muß, um an eine 
USB-Schnittstelle zu kommen. Schien mir zu zeitraubend zu sein; ist was 
für Gelegenheiten, wo es nicht so eilig zugeht.

VG
Alexander

von Alexander S. (knut740)


Lesenswert?

Jim M. schrieb:
> Wenn auch nach Minuten gar nix passiert ist die USB Verbindung
> unterbrochen, d.h. D+ (oder GND/VCC) haben keine durchgehende
> elektrische Verbindung mehr.

Leider liegt es daran nicht, denn das Programm läuft, obwohl der Arduino 
keine externe Stromversorgung hatte.

Allerdings, auch wenn der PC ausgeschaltet ist, liefert die 
USB-Schnittstelle immer noch Strom. Wer weiß, ob das normal ist.

VG
Alexander

von Manfred (Gast)


Lesenswert?

Alexander S. schrieb:
> Allerdings, auch wenn der PC ausgeschaltet ist, liefert die
> USB-Schnittstelle immer noch Strom. Wer weiß, ob das normal ist.
Das ist normal, um bei Maus- oder Tastatureingaben aufwachen zu können.

von F. T. (hansy)


Lesenswert?

Kann es sein, dass der Bootloader vom Arduino überschrieben wurde? Wenn 
du einen Programmer hast, könntest du mal versuchen den Bootloader drauf 
zu flashen.
Alternativ zu einem ICSP-Programmer kannst du das auch mit einem anderen 
Arduino machen.

von Stefan F. (Gast)


Lesenswert?

> Sooo leicht ist das mit dem Linux auch wieder nicht, wenn der PC
> keine seriellen Schnittstellen mehr hat und man erst virtuelle
> Schnittstellen Com/USB einrichten muß.

Wie meinst du das? Da gibt es nichts einzurichten. Im Gegensatz zu 
Windows muss man nicht einmal einen Treiber installieren. Einfach Gerät 
anstecken und läuft.

Alle Programmieradapter und alle USB-UART Bausteine werden von Linux Out 
of the Box unterstützt. Einstecken genügt.

> Dann habe ich gelesen, was man alles tun muß, um an eine
> USB-Schnittstelle zu kommen.

Ich weiß nicht, was du da gelesen hast. Da muss man gar nichts machen. 
USB ist einfach da wird vom Kernel unterstützt. USB-UART programmiert 
man wie herkömmliche serielle Ports und andere USB Geräte werden über 
die libusb angesprochen. Das ist unter Windows nicht anders.

Es hätte genügt, ein Ubuntu vom USB Stick zu booten und avrdude zu 
installieren. Warum du jetzt gleich die ganze Arduino IDE installieren 
willst, ist mir schleierhaft. Du wolltest doch de USB Verbindung prüfen, 
nicht die ganze komplexe IDE mit all ihren Abhängigkeiten!

Und damit wir jetzt endlich mal voran kommen, boote Linux, stecke deinen 
Arduino an und gebe dann im TerminalFenster "dmesg" ein. Den Output 
zeigst du uns bitte.

Dazu brauchst du gar nichts zu installieren. Wirklich nicht. Einfach nur 
irgendein Linux booten - meinetwegen auch von CD oder USB Stick.

von Alexander S. (knut740)


Lesenswert?

Stefan U. schrieb:

> Und damit wir jetzt endlich mal voran kommen, boote Linux, stecke deinen
> Arduino an und gebe dann im TerminalFenster "dmesg" ein. Den Output
> zeigst du uns bitte.

Habe ich gemacht, aber das Ergebnis ist eine Datei mit über 900 Zeilen, 
wonach soll ich da suchen?
Ist aber wahrscheinelich nicht nötig, denn das Problem mit der 
Schnittstelle scheint, wie Du vermutest, ohne mein Zutun von selbst 
gelöst zu sein. Jedenfalls taucht in der IDE an passender Stelle der 
Hinweis auf /dev/ttySO auf, was doch schon sehr schön aussieht. 
Wahrscheinlich hätte ich vorgestern wenigsten neu booten müssen.

Aber ein anderes Problem ist aufgetreten, das mich am Weiterarbeiten 
hindert. Es wäre sehr nett, wenn Du mir da helfen könntest:
Auf meinem PC, der bei Arduino unter Win7 läuft, gibt es eine Partition, 
wo die Arduino-Programme lagern und eine andere, wo sich die Daten bzw. 
Sketchbooks befinden.
Es gibt in der IDE zwar eine Möglichkeit, das Verzeichnis für die 
Sketchbooks auszuwählen, aber nicht für den Programmordner. Dies solle 
man, so heißt es, in der Datei .../Arduino/preferences.txt vornehmen.
Und das ist mein Problem: wie ist die Bezeichnung für den 
Programmordner-Pfad?
Bei dem Sketckbook findet man in der Datei:
sketchbook.path=/dev/media/D:..... .
Was schreibe ich vor den Programmordnerpfad, damit die IDE das erkennt?
Ich habe mal arduino.path=/media/C:.... probiert, aber es wird moniert, 
daß irgendwelche Dateien nicht gefunden werden.
Kennst Du die richtige Bezeichnung für den Programmordnerpfad, den die 
IDE versteht?

VG
Alexander

von Stefan F. (Gast)


Lesenswert?

> wonach soll ich da suchen?

Diese Frage könnte ich Dir beantworten, wenn du die Datei hir 
hochgeladen hättest. Ich bin doch kein Hellseher.

Zur Arduino IDE kann ich nichts sagen, die kenne ich nicht. Unter 
WIndows fangen Pfade normalerweise mit einem Laufwerksbuchstaben und 
einem Doppelpunkt an: C:\whatever

Unter Linux fangen Pfade immer mit einem slash an: /whatever. Alle 
Laufwerke werden in einem gemeinsamen Inhaltsverzeichnis angezeigt.

Unter WIndows nimmt man \, unter Linux nimmt man /. Weil \ von vielen 
Programmen aber als Anfang einer Escape-Sequenz interpretiert wird, muss 
man manachmal \\ schreiben.

von Manfred (Gast)


Lesenswert?

Stefan U. schrieb:
> Irgendwie ist es schon peinlich, das hier immer wieder Linux empfohlen
> wird, wenn Windows zu wenig hilfreiche Fehlermeldungen ausgibt.
Sprichst Du mit Dir selbst? Ich sehe von Dir in jedem zweiten Post das 
Wort Linux!

Alexander S. schrieb:
> Auf meinem PC, der bei Arduino unter Win7 läuft, gibt es eine Partition,
> wo die Arduino-Programme lagern und eine andere, wo sich die Daten bzw.
> Sketchbooks befinden.
> Es gibt in der IDE zwar eine Möglichkeit, das Verzeichnis für die
> Sketchbooks auszuwählen, aber nicht für den Programmordner. Dies solle
> man, so heißt es, in der Datei .../Arduino/preferences.txt vornehmen.
Die Verschlimmbesserungen seit Windoof_Vista :-( In c:\programme kann 
die Software (arduino.exe) liegen, aber dort gibt es keine 
Schreibrechte. Daten schiebt Win7 in den Benutzerordner, der aber im 
Explorer auch einigermaßen schlecht zu finden ist, bei 64bit-Windows 
noch schlimmer vernagelt als beim 32bit.

Verschwinde aus c:\Programme, lege Dir z.B. c:\Arduino_IDE an und packe 
alles dort rein, das sollte gehen, auch die Sketches in z.B. 
c:\Arduino_IDE\Sketches.

Meine Programme liegen, soweit möglich, auf der D:-Partition.

von Stefan F. (Gast)


Lesenswert?

> Sprichst Du mit Dir selbst? Ich sehe von Dir in jedem
> zweiten Post das Wort Linux!

Ja, ich mag Linux. Ich finde es für Microsoft Peinlich, Windows sollte 
bei Fehlern ebenso gesprächig sein, zumindest wenn man so etwas wie 
einen Entwickler-Modul aktiviert.

von Alexander S. (knut740)


Angehängte Dateien:

Lesenswert?

Stefan U. schrieb:
> Diese Frage könnte ich Dir beantworten, wenn du die Datei hir
> hochgeladen hättest. Ich bin doch kein Hellseher.

Ich versuche es mal, hoffentlich kannst Du da eine passende Bezeichnung 
herausfinden

von Stefan F. (Gast)


Lesenswert?

preferences.txt: Das ist aber nicht die von mir angeforderte Ausgabe von 
dmesg.

Linux oder Windows?

Die Zeile "serial.port=/dev/ttyS0" sagt mir, dass es um Linux geht. 
Andererseits gibt es in der Datei auch Laufwerksbuchstaben wie D: und 
das ist bestimmt nicht so in Linux.

Andererseits: Unter Windows müssten die Pfade wohl mit D: beginnen, 
nicht mit /media/d:/

Irgendwie ist dieses File ziemlich wirr.

Die Verzeichnisstruktur deines Rechner musst du schon selbst kennen. 
Ansonsten bräuchte ich Zugang zu deinem Rechner oder ein komplettes 
Inhaltsverzeichnis, um weiter helfen zu können.

von Alexander S. (knut740)


Angehängte Dateien:

Lesenswert?

Stefan U. schrieb:
> preferences.txt: Das ist aber nicht die von mir angeforderte Ausgabe von
> dmesg.
>
> Linux oder Windows?
>
> Die Zeile "serial.port=/dev/ttyS0" sagt mir, dass es um Linux geht.
> Andererseits gibt es in der Datei auch Laufwerksbuchstaben wie D: und
> das ist bestimmt nicht so in Linux.
>
Es ist Linux, aber da ich bisher Arduino unter Win7 betrieben habe, sind 
die Sketch-Dateien in einer Windowspartition namens D:.....  und die 
Programmdateien in einer Partition mit C:......

Eigentlich würde ich die Programmdateien aus der Windowspartition gar 
nicht brauchen, weil ich die Arduino-IDE auf dem Linuxrechner nun auch 
installiert habe. Leider ist das mit den Versionen von Arduino 
kompliziert, was unter Linux neulich installiert wurde, heißt 
2:1.0.5+...., die neueste Version auf dem Windows-PC heißt 1.6.2.
Beim Start eines Sketches wird die Datei LiquidCrystal_I2C.h usw. als 
fehlend moniert. Darum wollte ich Arduino den Zugriff auf die 
Windowspartition erlauben, denn dort gibt es die genannte Datei.
[Wahrscheinlich werde ich wohl die fehlenden Dateien auf den 
Linuxrechner manuell kopieren müssen.]
VG
A

dmesg.txt füge ich bei

von Stefan F. (Gast)


Lesenswert?

Wende dich dazu mal besser an ein Arduino Forum. Zu den 
Versionsunterschieden und der Konfiguration kann ich Dir nichts sagen. 
Wie gesagt habe ich die Arduino IDE noch nie verwendet.

Und ob deine Windows Partionen wirklich in den verzeichnissen gemounted 
sind, die du in der Konfigurationsdatei angegeben hast, kann ich auch 
nicht wissen, da du uns deine Verzeichnisstruktur noch nicht offen 
gelegt hast.

Merke: Hilfe hängt von Informationen ab.

Dein dmesg Log enthält gar keine Meldungen, die zu irgendeinem Arduino 
oder Programmer passen. Vermutlich ist dein Arduino oder das Kabel 
defekt.

von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe mal einen Screenshot angehängt, da kannst du sehen, was dmesg 
ausgibt, wenn man einen chinesischen Arduino clone ansteckt.

Meine Ausgabe ist kürzer, weil ich dem Meldungs-Speicher unmittelbar vor 
dem Anstecken geleert habe.

Deine Ausgabe müsste ähnlich aussehen.

von Alexander S. (knut740)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe einen neuen Versuch gemacht, den Leonardo von einem 
Debianrechner aus zu betreiben. Das Ding wird aber, wie schon bei Win7, 
nicht akzeptiert.

Ich habe mal eine bereinigte Ausgabe von dmesg angehängt.
Kann vielleicht jemand daraus erkennen, woran es hier hapert?

VG
Alexander

von R. R. (elec-lisper)


Lesenswert?

Das dmesg-Log sagt mir, dass das USB-Gerät nicht
richtig initialisiert werden kann. Das kann mehrere Ursachen
haben:

- Der Leonardo hat ein Programm drauf, welches die USB-Schnittstelle
falsch initialisiert oder benutzt. Da der Leonardo ja erlaubt selbst
als USB-Gerät programmiert zu werden, kann es sein, dass ein alter
"Sketch" hier evtl. mist baut.
- USB Kabel kaputt
- USB-Schnittstelle am Rechner kaputt
- USB-Schnittstelle am Arduino kaputt

Was du machen kannst um es weiter einzugrenzen:

- USB-Schnittstelle am Rechner mit anderer Hardware (Maus, Tastatur) 
testen.
- Anderes USB-Kabel für den Arduino nehmen.
- Anderen Arduino mit selben (und danach einem anderen) USB-Kabel 
probieren.
- Den Arduino Leonardo versuchen über ICSP zu programmieren, also
ohne USB-Schnittstelle. Dafür brauchst du einen externen Programmer.
Solche kannst du selbst bauen (nach Anleitungen aus dem Internet),
einen anderen Arduino (bspw. UNO) umprogrammierern oder einen billigen
USB-ASP kaufen.

von Marco H. (damarco)


Lesenswert?

Du hast den Bootloader  beschädigt.

Anbei eine sehr einfache Anleitung um das wieder zu beheben ;)

https://arduino-hannover.de/2014/05/03/kochbuch-leonardo-bootloader-flashen/

von Alexander S. (knut740)


Lesenswert?

Marco H. schrieb:
> Anbei eine sehr einfache Anleitung um das wieder zu beheben ;)
>
> https://arduino-hannover.de/2014/05/03/kochbuch-leonardo-bootloader-flashen/

Vielen Dank für den Tip; ich habe mir ein entspr. Kabelset gebaut, aber 
leider bekomme ich dann doch eine Fehlermeldung:

avrdude: stk500_getsync(): not in sync: resp=0x00

Ich habe statt des Arduino UNO einen Leonardo als ISP-Programmer 
eingesetzt, ich vermute, das dürfte kein Problem sein.

Der Programmier-Leonardo ist per USB mit dem PC verbunden und diese 
Verbindung ist ok (wird erkannt und ist zum Programmieren geeignet), der 
zu programmierende Leonardo hat eine externe Stromversorgung.

Wenn ich ArduinoISP starte, dann blinkt die LED an Port9 vor sich hin 
(Heartbreak - programm is rnnning), was in Ordnung zu sein scheint.
Irgendwann habe ich schließlich "Bootloader brennen" angeklickt und die 
Fehlermeldung bekommen:
"Fehler beim Brennen des Bootloaders
avrdude: stk500_getsync(): not in sync: resp=0x00"
und die LED9 blinkt weiter.

Hast Du vielleicht noch einen Tip?

VG

von Alexander S. (knut740)


Lesenswert?

Es ist gelungen!
Ich habe als Programmier-Arduino nun doch noch einen Arduino-UNO 
(allerdings etwas älterer Rev.) bekommen und diesen statt des Leonardo 
zum Brennen des Booloaders eingesetzt. Und es hat gleich funktioniert, 
was mich allerdings wundert. Ich hatte gedacht, daß ein ähnlich 
gestrickter AVR wie im UNO drin sei, lediglich mit etwas mehr 
Integration bei der seriell-USB-Schnittstelle.

Jedenfalls ließ sich der Bootloader brennen und den Leonardo kann ich 
jetzt wieder von Windows aus programmieren!

Vielen Dank für Eure freundliche Hilfe!

VG
Alexander

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.