CAN-Hacking (war: OBD2 - ELM327 - Linux)

Alles, was mit dem Auslesen des CAN-Busses über den ODB2-Port zu tun hat (Scannen, OVMS und DashDAQ)

Re: CAN-Hacking (war: OBD2 - ELM327 - Linux)

Beitragvon mikeljo » 2. Jan 2013 17:07

wecken des Buses funktioniert bisher nur teilweise.

Wagen ist aus, auf dem Bus keine Daten:
Senden von: $101 $08 $FD $02 $10 $04 .....
bringt nur als Antwort: 641 ........
direkt Senden der Anforderungs Codes:
send: 7E4 8 06 2C FE 43 69 43 68 00
send: 7E4 8 03 AA 04 FE 00 00 00 00
bringt keine Antwort des Buses.

Es ist also zuerst mal nur ein Gateway (ID $641) wach geworden. Jetzt gilt es herauszufinden wie man dieses GW dazu bringt weitere Daten herauszurücken.

Bye
mikeljo
mikeljo
111 kW - voll elektrisch
 
Beiträge: 458
Registriert: 23. Sep 2011 18:35
Wohnort: Kaiserslautern

Re: CAN-Hacking (war: OBD2 - ELM327 - Linux)

Beitragvon Tachy » 2. Jan 2013 19:01

Naja, immerhin! :)

ich hätte gedacht, da kommt garnix....
Gruß, Johannes
Opel Ampera Forum - Admin
Ampera ePionier Edition, lithium-weiß, #6681, seit 29.12.2011
PV 6,88 kWp - eigene Solar-Überschussladesteuerung!
www.gutshof-guentert.de
Einmal elektrisch, immer elektrisch!
Benutzeravatar
Tachy
500 kW - overdrive
 
Beiträge: 1396
Registriert: 7. Aug 2011 13:16
Wohnort: Sulzburg-Laufen, Markgräflerland

Re: CAN-Hacking (war: OBD2 - ELM327 - Linux)

Beitragvon Kratus » 2. Jan 2013 19:05

Wie ist es wenn man das DashDAQ benutzt mit ausgeschaltete Zündung?
Kratus.

Grüße aus dem Elsaß (Frankreich)
Ampera Modell 2013A.
Benutzeravatar
Kratus
500 kW - overdrive
 
Beiträge: 1352
Registriert: 26. Dez 2011 12:49
Wohnort: 30 km nördlich von Straßburg, Frankreich

Re: CAN-Hacking (war: OBD2 - ELM327 - Linux)

Beitragvon Tachy » 2. Jan 2013 22:01

Der DashDAQ sendet bei totem Bus nur diesen Kram hier:

Code: Alles auswählen
7DF      8 02 01 00 00 00 00 00 00


pro Sekunde einmal und wartet, bis was zurückkommt. Aber aufwecken tut das so natürlich nicht und etwas zurückkommen schon gar nicht ;)

folgende 101er kommen beim DashDAQ alle 3 Sekunden, aber höchstwahrscheinlich nur dann, wenn der Bus lebt...

Code: Alles auswählen
101      8 FE 01 3E 00 00 00 00 00


Ich kontrolliere das aber nochmals.
Gruß, Johannes
Opel Ampera Forum - Admin
Ampera ePionier Edition, lithium-weiß, #6681, seit 29.12.2011
PV 6,88 kWp - eigene Solar-Überschussladesteuerung!
www.gutshof-guentert.de
Einmal elektrisch, immer elektrisch!
Benutzeravatar
Tachy
500 kW - overdrive
 
Beiträge: 1396
Registriert: 7. Aug 2011 13:16
Wohnort: Sulzburg-Laufen, Markgräflerland

Re: CAN-Hacking (war: OBD2 - ELM327 - Linux)

Beitragvon gecko » 3. Jan 2013 07:08

Code: Alles auswählen
101      8 FE 01 3E 00 00 00 00 00


0x3E ist die Tester Present Message. Die muß alle paar Sekunden gesendet werden. Macht auch der Elm so....automatisch.

edit:
Code: Alles auswählen
7DF      8 02 01 00 00 00 00 00 00


Das ist auch normal. 7Df ist an alle Steuergeräte. 01 00 ist Abfrage "Supported PID's". Das kann man so machen. Es müssten sich dann alle verfügbaren Steuergeräte, die den EOBD Standard unterstützen, mit den PID's melden.
LG
Ampera Cosmo, POWERBLAU, seit 25.09.2012 VIN xxxCU109394
Benutzeravatar
gecko
111 kW - voll elektrisch
 
Beiträge: 125
Registriert: 13. Sep 2012 19:47
Wohnort: Köppling, Stmk, AT

Re: CAN-Hacking (war: OBD2 - ELM327 - Linux)

Beitragvon gecko » 6. Jan 2013 20:44

Hallo mikeljo,

wecken des Buses funktioniert bisher nur teilweise.

Wagen ist aus, auf dem Bus keine Daten:
Senden von: $101 $08 $FD $02 $10 $04 .....
bringt nur als Antwort: 641 ........
direkt Senden der Anforderungs Codes:
send: 7E4 8 06 2C FE 43 69 43 68 00
send: 7E4 8 03 AA 04 FE 00 00 00 00
bringt keine Antwort des Buses.


Ich bin da jetzt auf nochwas gestossen. Vielleicht hift uns das. Habe aber vor lauter Internet Surfen keine Zeit zum Testen :-). Auf dem Github gibt es eine libvyoager (GM Voyager glaub ich) https://github.com/gtosoft/libvoyager. Dort sind viele GM Sachen für den Single Wire CAN umgesetzt. Wenn man sich die source näher anschaut, dann findet man in der CommandSession.java das hier:

Code: Alles auswählen
   private boolean sendWakeupAllNodes() {
      String response;
      
      if (DEBUG) msg ("Setting headers and transmiting 11-bit wake-up message...");
      // set the header to "100"
      if (!ebt.sendATInitialization(new String[] {"AT SH 100"})) return false;
      // Transmit a CAN message consisting of a single null character (we have to send at least one byte. If we could send zero bytes we would do that, since just the header "100" is needed).
      response = ebt.sendOBDCommand("00");
      response = ebt.sendOBDCommand("00");
      if (!ebt.sendATInitialization(new String[] {"AT SH 621"})) return false;
      // Work your way up - 01 02, 01 7f, etc. That ramps it up I guess.
      response = ebt.sendOBDCommand("01 02"); // Keyfob sets this network level upon press
      response = ebt.sendOBDCommand("01 7F"); // lites up everything as far as I can tell. 
      if (!ebt.sendATInitialization(new String[] {"AT SH 638"})) return false;
      // Work your way up - 01 02, 01 7f, etc. That ramps it up I guess.
      response = ebt.sendOBDCommand("01 02"); // Keyfob sets this network level upon press
      response = ebt.sendOBDCommand("00 19"); // OnStar is alive when network is in this mode.
      response = ebt.sendOBDCommand("01 7F"); // lites up everything as far as I can tell. 
//      response = ebt.sendOBDCommand("00 19"); // OnStar is alive when network is in this mode.
//      response = ebt.sendOBDCommand("00 19"); // OnStar is alive when network is in this mode.
//      response = ebt.sendOBDCommand("00 19"); // OnStar is alive when network is in this mode.
//      response = ebt.sendOBDCommand("00 19"); // OnStar is alive when network is in this mode.
      if (DEBUG) msg ("wake-up message has been sent.");
      
      return true;
   }


Lustig ist hierbei, dass der SW CAN offensichtlich 29bit CAN ist. Die scheinen aber beim GM Voyager folgende Sequenz zum Aufwachen zu benutzen, die jetzt 11bit CAN ist:

100 8 01 00 …..
100 8 01 00 …..
221 8 02 01 02 ….
221 8 02 01 7F …
238 8 02 01 02 …
238 8 02 00 19 …
238 8 02 01 7F …

Keine Ahnung welche Steuergeräte sich hinter CanID 221 und CanID 238 verbergen. Vielleicht Kombi & OnStar System?
Vielleicht kommen wir hier weiter? Wie gesagt, keine Zeit zum testen...nächste Woche sieht auch eng aus.

LG01 7F
Ampera Cosmo, POWERBLAU, seit 25.09.2012 VIN xxxCU109394
Benutzeravatar
gecko
111 kW - voll elektrisch
 
Beiträge: 125
Registriert: 13. Sep 2012 19:47
Wohnort: Köppling, Stmk, AT

Re: CAN-Hacking (war: OBD2 - ELM327 - Linux)

Beitragvon mikeljo » 7. Jan 2013 00:08

gecko hat geschrieben:Hallo mikeljo,

wecken des Buses funktioniert bisher nur teilweise.

Wagen ist aus, auf dem Bus keine Daten:
Senden von: $101 $08 $FD $02 $10 $04 .....
bringt nur als Antwort: 641 ........
direkt Senden der Anforderungs Codes:
send: 7E4 8 06 2C FE 43 69 43 68 00
send: 7E4 8 03 AA 04 FE 00 00 00 00
bringt keine Antwort des Buses.


Ich bin da jetzt auf nochwas gestossen. Vielleicht hift uns das. Habe aber vor lauter Internet Surfen keine Zeit zum Testen :-). Auf dem Github gibt es eine libvyoager (GM Voyager glaub ich) https://github.com/gtosoft/libvoyager. Dort sind viele GM Sachen für den Single Wire CAN umgesetzt. Wenn man sich die source näher anschaut, dann findet man in der CommandSession.java das hier:

Code: Alles auswählen
   private boolean sendWakeupAllNodes() {
      String response;
      
      if (DEBUG) msg ("Setting headers and transmiting 11-bit wake-up message...");
      // set the header to "100"
      if (!ebt.sendATInitialization(new String[] {"AT SH 100"})) return false;
      // Transmit a CAN message consisting of a single null character (we have to send at least one byte. If we could send zero bytes we would do that, since just the header "100" is needed).
      response = ebt.sendOBDCommand("00");
      response = ebt.sendOBDCommand("00");
      if (!ebt.sendATInitialization(new String[] {"AT SH 621"})) return false;
      // Work your way up - 01 02, 01 7f, etc. That ramps it up I guess.
      response = ebt.sendOBDCommand("01 02"); // Keyfob sets this network level upon press
      response = ebt.sendOBDCommand("01 7F"); // lites up everything as far as I can tell. 
      if (!ebt.sendATInitialization(new String[] {"AT SH 638"})) return false;
      // Work your way up - 01 02, 01 7f, etc. That ramps it up I guess.
      response = ebt.sendOBDCommand("01 02"); // Keyfob sets this network level upon press
      response = ebt.sendOBDCommand("00 19"); // OnStar is alive when network is in this mode.
      response = ebt.sendOBDCommand("01 7F"); // lites up everything as far as I can tell. 
//      response = ebt.sendOBDCommand("00 19"); // OnStar is alive when network is in this mode.
//      response = ebt.sendOBDCommand("00 19"); // OnStar is alive when network is in this mode.
//      response = ebt.sendOBDCommand("00 19"); // OnStar is alive when network is in this mode.
//      response = ebt.sendOBDCommand("00 19"); // OnStar is alive when network is in this mode.
      if (DEBUG) msg ("wake-up message has been sent.");
      
      return true;
   }


Lustig ist hierbei, dass der SW CAN offensichtlich 29bit CAN ist. Die scheinen aber beim GM Voyager folgende Sequenz zum Aufwachen zu benutzen, die jetzt 11bit CAN ist:

100 8 01 00 …..
100 8 01 00 …..
221 8 02 01 02 ….
221 8 02 01 7F …
238 8 02 01 02 …
238 8 02 00 19 …
238 8 02 01 7F …

Keine Ahnung welche Steuergeräte sich hinter CanID 221 und CanID 238 verbergen. Vielleicht Kombi & OnStar System?
Vielleicht kommen wir hier weiter? Wie gesagt, keine Zeit zum testen...nächste Woche sieht auch eng aus.

