.
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!!
30 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
hola!!! En q quedó la novela de este proyecto me interesa saber más.
Ya que pienso en hacer mi caribe 84 a eléctrico q me informe de todo y controle todo. claro todo lo are con paciencia. de antemano gracias!!!.
hello sir , i would like your help in deciphering the following code
Bus speed: 500000 kbit/s H, Sampling point: 75%, SJW 2
18DAF130 X | 8 | 02 7E 00 55 55 55 55 55 | 5076
18DAF128 X | 8 | 02 7E 00 55 55 55 55 55 | 1506
18DAF110 X | 8 | 02 7E 00 55 55 55 55 55 | 1620
18DAF153 X | 8 | 02 7E 00 55 55 55 55 55 | 8639
Can you explain me what the above data corresponds to in-terms of
1: Start of frame
2: Arbitration Field
3: Control Field
4: Data Field
5: CRC Field
6: ACK Field
7: End of frame
This is just an example for the data i was able to gather from a
Honda City , Petrol Injection. CAN protocol observed in ISO15765 CAN HIGH AND ISO 15765 CAN LOW .
Your help will be much appreciated sir.
I just built a filter tool to compare 2 files and output the found commands to a third file.
here you go:
https://www.dropbox.com/sh/ozqvv0htxu4555l/AACAW4oCjirvyZPjCFSdR19fa?dl=0
Hola, actualmente estoy estudiando todo este mundo del canbus pero es bastante complicado conseguir informacion puntual, actualmente lo que busco es leer un parametro del motor, especificamente el boost, y mostrarlo en la pantalla FIS de un seat leon, mi dudas son las siguientes:
1. si quiero leer este parametro a que canbus me debo conectar?
2. para enviar informacion a la pantalla fis debo estar conectado al canbus infotainment?
3. si el canbus gateway interconecta todas las redes can existe alguna forma de leer directamente las variables del gateway?
4. en el repositorio hay un ejemplo para leer las rpm por medio de obd sobre canbus
parte del codigo
CAN_TxMsg.id=0x7DF; esta ID de donde salio?
CAN_TxMsg.header.rtr=0;
CAN_TxMsg.header.length=8;
CAN_TxMsg.data[0]=0x02; esto significa algo?
CAN_TxMsg.data[1]=0x01; //MODE
CAN_TxMsg.data[2]=0x0C; //PID
hi guys,
I'm a software engineer student working on a canbus project,
i have connected to my car's (vw polo 1.2 tsi 2011) canbus via rasberry-pi and i have succesfully managed to sent and recieve canbus messages,
so far i figured out how to controll small things like radio system and so, but i couldnt control other things like windows and doors lock, i tried to record messages and resend the recording file with no success, why is that?
does i need any authentication first?
what i'm doing wrong?
Hope you can help me ,
thanks
@Unknown from 8th may
Exact same problem here, Audi A4 B7 -07. Im able to control almost everything in Comfort bus except builtin larm and driver side window / mirror.
im more than happy to open a discussion with you in a chat or similar, haunt me down at G+ or send me a mail prototive@gmail.com or send a PM from my project page: https://www.facebook.com/R4Audi/
/D
Hola Igor, has intentado conectando directamente al puerto OBD2?
Has intentado con raspberry?
Buenas tardes,
estoy trabajando en un proyecto en el que debo de implementar un nuevo sistema para integrarlo al CAN Bus y me surgen las siguientes dudas:
- ¿Es posible leer otros parámetros de un mismo bus o de otros buses?
- ¿Cómo me conecto con el bus CAN?
- Una vez conectado al bus CAN, ¿cómo puedo interactuar con él (leer parámetros del bus y enviar datos al OBD)?
Cualquier ayuda será bienvenida. Muchas gracias ante todo.
Publicar un comentario