Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller als Modem benutzen


von Tobias P. (hubertus)


Lesenswert?

Hallo,
ich möchte folgendes machen. Ich habe hier ein Mikrocontrollerboard, das 
über eine serielle Schnittstelle mit dem PC verbunden wird. Der 
Mikrocontroller soll sich nun aus PC-Sicht wie ein Modem verhalten, 
sodass ich in der Netzwerkumgebung des PCs eine Modemverbindung 
einrichten kann. "Wählt" man sich dann über diese Modemverbindung ein, 
dann eine gefakte Netzwerkverbindung aufgebaut, über die dann via 
Browser auf dem PC eine HTML-Site aufgerufen werden kann. Das soll dazu 
dienen, das Controllerboard zu konfigurieren. Bisher wurde das über ein 
Textbasiertes Terminal-Interface gelöst, aber das ist nun wirklich ein 
wenig altbacken, deshalb möchte ich das nun via Browser graphisch 
erledigen. Aus Gründen der Rückwärtskompatibilität muss die serielle 
Schnittstelle aber unbedingt vorhanden bleiben. Ein Netzwerkstack läuft 
eh schon auf dem Board, das PPP-Protokoll ist auch implementiert. Also 
müsste das doch gehen, oder?
Was muss ich noch alles implementieren, damit der Controller sich aus 
PC-Sicht wie ein Modem verhält? Zu beginn gibts ja da diese Sequenz, wo 
der PC zuerst CLIENTCLIENT senden, dann muss man mit CLIENTSERVER 
antworten. Sonst noch was?

von Klaus W. (mfgkw)


Lesenswert?

Wäre es nicht andersrum sinnvoller: einen kleinen Webserver auf dem 
Controller, der vom PC aus per Browser ansprechbar ist?

von Peter II (Gast)


Lesenswert?

Warum nich ganz einfach ein Konfigurationsprogramm beilegen? Kann ja 
auch ein Java sein dann läuft es auf jedern Platform.

Ich finde die Idee zwar sehr Kreativ aber wenig praxistauglich. Denn du 
simuliert ja einen neuen Internet zugang, damit geht in der Zeit auf dem 
PC nichts mehr was internet braucht. (Mail-Programm usw).

Auch die Resourcen dafür sind nicht ohne, du musst ja immerhein ein 
Modem, einen DHCP-Server, einen DNS-Server, einen Webserver 
bereitstellen und das nur für ein wenig Konfig?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Peter II schrieb:
> Denn du
> simuliert ja einen neuen Internet zugang, damit geht in der Zeit auf dem
> PC nichts mehr was internet braucht.

Das muss nicht so sein, wird dieser neue Zugang so konfiguriert, daß die 
Option "Standardgateway für Remotenetzwerk verwenden" deaktiviert wird, 
geht's auch gleichzeitig mit der bestehenden Netzwerkverbindung. 
Allerdings nur, solange der per simuliertem Modem angeschlossene Kram 
IP-Adressen aus einem sonst ungenutzten Subnet verwendet.

von Peter II (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Das muss nicht so sein, wird dieser neue Zugang so konfiguriert, daß die
> Option "Standardgateway für Remotenetzwerk verwenden" deaktiviert wird,

es soll ja für den Nutzer einfacher werden, wenn er erstmal 10 Seiten 
doku lesen muss wie er den zugang zu dem Board einzurichten hat dann 
vergeht ihn bestimmt die lust.
Welche Proxy einstellung verwendet windows eigentlich wenn gleichzeit 
eine RAS und WLAN verbindung besteht? Der Browser kann eigentlich nicht 
entscheiden über welcher Leitung die Daten rausgehen. Denn die IP kann 
ja auch inter den Proxy existieren.

von Tobias P. (hubertus)


Lesenswert?

Klaus,
genau das will ich ja machen. Auf dem Board ist eine statische HTML-Site 
gespeichert, wo die Konfig angezeigt und editiert werden kann.
Ich habe es zwar soweit schon implementiert, dass das Board von sich aus 
eine auf den PC eingehende Verbindung via SLIP aufbaut, ich kann dann 
das Board auch anpingen etc., aber in Windows 7 ist SLIP nicht mehr 
dabei. Deshalb muss ich auf PPP ausweichen, und dazu muss ich so tun als 
wäre ich ein Modem. DHCP und all der Kram ist eh schon drin, auch DNS 
und so weiter, weil das auch noch anderweitig gebraucht wird.

von Peter II (Gast)


Lesenswert?

Tobias Plüss schrieb:
> DHCP und all der Kram ist eh schon drin, auch DNS
> und so weiter, weil das auch noch anderweitig gebraucht wird.

dann hat das boad also Netzwerk? Wenn ja warum dann nicht gleich darüber 
machen?

von Tobias P. (hubertus)


Lesenswert?

Weil es ein Bluetooth-Netzwerk ist, und nicht jeder Kunde die Lizenz 
hat, diese Bluetooth-Option zu benutzen.

von Noah (Gast)


Lesenswert?

Tobias Plüss schrieb:
> Weil es ein Bluetooth-Netzwerk ist, und nicht jeder Kunde die Lizenz
> hat, diese Bluetooth-Option zu benutzen.

Schöne neue Welt. facepalm

von Εrnst B. (ernst)


Lesenswert?

Tobias Plüss schrieb:
> Was muss ich noch alles implementieren, damit der Controller sich aus
> PC-Sicht wie ein Modem verhält?

Kannst du auf PC-Seite einen eigenen Modem-Treiber vorsehen (also: 
INF-File mit eigenem Set an AT-Komandos für den mitgelieferten 
Modem-Treiber)?

Oder musst du ein existierendes Modem (mitgelieferter Treiber) inkl. 
dessen AT-Command-Sets emulieren?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Peter II schrieb:
> Welche Proxy einstellung verwendet windows eigentlich wenn gleichzeit
> eine RAS und WLAN verbindung besteht?

Welcher Proxy?  Da ist kein Proxy, jedenfalls nicht, solange sich jemand 
so etwas nicht einrichtet.

von Tobias P. (hubertus)


Lesenswert?

Hmm, also ich bin nun schon ein wenig weiter.
Richtet man im Windows eine Modemverbindung ein und klickt auf 
"Verbinden", dann sender der PC über die RS-232 erst mal nur den String 
"CLIENT". Darauf muss man dann mit "CLIENTSERVER" antworten, ab diesem 
Zeitpunkt läuft die Kommunikation dann im PPP-Protokoll. Der lwip hat 
dieses glücklicherweise bereits integriert, ich muss also nur das, was 
an der seriellen eintrifft, an den lwip weiterleiten, dann gehts. 
Windows meldet dann: "Der Computer wird im Netzwerk registriert", dann 
blitzt kurz das Symbol auf "Netzwerkverbindung hergestellt". Allerdings 
bricht die Verbindung sofort wieder ab, mit der Meldung, dass dem 
Computer (also Windows) keine Netzwerkadresse zugeteilt wurde. Ein Blick 
in Wireshark hat dann ein wenig Licht ins Dunkel gebracht: Windows fragt 
das gefakte "Modem" mehrmals nach einer IP, bekommt aber keine und 
trennt die Verbindung dann. Die Frage ist jetzt noch, wie ich von meiner 
Software her dem Clienten, der da connecten möchte, eine IP zuweise :-/

von .... (Gast)


Lesenswert?

DHCP???

von Tobias P. (hubertus)


Lesenswert?

Ja, natürlich, nur:
wenn der PC, von dem aus ich verbinden möchte, bereits im LAN ist? Was 
darf ich ihm für eine Netzwerkadresse zuweisen? Ich kann ja nicht 
wissen, ob der PC bereits eine LAN-Verbindung hat und somit in einem 
Netzwerk ist.
Angenommen, der PC habe im LAN die IP 192.168.1.45. Wenn ich nun von 
meinem Board aus zufällig dieselbe IP zuweise - dann hat der PC zwei 
Netzwerkadapter mit gleichen IPs. Was macht er dann? Oder noch 
schlimmer: Ich weise dem PC irgend eine IP zu, die zufälligerweise nicht 
existiert. Mir selber muss ich aber ja auch eine IP zuweisen - was, wenn 
die IP, die ich mir selber zuweise, bereits im Netzwerk existiert? 
Angenommen, der PC vom Kollegen nebenan hat 192.168.1.33, und mein 
Controllerboard, das sich als Modem bei meinem PC angemeldet hat, hat 
nun auch 192.168.1.33. Was passiert, wenn ich nun von meinem PC aus 
einen Ping an die genannte Adresse absende? Auf welchem Adapter soll der 
PC das Paket denn dann verschicken? Auf beiden? Was passiert dann, wenn 
er von beiden Rechnern eine Antwort bekommt?

von Christian B. (casandro)


Lesenswert?

Also Du musst da zwischen unterschiedlichen Dingen unterscheiden.
Du willst eigentlich "das Internet" simulieren.

Das Modem selbst macht eigentlich nicht viel. Um das zu simulieren musst 
Du nur auf alle eingehenden Zeilen die mit "at" oder "AT" beginnen mit 
"OK" antworten. Kommt eine Zeile mit "atd" am Anfang, so musst Du erst 
"OK" und dann "CONNECT" ausgeben, dann ist das so als ob die Verbindung 
bestünde.
Abgebrochen wird die mit 3 Sekunden warten "+++" 3 Sekunden warten. 
Damit schaltest Du wieder in den Befehlsmodus um.

Im Datenmodus musst Du nun ein Protokoll sprechen. Im einfachsten Falle 
wäre das SLIP, da musst Du aber alle Einstellungen selbst einstellen. Du 
kannst auch PPP verwenden, da werden die Einstellungen mit übertragen. 
Das ist aber komplizierter. Wichtig ist in beiden Fällen, dass Du keinen 
"Default Gateway" einstellst, sonst gibts Probleme mit dem normalen 
Internetzugang.

Aber ich würde für Deinen Anwendungsfall einfach eine Benutzeroberfläche 
per Terminalemulation machen. Ein VT100 kompatibles Terminalprogramm 
gibts für praktisch jeden Rechner und damit kann man schon viel machen. 
Und es ist eine echte "Plug and Play"- Lösung.

von Informant (Gast)


Lesenswert?

Warum, wenn du keine spezialisierte Host-Software möchtest, damit das 
Gerät die Kontrolle behält, baust du nicht einen http<->UART Tunnel für 
den PC?
Es muss nur einen Token geben, der zwischen http-Tunnel und 
"Terminal-Interface" umschaltet.

von Reinhard Kern (Gast)


Lesenswert?

Tobias Plüss schrieb:
> Richtet man im Windows eine Modemverbindung ein

Hallo,

es gibt längst einen etablierten Industrie-Standard, den kennt jeder, 
der eine Fritzbox oder einen Druckserver hat: die sind im Netzwerk als 
http-Server erreichbar und präsentieren eine Website zur Konfiguration. 
Alternativ ist meist noch ein Telnet-Zugriff möglich, auch über eine 
serielle Schnittstelle, sofern eine vorhanden ist. Das aber nur für 
Notfälle, benutzt wird normalerweise nur der Web-Zugriff.

Alles andere ist proprietäres Gebastel und strikt abzulehnen, weil nicht 
sofort und intuitiv bedienbar. Lehrgänge zur Konfiguration sind 
Vergangenheit und ein ausreichender Grund, was moderneres zu kaufen.

Gruss Reinhard

von Peter II (Gast)


Lesenswert?

Reinhard Kern schrieb:
> es gibt längst einen etablierten Industrie-Standard, den kennt jeder,
> der eine Fritzbox oder einen Druckserver hat: die sind im Netzwerk als
> http-Server erreichbar und präsentieren eine Website zur Konfiguration.
merkwürdig, unser Heizung hat keine Webseite, auch unsere Telefonanlage 
nicht.

Wenn das Gerät kein Netwerk anschluss hat, dann erwarte ich auch keinen 
Webserver. Es gibt genug Geräte die über eine Konfig-Software verwaltet 
werden.

von Informant (Gast)


Lesenswert?


von Tobias P. (hubertus)


Lesenswert?

Also, PPP ist ja bereits implementiert, und Windows kann mit dem 
gefakten Modem ja auch kommunizieren! Ich richte eine Verbindung ein wie 
folgt:

- Netzwerkumgebung
- Neue Verbindung
- Erweiterte Verbindung
- Verbindung direkt mit anderem Computer

Erstellt man eine solche Verbindung, dann erscheint beim Öffnen selbiger 
wie bei einer Modemverbindung der Einwähldialog, wo man eine Nummer, 
einen Benutzernamen und ein Passwort eingeben kann. Ich habe alle Felder 
leer gelassen, später könnte ich dann da evtl. den Benutzernamen und das 
Kennwort noch auswerten auf meinem Gerät, um z.B. unterschiedliche 
Zugangsberechtigungen zu realisieren (z.B. Kunden dürfen nur bestimmte 
Einstellungen ändern, oder neue Firmware herunterladen, ein Supporter 
hat einen anderen Zugang, wo er mehr Berechtigungen hat etc).
Die Verbindung lässt sich also bereits herstellen! Nur bricht Windows 
halt wieder ab, weil es keine IP zugewiesen bekommt. Christian Bergers 
Post bringt es eigentlich genau auf den Punkt, was ich machen möchte: 
Das Ding soll sich wie ein Computer verhalten, und der ist mit dem PC 
über eine PPP-Verbindung verbunden. Greift man auf die IP meines Geräts 
über den Webbrowser zu, dann kann man auf eine HTML-Site zugreifen.

von Εrnst B. (ernst)


Lesenswert?

Windows will vermutlich default-route/DNS und ähnliche Sachen erfahren.
Dummerweise will es diese nicht über DHCP, sondern über PPP/IPCP.
d.H. DHCP weg, stattdessen PPP entsprechend erweitern.

Zum debuggen vielleicht hilfreich: Erstmal für die PC-Gegenstelle den 
Unix-PPPD verwenden, der lässt sich zu äußerst detailierten Logausgaben 
überreden.

von Peter II (Gast)


Lesenswert?

Εrnst B✶ schrieb:
> Zum debuggen vielleicht hilfreich: Erstmal für die PC-Gegenstelle den
> Unix-PPPD verwenden, der lässt sich zu äußerst detailierten Logausgaben
> überreden.

das kann windows aber auch. NETSH lässt grüßen.

von Apfel (Gast)


Lesenswert?

Der Thread gehört in eines der PC-Foren!

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.