Avisos
Vaciar todo

Eliminar inmobilizador TD5

147 Respuestas
22 Usuarios
0 Reactions
35.3 K Visitas
Gus
 Gus
(@gus)
Dr. H. C. LR Socio
Registrado: hace 23 años
Respuestas: 16022
 

Joer Diego, que pasó?

  Yo creo que el menor de tus problemas es la alarma. No se que problema tendrá  el techo, pero saca la alarma y la ecu motor juntas y las montas, no hace falta sensor de nada, solo que la alarma funcione y en todo caso la antena del pasivo aunque se puede anular, el pasivo me refiero.

Si no quieres tanto lío pon una ecu sin alarma.



   
ResponderCitar
diego Td5
(@diego-td5)
Iniciado en LR Socio
Registrado: hace 11 años
Respuestas: 228
 

Hola Gus , pues lo que pasó , por lo visto perdí el conocimiento en una carretera de montaña-curvas y riera a mucha altura y al perder el conocimiento , el coche siguió por inercia ( a poca velocidad ) hasta que llegó la siguiente curva que el coche aunque es viejo , todavía no sabe girar solo  ;D y no giró , llegó al borde del barranco y calló dando vueltas de campana hasta la riera ( 50 o 60 metros de caída a una separación de la carretera de unos 10 metros , imagina el desnivel e inclinación ) suerte tuve que llegó despacio y por inercia por que si llego al borde rápido y salto recto , cuando el coche cae a la riera se chafa como un huevo .
Con respecto a lo que me dices , el techo está arrancado y el sensor del mando de alarma no está y como no reconoce el mando , sale en el salpicadero un motorcito en rojo con un rayo que lo cubre . La ECU está en su sitio y la alarma ( si es la caja roja que hay detras de el cuadro de relojes ) tambien está pero no se como dices que las saque juntas y las monte si están montadas y no funciona ¿? . No entiendo de esto que para ti , ya veo que es un libro abierto y aprendido .



   
ResponderCitar
diego Td5
(@diego-td5)
Iniciado en LR Socio
Registrado: hace 11 años
Respuestas: 228
 

Le quiero poner el motor al perolillo este que he comprado .



   
ResponderCitar
(@salvaje)
Dr. H. C. LR Socio
Registrado: hace 21 años
Respuestas: 19378
 

???????????????
Hostias diego, pero tu estas bien? Me he quedao espantao.



   
ResponderCitar
(@garmen)
Maestro LandRovero Socio
Registrado: hace 15 años
Respuestas: 2099
Topic starter  

Buenas, voy encontrando información a cuentagotas.

He encontrado, al parecer, como eliminar el inmobilizador en las MSB:
http://www.ecuconnections.com/forum/viewtopic.php?f=107&t=13765

Rover_TD5_MEMS_MSB_93c46.bin 
01bbe36d00004000004000000000301d0000020000000045ffff01bbe904
00004000004000000000301d0000020000000045ffff0000000100010001
09f6146afce6f400f8e6fc00f2e402a0fce6f400f8e6fc00f2e402a0fce6
f400f8e6fc00f2e402a0500157caa0015d61b321b321b321dfdfdfdf3419
583038300163121e

Rover_TD5_MEMS_MSB_93c46_immo_off.bin 
01bbe36d00004000004000000000301d0000000000000045ffff01bbe904
00004000004000000000301d0000020000000045ffff0000000100010001
09f6146afce6f400f8e6fc00f2e402a0fce6f400f8e6fc00f2e402a0fce6
f400f8e6fc00f2e402a0500157caa0015d61b321b321b321dfdfdfdf3419
583038300163121e

Podeís observar, que en la primera línea hay un 2 que desaparece al eliminar el inmobilizador.

Aquí teneis los archivos, para que no se pierdan:

A ver si lo pruebo y funciona.

En las NNN al parecer es distinto, a ver si lo encuentro o descubro.

Buenas, noches.



   
ResponderCitar
Gus
 Gus
(@gus)
Dr. H. C. LR Socio
Registrado: hace 23 años
Respuestas: 16022
 

muy distinto.



   
ResponderCitar
(@garmen)
Maestro LandRovero Socio
Registrado: hace 15 años
Respuestas: 2099
Topic starter  

Buenas, hoy he estado peleandome con la NNN, intentando acceder por BDM al microprocesador y a la memoria. Tenía la intención de poder leer y escribir la flash, para poder escribir una rutina que reescribiese la EPROM serial, sin tener que desestañarlo.

He conseguido controlar el Motorola por BDM, pero sólamente me deja leer las posiciones pares de memoria, es decir me lle la flash de 16bit como si fuese de 8bit, repitiendo esos 8 bits. tiene que ver algo con la configuración de los registros de chip select y demás. Se me han hinchado los cojones por la mierda de documentación del Motorola y por lo complicado que es y me da que voy a dejar el asunto en stand-by un ratito hasta que vuelva a tener ganas.

Voy a concentrarme en eliminar el inmobilizador, y punto.

Fotos:

Código fuente del arduino, para usarlo como BDM, está sin comentar, pero menos da una piedra :D:

/*
 BDM interface for Motorola 68000 microcontrollers, via Serial port.
 
 Pinout
GND, pin 3
BKPT/DSCLK, pin 4		Arduino D2
Freeze, pin 6			Arduino D3
Reset, pin 7			Arduino D4
IFETCH/DSI, pin 8		Arduino D5
IPIPE/DSO, pin 10		Arduino D6

 */

int BKPT = 2;    //  Breakpoint input to target in normal mode;development serial clock in BDM.Must be held low on rising edge of reset to enable BDM
int FREEZE = 3;   // Freeze signal from target.High level indicates that target is in BDM
int RESET = 4;    // Reset signal to/from target.Must be held low to force hardware reset
int DSI = 5;         // Used to track instruction pipe in normal mode.Serial data input to target MCU in BDM
int DSO = 6;         // Tracks instruction pipe in normal mode.Serial data output from target MCU in BDM

char keystroke;
char option;

void setup()
{
  // start serial port at 57600 bps:
  Serial.begin(57600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  pinMode(BKPT, OUTPUT);
  pinMode(FREEZE, INPUT);
  pinMode(RESET, OUTPUT);
  pinMode(DSI, OUTPUT);
  pinMode(DSO, INPUT);
  

  
  Serial.println("Welcome to BDM interface for Motorola 68000 family processors");
  Serial.println("enter h to get help");
  Serial.print(">");
}


void loop()
{
  
  // if we get a valid byte, read analog ins:
  while (true)
  {
      if (Serial.available()) {
        // get incoming byte:
        keystroke = Serial.read();
        if (keystroke == 'n')
        {
          break;
        }
        else
        {
          option = keystroke;
        }
        Serial.write(keystroke);          
      }
  }
  
  if (option == 'h')
    {
      Serial.println("");
      Serial.println("# Help");
      Serial.println("#   Avaiable commands:");
      Serial.println("#     h help");
      Serial.println("#     s BDM Status");
      Serial.println("#     e Enter BDM");
      Serial.println("#     n Enable BDM, reset CPU");
      Serial.println("#     x Exit BDM");
      Serial.println("#     1 send 1");
      Serial.println("#     0 send 0");
      Serial.println("#     3 read register");
      Serial.println("#     r receive");
      Serial.println("#     R receive word");
      Serial.println("#     S send word");
      Serial.println("#     Y sync timing");
      Serial.println("#     F read memory at 0000");
      Serial.println("#     f read next memory block");
      Serial.println("#     D Dump flash");
      Serial.println("#     K Register Info");
      
    }
    
  else if (option == 's')
  {
    BDMstatus();
  }
  
  else if (option == 'n')
  {
    enableBDM();
  }
  
  else if (option == 'e')
  {
    enterBDM();
    //sync();
  }
  
  else if (option == 'Y')
  {
    sync();
  }
  
  else if (option == 'x')
  {
    sendBDM(0x0c,0x00);
  }
  
  else if (option == 'k')
  {
    sendBDM(0x25,0x8E);
    
    
    boolean k;
    byte LO;
    byte HI;
    
    read_16(&k, &HI,&LO);
    Serial.println("");
    Serial.print(HI, HEX);
    Serial.println(LO, HEX);
    
    sendBDM(0x25,0x8F);
    read_16(&k, &HI,&LO);
    Serial.println("");
    Serial.print(HI, HEX);
    Serial.println(LO, HEX);
  }
  
  else if (option == '3')
  {
        
    sendBDM(0x19,0x00);
    sendBDM(0xFF,0xFF);
    sendBDM(0xFA,0x4A);

    
    boolean k;
    byte LO;
    byte HI;
    
    read_16(&k, &HI,&LO);
    Serial.println("");
    Serial.print("# ");
    Serial.print(k);
    Serial.print("_");
    printHex(HI);
    printHex(LO);
  }
  
  
  else if (option == 'F')
  {
    sendBDM(0x19,0x00);
    sendBDM(0x00,0x00);
    sendBDM(0x00,0x00);
    
    
    boolean k;
    byte LO;
    byte HI;
    
    read_16(&k, &HI,&LO);
    Serial.println("");
    Serial.print("# ");
    Serial.print(k);
    Serial.print("_");
    Serial.print(HI, HEX);
    Serial.println(LO, HEX);
  }
  

  
  else if (option == 'D')
  {
    boolean k;
    byte LO;
    byte HI;
    
    int i=0;
    
    sendBDM(0x18,0x40);
    sendBDM(0x7F,0xFF);
    sendBDM(0xFA,0x44);
    sendBDM(0x4F,0xFF);
    
    sendBDM(0x19,0x40);
    sendBDM(0x7F,0xFF);
    sendBDM(0xFA,0x44);
   
    read_16(&k, &HI,&LO);
    Serial.println("");
    Serial.println("");
    printHex(HI);
    printHex(LO);
    
}

  
  else if (option == 'f')
  {
    sendBDM(0x1d,0x00);
    
    boolean k;
    byte LO;
    byte HI;
    
    read_16(&k, &HI,&LO);
    Serial.println("");
    Serial.print("# ");
    Serial.print(k);
    Serial.print("_");
    Serial.print(HI, HEX);
    Serial.println(LO, HEX);
  }
  
  else if (option == '1')
  {
    delay(0);
    digitalWrite(BKPT, LOW);
    delay(0);
    digitalWrite(DSI, HIGH);
    delay(0);
    digitalWrite(BKPT, HIGH);
  }
  
  else if (option == '0')
  {
    
    delay(0);
    digitalWrite(BKPT, LOW);
    delay(0);
    digitalWrite(DSI, LOW);
    delay(0);
    digitalWrite(BKPT, HIGH);
  }
  
  else if (option == 'r')
  {
    delay(0);
    digitalWrite(BKPT, LOW);
    delay(0);
    digitalWrite(BKPT, HIGH);
    if (digitalRead(DSO))
        Serial.println("1");
    else
        Serial.println("0");
  }
  
  else if (option == 'R')
  {
    boolean k;
    byte LO;
    byte HI;
    
    read_16(&k, &HI,&LO);
    Serial.println("");
    Serial.print("# ");
    Serial.print(k);
    Serial.print("_");
    Serial.print(HI, HEX);
    Serial.println(LO, HEX);
  }
  
  else
     {
       Serial.println("");
       Serial.println(option);
        Serial.print("# Invalid option, key h for help");
     }
  
  
  Serial.println("");
  Serial.print(">");
}


void BDMstatus()
{
   Serial.println();
   Serial.println("# Status");
  
  if (digitalRead(FREEZE) == 0)
  {
     
      Serial.println("#   Microprocessor NOT in BDM");
  }
  
  else
  
  {
      Serial.println("#   Microprocessor IS in BDM");
  }
  
  
}

void enterBDM()
{
  digitalWrite(BKPT, LOW);
  delay(50);
  digitalWrite(BKPT, HIGH);
  
}

void enableBDM()
{
  digitalWrite(BKPT, LOW);
  delay(2);
  digitalWrite(RESET, LOW);
  
  delay(2);
  digitalWrite(RESET, HIGH);
  delay(10);
  digitalWrite(BKPT, HIGH);
}

void sendBDM(byte H, byte L)
{
  //Serial.println();
  //Serial.print("# Sending word: 0_");
  //    Serial.print(H, HEX);
  //Serial.println(L, HEX);
  
  digitalWrite(BKPT, LOW);
  delay(0);
  digitalWrite(BKPT, HIGH);
  
  int i=8;
  while (i>0)
  {
    i = i-1;
    delay(0);
    digitalWrite(BKPT, LOW);
    
    if (bitRead(H, i) == 1)
    {
      delay(0);
      digitalWrite(DSI, HIGH);
    }
    
    else
    {
      delay(0);
      digitalWrite(DSI, LOW);
    }
    
    delay(0);
    digitalWrite(BKPT, HIGH);
  }
  
 i=8;
  while (i>0)
  {
    i = i-1;
    delay(0);
    digitalWrite(BKPT, LOW);
    if (bitRead(L, i) == 1)
    {
      delay(0);
      digitalWrite(DSI, HIGH);
    }
    else
    {
      delay(0);
      digitalWrite(DSI, LOW);
    }
    delay(0);
    digitalWrite(BKPT, HIGH);
  }
    
}

void sync()
{
  int count=0;
    while (true)
    {
      if (count==16)
      {
        break;
      }
      delay(0);
      digitalWrite(BKPT, LOW);
      delay(0);
      digitalWrite(BKPT, HIGH);
      if (digitalRead(DSO))
          count=count+1;
      else
          count=0;
      
    }
    delay(0);
      digitalWrite(BKPT, LOW);
      delay(0);
      digitalWrite(BKPT, HIGH);
}

void read_16(boolean * control, byte * HI, byte * LO)
{
  *control = digitalRead(DSO);
  delay(0);
  digitalWrite(BKPT, LOW);
  delay(0);
  digitalWrite(BKPT, HIGH);
  delay(0);
  
  
  int i=8;
  while (i>0)
  {
    i = i-1;
    if (digitalRead(DSO) == 1)
          bitWrite(*HI, i,1);
    else
          bitWrite(*HI, i,0);
    delay(0);
    digitalWrite(BKPT, LOW); 
    delay(0);
    digitalWrite(BKPT, HIGH);
   delay(0); 
    
    
  }
  
 i=8;
  while (i>0)
   {
    i = i-1;
    if (digitalRead(DSO) == 1)
          bitWrite(*LO, i,1);
    else
          bitWrite(*LO, i,0);
    delay(0);
    digitalWrite(BKPT, LOW); 
    delay(0);
    digitalWrite(BKPT, HIGH);
   delay(0); 
    
  }

}


void printHex(byte X)
{
  if (X < 16)
    Serial.print("0");
  Serial.print(X,HEX);
  
}



   
ResponderCitar
(@garmen)
Maestro LandRovero Socio
Registrado: hace 15 años
Respuestas: 2099
Topic starter  

Al parecer, en Motorola había alguien que sabía algo de ingeniería 😀

He encontrado un manual de como usar el 68332:

Buenas noches.



   
ResponderCitar
(@camelot)
Registrado: hace 14 años
Respuestas: 9
 

menudo  lio  tienes encima la mesa tienes de todo  como se nota que entiendes de electronica



   
ResponderCitar
Gus
 Gus
(@gus)
Dr. H. C. LR Socio
Registrado: hace 23 años
Respuestas: 16022
 

Pues me da a mi que algo tiene que ver con eso que te pasa lo de que a mi no me arranca la flash que escrbí a 8bits en vez de a 16.

En cuanto tengas lo del BDM listo me das coordenadas para escribir mi flash por BDM y ver si no la tengo que desoldar para escribir de nuevo.

 



   
ResponderCitar
(@garmen)
Maestro LandRovero Socio
Registrado: hace 15 años
Respuestas: 2099
Topic starter  

Buenos días caballeros.

Camelot, trabajo en cosas muy parecidas a esto, por tanto, algo se  ;D ;D ;D

Gus, el BDM me tiene frito, no consigo hacerlo funcionar bien. Me da que tendré que pillarme un programador de BDM-USB. Te mantendré informado. Porcierto, tuve que utilizar tu imagen de la memoria, ya que no se que le hice a la mia que despues del primer arranque no arrancó mas 😀 😀 :D. Comentar, que Gus me mando una imagen de su memoria, pero la normal, no con la ñapa del inmovilizador hecha.

Ayer me fui a dormir a la 1:50 con una sonrisa de oreja a oreja. Conseguí eliminar el inmovilizador a la NNN por software, escribiendo en la eeprom serial 93c56 93C66 de 512 bytes (editado por el moderador, para su corrección).

Imagen de la memoria el modo ROBUST:

talaikide@debian-TOSH:~/Documentos/Td5_inside/Serial_Eprom_Hack$ xxd Nanocom_dice_ROBUST.bin 
0000000: 008f 367a 0000 0000 0000 0000 4000 0008  ..6z........@...
0000010: 0000 0000 0000 eeff ffff ffff ffff ffff  ................
0000020: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000030: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000040: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000050: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000060: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000070: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000080: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000090: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000a0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000b0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000c0: ffff ffff ffff ffff ffff 008f 3675 0000  ............6u..
00000d0: 0000 0000 0000 4000 0008 0000 0000 0000  ......@.........
00000e0: eeff ffff ffff ffff ffff ffff ffff ffff  ................
00000f0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000100: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000110: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000120: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000130: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000140: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000150: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000160: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000170: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000180: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000190: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00001a0: ffff ffff ffff ffff ffff ffff ffff 0000  ................
00001b0: ffff ffff ffff 01f4 1724 14aa 02e0 06e2  .........$......
00001c0: 0af2 fec4 5556 0007 14aa 02e0 06e2 0af2  ....UV..........
00001d0: fec4 5556 0007 14aa 02e0 06e2 0af2 fec4  ..UV............
00001e0: 5556 0007 a001 6610 5001 660b fc03 fc03  UV....f.P.f.....
00001f0: fc03 dfdf dfdf db9c 5332 5a44 0466 280e  ........S2ZD.f(.

Imagen de la memoria en modo NON ROBUST:

talaikide@debian-TOSH:~/Documentos/Td5_inside/Serial_Eprom_Hack$ xxd Nanocom_dice_NON_ROBUST.bin 
0000000: 008f 367a 0000 0000 0000 0000 4000 0008  ..6z........@...
0000010: 0000 0000 0000 eeff ffff ffff ffff ffff  ................
0000020: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000030: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000040: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000050: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000060: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000070: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000080: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000090: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000a0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000b0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00000c0: ffff ffff ffff ffff ffff 008f 3675 0000  ............6u..
00000d0: 0000 0000 0000 4000 0008 0000 0000 0000  ......@.........
00000e0: eeff ffff ffff ffff ffff ffff ffff ffff  ................
00000f0: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000100: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000110: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000120: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000130: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000140: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000150: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000160: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000170: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000180: ffff ffff ffff ffff ffff ffff ffff ffff  ................
0000190: ffff ffff ffff ffff ffff ffff ffff ffff  ................
00001a0: ffff ffff ffff ffff ffff ffff ffff 0000  ................
00001b0: ffff ffff ffff 01f4 1724 14aa 02e0 06e2  .........$......
00001c0: 0af2 fec4 5556 0007 14aa 02e0 06e2 0af2  ....UV..........
00001d0: fec4 5556 0007 14aa 02e0 06e2 0af2 fec4  ..UV............
00001e0: 5556 0007 a001 6610 5001 660b 0000 0000  UV....f.P.f.....
00001f0: 0000 dfdf dfdf db9c 5332 5a44 0466 280e  ........S2ZD.f(.

Podeís observar que en las últimas dos líneas pongo las posiciones 1EC a 1F1 a 0x00. Ese es el truco del almendruco.

Cuando tenga tiempo, ya explicaré como hacerlo paso a paso en casa. No es necesario desoldar la memoria de la placa, con una pinza de SOIC de 8 pins y un arduino se puede hacer perfectamente. El truco ha sido dejar el Motorola en Reset, para que no molestase de mientras.

Destacar que el pin ORG de la memoria hay que ponerlo a HIGH, ya que la memoria funciona a 16 bits.

Mientras, fotukis:

Feliz fin de semana.



   
ResponderCitar
(@paulbas)
Maestro LandRovero Registered
Registrado: hace 15 años
Respuestas: 2369
 

Zorionak Garmen! 😉



   
ResponderCitar
Gus
 Gus
(@gus)
Dr. H. C. LR Socio
Registrado: hace 23 años
Respuestas: 16022
 

Ya nos contarás como has llegado a esa conclusión, imagino que buscando en foros, no?.

Me da la impresión que te faltan cosas en esa flash, yo creo que se te ha borrado la configuración de inyectores y pedal de celerador, no?. 



   
ResponderCitar
(@garmen)
Maestro LandRovero Socio
Registrado: hace 15 años
Respuestas: 2099
Topic starter  

Ya nos contarás como has llegado a esa conclusión, imagino que buscando en foros, no?.

Me da la impresión que te faltan cosas en esa flash, yo creo que se te ha borrado la configuración de inyectores y pedal de celerador, no?. 

No se si se ha ido la configuración, pero la cuestión es que el coche me ha arrancado, con la patilla de la alarma quitada, y no se ha parado a los 3 segundos.
Un hungaro leió mi post en aulro.org y me mando un mail de como hacerlo. Le tendré que mandar una botella de pacharán 😀



   
ResponderCitar
(@salvaje)
Dr. H. C. LR Socio
Registrado: hace 21 años
Respuestas: 19378
 

Joer que guay



   
ResponderCitar
Página 6 / 10
Compartir: