Treiberprogrammierung für PCI UMTS Karten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Miko

Treiberprogrammierung für PCI UMTS Karten

Beitragvon Miko » Donnerstag 2. August 2007, 16:03

Hi,
die 4 UMTS Anbieter bieten UMTS karten für Notebooks an. Doch es gibt nur Windowstreiber.
Jetzt dacht ich mir es kann doch garnicht so schwer sein einen Treiber für die PCMCIA Schnittstelle und die UMTS Karte zu schreiben.
Wenn man unter Windows den Verkehr der PCMCIA Schnittstelle mitprotokoliert angefangen beim einstecken der Karte dann müsste man doch recht einfach einen eigenen Treiber (z.B. in Python) schreiben können oder?

Gibt es ein Modul für die Kommunikation mit der PCMCIA Schnittstelle in Python?
Kann man den Vekehr der PCMCIA Schnittstelle unter Windows mitprotokollieren?
Wär es somit möglich einen Linux Treiber zu schreiben?

Das ist mir einfach vorhin eingefallen und es würd mich wirklich interessieren.

Schöne Grüße
Miko
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: Treiberprogrammierung für PCI UMTS Karten

Beitragvon gerold » Donnerstag 2. August 2007, 19:27

Miko hat geschrieben:es kann doch garnicht so schwer sein einen Treiber für die PCMCIA Schnittstelle und die UMTS Karte zu schreiben.

Hallo Miko!

Wenn es so einfach wäre, dann hätten die Kartenhersteller entsprechende Treiber für Linux schon fertig.

Es bleibt ja auch nicht bei dem Treiber. Du brauchst ja auch ein Programm, das über den Treiber mit dem Hardwareteil kommuniziert.

Ich glaube nicht, dass du so etwas für Python finden wirst. Und auch nicht, dass man so etwas mit Python machen sollte.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Miko

Beitragvon Miko » Donnerstag 2. August 2007, 19:37

Ich hab mich schon gefragt ob gar keiner mehr antwortet. Aber auf dich ist verlass :D

Naja der Treiber sollte irgend eine virtuelle Netzwerkschnittstelle bereitstellen. Stimmt das könnte schwierig werden.

Aber wenn man den Treiber die komplette Arbeit machen lässt, also auch Daten senden und empfangen. Dann dürft es doch nicht so schwer sein. Man könnte ja z.B. Empfangene HTML Dateien auf die Festplatte schreiben und mit einem Browser öffnen. Dann dürfte das doch wieder nicht so schwer sein. Man könnte dann im Internet zwar nur die Dinge machen die der Treiber kann, aber das wär ja schon immerhin etwas.

Aber ich geb dir schon recht, wenn man einen richtigen Treiber schreiben möchte ist man wahrscheinlich mit C besser dran weil Linux selber auch in C geschrieben ist.

Aber das ist mir heute einfach mal so in den Kopf gekommen.
Der Thread kann geschlossen werden.
ProgChild
User
Beiträge: 210
Registriert: Samstag 9. April 2005, 10:58
Kontaktdaten:

Beitragvon ProgChild » Donnerstag 2. August 2007, 23:18

Miko hat geschrieben:Ich hab mich schon gefragt ob gar keiner mehr antwortet. Aber auf dich ist verlass :D

Naja der Treiber sollte irgend eine virtuelle Netzwerkschnittstelle bereitstellen. Stimmt das könnte schwierig werden.

Das ist das einfachste an der Geschichte. Du musst nämlich nur ein Kernelinterface implementieren. Das wirst du nur nicht in Python können. Im Kernel läuft nur nativer Code. Du müsstest also einen Python-Interpreter für den Linux-Kernel portieren. Das wäre wohl ziemlich schwierig.

Miko hat geschrieben:Aber wenn man den Treiber die komplette Arbeit machen lässt, also auch Daten senden und empfangen. Dann dürft es doch nicht so schwer sein. Man könnte ja z.B. Empfangene HTML Dateien auf die Festplatte schreiben und mit einem Browser öffnen. Dann dürfte das doch wieder nicht so schwer sein. Man könnte dann im Internet zwar nur die Dinge machen die der Treiber kann, aber das wär ja schon immerhin etwas.

Die Karte hat keine Funktion, die heißt "empfange Datei per HTTP". Das geht so nicht. Die Karte implementiert nur eine Übertragungsschnittstelle. D.h. sie stellt funktionen bereit, bestimmte Bytes zu übertragen.

Viele Open-Source-Treiber werden per Reverse-Engeneering geschrieben. D.h. man probiert mal aus, was passiert, wenn man der Karte bestimmte Signale sendet. D.h. was passiert bei welchem IO Register.
Es ist nett, freundlich zu sein.
Auch nett: Homepage
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Beitragvon Sr4l » Donnerstag 2. August 2007, 23:50

Deine Idee mit dem Protokollieren ist genau das was Linux Treiber Entwickler machen. Wenn du es mit der UMTS Karte hinbekommen hast sag mir bescheit, dann komme ich vorbei ich habe da noch ne TVKarte im Laptop ;-)

http://ezs.kr.hsnr.de/TreiberBuch/html/

Kannst dir mal durch lesen :-D, ich habe es noch nicht getan habe es aber vor.
Ich denke es wird mir mal wenigstens nen Überblick und Einblick in die Denkweise geben.
PS: Nix Python sondern C ist gefragt :-)
Miko

Beitragvon Miko » Freitag 3. August 2007, 00:10

dass mehr c gefragt ist dacht ich mich schon. Aber da wir in einem Python forum sind wollt ich es nicht so offensichtlich machen.

Die Daten vom Bus abzugreifen dürfte doch nicht so schwer sein oder?
Man müsste ja nur alle Daten von einer bestimmten IRQ aufzeichenen das sollte doch leicht zu bewerkställigen sein.

Dass die Karte selber keine Funktionen bereitstellt ist mir klar. Aber wenn man es soweit bekommt dass sie Bits ins Internet sendet dann kann man die paar HTTP Requests auch noch selber implementieren. Das dürfte das geringste Problem sein.

Aber anscheinend interessiert das Thema doch mehr Leute als ich dachte...
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Beitragvon Sr4l » Freitag 3. August 2007, 12:32

Du wirst nicht nur einen Befehl haben der Bits sendet, du wirst auch
um so etwas wie die Anmeldung, Verbindungsaufbau und ähnliches
kümmern du kannst ja mal das Online Buch was ich oben gepostet
habe lesen und uns deine Erfolge (ogal ob mit Python oder C)
mitteilen ;-)
HarryPython
User
Beiträge: 60
Registriert: Freitag 8. Juni 2007, 07:39

Beitragvon HarryPython » Freitag 3. August 2007, 23:28

Hi Mirko,

ich hab auch die Verbindung zu einer PCMCIA Karte mit Python gemacht. Die Firma liefert ja nur ein C Code Beispiel und eine dll mit. Hab das mit ctypes gelöst. Und was soll ich sagen... es läuft :lol:

Hat mich aber auch meine letzten Haare gekostet. Hab mir alles aus dem C Code und der dazugehörigen Header-Datei genommen und Schritt für Schritt übersetzt. Das größte Problem ist dabei dass die Pythonbibliotheken nicht die Typen hervorbringt die so eine C dll erwartet.
zb. Handle und Pointer auf Pointer. Hab aber hier viel Hilfe bekommen.

Wenn du es schaffst ist es dafür nur noch die Hälfte an Code.

Bin mal gespannt.... Viel Erfolg

und immer fleißig posten
Miko

Beitragvon Miko » Samstag 4. August 2007, 01:49

Ich finds ja nett dass ihr mich alle so anspornt. Aber ich besitzt weder eine UMTS Karte noch ein Windows um Daten abzugreifen ^^.

Du könntest dein Programm mal zeigen damit ich mir ein Bild mache kann und es gegebenfalls auch mal benutzen kann.
thelittlebug
User
Beiträge: 187
Registriert: Donnerstag 20. Juli 2006, 20:46
Wohnort: Wien
Kontaktdaten:

Beitragvon thelittlebug » Sonntag 5. August 2007, 17:46

Miko hat geschrieben:Dass die Karte selber keine Funktionen bereitstellt ist mir klar. Aber wenn man es soweit bekommt dass sie Bits ins Internet sendet dann kann man die paar HTTP Requests auch noch selber implementieren. Das dürfte das geringste Problem sein.


ich glaube du hast hier was grundlegend falsch verstanden.
ev. wäre ein blick in das osi schichtmodell nicht schlecht: http://de.wikipedia.org/wiki/OSI-Modell
auch bestehende kerneltreiber sollte man sich ansehen, am besten mal so einen netzwerkkarten treiber ;) der source ist ja frei

der rest ist "fummelei". da wärs natürlich praktisch wenn man den entwickler der hardware persönlich kennt und das erzählen solcher geheimnisse von der firma nicht unter die todesstrafe gestellt wurde.

gegen python spricht das treiber relativ performant sein müssen. zusätzlich solltest du mit anderen c teilen kommunizieren können. außerdem solltest du mit der hardware direkt kommunizieren können. mir persönlich gehen da in python einige sachen ab.

da ich kein kernel hacker bin ist das nächste nur etwas das ich gelesen habe aber sehr logisch klingt: linux hat nen kernel und einen userspace (oder wars usermode?). treiber sind im ( aber nicht mehr lange nur ausschließlich) kernelspace. kernel teile sind in c geschrieben da sie als maschinencode im kernel liegen. da fangen langsam die probleme an :) ich red gar nimma weiter halte dir aber alle daumen die ich habe :)

lgherby
Miko

Beitragvon Miko » Sonntag 5. August 2007, 17:55

wie gesagt: Ich hab nicht vor einen Treiber zu programmieren nicht nur weil mir die ressourcen fehlen.
Auch weis ich dass c dafür wesentlich besser geeignet ist wollte aber so nicht in einem Python Forum fragen (siehe Beitrag oben!)

Das persönlicher Kontakt zu Hardwareherstellern optimal ist ist mir natürlich auch klar.

Eigentlich versteh ich nicht ganz was du mir mit dem Beitrag sagen willst. Das einzige was mich interessiert ist wie du darauf kommst dass ich etwas grundlegendes falsch verstanden hab. Da würd mich interessieren was du meinst!
thelittlebug
User
Beiträge: 187
Registriert: Donnerstag 20. Juli 2006, 20:46
Wohnort: Wien
Kontaktdaten:

Beitragvon thelittlebug » Sonntag 5. August 2007, 17:57

was ich mit dem grundlegend falsch meine:

wenn du eine schnittstelle für die pcmciakarte erstellst die die regeln einhält bist du der letzte der dafür verantwortlich ist einen httprequest zu erstellen ;) siehe dazu osi

lgherby
Benutzeravatar
Damaskus
Administrator
Beiträge: 890
Registriert: Sonntag 6. März 2005, 20:08
Wohnort: Schwabenländle

Beitragvon Damaskus » Sonntag 5. August 2007, 21:48

ähm ist jetzt evtl. etwas Offtopic aber...

Also ich verwende eine UMTS Karte über den PCMCIA Slot unter Debian und unter Ubuntu Problemlos. Also Treiber und Software sind im Prinzip alle in der Disti vorhanden. Musste nichts nachladen.

Gruß
Damaskus
Miko

Beitragvon Miko » Sonntag 5. August 2007, 21:54

erlich? cool,
was für eine hast du bzw. von welchem Hersteller und welcher Chipsatz?

Das wär ja geil wenn das ohne probleme funktionieren würde auf debian und ubuntu. Unter gentoo sollte es dann ja auch ohne probleme laufen.
Benutzeravatar
Damaskus
Administrator
Beiträge: 890
Registriert: Sonntag 6. März 2005, 20:08
Wohnort: Schwabenländle

Beitragvon Damaskus » Montag 6. August 2007, 19:44

Es ist eine Novatel Wireless Merlin U630, von Vodafone.
Schau mal im Ubuntuu Forum nach. Da steht alles drinn wie es geht.
Ich find leider den Link nicht mehr dazu.

Gruß
Damaskus

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder