- Startseite
- Forum
- Wissen
- Fahrzeugtechnik
- CAN-Bus mit dem Laptop lesen und steuern?
CAN-Bus mit dem Laptop lesen und steuern?
Ich habe hier ein Schrott-Auto (Audi A4), an dem ich gerne ein bisschen was über den CAN-Bus lernen will.
Was kann man über den CAN-Bus alles auslesen? Kann man erkennen, ob der Blinker oder das Licht an ist? Kann man etwas steuern, z.B. das Licht anmachen oder die Scheibenwischer? Kann man die Scheiben runterfahren?
Dazu suche ich einen OBD2->USB-Adapter und entsprechende Software.
Was ich nicht suche: Diagnose-Software zum Auslesen von Steuergeräten und Fehlercodes. Das habe ich.
Beste Antwort im Thema
Easy.
USB-Interface und Software:
https://shop.dieselschrauber.org/can-usb-interface-kit-p-313.php
Software: KCANMonitor
Oder:
AGV4000 (expert) als Interface
https://www.diamex.de/.../...ace-mit-CAN-Low-Level-inkl-MoDiag-Express
plus Software
https://www.mictronics.de/projects/usb-can-bus/
Siehe auch hier:
https://www.youtube.com/watch?v=Q0i_Z3Vzi7U
Lawicel-Modus (diese Firma hat als erste fertige Interfaces rausgebracht und eine API dazu gebaut) ist quasi die generische Schnittstelle für CAN-Bus-Sniffer. Und es ist eine Möglichkeit, CAN-Bus-Nachrichten auch zu senden. Für den Lawicel-Modus gibt es recht viel CAN-Bus-Sniffing-Software in ganz verschiedener Form.
Und günstige Lösungen sind hier drin:
"Car Hacker's Handbook by OpenGarages"
http://opengarages.org/handbook/
Naja, und ein Oszi solltest du dir daneben tun. Pico-Scope USB scopes sind da recht verbreitet für den Automotive Einsatz.
Ähnliche Themen
34 Antworten
Was für eine Software hast du? VCDS, Carport? Mit beiden zB kannst du so genannte Stellglieddiagnosen machen, Licht einzeln ansteuern, Fenster fahren lassen, einzelne Werte anschauen.
Easy.
USB-Interface und Software:
https://shop.dieselschrauber.org/can-usb-interface-kit-p-313.php
Software: KCANMonitor
Oder:
AGV4000 (expert) als Interface
https://www.diamex.de/.../...ace-mit-CAN-Low-Level-inkl-MoDiag-Express
plus Software
https://www.mictronics.de/projects/usb-can-bus/
Siehe auch hier:
https://www.youtube.com/watch?v=Q0i_Z3Vzi7U
Lawicel-Modus (diese Firma hat als erste fertige Interfaces rausgebracht und eine API dazu gebaut) ist quasi die generische Schnittstelle für CAN-Bus-Sniffer. Und es ist eine Möglichkeit, CAN-Bus-Nachrichten auch zu senden. Für den Lawicel-Modus gibt es recht viel CAN-Bus-Sniffing-Software in ganz verschiedener Form.
Und günstige Lösungen sind hier drin:
"Car Hacker's Handbook by OpenGarages"
http://opengarages.org/handbook/
Naja, und ein Oszi solltest du dir daneben tun. Pico-Scope USB scopes sind da recht verbreitet für den Automotive Einsatz.
Danke Grasoman, das klingt to doch toll!
Ich hab gerade mal geschaut ob es was gibt für die Steuerung mit Python.
Ich hab dieses Modul gefunden: https://python-can.readthedocs.io/en/2.1.0/interfaces.html
Aber mir ist nicht ganz klar, mit welcher Hardware das funktioniert.
Weisst du das zufällig?
Steht doch drin. Linux kommt im Prinzip mit quasi "jedem" Adapter zurecht. Wenn man dort die Subsysteme durchgeht, stehen die Interfaces (oder Chips) dabei. Auch im CarHackers Handbook.
Wer strikt nur CAN will, kann ein sehr verbreitetes Interface nehmen: ein Lawicel CANUSB.
Beschreibung: http://www.can232.com/?page_id=16
Bezugsquelle: http://www.sander-electronic.de/canusb.html
Dazu: ein DB9-auf-OBD2-Kabel.
http://www.sander-electronic.de/arduino-can-bus.html
Oder etwas universeller und mit OBD-Stecker gleich dran (auch mit Support Lawicel Mode):
https://www.kds-online.com/.../diamex-obd-diag-agv4000c-expert-p-2182
Und dann auf Software-Seite als Subsystem in Linux das SLCAN-Interface in beiden Fällen.
Für den Start in CAN-Bus-Analyse in Linux und Programmierung mit Python ist hier was schönes, ein Vortrag vom CCC dieses Jahr mit so Schritt für Schritt-Instruktionen, wie er das an seinen Autos gemacht hat:
https://media.ccc.de/v/34c3-8758-how_to_drift_with_any_car#t=160
Er erklärt das schön und nimmt einen Raspberry Pi 3 und das PICAN2 Shield dazu. Und dann ein DB9-auf-OBD2-Kabel.
Den Part 2 dort kann man sich aber schenken. Das ist Nonsens.
Und es gibt noch ein neues interessantes Interface aus der Open-Source-Bewegung:
Das Macchina M2.
https://www.macchina.cc/catalog
Besonderheit dort: es kann auch Knoten in einem LIN-Bus sein. Wen also die LIN-Subbusse zusätzlich zum CAN-Bus interessieren und mal nicht über ein CAN-Bus-Steuergerät auf die LIN-Bus-Knoten durchgreifen will, sondern direkt am LIN-Bus die Nachrichten anschauen.
Prima, danke für die Infos!!
Was mich ein bisschen wundert sind die Preise von 100€.
China-Teile für die OBD-Diagnose kosten 10€ und da dürften ähnliche Bauteile verbaut sein.
Das AGV4000C gefällt mir, aber es funktioniert leider nicht unter Linux.
Lawicel-Modus mit SLCAN klingt aber zumindest nach einer stimmigen Kombination für das AGV4000C. Aber probiert habe ich das nicht.
"Funktioniert nicht unter Linux" heißt in der Regel eher - hatte keine Lust, keine Ausdauer, oder nicht genug Wissen, es zum Laufen zu bekommen.
Grundlagen sind hier und auch das Datenblatt ist dort verlinkt:
http://forum.diamex.de/showthread.php?...
Und dann weiter mit SLCAN.
Ich hatte bei KDS-Online nachgefragt, ob es mit Linux geht, und die meinten nein. Schon möglich, dass es vielleicht über AT-Commands geht, aber das scheint mir nicht zielführend. Ich werde mir mal USB2CAN von 8devices anschauen.
Dafür gibt's ja in Python gerade SLCAN. Das übersetzt dir die Methodenaufrufe dann in die AT-Kommandos und für dich als Programmierer in Python sind diese - nach Einbinden der richtigen Bibiothek - völlig unsichtbar. Ich glaube, es lohnt sich, wenn du dich mit den APIs beschäftigst.
Aber ok, auch USB2CAN von 8devices ist drin mit einem CAN Interface Module, natürlich kannst du das auch nehmen. Bei Linux führen viele Wege nach Rom. Und ich gebe dir Recht: wenn schon gleich der Hersteller Linux-kompatible Doku anbietet, dann ist der Weg für den Nutzer zumindest klarer erkennbar. Viel Erfolg bei deinen Versuchen!
Ich habe ein Mobileye im Auto und das erkennt am CAN-Bus, ob der Blinker an ist oder ob ich bremse. Es kann auch das Fernlicht an- und ausmachen. Das heisst, diese Nachrichten sind auf dem CAN-Bus standardisiert und unabhängig vom Autohersteller? Wo ist denn das dokumentiert?
Nein, diese Daten sind herstellerspezifisch, dann auch modellspezifisch.
Die Daten zu CAN-Bus-Nachrichten wie zu Blinker, Bremse, Fernlicht sind alle nicht standardisiert.
Standardisiert an sich ist der CAN-Bus also bis OSI Layer 2 im 7-Schichten-Modell der OSI.
https://de.wikipedia.org/wiki/OSI-Modell
Aber das ist nur die Physische Schicht (Elektrik an sich: Kabel, Ströme, Spannungen, Terminierung), und dann das Data Link Layer (CAN Daten Frames, Adressierung der Knoten). Hier steht das auch alles:
https://de.wikipedia.org/wiki/Controller_Area_Network
Aber was dann auf Layer 3 und drüber passiert und was sie in den Frames steht, das kann jeder Hersteller an sich selbst bestimmen.
Mobileye muss(te) dann für seine Aftermarket-Systeme pro unterstützer Autobaureihe alle diese Daten vom OEM kaufen oder reverse engineeren. Sie haben aber viele Kooperationen mit den OEMs für Serienanwendungen und dann ist es natürlich einfacher für sie.
Du meinst in dem kleinen Kästchen sind die Message-Formate für was weiss ich 100 oder mehr Autotypen einprogrammiert? Und das erkennt auch noch, in welchem Auto es eingebaut ist?
Und bei den Loggern für die Versicherung das gleiche, alle Autotypen einprogrammiert?
Dann gibt es aber bestimmt Leute, die das schon für z.B. Audi reverse engineered haben und die das im Internet veröffenlicht haben?
openXC ist ja wohl ein Versuch, das zu standardisieren, aber ist wohl nicht viel draus geworden.
Auf eine Micro-SD-Karte (Fingernagelgröße) passen locker 64 GB. :-) Und das für 20 EUR. Soviel zu großen Datenmengen in kleinen Volumina. Das ist also total gut realisierbar. Ob es so gemacht wird: da muss man das Kästchen mal öffnen.
Erkennung: wer sich Mühe gibt über VIN-Datenbanken des Herstellers: auch easy. Und die VIN an sich kommt via OBD-2 Mode 09 PID 02h. Eine große Tabelle braucht dann wieder nur Speicherplatz, kann aber gut komprimiert werden.
Die Logger: je nachdem wie die gemacht sind. Sobald die UMTS/LTE haben können sie sich auch alle Daten auch von einem Server holen. Und UMTS/LTE sollten sie haben, schließlich will ja die Versicherung auch Daten zurück haben. Verbreitet nehmen diese Logger aber nur einzelne Standard-PIDs, sind aber natürlich um die fahrzeugspezifischen Sachen erweiterbar.
Zitat:
Dann gibt es aber bestimmt Leute, die das schon für z.B. Audi reverse engineered haben und die das im Internet veröffenlicht haben?
Natürlich. Das findest du bei canhack.de mit dem konkreten Audi-Modell.
openXC - ach da gibt es dutzende. Meist stirbt sowas kurz danach wieder. Die eine verbindende Instanz gibt es da halt noch nicht. Denn wer auch immer anfängt, kriegt natürlich auch flott Stress mit den Herstellern, wenn das Zeug allzu offen ist.