Forum: Mikrocontroller und Digitale Elektronik Arduino UNO R4 in Win10 nicht erkannt


von Klaus S. (kseege)


Lesenswert?

Habe den neuen Arduino UNO R4 zu programmieren versucht und bin nur 
unter Linux erfolgeich. Obwohl die Arduino-IDE unter Win10(64) dieselbe 
Version von dfu-util verwendet (0.11-arduino4) wie unter Linux, wird das 
Board unter WIN10 nicht erkannt. Bevor ich jetzt herumsuche, wie man bei 
dfu-util ein Ticket aufmacht (habe sowas noch nie gebraucht), möchte ich 
erstmal nachfragen, wie es Anderen mit dem Board ergeht umd ob ich 
eventuell der Einzige bin, der sich irgendwo zu dumm anstellt.

Gruß Klaus (der soundsovielte)

64-bit Win10 Pro Vers. 22H2
Arduino IDE 1.8.19
R4-Libraries von heute
zugehörige virtuelle COM-Ports werde in der IDE und im Gerätemanager
immer angezeigt.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Klaus S. schrieb:
> wie es Anderen mit dem Board ergeht umd ob ich
> eventuell der Einzige bin, der sich irgendwo zu dumm anstellt.

Bei mir hat es Treiber installiert!

......\packages\arduino\hardware\renesas_uno\1.0.1\drivers
Und da die richtige EXE aufrufen.

Da ich keine passende Hardware habe: Ohne Gewähr.

von Klaus S. (kseege)


Angehängte Dateien:

Lesenswert?

Arduino F. schrieb:
> Bei mir hat es Treiber installiert!

Bei mir auch.

> Und da die richtige EXE aufrufen.

Seit wann macht die Arduino-IDE das nicht selbst? In der Datei 
post-install.bat wird dpinst-amd64.exe viermal mit %ARGS% aufgerufen, 
das sieht nicht so aus, als müßte man es nochmal manuell aufrufen.

Falls sich jemand genauer mit dem DFU-Protokoll auskennt, habe ich die 
Fehlermeldung von dfu-util und den erweiterten Teil von usbview in die 
Textdatei UNO_R4.txt gepackt.

Gruß Klaus (der soundsovielte)

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Klaus S. schrieb:
> Seit wann macht die Arduino-IDE das nicht selbst?

Macht sie, wenn man sie lässt.

Es ist allerdings auch eine manuelle Installation von Hardware 
Definitionen und zugehörigen Compilern möglich.
Dann gibts den Automatismus nicht und die Treiber liegen ungenutzt auf 
der Platte rum.


Leider hast du dich nicht über deine Installationsmethode ausgelassen.

: Bearbeitet durch User
von Klaus S. (kseege)


Angehängte Dateien:

Lesenswert?

Arduino F. schrieb:
> Es ist allerdings auch eine manuelle Installation von Hardware
> Definitionen und zugehörigen Compilern möglich.
> Dann gibts den Automatismus nicht und die Treiber liegen ungenutzt auf
> der Platte rum.
>
> Leider hast du dich nicht über deine Installationsmethode ausgelassen.

Das überrascht mich jetzt. Habe noch nie von manueller Installation 
gehört oder gelesen. Ich kenne nur den Unterschied zwischen fester und 
portabler Installation (die Letztere nutze ich). Dabei wird aber bei 
erstmaligem Start der IDE alles automatisch eingerichtet, ist also nicht 
manuell. Das hat bisher für viereinhalb  verschiedene CPU-Familien ohne 
größere Aussetzer geklappt (die einzige Ausnahme war eine race-condition 
in Dan Drowns/Roger Clarkes  STM32-Installation).

Könntest Du das etwas näher erläutern? Nach meinen bisherigen 
Erfahrungen werden die Treiber für ein Board in dem Moment eingerichtet, 
in dem die dazugehörigen Programme und Libraries im Boardverwalter aus 
dem Internet geladen werden.

Gruß  Klaus (der soundsovielte)

P.S. Die angehängte Textdatei zeigt den Unterschied von dfu-util unter 
Linux mit und ohne die nötigen Zugriffsrechte. Der Text für die 
Situation ohne Zugriffsrechte sieht genauso aus, wie die Textausgabe 
unter Win10. Deswegen ist meine bisherige Vermutung: Rechteproblem!

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Klaus S. schrieb:
> Könntest Du das etwas näher erläutern?
Manche Hardwaredefinitionen sind nicht über den Boardmanager erreichbar.
z.B. Manche erstellt man selber, oder Kumpels, oder dümpeln frei im Netz 
rum, z.B. bei Github

In deinem stetchbook Ordner gibt es einen Ordner namens hardware. Genau 
der ist für die manuelle Installation gedacht.

Zudem ist der Ordner gegen Updates geschützt.
Es macht also sogar manchmal Sinn, Hardware Definitionen händisch da 
rein zu werfen, selbst wenn sie über den Boardmanager erreichbar wären.

Libraries kann man anders vor Updates schützen, Board Definitionen nur 
so.


----
Zu deinem eigentlichen Problem kann ich nichts sagen, da ich weder die 
Hardware habe und nur oberflächliche Kenntnisse zu den Win USB Gedönse.

von Thomas Z. (usbman)


Lesenswert?

Klaus S. schrieb:
> Fehlermeldung von dfu-util und den erweiterten Teil von usbview in die
> Textdatei UNO_R4.txt gepackt

nö hast du nicht in die txt soltest du alles was usbtreeview ausgibt 
reinpacken. Was ich erkennen kann ist ein Compound Device aus CDC + 
irgendwas

Arduino F. schrieb:
> Zu deinem eigentlichen Problem kann ich nichts sagen, da ich weder die
> Hardware habe und nur oberflächliche Kenntnisse zu den Win USB Gedönse.

Win USB ist im Prinzip das gleiche wie libusb unter linux. Die 
funktionierende linux version verwendet ja libusb. Ich würde jetzt mal 
vermuten dass dies unter Win auch so sein sollte, weil man ja sonst 2 
apps machen müsste eine für linux mit libusb und eine für Win mit 
WinUsb.

@Klaus zeige den kompletten output als txtfile.

von Klaus S. (kseege)


Lesenswert?

Thomas Z. schrieb:
> @Klaus zeige den kompletten output als txtfile.

Dann habe ich irgendwas falsch verstanden. Ich habe aus den
WindowsKit\10\Debuggers\amd64\usbview.exe aufgerufen. Dann wird in der 
linken Spalte das ganze USB-Geraffel untereinander aufgetragen und wenn 
ich dann den Port für meinen Arduino lokalisiert habe und den anwähle, 
taucht in der rechten Spalte die Information zu diesem einen Anschluß 
auf. Dieser Text taucht zum Teil im Bild auf, der gesamte Text steht in 
der Datei UNO_R4.txt hinter der Ausgabe von dfu-util und dem 
Doppelstrich ====================.

Was sollte anders laufen?

Gruß Klaus (der soundsovielte)

von Klaus S. (kseege)


Lesenswert?

Arduino F. schrieb:
> Manche Hardwaredefinitionen sind nicht über den Boardmanager erreichbar.
> z.B. Manche erstellt man selber, oder Kumpels, oder dümpeln frei im Netz
> rum, z.B. bei Github

Okay, wieder was dazugelernt. Danke für die Erläuterung, jetzt weiß ich, 
wovor ich mich hüten sollte. Ich benutze die Arduino-IDE nur als 
"Idiotenhügel", wie man wohl bei den Skifahrern sagt.
Wenn es ganz ernst wird, mutiere ich zum Assemblerfan mit bare-metal 
Vorliebe :-))

Gruß Klaus (der soundsovielte)

von Thomas Z. (usbman)


Lesenswert?

Klaus S. schrieb:
> Dann habe ich irgendwas falsch verstanden. Ich habe aus den
> WindowsKit\10\Debuggers\amd64\usbview.exe aufgerufen.

nicht das MS Tool benutzen! Das ist buggy und unvollständig.

Benutze UsbTreeView von Uwe Sieber
https://www.uwe-sieber.de/usbtreeview_e.html

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Klaus S. schrieb:
> jetzt weiß ich, wovor ich mich hüten sollte.

Wieso?
Welche Probleme siehst du da?

Das ist einer der vorgesehenen Wege.
Vielleicht nicht der "übliche", aber doch voll im Plan.

von Klaus S. (kseege)


Lesenswert?

Arduino F. schrieb:
> Wieso?
> Welche Probleme siehst du da?

Keine. Aber jeder hat andere Vorstellungen und Wünsche, ich bin einfach 
nur Minimalist. Für mich ist ein Entwicklungstool erfreulich, wenn es 
nicht größer als 1MByte ist. Bei 10 MByte gehts grad noch so und alles 
darüber ist mir erstmal suspekt. Schon mal Rebol als Programmiersprache 
versucht? Ein MByte.

Arduino ist weit drüber, hat aber aus meiner Sicht den Vorteil, daß es 
nach ganz kurzer Eingewöhnzeit stinkensimpel zu bedienen ist und ganz 
unkompliziert einfach funktioniert. Irgendwelche Klimmzüge damit zu 
machen, wäre einfach nicht meins. Die mach ich dann lieber "bare metal" 
und in Assembler, hat selbst beim Raspi gut geklappt. Das darf ja 
erfreulicherweise jeder für sich entscheiden. Schon Platform-I/O ist mir 
im Moment viel zu kompliziert, solange ich keine besseren Beschreibungen 
finde.

Ein Tool wie dfu-util ist gerade noch in der Größe, daß es mir Vergnügen 
macht, mich in eine Fehlersuche reinzuhängen. GCC? Käme mir gar nicht in 
den Sinn.

Gruß Klaus (der soundsovielte)

von Manfred P. (pruckelfred)


Lesenswert?

Klaus S. schrieb:
> Ich kenne nur den Unterschied zwischen fester und
> portabler Installation (die Letztere nutze ich).

Damit hat jeder normal denkenden Mensch die Erklärung: Eine portable 
Version hat nicht von sich aus auf dem System herunzusauen, da ist die 
manuelle Treiberinstallation durchaus konsequent.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Manfred P. schrieb:
> da ist die
> manuelle Treiberinstallation durchaus konsequent.

Wenn man den Boardsmanager nutzt, werden die Treiber automatisch 
installiert.
Ihm fragt nach Erlaubnis. Man kann da also "versehentlich" auf nein 
drücken.

von Klaus S. (kseege)


Angehängte Dateien:

Lesenswert?

Thomas Z. schrieb:
> Benutze UsbTreeView von Uwe Sieber
> https://www.uwe-sieber.de/usbtreeview_e.html

Da bin ich wohl auf die ähnlich klingenden Namen reingefallen, genau 
dort war der Verweis auf usbview ganz am Anfang, und dem war ich 
gefolgt.
Hier also mit usbtreeview (von ganz unten auf der Seite).

Gruß Klaus (der soundsovielte)

von Thomas Z. (usbman)


Lesenswert?

1
Child Device 2          : DFU-RT Port
2
  Device ID              : USB\VID_2341&PID_0069&MI_02\6&FFEEF30&0&0002
3
  Location               : 0000.0014.0000.007.000.000.000.000.000
4
  LocationPaths          : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(7)#USBMI(2)...  
5
  Problem                : 28 (CM_PROB_FAILED_INSTALL)

Für das 2. Device das DFU device ist kein Treiber installiert. 
(Fehlercode 28)
Ich würde ja vermuten dass da libusb ran muss.

Also Treiber installieren und alles wird gut:-)

Edit:
dieses Szenario wäre übrigens der ideale Kandidat für BOS DesKriptoren.
Beitrag "Usb BOS descriptor"
Damit könnte Win ohne weiteres Zutun den Treiber automatisch laden. Das 
wäre mit etwa 200 Byte code im Bootloader  zu machen.

: Bearbeitet durch User
von Klaus S. (kseege)


Lesenswert?

Thomas Z. schrieb:
> Also Treiber installieren und alles wird gut:-)

Knapp vorbei ist auch daneben. Habe mit Zadigs Hilfe libUSB installiert. 
Jetzt meldet zumindest "dfu-util -l" die Boarddaten, kleiner Schritt 
vorwärts. Der Updatevorgang kommt ebenfalls einen Schritt weiter, das 
Board wird erkannt, "detach and reattach" wird ausgeführt, das Board 
geht in den Bootloadermodus und dann verliert dfu-util den Kontakt zum 
Board.

Ist im 32-bit-Win10 genauso wie im 64-bit-Win10.

Gruß Klaus (der soundsovielte)

P.S. Den Bootloadermode erkennt man schön an der auf- und abschwellenden 
Helligkeit der "LED-BUILTIN".

von Klaus S. (kseege)


Angehängte Dateien:

Lesenswert?

Und das sagt usbtreeview zum Zustand im Bootloadermodus.

von Thomas Z. (usbman)


Lesenswert?

Klaus S. schrieb:
> Und das sagt usbtreeview zum Zustand im Bootloadermodus.

Du hast mit zadig libusb auf das komplette device installiert d.h der 
Comport ist verschwunden das ist falsch. Deinstalier das wieder.
Du hast ein Compount device. Das bedeutet auf unterschiedlichen 
Interfaces werden unterschiedliche Treiber verwendet.
- Interface 0 + 1 CDC
- Interface 2 DFU
Zadig kann das auch.

: Bearbeitet durch User
von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Klaus S. schrieb:
> Habe mit Zadigs Hilfe libUSB installiert

Du kannst auch statt dem libusb Treiber den WinUSB Treiber installieren. 
Das geht mit Zadig oder auch über den Gerätemanager. Sofern das dfu-util 
eine moderne libusb-Version nutzt (ggf. einfach die DLL austauschen), 
kommt die auch mit dem WinUSB-Treiber klar. Das könnte eventuell 
stabiler sein als der libusb-Treiber und braucht eben nur den 
Windows-eigenen WinUSB-Treiber.

Klaus S. schrieb:
> GCC? Käme mir gar nicht in den Sinn.

Der ist aber bei Arduino mit dabei...

von Klaus S. (kseege)


Lesenswert?

Thomas Z. schrieb:
> Du hast mit zadig libusb auf das komplette device installiert d.h der
> Comport ist verschwunden das ist falsch. Deinstalier das wieder.

1. Der Comport ist schon vor der Zadig-Aktion im Booloadermodus nicht 
vorhanden gewesen, er verschwindet regelmäßig, wenn man in den 
Bootloadermodus wechselt (was durch zweimaliges Drücken der Resettaste 
aus meiner Sicht sehr praxisnah gelöst ist).

2. Die Zadig-Aktion war eine Husch-Husch-Aktion, die ich normalerweise 
zu vermeiden trachte. Ich mußte aber zu einer Reparatur und daher etwas 
in Eile. Ich habe nichtmal richtig verstanden, was ich da mache und weiß 
schon gar nicht, wie ich das wieder rückgängig mache. Normalerweise 
würde ich jetzt tief Luft holen, zwei Schritte zurücktreten, die letzte 
Backupdatei herholen und alles Neue wegbügeln.
Hättest Du einen Tip, wie es einfacher geht? Mit VCPs kenne ich mich 
einigermaßen aus, alles Andere ist "terra incognita".

Gruß Klaus (der soundsovielte)

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Klaus S. schrieb:
> Hättest Du einen Tip, wie es einfacher geht?

Das Gerät im Gerätemanager löschen, neu anstecken und von vorne 
anfangen.

von Klaus S. (kseege)


Lesenswert?

Niklas G. schrieb:
> Du kannst auch statt dem libusb Treiber den WinUSB Treiber installieren.
> Das geht mit Zadig oder auch über den Gerätemanager.

Da bin ich erst dabei, das Handling solcher Situationen zu lernen. Hatte 
ich bisher nie gebraucht. Tips für ein Tutorial (außer Youtube)?


> Klaus S. schrieb:
>> GCC? Käme mir gar nicht in den Sinn.
> Der ist aber bei Arduino mit dabei...

Gemeint war die Verbesserung oder Fehlersuche, nicht die Benutzung. (Bin 
seit Jahren in der tcc-Mailingliste :-))

Gruß Klaus (der soundsovielte)

von Klaus S. (kseege)


Lesenswert?

Niklas G. schrieb:
> Das Gerät im Gerätemanager löschen

Scheibchenweise werden die Infos rausgegeben, danke erstmal.

Nächste Scheibe: Wo da? Unter USB-Geräte?

Gruß Klaus (der soundsovielte)

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Klaus S. schrieb:
> Tips für ein Tutorial (außer Youtube)?

Klaus S. schrieb:
> Scheibchenweise werden die Infos rausgegeben, danke erstmal.

Ach komm, der Gerätemanager ist ein grafisches Tool, da kann man sich 
durchklicken bis man es findet. Da braucht man kein Tutorial für. Ist 
ungefähr so kompliziert wie eine Datei zu löschen.

von Klaus S. (kseege)


Lesenswert?

Niklas G. schrieb:
> Ach komm, der Gerätemanager ist ein grafisches Tool, da kann man sich
> durchklicken bis man es findet. Da braucht man kein Tutorial für. Ist
> ungefähr so kompliziert wie eine Datei zu löschen.

Also dann im Klartext: Der Gerätemanager ist nur die Oberfläche, die 
Windows dem unbedarften Bediener zeigt, um sich notdürftig zu helfen.

Mich interessiert, wo Windows Dateien zu Treiberzwecken hinschreibt, in 
welchen Dateien es sich Treiberinformationen merkt und wie man 
verhindern kann, daß Windows irgendwelche Treiberdateien thesauriert und 
bei Gelegenheit wieder hervorholt. Sowas passiert gemäß Lebenserfahrung 
immer genau in dem Moment, in dem man es am wenigsten brauchen kann 
(Prinzip der maximalen Gemeinheit). Das wären die nächsten 3 Scheibchen 
gewesen. Die sind alle genau so leicht, wie das Löschen einer Datei, 
weil sie das Löschen einer Datei sind. Die notwendige Info wäre eben: 
welche Datei.

Mein universelles Brutalmittel System-Backup löst alle diese Probleme 
(wie auch viele andere). Ich hätte aber vielleicht gern eine Prozedur, 
die spezifischer ist und der ich mehr vertraue, als dem Gerätemanager. 
Dem System-Backup vertraue ich :-))

Gruß Klaus (der soundsovielte)

von Harald K. (kirnbichler)


Lesenswert?

Klaus S. schrieb:
> Mich interessiert, wo Windows Dateien zu Treiberzwecken hinschreibt, in
> welchen Dateien es sich Treiberinformationen merkt und wie man
> verhindern kann, daß Windows irgendwelche Treiberdateien thesauriert und
> bei Gelegenheit wieder hervorholt.

Das mag Dich interessieren, Windows aber schützt sich vor oberschlauen 
im-Dateisystem-Herumpfuschern.

Man kann den Gerätemanager dazu bekommen, auch im Moment nicht 
installierte Geräte anzuzeigen, und bei denen lässt sich dann auch der 
Treiber deinstallieren.

Da das eine ziemliche Klickorgie ist, sind hier die Tools von Uwe Sieber 
zu empfehlen.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Klaus S. schrieb:
> Mich interessiert, wo Windows Dateien zu Treiberzwecken hinschreibt

Irgendwo nach C:\Windows.

Klaus S. schrieb:
> Die notwendige Info wäre eben:
> welche Datei.

Das ist nicht einfach nur eine Datei. Da sind noch diverse 
Registry-Keys, die man selbst als Admin nicht löschen kann. Das ist also 
ein relativ komplexer Vorgang. Der wird vom Kernel durchgeführt. Unter 
laufendem Windows kann man das vermutlich sowieso nicht nachbilden, dazu 
müsste man wohl von einem Live-Linux aus drauf zugreifen. Der 
Geräte-Manager ist lediglich ein dünner Wrapper um die 
Win32-API-Funktionen, die den Kernel zur 
Treiber-Installation/Deinstallation veranlassen. Du möchtest also deinen 
eigenen Gerätemanager implementieren? Grad ging's noch um Arduinos?

Jedenfalls hatte ich solche Probleme noch nie, selbst mit 
eigen-entwickelten Geräten. Daher hab ich da auch keinen Überblick, was 
da Windows-Intern alles passiert. Warum auch. Man kann im Gerätemanager 
alles machen was man dafür braucht (wobei die eigentliche 
Datenverwaltung im Kernel passiert), wie eben Geräte löschen.

Du kannst die entsprechende Win32-API-Funktion selbst aufrufen wenn du 
deinen eigenen Geräte-Manager implementierst:
https://learn.microsoft.com/en-us/windows/win32/api/newdev/nf-newdev-diuninstalldevice
Macht dann halt das Gleiche wie der normale Geräte-Manager, die 
eigentliche Arbeit macht der Kernel.

Klaus S. schrieb:
> Also dann im Klartext: Der Gerätemanager ist nur die Oberfläche, die
> Windows dem unbedarften Bediener zeigt, um sich notdürftig zu helfen.

Der ist eher für Admins und Entwickler gedacht. Als unprivilegierter 
User kann man dort eh nur gucken, aber nichts ändern, dazu braucht es 
Admin-Rechte. Der zeigt auch viele gute Detail-Infos an. Einziges Manko 
(neben der altbackenen Benutzerführung): Er kann bei USB-Geräten die 
String-Deskriptoren nicht anzeigen...

: Bearbeitet durch User
von Klaus S. (kseege)


Lesenswert?

@Niklas
@Harald

Ich danke Euch für Eure Hilfsbereitschaft. Ihr habt mir zwar nichts 
erzählt, was ich nicht schon selbst praktiziert oder woanders gehört 
hatte, aber Euer Insistieren auf den hervorragenden Eigenschaften des 
Gerätemanagers hat mich zu ein paar Experimenten angeregt. Und 
tatsächlich, nachdem ich aus der Geräteklasse "libusb-win32" das zweite 
und letzte Gerät deinstallieren wollte, hat mir der Gerätemanager ein 
Kontrollkästchen zum Anwählen von "Treibersoftware löschen" angeboten. 
Das finde ich doch schonmal ein vertrauenerweckendes Angebot. Jetzt muß 
ich nur noch rausfinden, ob es auch stimmt.

Gruß Klaus (der soundsovielte)

P.S. Tut mir leid, daß ich so mäkelig bin. Aber mir fehlt das den 
meisten Menschen innewohnende Gen zum "Glauben". Ich wills immer wissen 
(Wissen = durch wiederholte Erfahrung gewonnene Erkenntnis).

von Thomas Z. (usbman)


Lesenswert?

alles was mit USB zu tun hast findest du unter
HKLM\SYSTEM\CurrentControlSet\Enum\USB
es gibt einige Kopien davon unter anderen Pfaden.
wenn du dort eine VID / PID kombo löschst ist das entsprechende Device 
weg.
im Windows Systemordner gibts *.pnf Dateien. Das sind kompilierte 
Versionen der verwendeten inf Dateien. Wenn man die passend entfernt 
erzwingt man einen neuen Treiber Dialog. In jedem Fall sollte man sehr 
genau wissen was man tut sonst ist das System kaputt.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Klaus S. schrieb:
> Ich wills immer wissen
> (Wissen = durch wiederholte Erfahrung gewonnene Erkenntnis).

Na dann kannst du dich ja durch die Windows-Dokumentation wühlen. Für 
Arduino-Nutzung braucht das jedenfalls sonst keiner, und wie gesagt, 
selbst USB-Geräte-Entwickler nicht. Weißt du bei jeder Windows-Funktion 
wie sie intern funktioniert? Hast du den Windows-Quellcode studiert? Den 
Microcode deiner CPU?

Klaus S. schrieb:
> Ich danke Euch für Eure Hilfsbereitschaft. Ihr habt mir zwar nichts
> erzählt, was ich nicht schon selbst praktiziert oder woanders gehört
> hatte,

Wieso fragst du dann nach den Dateien, die du löschen musst, wenn du 
schon weißt, dass es damit nicht getan ist?

Klaus S. schrieb:
> hervorragenden Eigenschaften des
> Gerätemanagers

Der Gerätemanager ist ziemlich simpel. Die Magie passiert im 
Windows-Kernel. Und die willst du nachbilden?

Die Treiberdateien sind in
C:\Windows\System32\DriverStore\FileRepository .

Aber mit Löschen oder Hineinkopieren ist es wie gesagt nicht getan (was 
unter laufendem Windows wie gesagt sowieso nicht geht).

Thomas Z. schrieb:
> alles was mit USB zu tun hast findest du unter
> HKLM\SYSTEM\CurrentControlSet\Enum\USB

Es gibt auch noch HKLM\SYSTEM\CurrentControlSet\Control\usbflags

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?


von Klaus S. (kseege)


Lesenswert?

Niklas G. schrieb:
> Na dann kannst du dich ja durch die Windows-Dokumentation wühlen.

Ja, wenn es notwendig ist. Meine einzige "Großtat" in Windows war bisher 
eine DLL für einen IPC-Mechanismus über "shared memory" und dabei mußte 
ich mich tatsächlich durch die Windows-Dokumentation wühlen. Ansonsten 
schreibe ich für Windows bisher nur 08/15-Gebrauchssoftware und das so 
simpel wie eben möglich.

Ansonsten kann ich Deinen Fragen nur entnehmen, daß wir uns gründlich 
mißverstehen. Ich will weder Dateien löschen noch den Kernel nachbilden. 
Ich möchte, daß Windows die einmal installierten Treiber wieder 
vollständig vergisst. Nur ist das Tool, das ich dafür habe, im Moment 
für mich gerade unpassend, weil zu zeitraubend. Daher meine Frage nach 
einer einfacheren Lösung. Das Problem scheint nur zu sein, daß ich nicht 
alles blind glaube, daß Du das aber gern hättest. Tut mir leid, klappt 
nicht, mir fehlt das Gen dazu. Man kann mich aber überzeugen durch 
gescheite Angaben, die mir einleuchten und die ich reproduzierbar 
nachvollziehen kann. Schau einfach mal bei Thomas nach, der hat 
erheblich mehr Ahnung von USB als ich und immer zielgerichtete 
Vorschläge. Die leuchten mir ein und die vollziehe ich nach und danach 
entscheidet sich, wie es weitergeht.


Gruß Klaus (der soundsovielte)

von Harald K. (kirnbichler)


Lesenswert?

Klaus S. schrieb:
> Daher meine Frage nach einer einfacheren Lösung.

Habe ich gerade verlinkt.

von Niklas G. (erlkoenig) Benutzerseite


Angehängte Dateien:

Lesenswert?

Klaus S. schrieb:
> Daher meine Frage nach
> einer einfacheren Lösung

Die 3 Klicks im Geräte-Manager sind nicht einfach genug? Was könnte 
einfacher sein? Bestimmt nicht den PC herunterzufahren und manuell in 
der Registry und dem Driver Store herumzuwühlen.

Klaus S. schrieb:
> Ich möchte, daß Windows die einmal installierten Treiber wieder
> vollständig vergisst.

Ah, also nicht nur für das Gerät, sondern komplett? Das geht so:

https://learn.microsoft.com/de-de/windows-hardware/drivers/install/using-device-manager-to-uninstall-devices-and-driver-packages

Klaus S. schrieb:
> as Problem scheint nur zu sein, daß ich nicht
> alles blind glaube,

Probier es einfach aus. Es funktioniert. Was brauchst du noch? Die 
genaue Auflistung was der Kernel da intern macht?

: Bearbeitet durch User
von Klaus S. (kseege)


Lesenswert?

Thomas Z. schrieb:
> In jedem Fall sollte man sehr
> genau wissen was man tut sonst ist das System kaputt

Weswegen ich Backup-Fetischist bin. Ohne Acronis True Image wäre ich 
verloren  :-)

Gruß Klaus (der soundsovielte)

von Klaus S. (kseege)


Lesenswert?

Harald K. schrieb:
> Habe ich gerade verlinkt.

Ja, danke!

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Harald K. schrieb:
> https://www.uwe-sieber.de/misc_tools_e.html#devicecleanup

Das macht aber letztendlich exakt das gleiche wie der Geräte-Manager. Es 
hat nur eine praktischere Benutzerführung weil man mehrere Geräte auf 
einmal löschen kann. Das ist für einen einzelnen Arduino aber 
unerheblich. Und ein zusätzliches Tool zu installieren ist für mich 
nicht "einfacher".

von Harald K. (kirnbichler)


Lesenswert?

Niklas G. schrieb:
> Es hat nur eine praktischere Benutzerführung weil man mehrere
> Geräte auf einmal löschen kann.

Richtig, man klickt sich nicht einen Wolf, wenn man das auf einen PC 
loslässt, mit dem schon 'ne Weile gearbeitet wurde.

Gerade das ist beim Gerätemanager nervig; könnte man dort mehrere 
ausgeblendete Geräte markieren und gemeinsam löschen, wäre vieles 
einfacher.

Niklas G. schrieb:
> Und ein zusätzliches Tool zu installieren ist für mich
> nicht "einfacher".

Da wird nichts installiert, das ruft man einfach nur auf. Wie auch den 
USB Device Tree Viewer.

von Klaus S. (kseege)


Lesenswert?

Also ich verliere langsam die Lust, damit weiterzumachen. Das 
Installieren und Deinstallieren der Treiber klappt jetzt prima, 
Gerätemanager und Zadig arbeiten synchron und ohne Widersprüche. Windows 
"findet" nichts wieder, wenn im Gerätemanager die Software auch gelöscht 
und nicht nur das Gerät deinstalliert wird. Insoweit bin ich mit Windows 
(und mit mir :-))) zufrieden, aber natürlich nicht mit Arduino. Auf den 
Seiten von Arduino finde ich nur Werbung, aber keine Mailingliste für 
User oder sowas, also halt ich erstmal still, bis auch andere User sich 
mit ähnlichem Problem melden und kümmere mich um meine USB-Kenntnisse, 
die ja noch ganz am Anfang stehen.

Gruß Klaus (der soundsovielte)

P.S. Mit Zadig habe ich außerdem die "WinUSB" durch "libUSBk" ersetzt, 
aber das brachte nur einen anderen Wortlaut des Nichterkennens als der 
Betrieb ohne Treiber.

von Thomas Z. (usbman)


Lesenswert?

Klaus S. schrieb:
> P.S. Mit Zadig habe ich außerdem die "WinUSB" durch "libUSBk" ersetzt,
> aber das brachte nur einen anderen Wortlaut des Nichterkennens als der
> Betrieb ohne Treiber.

hast du denn libusb oder auch Winusb wirklich nur für Interface 2 
installiert?

USB und Betrieb ohne Treiber geht nicht. Jedes Usb Gerät braucht 
Treiber. Die können wie im Falle von CDC vom OS kommen (Klassentreiber) 
oder eben von einer Installation.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Klaus S. schrieb:
> Auf den
> Seiten von Arduino finde ich nur Werbung,

https://support.arduino.cc/hc/en-us/articles/9398559565340-Problems-uploading-to-UNO-R4-WiFi-on-Windows

Keine 1 Minute brauchte ich um das zu finden.....

von Klaus S. (kseege)


Lesenswert?

Thomas Z. schrieb:
> hast du denn libusb oder auch Winusb wirklich nur für Interface 2
> installiert?

Erwischt. Natürlich nicht. Ich sagte doch, daß meine USB-Kenntnisse 
Zuwachs brauchen. Das CompoundDevice und die Endpoints brauchen noch 
Klärung in meinem Kopf. Ich kümmer mich drum, danke.


Arduino F. schrieb:
> 
https://support.arduino.cc/hc/en-us/articles/9398559565340-Problems-uploading-to-UNO-R4-WiFi-on-Windows
> Keine 1 Minute brauchte ich um das zu finden.....

Ich wußte doch, daß Fähigkeiten ungleich verteilt sind und hoffte, daß 
jemand Anderes darin besser ist als ich. Ich hatte nach einer halben 
Minute die Schnauze so voll von der ganzen Werbung ...
Ebenfalls danke.

Gruß Klaus (der soundsovielte)

von Klaus S. (kseege)


Lesenswert?

Habe für Interface2 WinUSB installiert. Danach war der COMport nicht 
mehr da. Konnte für Interface0 usbserial nachinstallieren, dann war er 
als COM5 wieder sichtbar.
Arduino lud wieder bis "detach und reattach" und fand im Bootloadermodus 
keinen COMport. In diesem Bootloadermodus konnte ich mit Zadig wieder 
einen Treiber für "Santiago  DFU" laden (was hat heilige Jakob mit DFU 
zu tun?).
Ich habs mal mit usbserial versucht, aber der bekam COM7 zugeteilt. Der 
wurde aber in der Arduino-IDE nicht, im Gerätemanager sehr wohl 
angezeigt.
Dementsprechen klappte das Flashen natürlich weiterhin nicht. die 
fehlende COMport-Verbindung wurde angemeckert.
Wenn man es nun schaffen könnte, beiden Treibern dieselbe COMportnummer 
zu verpassen? Es gibt da was zum renumerieren der COMports, fällt mir 
nur gerade nicht ein. Werde danach suchen.

Gruß Klaus (der soundsovielte)

von Thomas Z. (usbman)


Lesenswert?

Klaus S. schrieb:
> Habe für Interface2 WinUSB installiert. Danach war der COMport
> nicht
> mehr da. Konnte für Interface0 usbserial nachinstallieren, dann war er
> als COM5 wieder sichtbar.

scmeiss noch mal alles raus COM3 + COM5 + WinUsb
Danach anstecken. CDC kommt automatisch ab Win10. -> da sollte dann auch 
dein COM3 erscheinen.

Wenn das durchgelaufen ist auf Interface 2 WinUsb mit Zadig 
installieren.
Danach sollte alles korrekt funktionieren

von Klaus S. (kseege)


Angehängte Dateien:

Lesenswert?

Thomas Z. schrieb:
> scmeiss noch mal alles raus COM3 + COM5 + WinUsb
> Danach anstecken. CDC kommt automatisch ab Win10. -> da sollte dann auch
> dein COM3 erscheinen.

Ganz so einfach ist es leider nicht. Am Desktop mit 64bit-Win10 
erscheint kein COMport und unter "Andere Geräte" der DFU-RT-Port.
Am Laptop mit der 32-bit-Version erscheint dagegen der COMport und ganz 
unten im GM der DFU-RT-Port in einer separaten Zeile "USB-Controller". 
Der UNO sendet alle Sekunde einen String und das kann ich auf dem Laptop 
unter Win10 und Linux verifizieren.

Zadig bietet mir an, für CDC Port (Interface 0) oder für DFU-RT Port 
(Interface 2) was zu installieren. Nach meiner Interpretation der 
Sachlage wäre jetzt USBserial für den CDCport nötig. Richtig?

Habe mal die Ausgabe von usbtreeview in der Textdatei angehängt

GrußKlaus (der soundsovielte)

von Klaus S. (kseege)


Angehängte Dateien:

Lesenswert?

War neugierig und habs gleich gemacht. Ergebnis leider wie immer.

Gruß Klaus (der soundsovielte)

von Klaus S. (kseege)


Lesenswert?

Die Treiber scheinen damit aber richtig eingerichtet. Mit "dfu-util -l" 
wird das Gerät wie in Linux angezeigt. Schaltet man in den 
Bootloadermodus, so erscheint im Gerätemanager "Santiago DFU" und man 
kann wiederum mit Zadig WinUSB als Treiber dafür laden. Danach ist 
möglich, mit
"dfu-util -a 1 -U <filename>" den Codespeicher auszulesen. Allerdings 
bricht das Auslesen nicht ab, wenn die angewählte Anzahl Bytes erreicht 
ist. Dieser Fehler tritt aber auch unter Linux auf. Da ist wohl noch ein 
wenig Feinschliff nötig.

Ich werde hier abbrechen und unter Linux mein Forth aufspielen, damit 
kann ich dann weiter experimentieren.

Gruß Klaus (der soundsovielte)

von Thomas Z. (usbman)


Angehängte Dateien:

Lesenswert?

Klaus S. schrieb:
> Zadig bietet mir an, für CDC Port (Interface 0) oder für DFU-RT Port
> (Interface 2) was zu installieren. Nach meiner Interpretation der
> Sachlage wäre jetzt USBserial für den CDCport nötig. Richtig?

Das CDC Device beteht aus 2 Interfaces
Interface0 ist control
Interface1 ist das DatenInterface

Interface2 ist das DFU device.
Aus dem UsbTreeview geht hervor dass das der Treiber für das DFU Device 
nicht gestartet werden kann (code 28 für Childdevice #2)

Wie gesagt CDC auf Interface 0 per Zadig ist definitiv falsch.
Du must es irgendwie schaffen alles für dein Teil zu deinstallieren.
Dann kommt der CDC automatisch (unter W10). dann auf dein Interface2 
winusb mit Zadig. Schalte in Zadig den erweiterten mode ein.


Ich hab dir mal ein Beispiel vom wch-link angehängt.
Da sind die Deskriptoren auch nicht 100% ok Das Ding funktioniert aber

Interface0 DAP -> winusb
Interface2     -> CDC daten
Interface3     -> CDC Control

: Bearbeitet durch User
von Klaus S. (kseege)


Lesenswert?

Thomas Z. schrieb:
> Du must es irgendwie schaffen alles für dein Teil zu deinstallieren.

Das scheint noch nicht ganz zu klappen. Wenn ich alles deinstalliere, 
was mit dem Board zusammenhähgt, erscheint im Gerätemanager das Board 
als "DFU-RT Port" unter "Andere Geräte" und ein Treiber ist angeblich 
nicht verfügbar.

In Zadig aber erscheint normalerweise "NONE" im Feld für den vorhandenen 
Treiber, wenn alles deinstalliert wurde. Für das Interface0 steht dort 
aber "libusbK". Ist das die Win10-default-Einstellung?

> Dann kommt der CDC automatisch (unter W10).
Wenn damit die "CommunicationDeviceClass" gemeint ist, ein COMport 
erscheint definitiv nicht.

Gruß Klaus (der soundsovielte)

von Klaus S. (kseege)


Lesenswert?

Endlich Zeit gefunden, System Backup zurückzuspielen.
COMport ist da, Zadig sagt für Interface0: "usbser (v10.0.19041.2130)"

Für Interface2 WinUSB installiert, danach mit Arduino dasselbe Spiel wie 
immer:
Opening DFU capable USB device...
Device ID 2341:0069
Run-Time device DFU version 0101
Claiming USB DFU (Run-Time) Interface...
Setting Alternate Interface zero...
Determining device status...
DFU state(0) = appIDLE, status(0) = No error condition is present
Device really in Run-Time Mode, send DFU detach request...
Device will detach and reattach...
Cannot open DFU device 2341:0369 found on devnum 6 
(LIBUSB_ERROR_NOT_SUPPORTED)
Lost device after RESET?
Der ausgewählte serielle Port Lost device after RESET?
 ist nicht vorhanden oder das Board ist nicht angeschlossen

"dfu-util -l" manuell gestatert sagt:
Cannot open DFU device 2341:0369 found on devnum 6
(LIBUSB_ERROR_NOT_SUPPORTED)

Zadig sagt über den Treiber des im Bootloadermodus aktiven "Santiago 
DFU": NONE.

Lade ich als Treiber WinUSB, dann kann ich mit "dfu-util -l" zwar zwei 
DFU-Kanäle sehen:

Found DFU: [2341:0369] ver=0100, devnum=7, cfg=1, intf=0, path="2-3", 
alt=0, name="@CodeFlash /0x00000000/8*2Ka,120*2Kg", 
serial="370D280D58313330D23A33324B572D98"
Found DFU: [2341:0369] ver=0100, devnum=7, cfg=1, intf=0, path="2-3", 
alt=1, name="@DataFlash /0x08000000/8*1Kg", 
serial="370D280D58313330D23A33324B572D98"

ein COMport ist aber nicht mehr vorhanden. Es fehlt also aus meiner 
vorläufigen Sicht der richtige Treiber für "Santiago DFU".

Werde morgen nachmittag mal versuchen, Arduino unportabel zu 
installieren.
Jetzt ist erstmal die Familie dran.

Gruß Klaus (der soundsovielte)

von Thomas Z. (usbman)


Lesenswert?

bei der usb.org gibts eine Class Spec zum DFU mode. MS unterstützt bis 
heute keinen Klassentreiber für DFU. Das ist also etwas frickelig.
Soweit mir bekannt ist wird beim Aktivieren des DFU modes ein Replug 
ausgelöst, und es kommt ein DFU Device mit anderen IDs hoch (dein 
Santiago DFU). Dieses braucht logischerweise auch Treiber.
Das deckt sich ja mit deiner Aussage, dass der Comport verschwindet.
Kannst du posten was für IDs da kommen (UsbTreeView oder im 
Gerätemanager nachschauen).
Ev muss dafür noch mal libusb zugeordnet werden.

von Klaus S. (kseege)


Lesenswert?

Thomas Z. schrieb:
> Kannst du posten was für IDs da kommen (UsbTreeView oder im
> Gerätemanager nachschauen).
Das hatte ich schon in meinem Posting vom "04.07.2023 09:40" angehängt.

> Ev muss dafür noch mal libusb zugeordnet werden.
Das habe ich doch mit Zadig gemacht. Muß das anders laufen?

Gruß Klaus (der soundsovielte)

P.S. Verwendung der installierten Version statt der portablen Version 
von Arduino 1.8.19 bringt keinen Unterschied.

von Thomas Z. (usbman)


Lesenswert?

mm so langsam glaube ich dass bei deinem System kein libusb vorhanden 
ist.
Benutzte mal winusb das ist bei jedem Windows seit Vista dabei.
lt der Homepage von dfu-util gehen alle Varianten

"We offer binaries for Microsoft Windows and some other platforms. 
dfu-util uses libusb 1.0 to access your device, so on Windows you have 
to register the device with the WinUSB driver (alternatively 
libusb-win32 or libusbK), please see the libusb wiki for more details."

Instalier winusb für das device  VID_2341 / PID_0369 und auch für 
Interface2 vom Compountdevice VID_2341 / PID_0069

: Bearbeitet durch User
von Klaus S. (kseege)


Lesenswert?

Thomas Z. schrieb:
> mm so langsam glaube ich dass bei deinem System kein libusb vorhanden
> ist.
Woher auch?

> Benutzte mal winusb das ist bei jedem Windows seit Vista dabei.
> lt der Homepage von dfu-util gehen alle Varianten
Die nehm ich doch schon die ganze Zeit, die schlägt Zadig mir doch vor. 
Der letzte Schritt zum Erfolg (endlich!!) war das Starten der 
Arduino-IDE als Administrator, jetzt funktioniert das Flashen. Danke für 
Deine Ausdauer, allein hätte ich es nicht hinbekommen.

Ich mach nochmal ein paar Experimente und poste dann eine 
Zusammenfassung.

Gruß Klaus (der soundsovielte)

P.S. libusb habe ich aus Neugier mal heruntergeladen, die Versionen für 
Windows liegen in 2 Ausgaben vor: Cygwin und Mingw.  Wie ich sie in 
Programme einbinde, die mit Cygwin oder Mingw compiliert werden, ist mir 
klar (ob statisch oder dynamisch).
Wie ich sie ins Windows-System integriere, damit Zadig sie findet, ist 
mir aber noch schleierhaft. Einfach dahin kopieren, wo sich die anderen 
DLLs tummeln und Windows defaultmäßig nachschaut? Schaut Zadig da auch 
nach?

von Klaus S. (kseege)


Lesenswert?

Klaus S. schrieb:
> Ich mach nochmal ein paar Experimente und poste dann eine
> Zusammenfassung.

Das Problem hat sich erledigt. Wenn die Software für den UNO R4 geladen 
wird, kommt jetzt am Ende noch ein Treiber hinterher. Damit funktioniert 
das Programmieren ohne Probleme, COMiport und Renesas Flash 
Programmierer müssen anwählt werden. Getestet wurde auf einem komplett 
neu eingerichteten Windows10/64 ohne Vorbehandlung (nicht mal die 
Gerätetreiber für den Laptop waren installiert).

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.