J2534 Pass-Thru Tactrix OpenPort 2.0
Dieser Adapter ist ein Klon des Tactrix OpenPort 2.0.
Er unterstützt den SAE J2534 Standard der einen von Protokollen unabhängigen Zugriff auf Steuergeräte definiert.
Theoretisch hat man damit einen Universaladapter mit dem man "alles programmieren kann"..
Den Adapter habe ich erfolgreich mit der
HUD ECU Hacker Software an einer Honda CB1000R getestet (nur Auslesen der
Zustandsdaten und Fehlercodes). Die Verbindung per CAN funktionierte einwandfrei, der Adapter benötigte
dafür keine Modifikationen.
Eine K-Line Verbindung aufzubauen war leider auch
mit diesem Adapter nicht möglich. Die Ursache dafür wird aber sehr wahrscheinlich im Steuergerät liegen.
Am Anfang, und auf dem Papier, sah der Adapter toll und vielversprechend aus. Für simple Lese-Aufgaben und
spielende Hobby-Bastler wie mich scheint er auch ganz brauchbar zu funktionieren. Und vermutlich
auch in den beworbenen Szenarien.
Die mitgelieferte Software (Techstream, ECUflash, SDD, MongoosePro) soll Landrover, Jaguar, Toyota,
Mitsubishi, Subaru und Mercedes unterstützen (überwiegend aber nur die "älteren Gurken"). Sie kommt auf CD und
macht keinen seriösen Eindruck. Es sind (natürlich) irgendwelche gehackten Versionen mit teilweise abenteuerlichen
Installationsanweisungen.
Aber beim Klonen sind offensichtlich einige Eigenschaften auf der Strecke geblieben (z.B. fehlen
Programmierspannungen) die ihn für mich zu einem Tool machen bei dem ich misstrauisch bleibe.
Und bei abweichender Steuersoftware muss man vorsichtig sein und sich vorab schlau-lesen. Angeblich kann der
Adapter durch ein Firmware-Update eventuell "gebrickt" werden. Beim Beschreiben von Steuergeräten die eine
externe Programmierspannung benötigen sollte man ebenfalls genau hingucken.
Für seriöse Arbeiten, oder wenn man nicht genau weiss was man tut, würde ich diese Klone nicht empfehlen.
Das Original von Tactrix ist dann die bessere Wahl.
Berichte im Internet
Man findet überraschend wenig Detail-Informationen zu diesem Adapter. Viele Beiträge sind uralt und berichten
über unterschiedlichste Bestück-Fehler. Bei aktuellen Versionen scheinen die nicht mehr relavant zu sein, werden aber
immer wieder mal gerne aufgekocht.
Treiber- und Software für Windows
Bei der ersten USB-Verbindung mit einem Windows-PC wird automatisch ein default COM-Port Treiber installiert. Der
ist aber nutzlos und funktionslos und muss durch den originalen
Tactrix-Treiber
ersetzt werden. In dem Treiber-Datenpaket sind zusätzlich auch Programmierbeispiele zum Ansprechen der J2534-DLL enthalten.
In der Benutzeroberfläche der HUD ECU Hacker Software wird praktischerweise eine
Funktion angeboten die ebenfalls den richtigen Treiber installiert.
Eine simple Anwendung für J2534 ist unter dem Namen
GenericDiagnosticTool
im GitHub zu finden.
Die Firma
OPUS VIS bietet eine
J2534 Toolbox
zum Download an.
Eigenschaften
Laut eigener Beschreibung unterstützt der Klon-Adapter die folgenden Schnittstellen und Protokolle:
- CAN 2.0 (CAN / ISO 15765)
- K-line (ISO 9141 / ISO 14230(KWP 2000) / dual K line)
Der Adapter weicht hier in einigen Punkten deutlich von der J2534-Spezifikation ab.
- SAE J1850PWM, SAE J1850VPW und SAE J2610 sind nicht implementiert
- Es wird die Möglichkeit zum Aufschalten einer Spannung im Bereich 5 .. 20V (Auflösung 1mV) auf einen der Pins 6 (CAN H), 9, 11, 12, 13, 14 (CAN L) oder einen externen AUX-Pin gefordert. Dazu die Option Pin 15 (ISO-9141 L) auf GND zu schalten.
Die J2534-Spec ist daher nicht vollständig implementiert.
Das ist aber meistens garnicht schlimm oder schädlich. Die J2534 Spezifikation will formal alle erdenklich Protokolle abdecken. Auf seltene oder überhaupt nicht vorhandene Exoten kann man gut verzichten. Solange CAN und ISO 9141 implementiert sind hat man alles wichtige.
Hardware
Eine Übersicht der Pin-Belegung:
Die Positionen und Funktionen der wichtigsten Bauteile:
Name | Bezeichnung | Alternative | Marking | Marking | Housing | Anmerkung |
---|---|---|---|---|---|---|
U1 | LPC2368FBD100 | LPC2364FBD100 | LQFP100 | Microcontroller | ||
U2 | SIT1040 | 6251DS | SOP8 | CAN transceiver | ||
U3 | NCV7708B | SOIC28 | Double Hex Driver | |||
U6 | AMS1117 3.3 | SOT-223-3L | Voltage Regulator | |||
U7 | LM2734 | SFEB | ??6A | SOT23-6 | Step-down converter | |
U8 | NCP1406 | LTH7R | DAMRHC | SOT23-5 | Step-up converter | |
U10 | LM317L | Voltage Regulator | ||||
Y1 | 12.000 | Quartz | ||||
Q1, Q6, Q7, Q9, Q11, Q12 | BC846 | 1B | SOT23 | NPN low power | ||
Q2, Q3, Q5, Q10 | BC856 | 3B | SOT23 | PNP low power | ||
D1, D3, D4, D5, D6, D8 | MBR0540 | B4 | Schottky Diode | |||
D11, D12, D13, D14, D15, D16 | BZT52C5V1 | W9 | SOD123F | Z-Diode 5V1 |
U1 scheint nicht einheitlich bestückt zu sein. Die Varianten unterscheiden sich in der Speichergrösse.
U7 verringert die 12V vom OBD2-Stecker auf ~4.9V. U6 regelt diese Spannng auf 3.3V.
U8 erzeugt eine höhere Spannung die vermutlich in einigen Fällen für die Programmierung benötigt wird.
U3 schaltet beliebige Spannnungen auf die OEM-Pins. Allerdings sind in meiner Platinenvariante alle wichtigen Leitungen von U3 bewusst unterbrochen und das IC hat keine Funktion.
Empfohlene Modifikationen?
Diese
Umbauempfehlungen würde ich erstmal ignorieren und zuerst untersuchen welche Klon-Variante man
vor sich hat.
Alle Internet-/Foren-Empfehlungen beziehen sich auf Probleme die lange zurückliegen, Einzelfälle, undefinierte
Lieferanten und sonstiges Gejammer. Zumindest mein Exemplar scheint eine normale, aktuelle Variante zu sein
und keine Verbesserungen zu benötigen. Wobei ich aber auch noch nicht sehr internsiv getestet habe..
Und selbst "Klone" werden ja manchmal über die Zeit von groben Fehlern bereinigt..
Die aufgedruckte Platinen-Revision scheint keine wirkliche Aussage zu haben. Zielführender ist es an Hand
der Bauteilwerte abzuschätzen welche Ausführung man hat.
Auto-Update unterbinden?
Vor einem Firmware-Update wird gewarnt und abgeraten. Als Folge können die Klone, je nach Variante,
unbrauchbar werden. Ein Update wird vermutlich von einigen PC-Steuer-Softwaren automatisch angestossen.
Wenn gleichzeitig eine Online-Verbindung vorhanden ist wird die Firmware direkt aktualisiert.
Der interne Bootloader (und damit das Update) wird gestartet wenn während eines Reset ein LOW an Pin U1[53]
anliegt. Laut "dem Internet" soll ein zusätzlicher 10k Pull-up Widerstand zwischen U1[53] und C12[3.3V]
das verhindern.
Wie diese Massnahme wirken soll ist mir aber ein Rätsel. R7 (2.7k, andere Platinenseite) übernimmt bereits exakt
diese Aufgabe. Möglicherweise ist der 10k ein Artefakt aus Diskussionen über alte/abweichende
Revisionen der Platine?
In jedem Fall ist dieser Umbau sinnlos und kann entfallen. Wie und ob man überhaupt ein Firmware-Update
unterbinden kann ist offen.
U1[53] und U1[74](serial Rx) sind miteinander und mit Q1 verbunden.
Die Hauptfunktion von Q1 ist offensichtlich ein RS232-Signal von J6[Ring] an den Prozessor weiterzugeben.
Man kann darüber aber auch U1[53] bewusst auf Masse schalten. Dazu muss an J6[Ring] eine Spannung anliegen.
Wenn man das nicht tut dann wird der Bootloader beim Power-Cycle nicht gestartet.
Möglicherweise gibt es aber auch andere Möglichkeiten die Firmware ohne Beteiligung des Bootloaders zu
beschreiben ..!?
Spannungsversorgung verbessern?
Wesentliche Teile der Elektronik werden von U6 (AMS1117) mit 3.3V versorgt. Für mehr Stabilität wird empfohlen
zwei zusätzliche Kondensatoren hinzuzufügen. Aber wie vorher sind auch diese Modifikationen nicht
zwingend notwendig.
- Ein 10uF Keramik Kondensator parallel zu C8 am Ausgang des AMS1117
- Ein 100uF/25V Elko parallel zum Eingang des AMS1117
Am Ausgang ist bereits ein 22uF vorhanden, das entspricht genau der Empfehlung des Datenblatts. Deshalb habe ich nur einen 1uF 0603 Keramik hinzugefügt (direkt an die Beinchen von U6). In der Hoffnung die HF-Filterung etwas zu verbessern.
Am Eingang sitzt ein 22uF, der Ausgangskondensator von U7. Ich habe aus Langeweile noch einen 47uF/35V dazu geschaltet.
Der 3.3V-Spannungsregler U6 wird vom USB- oder alternativ über den OBD-Stecker mit ~5V versorgt.
Im OBD-Zweig sitzt ein Step-Down Konverter der rund um U7 aufgebaut ist. Er setzt die 12V vom OBD verlustarm auf 5V herunter.
In Verbindung mit fehlerhafter Bestückung scheint es hier mal Probleme mit falscher Ausgangsspannung gegeben zu haben. Der AMS1117 hat eine Dropout-Spannung von mindestens 1V und sollte daher nicht unterhalb einer Eingangsspanung von ~4.5V betrieben werden.
In meinem Adapter liefert U7 eine stabile Spannung von 4.89V. Und da sowieso immer auch USB verbunden ist sehe ich auch ohne Modifikationen keine Probleme an dieser Stelle.
U8 ist ein Step-Up Converter der eine umschaltbare Ausgangsspannung von 12V bzw 23V erzeugt. Die Umschaltung erfolgt über U1[6], einen Port von U1. Die Spannung geht auf U3[5] und U3[10], den Umschalter für die OEM-Pins am OBD2-Stecker.
Da aber alle wichtigen Leiterbahnen in der Umgebung von U8 und U3 unterbrochen sind ist dieses Feature sowieso nicht nutzbar.
Sonstige Bestückung ändern?
Die Bestückung der Klone ist nicht identisch mit dem Original. Es gibt diverse Umbauanleitungen zur Anpassung.
Zudem wird von einigen Klonen berichtet die fehlerhaft bestückt wurden und Probleme mit der
Spannungsversorgung haben.
Dieser Link listet die Abweichungen. Die Klone existieren in unterschiedlichen Varianten mit
abweichender Bestückung und Layout. Die Änderungsliste ist daher nicht einheitlich.
Ob man dadurch am Ende eine "richtige Adapter-Kopie" bekommt darf aber sehr bezweifelt werden. Bootloader und
Seriennummer sind, z.B., zwei Punkte an denen die Ergebnisse und Diskussionen in den Foren verschwommen werden.
Hier eine Liste der Abweichungen bei den Widerstandswerten für 4 unterschiedliche Varianten:
original | original | Clone 1 | Clone 1 | Clone 2 | Clone 2 | My device | My device | |
---|---|---|---|---|---|---|---|---|
Designator | marking | value | marking | value | marking | value | marking | value |
R1 | 51k | 51k | 01D | 100k | 103 | 10k | 513 | 51k |
R2 | 01C | 10k | 01D | 100k | 103 | 10k | 01C | 10k |
R3 | 01D | 100k | 01D | 100k | 103 | 10k | 01C | 10k |
R4 | 2,2M | 2,2M | 2,2M | 2,2M | 225 | 2,2M | 01C | 10k |
R5 | 220k | 220k | 220k | 220k | 224 | 220k | 224 | 220k |
R6 | 220k | 220k | 220k | 220k | 224 | 220k | 224 | 220k |
R7 | 2,7k | 2,7k | 2,7k | 2,7k | 272 | 2,7k | 272 | 2,7k |
R8 | 74C | 57k | 74С | 57k | 74С | 57k | 74С | 57k |
R9 | 01C | 10k | 01D | 100k | 103 | 10k | 225 | 2,2M |
R10 | 74C | 57k | 74C | 57k | 74C | 57k | 74C | 57k |
R11 | 01C | 10k | 01D | 100k | 103 | 10k | 01C | 10k |
R12 | 1,5k | 1,5k | 13B | 1,3k | 152 | 1,5k | 18B | 1,5k |
R13 | 22k | 22k | 22k | 22k | 223 | 22k | 223 | 22k |
R14 | 01C | 10k | 01D | 100k | 103 | 10k | 01C | 10k |
R15 | 01C | 10k | 01D | 100k | 103 | 10k | 01C | 10k |
R16 | 240 | 24 | 240 | 24 | 241 | 240 | 241 | 240 |
R17 | 01C | 10k | 01D | 100k | 103 | 10k | 01C | 10k |
R18 | 2,2k | 2,2k | 2,2k | 2,2k | 222 | 2,2k | 222 | 2,2k |
R19 | 1,5k | 1,5k | 01B | 1k | 01B | 1k | 01B | 1k |
R20 | 4,7k | 4,7k | 4,7k | 4,7k | 472 | 4,7k | 472 | 4,7k |
R21 | 22 | 22 | 22 | 22 | 220 | 22 | 220 | 22 |
R22 | 22 | 22 | 22 | 22 | 220 | 22 | 220 | 22 |
R23 | 1k | 1k | 1k | 1k | 102 | 1k | 102 | 1k |
R24 | 22k | 22k | 22k | 22k | 223 | 22k | 223 | 22k |
R25 | 2,2k | 2,2k | 2,2k | 2,2k | 222 | 2,2k | 222 | 2,2k |
R26 | 01C | 10k | 01D | 100k | 103 | 10k | 01C | 10k |
R27 | 1k | 1k | 1k | 1k | 102 | 1k | 102 | 1k |
R28 | 22k | 22k | 22k | 22k | 223 | 22k | 223 | 22k |
R29 | 2,2k | 2,2k | 2,2k | 2,2k | 222 | 2,2k | 222 | 2,2k |
R30 | 01C | 10k | 01D | 100k | 103 | 10k | 01C | 10k |
R31 | 4,7k | 4,7k | 2,7k | 2,7k | 272 | 2,7k | 272 | 2,7k |
R32 | 470 | 47 | 470 | 47 | 471 | 470 | 471 | 470 |
R33 | 22k | 22k | 22k | 22k | 223 | 22k | 223 | 22k |
R34 | 1,8k | 1,8k | 1.8k | 1,8k | 182 | 1,8k | 182 | 1,8k |
R35 | 22k | 22k | 22k | 22k | 223 | 22k | 223 | 22k |
R36 | 01B | 1k | 01B | 1k | 01B | 1k | 01B | 1k |
R37 | 4,7k | 4,7k | 2,7k | 2,7k | 272 | 2,7k | 272 | 2,7k |
R38 | 01C | 10k | 01D | 100k | 103 | 10k | 01C | 10k |
R39 | 2,7k | 2,7k | 2,7k | 2,7k | 272 | 2,7k | 272 | 2,7k |
R40 | 2,7k | 2,7k | 2,7k | 2,7k | 272 | 2,7k | 272 | 2,7k |
R41 | 01D | 100k | 2,7k | 2,7k | 272 | 2,7k | 272 | 2,7k |
R42 | 01C | 10k | 01D | 100k | 103 | 10k | 01C | 10k |
R43 | 2,7k | 2,7k | 2,7k | 2,7k | 272 | 2,7k | 272 | 2,7k |
R44 | 2,7k | 2,7k | 2,7k | 2,7k | 272 | 2,7k | 272 | 2,7k |
R45 | 01C | 10k | 01D | 100k | 103 | 10k | 01C | 10k |
R46 | 2,2k | 2,2k | 2,2k | 2,2k | 222 | 2,2k | 222 | 2,2k |
R47 | 01C | 10k | 01D | 100k | 103 | 10k | 01C | 10k |
R48 | 2,2k | 2,2k | 2,2k | 2,2k | 222 | 2,2k | 222 | 2,2k |
R49 | 74C | 57k | 74C | 57k | 74C | 57k | 74C | 57k |
R50 | 01C | 10k | 01D | 100k | 103 | 10k | 01C | 10k |
R51 | 74C | 57k | 74C | 57k | 74C | 57k | 74C | 57k |
R52 | 01C | 10k | 01D | 100k | 103 | 10k | 01C | 10k |
Layout Veränderungen
Auf meiner "Klon-Platine" sind viele Leiterbahnen in der Umgebung von U3 und U8 bewusst unterbrochen und die
Bauteile dadurch komplett deaktiviert. Augenscheinlich wurden die Leitungssegmente zu einem späten Zeitpunkt
händisch aus den Fertigungsdaten entfernt. Die entkoppelten Bauteile sind vermutlich für das Aufschalten von
Spannungen auf die "OEM"-Pins am OBD2-Stecker.
Die Abweichungen zum Original sind massiv und können nicht "mal eben" korrigiert werden. Zudem hat die Platine
mindestens eine weitere innere Kupferlage über deren Layout und Veränderungen nichts bekannt ist. Die Klon-Meister
werden diese Modifikationen nicht ohne Grund gemacht haben. Höchstwahrscheinlich sollte ein Fehlverhalten
möglichst billig und schnell korrigiert werden und die Originaldaten waren nicht vorhanden. Das Wiederherstellen
könnte daher auch Probleme hervorrufen.
J2534 API functions
In der J2534 wird eine DLL mit ihren generischen Grundfunktionen und deren Übergabeparameter definiert.
Diese Anforderungen muss jeder Hersteller für seinen Adapter identisch erfüllen. Dadurch soll volle
Kompatibilität sichergestellt werden.
Function | Description |
---|---|
PassThruConnect | Establish a connection with a protocol channel |
PassThruDisconnect | Terminate a connection with a protocol channel |
PassThruReadMsgs | Read message(s) from a protocol channel |
PassThruWriteMsgs | Write message(s) to a protocol channel |
PassThruStartPeriodicMsg | Start sending a message at a specified time interval on a protocol channel |
PassThruStopPeriodicMsg | Stop a periodic message |
PassThruStartMsgFilter | Start filtering incoming messages on a protocol channel |
PassThruStopMsgFilter | Stops filtering incoming messages on a protocol channel |
PassThruSetProgrammingVoltage | Set a programming voltage on a specific pin |
PassThruReadVersion | Reads the version information for the DLL and API |
PassThruGetLastError | Gets the text description of the last error |
PassThruIoctl | General I/O control functions for reading and writing protocol configuration parameters (e.g. initialization, baud rates, programming voltages, etc.) |
Auf der Anwenderseite (PC-Programm) implementiert jeder Fahrzeughersteller seine spezifischen Programmabläufe, die aber alle nur über diese DLL auf den Adaper zugreifen können.
Links
Kvaser Introduction to SAE J2534
OBD Wiki J2534
Bosch J2534 FAQs
http://blog.obdii365.com/2022/03/23/how-to-choose-the-right-clone-tactrix-openport-2-0-j2534/
http://blog.obdii365.com/2022/03/24/modify-openport-2-0-clone-to-enable-network-connection/
https://www.drive2.ru/l/546040015415673901/
https://www.digital-kaos.co.uk/forums/archive/index.php/t-1004360.html
https://github.com/bouletmarc/HondaReflashTool