Sodele, habe es endlich geschafft, die Thermo Top C mit dem USB-KKL-Interface (auch "China USB" genannt) anzusteuern.
Das Problem liegt in der Tat ausschließlich am Timing des USB-Adapters. Webasto-Software Thermo Test läuft und der USB-Adapter auch, nur muss das Laptop bzw. der Rechner schnell genug sein.
Im Einzelnen:
- Rechner: EEE-Laptop von Asus (das sind die kleinen...) mit Intel Atom @ 1,60 Ghz
- China-USB-Interface
- Adapter selbst gelötet aus OBD-Buchse (von blafusel), +12V-Kabel (Pin 16), Masse-Kabel (Pin 4+5) und K-Line (Pin 7)
- +12V und Masse an Fahrzeug-Batterie, K-Line an den gelben Stecker des Webasto-Kabelbaums
- Software Webasto Thermo Test V2.12
Im ersten Versuch lief es nicht. Thermo Test blieb immer mit dem kleinen Fensterchen "WTT Initialisierung..." hängen. Ich hatte alle möglichen Einstellungen an der seriellen Schnittstelle vorgenommen, die man hier oder in anderen Foren zu lesen bekam. Dann habe ich das Oszilloskop an die K-Line-Verbindung gehängt, um zu sehen, was das USB-Interface sendet, wenn es von der Webasto-Software angesteuert wird.
Hier gab es den "Aha-Effekt": die Einstellungen der seriellen Schnittstelle sind "völlig egal". Egal, wie ich die Windows-Parameter der Schnittstelle verändert habe, das Oszi-Bild blieb immer gleich. Die OBD-Software Thermo Test übernimmt die Steuerung der seriellen Schnittstelle Bit-für-Bit. Und damit ist das Timing-Problem der USB-Adapter eigentlich klar.
(...ich hoffe, ich erzähle hier keinen nonsense und langweile nicht zu sehr... Korrekturen immer gerne erwünscht!)
Kleiner Exkurs zur seriellen Schnittstelle:
Die "normale" Ansteuerung der seriellen Schnittstelle erfolgt Byte-für-Byte und nicht Bit-für-Bit (so ist die Definition laut ANSI EIA 232, früher RS-232 genannt). Ein Datenbyte wird von der Anwender-Software auf die serielle Schnittstelle geschrieben und diese "schiebt" es dann Bit-für-Bit seriell auf das Kabel. Und zwar mit genau den Parametern, die man in der seriellen Schnittstelle eingestellt hat (Baudrate, 7/8 Bits, Parität, usw.). Dieses "Rausschieben" erledigt der Chip der seriellen Schnittstelle (generell) in Hardware, ebenso das Empfangen, und zwar genau so, wie es durch ANSI EIA 232 definiert wird. Ist ein Byte eingetroffen, kann es von der Anwendungssoftware als Byte ausgelesen werden. Dazu hat die Schnittstelle in der Regel einen Empfangspuffer, in den sie viele Bytes reinschieben kann und die Anwendungssoftware wieder auslesen kann (das ist der "FIFO", den man auch in Windows konfigurieren kann). Soweit, wie gesagt, alles RS-232-Protokoll...
Bei OBD-Softwares für den PC und dann noch mit USB-Adaptern sieht das ganz anders aus:
Die hardware-technischen Sende- und Empfangspuffer der Schnittstelle werden nicht genutzt (können auch gar nicht genutzt werden, da das Protokoll eben nicht RS-232 ist, sondern eines derer, die Florian so schön erklärt...

, ebenso wenig wie das hardware-mäßige Senden und Empfangen. Und damit muss die OBD-Anwendungs-Software an all diesen schönen Hardware-Helferlein vorbei direkt auf die Leitung durchgreifen - und hat damit natürlich eine Menge mehr zu tun, als bei der standardmäßigen RS-232-Übertragung.
Der Weg der einzelnen Bits aus der Anwendungs-Software (hier: Thermo Test) bis zum Spannungspegel auf der K-Line sieht dann so aus:
Anwender-Software setzt Bit > Treiber-Programm des USB-Adapters bekommt Befehl, das Bit zu setzen > Treiber-Software setzt die gesamte USB-Protokoll-Mimik in Gang, um den Adapter anzusteuern (USB ist selbst ein "kleines Netzwerk") > USB-Chip im Adapter empfängt das gesamte USB-Protokoll und erkennt, dass das Bit zu setzen ist > Bit wird gesetzt.
...und das alles, um EIN Bit zu setzen bzw. rückzusetzen. Und mit diesem Setzen und Rücksetzen wird das OBD-Datenprotokoll auf die K-Line gegeben. Der Empfang geht gleichermaßen vonstatten, in umgekehrter Richtung eben. Also MASSIVES USB-Datenaufkommen, das dazu noch zeitkritisch ist, da das serielle Protokoll auf der K-Line zeitlich genau stimmen muss.
Bei seriellen Adaptern (kein USB) greift die Anwendersoftware entweder direkt auf den Hardware-Chip durch, der das Bit setzt oder höchstens über einen Treiber. Und das auf jeden Fall ohne USB-Protokoll dazwischen. Damit wird das Timing erheblich einfacher.
So startete ich den zweiten Versuch mit dem EEE-PC über USB-Addapter:
- ALLES im Windows deaktiviert, was ich deaktivieren konnte (Virenscanner, Spybots, WLAN, Bluetooth, Kamera, alle sonstigen Programme geschlossen,...)
- die automatische Leistungsanpassung (wegen Stromsparen hat der EEE so etwas) auf "Super Performance Mode" gestellt
...und siehe da: direkt Verbindung bekommen (Geräteauswahl: Thermo Top C, E, Handel,...)
Wahrscheinlich hat Florian das hier alles irgendwo schon mal erklärt, da war ich dann (mal wieder) zu doof zum suchen und finden...
Wie auch immer, jetzt funzt es, vielleicht hilft es jemandem weiter,
viele Grüße aus dem Süden!