Forum: Mikrocontroller und Digitale Elektronik Arduino soll Daten an PC schicken plug&play aber wie


von Frege (Gast)


Lesenswert?

Hi,
ich würde gerne Daten von meinem Arduino z.B. UNO an den PC schicken.
Nach dem einstecken des USB Kabels sollen Daten z.B. als Textdatei in 
einem Pfad unter Windows abgelegt werden ( ohne zusätzliches Programm).

Der USB-Controller auf dem Arduino ist evtl. nur mit Rx und Tx 
verbunden.
Er erscheint auf dem PC z.B. als UART Bridge CP210x von Silicon Labs.
In einem anderen Projekt habe ich bereits den USB-Controller 
überschrieben, damit Midi Daten gesendet werden an den PC. Mit einem 
Programm konnte man die ankommenden Daten sehen. Das war etwa so wie 
standardmäßig wenn man mit der Arduino IDE die Seriellen Daten vom 
Arduino abhört.

Ist es denn jetzt möglich den Arduino oder seinen Controller so 
umzuprogrammieren, dass er beim einstecken ein Programm ausführt, dass 
auf einen eingegeben Pfad Dateien auf dem PC speicher kann ?
Das wäre ja ein großes sicherheitsrisiko für Windwos, wenn so etwas 
gehen würde.
Aber wenn der Nutzer dem Gerät das erlaubt könnte das ja gehen.

Im Endeffekt soll man mit Plug & Play (USB) den Controller anschließen 
können , auf erlauben klicken und der Datentransfer soll beginnen.


Nachtrag: muss gar nicht umbedingt USB sein vll gibt es ja etwas anderes

Vielen Dank

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Frege schrieb:
> Nach dem einstecken des USB Kabels sollen Daten z.B. als Textdatei in
> einem Pfad unter Windows abgelegt werden ( ohne zusätzliches Programm).

Das ist unmöglich.

von Marek N. (Gast)


Lesenswert?


von Frank L. (hermastersvoice)


Lesenswert?

ich hab da mal ein Demo für einen "Bad USB"-Stick gesehen. Wenn man den 
Stick ansteckt öffnet er das Notepad auf dem Rechner und schreibt einen 
Text ins Fenster. Grundsätzlich gehts also weil der Stick als 
HID-Tastatur arbeitet.

von Timmo H. (masterfx)


Lesenswert?

Mit dem CP210x geht das nicht, aber du könntest per VUSB eine Tastatur 
emulieren, darüber WindowsTaste+r, dann notepad d:\blubb
Txt starten, per Tastendruck Emulation die Daten tippen und dann 
abspeichern.

von Jens M. (schuchkleisser)


Lesenswert?

Ohne Programm auf dem PC geht das nicht.
Du könntest evtl. einen Massenspeicher emulieren, trotzdem müsste das 
Laufwerk erst geöffnet und eine Datei kopiert werden.
Eine Tastatur könnte (wenn sie das Zielsystem kennt) zumindest kleine 
Datenmengen eintippen, z.B. als WinR-echo "Testtext">c:\Testfile.txt.
Das wär eindirekt eine Sicherheitslücke, aber auffällig und mühsam.
Autostarts auf Wechseldatenträgern sind m.W. schon seit Dekaden nicht 
mehr aktiv, sonst wäre das noch ein Weg.

Allen gemeinsam ist aber, das der COM-Port-Chip auf dem Uno/Nano das 
nicht kann, mehr wie einen seriellen Port gibt's da nicht.
Wenn, dann ginge das nur mit einem Chip, der sich selber um den USB-Port 
kümmert, wie ein Arduino Micro z.B., wobei der oft auf den Unos als 
USB-Adapter sitzt.

von STK500-Besitzer (Gast)


Lesenswert?

Frank L. schrieb:
> ich hab da mal ein Demo für einen "Bad USB"-Stick gesehen. Wenn man den
> Stick ansteckt öffnet er das Notepad auf dem Rechner und schreibt einen
> Text ins Fenster. Grundsätzlich gehts also weil der Stick als
> HID-Tastatur arbeitet.

Ja. Mit dem Problem, dass dazu die HID-USB-Klasse verwendet wird.
Der (externe) USB-Controller des Arduino unterstützt aber nur die 
CDC-Klasse, also UART auf USB umgesetzt.
Ein Leonardo (ATmega32U...) könnte als HID programmiert werden. Könnte 
dann aber immer noch nicht auf ein Verzeichnis auf dem Windows-Rechner 
zugreifen.

von Sebastian R. (sebastian_r569)


Lesenswert?

STK500-Besitzer schrieb:
> Der (externe) USB-Controller des Arduino unterstützt aber nur die
> CDC-Klasse, also UART auf USB umgesetzt.

Der USB-Controller beim Arduino Uno ist ein ATMega16U2, also dem könnte 
man schon beibringen, als HID zu arbeiten.

von Joachim B. (jar)


Lesenswert?

STK500-Besitzer schrieb:
> Ein Leonardo (ATmega32U...) könnte als HID programmiert werden. Könnte
> dann aber immer noch nicht auf ein Verzeichnis auf dem Windows-Rechner
> zugreifen.

geht das nicht?

Windowstaste+R öffnet sich "Ausführen". In dieses Fenster geben Sie 
"cmd.exe" + <ENTER> + "copy con: c:\datei.txt" + <ENTER> + "hallo^z" + 
<ENTER>

gibt zumindest hier:

hallo in "c:\datei.txt"

welcher Tastencode für windowsTASTE + R gesendet werden muss müsste 
rauszubekommen sein

: Bearbeitet durch User
von STK500-Besitzer (Gast)


Lesenswert?

Sebastian R. schrieb:
> Der USB-Controller beim Arduino Uno ist ein ATMega16U2, also dem könnte
> man schon beibringen, als HID zu arbeiten.

Danke, mit dem UNO habe ich mich noch nicht auseinandergesetzt.

von STK500-Besitzer (Gast)


Lesenswert?

Joachim B. schrieb:
> STK500-Besitzer schrieb:
>> Ein Leonardo (ATmega32U...) könnte als HID programmiert werden. Könnte
>> dann aber immer noch nicht auf ein Verzeichnis auf dem Windows-Rechner
>> zugreifen.
>
> geht das nicht?
>
> Windowstaste+R öffnet sich "Ausführen". In dieses Fenster geben Sie
> "cmd.exe" + <ENTER> + "copy con: c:\datei.txt" + <ENTER> + "hallo^z" +
> <ENTER>
>
> gibt zumindest hier:
>
> hallo in "c:\datei.txt"
>
> welcher Tastencode für windowsTASTE + R gesendet werden muss müsste
> rauszubekommen sein

Vermutlich schon.
Ein Fenster-Wechsel während der "Eingabe" könnte zu Problemen führen.

von Frank L. (hermastersvoice)


Lesenswert?

grad mit nem Bad-USB-Stick mal getestet. Man kann damit als HID-Tastatur 
das Notepad öffnen, einen Text reinschreiben, das Elaborat abspeichern 
und das Notepad wieder schliessen. Die Datei ist dann auf dem Rechner 
als Textdatei gespeichert. Der Stick meldet sich beim PC als Leonardo an 
aber es sollte auch mit einem Digispark-Board funktionieren. Das kann 
auch HID aber ich hab grad Keins zum testen hier.

von Adam P. (adamap)


Lesenswert?

OK,

angenommen er simuliert eine Tastatur als HID und das mag ja auch 
funktionieren, nur blöd wenn er nebenbei am PC arbeiten möchte...

weil, was würde nämlich passieren, wenn das Programm den Fokus verliert 
bzw. er Word oder Browser öffnet: Dann würde sein Arduino alles in das 
Fenster schreiben.

von Joachim B. (jar)


Lesenswert?

STK500-Besitzer schrieb:
> Ein Fenster-Wechsel während der "Eingabe" könnte zu Problemen führen.

klar Mausspielereien sollten dabei nicht stattfinden, evtl. geht noch 
<ALT> <ENTER> für fullscreen, da kann keine Maus mehr fensterln denke 
ich

von Adam P. (adamap)


Lesenswert?

Bei allen Plug&Play Geschichten läuft entweder ein aktives Programm oder 
ein Dienst im Hintergrund.

Du könntest ja ein Dienst schreiben der bei Geräteerkennung ein 
Empfangsprogramm startet, welches dann Daten entgegen nimmt und 
verarbeitet.
Oder du lässt den Dienst weg und lässt dein Programm im Hintergrund 
arbeiten.

Aber von irgendwo muss das Betriebssystem halt wissen was es bei 
Aktion-X tun soll.

von leo (Gast)


Lesenswert?

Frege schrieb:
> Hi,
> ich würde gerne Daten von meinem Arduino z.B. UNO an den PC schicken.

Wie schon gesagt brauchst du dazu einen Arduino mit USB HID.
E.g. Digispark
https://www.heise.de/select/ix/2017/7/1499358388386903
oder Leonardo, Arduino Micro Pro

Uno, Nano usw gehen nicht.

leo

von Stefan F. (Gast)


Lesenswert?

Ich kann nur dringend davon abraten, den Rechner von außen fernsteuern 
zu wollen.

Das funktioniert nur unter sehr beschränkten Bedingungen (z.B. nicht, 
wenn der Bildschirm mit Passwort gesperrt ist) und kollidiert mit 
manuellen Bedienvorgängen, sowie mit Popup Fenstern, die unter Windows 
gerne mal unerwartet erscheinen.

Und dann gibt es ja noch Leute mit anderen Windows Versionen oder 
anderen Betriebssystemen.

Also wenn ich etwas an den Rechner stecke, was Tastatureingaben 
simuliert, dann kommt das sofort in den Müll. Denn das wäre für mich 
genau so inakzeptabel, wie ein Viren-versuchtes Programm.

von Joachim B. (jar)


Lesenswert?

Stefanus F. schrieb:
> Ich kann nur dringend davon abraten, den Rechner von außen fernsteuern
> zu wollen.
> Also wenn ich etwas an den Rechner stecke, was Tastatureingaben
> simuliert, dann kommt das sofort in den Müll. Denn das wäre für mich
> genau so inakzeptabel

das bleibt dir doch unbenommen, aber den Wunsch vom TO hast du doch 
gelesen?

Frege schrieb:
> Hi,
> ich würde gerne Daten von meinem Arduino an den PC schicken.
> Nach dem einstecken des USB Kabels sollen Daten z.B. als Textdatei in
> einem Pfad unter Windows abgelegt werden ( ohne zusätzliches Programm).

klar kann er an seinem PC, oh er schrieb ja nicht das der PC seiner ist, 
was nun alle unter Generalverdacht?

von Stefan F. (Gast)


Lesenswert?

Joachim B. schrieb:
> aber den Wunsch vom TO hast du doch gelesen?

Den habe ich so verstanden: Er möchte Daten vom Mikrocontroller aus in 
eine Datei ablegen. Von "Fernsteuern" war nicht die Rede.

Rufus Τ. F. schrieb:
> Das ist unmöglich.

Sehe ich ebenso.

von STK500-Besitzer (Gast)


Lesenswert?

Stefanus F. schrieb:
> Rufus Τ. F. schrieb:
>> Das ist unmöglich.
>
> Sehe ich ebenso. Ohne zusätzliche Software auf dem PC geht es nicht
> sinnvoll.

Zumindest nicht ohne irgendwelche fehlerträchtigen Verrenkungen.

von Joachim B. (jar)


Lesenswert?

Stefanus F. schrieb:
> Von "Fernsteuern" war nicht die Rede.

an welcher Stelle soll das geschrieben worden sein?

Stefanus F. schrieb:
> Denn das wäre für mich
> genau so inakzeptabel, wie ein Viren-versuchtes Programm.

du hast es angedeutet?

von fgestrig (Gast)


Lesenswert?

Vielen Dank für eure zahlreichen Antworten !

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.