LG01 7F


hm....
wenn ich das jetzt richtig verstehe, senden die dort auf ID 621 und 638.
Sowie ich das ganze jetzt aber verstanden habe sind das aber die Antwort Adressen.
Die Anfragen sollten doch eigentlich an 221 und 238 gehen.
Ich hab nirgends in dem Sourcecode gefunden wo von 621 auf 221 umgerechnet wird.
Oder macht das der ELM?
Sendet auf 221 und setzt dann den Filter auf 621?

Bei 100 wird ja auch direkt gesendet. Sind die selben Sequenzen.
Kann der ELM das unterscheiden?

Bye
mikeljo
mikeljo
111 kW - voll elektrisch
 
Beiträge: 458
Registriert: 23. Sep 2011 18:35
Wohnort: Kaiserslautern

Re: CAN-Hacking (war: OBD2 - ELM327 - Linux)

Beitragvon gecko » 7. Jan 2013 06:48

Hallo mikeljo,

das war ein kleiner Test ob jemand mitdenkt :-)
Ja du hast recht, habe mich vertipped weil ich schon wieder an die GMW3110 gedacht habe.
Richtig ist 621 und 638.

Die ganze Sequenz in der libvyoager sieht ja so aus:
Code: Alles auswählen
      switchTo11BitTransmitMode();
      sendWakeupAllNodes();
      switchTo29BitTransmitMode();
      send29BitWakeup();


Für den 11bit CAN wird an den Elm also folgende initialisierung gesendet:

"AT PP 2C SV C0" --> Protocol B 11bit CAN mode

"ATWS", // reset chip so changes take effect
"ATCAF1", // CAN auto-formatting on
"ATSPB", // set protocol to B (user defined 1)
"ATH1", // show headers
"ATR0" // responses off - we don't expect responses to what we're sending.

Und dann gehts weiter mit AT SH xyz. Der Elm sendet also wirklich an xyz und hört auf alles.
Aber ATR0 bedeutet, dass der ELM nicht auf eine Antwort wartet sondern gleich das nächste Kommando absendet.

LG
Ampera Cosmo, POWERBLAU, seit 25.09.2012 VIN xxxCU109394
Benutzeravatar
gecko
111 kW - voll elektrisch
 
Beiträge: 125
Registriert: 13. Sep 2012 19:47
Wohnort: Köppling, Stmk, AT

Re: AW: CAN-Hacking (war: OBD2 - ELM327 - Linux)

Beitragvon micky4 » 7. Jan 2013 21:20

Habt ihr eigentlich den CANUSB Stecker am OVMS-Diagnosestecker angehängt, bzw. war das die ursprünglich Idee für diesen "Diagnose" Ausgang am OVMS ?
(Der wird im user manual nicht einmal erwähnt; OVMS Version 2)
Liebe Grüße, Michael CU#13068, lithiumweiss, ePionier
myampera.wordpress.com
Benutzeravatar
micky4
500 kW - overdrive
 
Beiträge: 2041
Registriert: 5. Apr 2012 08:39
Wohnort: Wien, Österreich
Verbrauch

Re: AW: CAN-Hacking (war: OBD2 - ELM327 - Linux)

Beitragvon mikeljo » 7. Jan 2013 22:56

micky4 hat geschrieben:Habt ihr eigentlich den CANUSB Stecker am OVMS-Diagnosestecker angehängt, bzw. war das die ursprünglich Idee für diesen "Diagnose" Ausgang am OVMS ?
(Der wird im user manual nicht einmal erwähnt; OVMS Version 2)


Hi,

das ist KEINE OBD Weiterleitung.
Dort liegen die Serielle Signale an die zum GSM Modul gehen an.

Bye
mikeljo
mikeljo
111 kW - voll elektrisch
 
Beiträge: 458
Registriert: 23. Sep 2011 18:35
Wohnort: Kaiserslautern

VorherigeNächste

Zurück zu Rund um den CAN-Bus (ODB-II)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste