Brauche Hilfe bei Treiber Programmierung (CP2101)

  • Ersteller Deleted member 99757
  • Erstellt am

Deleted member 99757

Gast
Hallo,

ich habe (privat) ein kleines Programm geschrieben, dass meine Wetterstation ausließt. Aber nun habe ich da ein kleines Problem, und zwar funktioniert seit 10.6 der Treiber für das CP2101 USB Gerät nicht mehr! Mein Programm lief wunderbar unter Leopard und jetzt gehts erst mal nicht mehr. Ich habe schon mit dem Hersteller gesprochen, aber die sind nicht gerade sehr hilfreich und auch deren Mac Unterstützung ist eher dürftig. Der Datalogger ist eigentlich für Windows und dem Logger liegt auch eine Windows Software bei. Da ich aber mit Objective-c die Daten selber auslese, benötige ich das nicht. Eine Anfrage bei Silicon Labs (CP210x) ergab, dass weder nähere Informationen zum Protokoll noch Mac Sourcen herausgegeben werden. Auch sei der aktuelle CP210x Treiber offiziell nicht 10.6 kompatibel! Das einzige was ich nun habe sind die Linux Treiber (SiLabs hat linux sources auf deren webseite veröffentlicht http://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx). Weiterhin sind im Internet Linux Kernel Patches als Source zu finden.

Nun meine Frage ist: kann mir jemand bei der Übertragung der Linux sourcen in Objective-C helfen? Ich habe keine Ahnung von Treiber Programmierung unter Mac - noch Linux! Würde gerne die Unterstützung des CP2101 Chips direkt in mein App implementieren, aber ich weiß absolut nicht wie ich anfangen soll :( Ich hoffe und würde mich sehr freuen, wenn mir jemand helfen kann. Vielen Dank für jede Hilfe!

Grüße
Robert
 

Deleted member 99757

Gast
Noch etwas: neben den Linux ,Sourcen habe ich auch ein paar Windows (MFC) CPP-Sourcen gefunden. Aber da ich von der Windows Programmierung schon Jahre weg bin, hilft mir das leider auch nicht so recht viel.
 

Deleted member 99757

Gast
Hallo,

leider hat sich bis jetzt keiner gemeldet :( Mal was anderes:
Ich habe probiert mittels iokit auf das USB Gerät zuzugreifen. Habe deshalb bei Apple den "USB Device Interface Guide" durchgearbeitet. Ich habe verstanden, wie ich das usb gerät finde und einen callback für add/remove hinzufüge. Wenn ich nun aber das Interface öffnen will, meldet der immer
Interface class 255, subclass 0
Unable to open interface (e00002c5)
Gibt es irgendwo im Netz nen einfaches Beispiel, um ein Kommando an mein USB gerät zu senden und etwas zu empfangen? Ich hatte bis jetzt die Kommunikation über das device und POSIX gemacht. Wie kann ich den einen Befehl über iokit senden? Vielleicht kann mir ja dabei jemand helfen?

Grüße
Robert
 

Deleted member 99757

Gast
Also das mit FindIterfaces habe ich nun hinbekommen :) Aber zu meiner zweiten Frage bezüglich POSIX und Umsetzung auf IOKIT weiß ich leider noch keinen Rat. Hoffe mir kann jemand helfen?
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Ein "einfaches Kommando" an Dein USB Gerät gibt es nicht. Es kommt ganz darauf an, welche Geräteklasse es ist.

Einen Device Node bekommst Du nur dann, wenn Du einen Treiber HAST.

Solche Treiber von Linux auf Mac umzusetzen mache ich beruflich. Ich hab sogar mal einen Treiber für ein CP2101 basiertes Gerät geschrieben, aber an die Details kann ich mich heute Abend nicht erinnern.

Der CP2101 ist aber recht populär, es würde mich wundern, wenn da nicht bald mal ein Update für den Treiber käme.

Alex
 

Deleted member 99757

Gast
Hi Alex,

mhh dann kann ich wahrscheinlich warten bis ich schwarz werde. Beide Hersteller sind nicht besonders "kooperativ" und an eine wirklichen Hilfe nicht interessiert :( Anscheinend bin ich auch nicht der einzige, mit diesem Problem.

Wetterstationshersteller Davis hat gerade erst einen neues Treiber veröffentlicht! Dieser hilft mir leider gar nicht. Ich habe ihn installiert. Wenn ich nun das USB Gerät anstecke, dann wird die kext Datei geladen, aber es gibt kein device in /dev. So komme ich irgendwie nicht weiter :(

Wahrscheinlich brauche ich noch neben dem Protokoll zu Wetterstation auch noch das Protokoll zum CP2102 Chip? Und dazu kann ich ja leider nur die linux sourcen finden. :mad:

Grüße
Rob

P.S. Habe mich vertan, es ist ein CP2102 Gerät, aber das sollte nicht ein so großer Unterschied sein.
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
In diesem Fall brauchst Du ja gar keinen speziellen Treiber, sondern nur einen, der Dir ein Serial Device baut. Du kannst also jeden Treiber für den CP2102 nehmen.

Hast Du den schon mal probiert? http://www.pololu.com/docs/0J7/all#3

Alex
 

Pii

Rheinischer Krummstiel
Registriert
25.06.07
Beiträge
383
Anscheinend bin ich auch nicht der einzige, mit diesem Problem.
Das liegt wohl an der Verbreitung.

Wahrscheinlich brauche ich noch neben dem Protokoll zu Wetterstation auch noch das Protokoll zum CP2102 Chip? Und dazu kann ich ja leider nur die linux sourcen finden.
Wenn Du keinen Treiber für den CP210x findest: Ja.
Hast Du schon mal einen alternativen Treiber ausprobiert? http://www.pololu.com/docs/0J7/all#3 (Ohne Gewähr)

EDIT: Alex war schneller.
 
Zuletzt bearbeitet:

Pii

Rheinischer Krummstiel
Registriert
25.06.07
Beiträge
383
Der CP2101 ist aber recht populär, es würde mich wundern, wenn da nicht bald mal ein Update für den Treiber käme.
Ich wäre nicht besonders zuversichtlich, da die letzte Version des Mac OS X Treibers schon anderthalb Jahre alt ist. Das hat bei SiliconLabs wohl keine besonders hohe Priorität. :(

Das wird viele Leute mit einem ATmega-Board nicht besonders glücklich machen.
 

Deleted member 99757

Gast
In diesem Fall brauchst Du ja gar keinen speziellen Treiber, sondern nur einen, der Dir ein Serial Device baut. Du kannst also jeden Treiber für den CP2102 nehmen.

Hast Du den schon mal probiert? http://www.pololu.com/docs/0J7/all#3
Ja den habe ich auch probiert :( Musste die PID in der Info.plist ändern, aber bei diesem Treiber wird erst gar nicht die kext geladen!

Ich wäre nicht besonders zuversichtlich, da die letzte Version des Mac OS X Treibers schon anderthalb Jahre alt ist. Das hat bei SiliconLabs wohl keine besonders hohe Priorität. :(
Das Gefühl habe ich auch. Da wäre es natürlich super, wenn ich meine eigene Implementierung hätte, was ich aber leider nicht so gut kann.

Nur wegen so einem blödem Treiber vergeht einem richtig die Lust an der Wetterstation :-c
Rob
 

Pii

Rheinischer Krummstiel
Registriert
25.06.07
Beiträge
383
Ich muss meine Einschätzung revidieren. SiliconLabs ist an einem aktualisierten Treiber für Mac OS X interessiert; und an diesem wird auch schon einige Zeit gearbeitet. Allerdings gibt es noch Probleme mit dem 64-Bit Modus.

Das Gefühl habe ich auch. Da wäre es natürlich super, wenn ich meine eigene Implementierung hätte, was ich aber leider nicht so gut kann.

PS: Allerdings ist SiliconLabs bei Auskünften hierfür ein eher ungeigneter Ansprechpartner, da der Treiber extern entwickelt wird.
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Ich muss meine Einschätzung revidieren. SiliconLabs ist an einem aktualisierten Treiber für Mac OS X interessiert; und an diesem wird auch schon einige Zeit gearbeitet. Allerdings gibt es noch Probleme mit dem 64-Bit Modus.

Brauchen die noch Hilfe ;) ?

Alex
 

Pii

Rheinischer Krummstiel
Registriert
25.06.07
Beiträge
383
Ich schicke sie Dir nachher besser klassisch via Email.

EDIT: "Sie haben Post." (Zitat AOL) :)
 
Zuletzt bearbeitet:

Deleted member 99757

Gast
@below
Hehe super wenn das mal einer in die Hand nimmt! Gib bescheid, wenn du fertig bist ;)
 

Frankplanlos

Stechapfel
Registriert
21.04.07
Beiträge
157
Das wird viele Leute mit einem ATmega-Board nicht besonders glücklich machen.

Moin,
ich spiele hier gerade mit dem myAVRUSB MKII Board rum, dort ist auf dem Programmer auch der CP2102-Chip drauf.
Die Software von myAVR funktioniert nicht auf dem Mac, deswegen programmiere ich ihn über Xcode unter SL 10.6.2 .
Ich weiß jetzt nicht ob es dich weiterbringt aber ich benutze für die serielle Kommunikation AMSerialPort
http://www.harmless.de/cocoa-code.php
Den Treiber für den Chip habe ich mir beim Hersteller runtergeladen. Und wie schon geschrieben.... es funzt für meine Zwecke.
Gruß
Frank

Nachtrag: sehe gerade du meinst den 2101 Chip.... da habe ich wohl zu schnell gelesen.... sorry
 
  • Like
Reaktionen: Pii

Deleted member 99757

Gast
Hi Frank,

Ich weiß jetzt nicht ob es dich weiterbringt aber ich benutze für die serielle Kommunikation AMSerialPort
http://www.harmless.de/cocoa-code.php
Den Treiber für den Chip habe ich mir beim Hersteller runtergeladen. Und wie schon geschrieben.... es funzt für meine Zwecke.
AMSerialPort kenne ich und ist auch sehr interessant. Problem ist halt genau, dass dies kein "Treiber" ist sondern auf das Virtual COM port zugreift! Also hier liegt bzw. lag genau mein Problem! Der Treiber hat eben kein Virtual COM port zur Verfügung gestellt.

Nachtrag: sehe gerade du meinst den 2101 Chip.... da habe ich wohl zu schnell gelesen.... sorry
Ne, ne ich habe mich auch vertan ;) Meine schon den CP2102. Siehe Post #6.

Aber mittlerweile habe ich eine Lösung gefunden. Habe vom Hersteller eine Hilfe erhalten. Und zwar hat der Hersteller zwei mal den gleichen Daten logger, aber mit unterschiedlichen PIDs: Eine für Windows und eine für Mac! Habe die PID geändert und nun läuft das Device auch mit dem SiLabs Treiber unter Mac :) Vorher wurde es als USB Gerät erkannt und nun durch die PID Änderung zeigt es sich als COM Device.

Naja es hätte mich ja doch sehr gereizt das ganze selber zu programmieren, aber da das CP210x Protokoll unbekannt ist, wird das dann doch etwas zu schwierig. Auf jeden Fall vielen Dank für Eure Hilfe!

Schöne Grüße