.
Nos toca hacer un poco de investigación..... pero con tiempo y paciencia..... tachán!!!
Al arrancar el coche, he visto que dos bytes del mensaje con ID=0x353 "bailaban". Afortunadamente usan la misma codificacion que el estandard OBD, es decir rpm= ((Byte 2<<8)||(Byte 1))/4=0.25*(256*Byte2+Byte1).
Veámos un video :
El código para disponer dicha información es tan sencillo como:
Pero no sólo eso!! También podemos controlar cosas.... como por ejemplo, las ventanillas!!
También existen mensajes que disponen de la posición actual de las ventanillas, por lo que se podría hacer un control en lazo cerrado para tener la ventanilla en la posición deseada.
Existen mensajes para apertura/cierre centralizado, etc.
Aunque el cable sale de la puerta trasera, no significa que no pueda controlar cada una de las otras ventanillas. Simplemente que nos hemos conectado a la red CAN en dicho punto.
Seguiremos ampliando más información!!Ya que hemos descubierto muchas cosas!! Anímate a tomar parte del proyecto!!
Los coches del grupo Volkswagen (Audi,Seat,Skoda y Volkswagen) disponen de 3 redes CAN: tracción, confort e infotainment. (http://www.ate.uniovi.es/12609/seminario_slides.pdf)
En principio, toda la información debería ser válida para cualquier coche del grupo.
Vamos a intentar "hackear" los datos de la CAN Confort, que es el bus en el que se encuentran la centralita confort, clima, puertas,... Para ello, lo primero es localizar el bus:
Si quitamos el pasamuros de la puerta, vemos que tenemos el par de CAN que estamos buscando. Para empezar a sniffear, he soldado un par de cables al conector de la puerta trasera, ya que me resultaba lo más cómodo para empezar. Es decir, he desmontado el embellecedor de la puerta trasera y me he conectado al conector que va a la centralita que controla el motor de la ventana, cierre,etc
Los datos de dicho bus son:
Ahora ya puedo conectarme con mi Arduino + brick CAN e intentar descifrar la información que viaja en dicho par. No necesito tener el puente que habilita la resistencia terminadora del brick.
Nada más conectarnos, empezamos a recibir todos los mensajes (con el contacto dado).
En principio, toda la información debería ser válida para cualquier coche del grupo.
Vamos a intentar "hackear" los datos de la CAN Confort, que es el bus en el que se encuentran la centralita confort, clima, puertas,... Para ello, lo primero es localizar el bus:
Si quitamos el pasamuros de la puerta, vemos que tenemos el par de CAN que estamos buscando. Para empezar a sniffear, he soldado un par de cables al conector de la puerta trasera, ya que me resultaba lo más cómodo para empezar. Es decir, he desmontado el embellecedor de la puerta trasera y me he conectado al conector que va a la centralita que controla el motor de la ventana, cierre,etc
Los datos de dicho bus son:
- CAN H= Naranja/verde
- CAN L= Naranja/marron
- Velocidad= 100 kbps
Ahora ya puedo conectarme con mi Arduino + brick CAN e intentar descifrar la información que viaja en dicho par. No necesito tener el puente que habilita la resistencia terminadora del brick.
Nada más conectarnos, empezamos a recibir todos los mensajes (con el contacto dado).
Nos toca hacer un poco de investigación..... pero con tiempo y paciencia..... tachán!!!
Al arrancar el coche, he visto que dos bytes del mensaje con ID=0x353 "bailaban". Afortunadamente usan la misma codificacion que el estandard OBD, es decir rpm= ((Byte 2<<8)||(Byte 1))/4=0.25*(256*Byte2+Byte1).
Veámos un video :
El código para disponer dicha información es tan sencillo como:
// ----------------------------------------------
// SECUDUINO
// http://secuduino.blogspot.com/
// CAN CONFORT GRUPO VOLKSWAGEN
// 24/Apr/2011
// ----------------------------------------------
#include <CAN.h>
float rpm;
void setup()
{
Serial.begin(115200);
Serial.println("Empezamos...");
CAN.begin(100);
}
void loop()
{
if (CAN.CheckNew())
{
if ( CAN.ReadFromDevice(&CAN_RxMsg) )
{
if (CAN_RxMsg.id==0x353)
{
rpm=0.25*(256*CAN_RxMsg.data[2]+CAN_RxMsg.data[1]);
Serial.print("RPM=");
Serial.println(rpm);
}
}
}
}
Pero no sólo eso!! También podemos controlar cosas.... como por ejemplo, las ventanillas!!
También existen mensajes que disponen de la posición actual de las ventanillas, por lo que se podría hacer un control en lazo cerrado para tener la ventanilla en la posición deseada.
Existen mensajes para apertura/cierre centralizado, etc.
Aunque el cable sale de la puerta trasera, no significa que no pueda controlar cada una de las otras ventanillas. Simplemente que nos hemos conectado a la red CAN en dicho punto.
Seguiremos ampliando más información!!Ya que hemos descubierto muchas cosas!! Anímate a tomar parte del proyecto!!
22 comentarios:
Has conseguido descifrar algo?
Hola David,
Ya hemos descifrado bastantes cosillas!! He actualizado el post.
Saludos
Muy buenos los avances!!!
Hola, se ve muy interesante. Quisiera verlo expandido. Por cierto, esto apareció en Hack-a-Day, www.hackaday.com.
Hola, yo estoy detrás de otro proyecto con el bus CAN pero en Mazda, échale un vistazo:
http://hackingmazda.blogspot.com/
Muy bien Abel!!!
He visto que vas usar PIC. Como puedes ver, aqui estamos intentando usar Arduino (Open hardware) como plataforma.
Mantennos informados de los mensajes que descifres!!!
¿Alguien ha intentado meterse con el estándar LocalCAN de ciertos equipos de laboratorio Mettler-Toledo?
Estoy en un proyecto trabajando con eso.
Yo no.... pero toda información bienvenida!!!
Hola buenas, tengo un proyecto en las manos con arduino y bus can y tengo una duda que no acabo de entender, ¿como accedéis al bus comfort directamente? ¿No podría accederse directamente por el terminal de OBD y sniffear desde allí? Gracias por vuestra información.
Hola,
En el grupo volkswagen el bus CAN esta protegido por el OBD. Existe un dispositivo, llamado gateway que hay que enviarle mediante otro protocolo (linea K) para poder recibir el bus CAN por dicho conector (OBD).
A parte, que de esta forma, puedo inyectar paquetes directamente al bus, para poder abrir/cerrar puertas, bajar ventanillas, etc.
Saludos!
Muchas gracias por la información, pero ¿todos los coches tienen protegido, o que mandarles por ese otro protocolo para poder acceder? ¿Ese protocolo de que trata? Y la última, si mi coche tuviera el OBD también con CAN ¿como podría diferenciar entre confort y motor cuando estuviera snifeando el bus?
Se me olvido, si mi coche tuviera OBD mediante Can como antes, ¿necesitara dar un ACK para comenzar a recibir? Y la duda de antes, como el gateway une los 2 buses de can del coche, el de confort y el de motor, no entiendo como recibir por OBD los 2 o distinguirlos, ni a que velocidad llegan... Siento si pregunto demasiado^^
El gateway es como un router, y tampoco te puedo decir si puedes recibir absolutamente todos los mensajes del resto de buses por ahi.
El tema de conectarse a las redes directamente (Confort,Tracción, etc) es para poder "interactuar" y por su puesto tener acceso a todo lo que se está transmitiendo.
Puedes ojear el link que hay en este post (http://www.ate.uniovi.es/12609/seminario_slides.pdf)
Saludos
MUY BUENO!!!
esta semana me encargo los componentes y me hago el circuito, comenzare con mi renault laguna2 y ya os ire contanto.
Puedes pasarte por BUY, tenemos una shield a un precio muy competitivo!!
;-)
hola que tal SECUduino me intereso mucho esta pajina no saves como me emosione cuando lo mire me interesaria por full featured como cuanto me sale ??
Hola, contacta con nosotros por el mail que puedes encontrar en la seccion de Buy.
Saludos
:-)
On a mkiv Golf I am looking to send a signal when the ignition is turned to make the needles sweep before the engine starts.
Would this shield work?
Regards
Andrew
buena secundino,sigue pa adalente. yo tambien quiero formar parte de tu grupo
Hola Igor, has conseguido saber cual es el código del cierre centralizado?, Un saludo
Ciao a tutti.
Sto mettendo in pratica un mio vecchio progetto e sto utilizzando il lavoro di Igor e di tutti gli altri Amici. Vorrei poter condividere con voi le nostre conoscenze.
Sto parlando del gruppo VAG (Volkswagen Audi Group).
Enrico.
Sorry I wrote in Italian ...
Refer to my CAN bus hacking of my car..
https://sites.google.com/site/hobbydebraj/home/can-bus-based-obd-reader
Publicar un comentario en la entrada