Ingenieria reversa a un cable de programacion Arduino

Si bien como conoceran Arduino posee un conector USB a Serial, el cual tiene como proposito alimentarlo si no esta conectado via DC. El conector de USB a Serial es incluido para abaratar los costos de incorporar un chip integrado que posea un USB directo, para el semejante proposito se deberia de tener una placa especial.

Lo que realizo en este caso DW de kwartzlab.ca con un par de 10 horas de trabajo, para conseguir este interesante DIY. Utilizo un cable CA-42 TFDI de un celular Nokia (Modelos compatibles 6101 6102 6102i 6103 2285 2280) que se muestra abajo (El cual costo 2.67 Dolares).

DW, comenta que por cada paso que hizo tomo una infinidad de fotos y anoto todo lo que iba surgiendo en el camino.

Se abre el cable.

Conecto el cable a su equipo y en el momento cuando da el mensaje de instalacion de controladores (Drivers) cancelo la instalacion de este. Busco dentro del administrador de dispositivos de windows (DW utiliza windows XP para realizar las pruebas). Era de esperarse que mostrara un dispositivo desconocido, cuando verifico la informacion que salia en la ficha del dispositivo indicaba lo siguiente.

USB\VID_067B&PID_2303\5&2A97E42B&0&1

Lo que decodifico fue lo siguiente:

VID_067B: VID (Vendor ID) 067B

PID_2303: PID (Product ID) 2303

Encontrando inmediatamente por google el siguiente enlace Lista de VID.

 Tecnología Prolific 067b, Inc.
     0000 PL2301 USB-USB Bridge
     0001 PL2302 USB-USB Bridge
     04bb PL2303 Serial (USB-IODATA RSAQ2)
     0610 ONEXT EG210U MODEM
     0611 AlDiga AL-11U Quad-band GSM / GPRS / EDGE modem
 2303 PL2303 Serial Port
     2305 PL2305 Puerto Paralelo

Como se logra apreciar obtenemos la informacion de que es un Puerto Serial de la marca Prolific. Luego de instalar los controladores (Drivers) el dispositivo es detectado como Puerto USB a Serial Prolific Comm (COM14).

Listo para empezar se abre. (Se recomienda una vez empiece la ingenieria reversa, no conectes el cable USB directamente a tu equipo, debido a que puedes quemar el conector, para estos fines es bueno utilizar un HUB USB para abaratar los costos).

Aca el detalle de los pines.

Se puede concluir.

Celular pin 8 (GND)     Cable Naranjo -> pin 6

Celular pin 7 (TX)         Cable Azul -> pin 12

Celular pin 6 (RX)       Cable rojo -> pin 9

Conectando cables y luego al osciloscopio.

Segun el movimiento que se ve, se intenta investigar si es que realmente hay un movimiento.

Desde el interprete de comandos de Windows, se utiliza el comando MODE el cual nos sirve para seguir con la investigacion.

MODE COM14 DTR=ON

MODE COM14 DTR = OFF

Con lo cual ayudo para poder localizar el pin DTR.

Utilizando un multimetro para medir los voltajes y anclando un pinche, se envian datos por medio del hyperterminal conectado al COM14.

Quedando confirmados los datos de TX/RX.

Conectando el Saleae Logic a los 8 pines.

Aca se logra apreciar la señal generada con la tecla D.

Y con RealTerm para poder ver los pines y alternarlos.

y asi se ve en Logic.

Esta es la señal de salida de DTR, utilizando RealTerm y Logic se logro encontrar la salida RTS. Ahora lo unico que faltaba era obtener las entradas, para lograr el objetivo es necesario realizar un puente invertido, sospechando que al ir alternando el cable a DTR de forma secuencial, este cambiaba y observando en RealTerm que pin fue alternado. Dandonos los siguientes resultados.

1 – n / c
2 – Vcc USB
3 – RING (entrada)
4 – CTS (entrada)
5 – n / c
6 – GND
7 – DCD (entrada)
8 – DSR (entrada)
9 – RX (entrada)
10 – RTS (salida)
11 – DTR (salida)
12 – TX (salida)

 

DW, asegura que despues de leer mucho. Aprendio que el control de flujo RTS/CTS no se utiliza y que es preferible no conectar CTS y DTR sustituirlo por RTS. Esto permite que el Software de Arduino utilice DTR del pin RESET, asi reinicia el sistema despues de cargar un codigo nuevo. Se dice que es mas fiable que el uso del pin RTS.

La configuracion final quedaria de la siguiente manera.

CA-42 dongle -> pin -> Color del cable -> 6-pin de programación
GND -> 6 -> negro -> 1
n / c -> 4 -> cafe -> 2
Vcc -> 2 -> rojo -> 3
TX -> 12 -> naranja -> 4
RX -> 9 – amarillo> -> 5
DTR -> 10 -> verde -> 6

Esta es una de las partes mas dificiles, el unir los conectores.

Al realizar las pruebas de grabado, daba algunos errores. Luego de la ayuda de Ben quien indica que se debe de configurar el IDE Arduino a Lilypad y que tambien le menciono de un bug en el cual se debia de desconectar de vez en cuando y luego al conectarlo bajaria correctamente el codigo.

Fuente: kwartzlab.ca

Guru’s

 

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>