Si llegaste hasta este post es muy probable que tengas una cámara china, un clon de Sjcam o alguna parecida (es decir que capaz que te metieron el perro como a mi jaja). O que simplemente tengas un problema con el spca6330a o similares.

En estos días gracias a un intento de actualización la cámara de acción en cuestión se me quedó “muerta”. La cámara no encendía, no mostraba ningún signo de vida en la pantalla y lo único que hacía era prender el led rojo superior (el que inicia la grabación o saca las fotos). Por esta razón me puse a investigar en Internet que macana me mandé y cómo solucionarlo. Para mi sorpresa no había mucha más información relevante que la de este hilo en RCGroups (al cual te recomiendo no ingresar hasta leer todo este post, por ahí te ahorras unas horas de lectura). En definitiva, este hilo es más para los modelos de la marca Eken, aunque muchos resolvieron los problemas de actualizaciones y no de brickeo. Le decimos error de brickeo cuando el controlador principal (ergo la cámara) no responde ni al procedimiento de booteo normal, cuando la cámara muestra la pantalla de inicio.

Solución habitual (aporte de la comunidad)

Para hacer el unbrick hay que tener ciertas cosas a mano, ya que no se puede hacer normalmente por la microSD. Si tenés suerte podrías usar el software que está preparado y sirve para algunos modelos del controlador spca, como el spca6530. En mi caso la cámara tiene el procesador spca6330a, intenté con los drivers supuestamente del modelo en Windows 10 y 7, sin respuesta favorable (no se reconocían los drivers correctos). De todas maneras voy a dejar acá los archivos y el enlace hilo donde se describe el procedimiento correcto.

Procedimiento de restauración mediante USB. Cito abajo:

Solution “how-to-fix” soft-broken SJ4000 clone with Sunplus CPU (in device manager detects as iCatchtek SPCA6330, iCatchtek Sport Cam, etc), EKEN W7, EKEN W8 and other clones.

1. Download this arhive and unpack in any folder:
https://drive.google.com/open?id=0B5…RDg&authuser=0

Fully charge camera’s battery!!

2. Run ISP_v1201.exe in “Drivers” folder

3. After installation complete, reboot windows, press F8 and choose “Disable Driver Signature Enforcement”.

4. When windows boots up, remove battery and SD card from camera. Press and hold “up” key and connect camera to PC via USB cable. System will found new device and install drivers. Check in device management that drivers set properly.

5. Run “FRM.exe” in “download” folder. If it shows up “USB device not connected” – that you don’t properly install drivers, or do not disabled force driver signature. If it boots up normally, choose “Flash type: SPI”, all other leave as is.

6. Press ISP (F5). In bottom line will be “Check ISP core”, then “writing firmware”. Wait until it done and shows up “ISP done.” Press ok and close program.

7. Take SD card, format it in FAT32. Copy all 3 files under “SD card” folder to the root folder of SD. Without any folders.

8. Insert prepared SD card and battery in camera, and power on. Insert charger (do not connect to PC, use AC adapter). If LCD screen fully white or image in green tones – it’s normal. Wait 10 minutes, do not touch anything.

9. Remove battery. Remove SD card. Insert battery and try to power ON. If all done properly, it boots up normally.

Respuesta original en el hilo de RCGroups.

Solución Alternativa (y mi último recurso)

La solución que me sirvió a mi es hacer el flasheo del SPCA6330a utilizando la interfaz SPI disponible en la placa madre de la cámara (esto puede servir para algunos routers también, lo importante es encontrar el firmware).

La solución llega después de tanto googlear de una página rusa (gracias google translate!) en la cual el autor menciona que los fabricantes le envían el firmware original de la spca6330a. Y como no podía ser de otra manera, es necesario desarmar la cámara para realizar las conexiones a la interfaz SPI, el chip 25Q64CWIG en mi caso (puede que tengas otro modelo de chip 25x).

En este punto entra en juego Arduino, en mi caso utilicé un Arduino UNO, pero bien podría utilizarse otro modelo, sólo es necesario tener a mano el pinout de SPI para cada modelo. Por ejemplo, el autor original utilizó un clon de Arduino micro, y este es el pinout propuesto:

clon arduino micro conexion spi
Conexión SPI Arduino micro (clon) a 25x

En cambio el esquema que he utilizado con el Arduino UNO varía levemente por el pinout del SPI, para el cual realicé este diagrama:

SPI arduino uno - 25q64
Interfaz Arduino UNO SPI con chip 25Q64

Existen conectores que se pueden utilizar para esta tarea, sin mencionar que hay tarjetas preparadas para cumplir el objetivo. Pero como la intención es resolver con lo que tenemos a mano lo conveniente es realizar una soldadura (lo más prolijo que les permita el pulso). En mi caso la soldadura resultó algo así…

soldadura chip 25Q64
No es mi mejor resultado pero sirve para el objetivo…

El 25Q64 se encuentra en la parte posterior de la placa principal, debajo de la pantalla, como pueden observar, si ya saben el modelo de controlador SPCA que van a flashear, no es necesario que desarmen toda la cámara (pero cuidado con el ribbon de la pantalla):

flash sj4000 clone - pantalla

Pasamos al código

Basándonos en el código propuesto por el post original, podemos reescribir el firmware del SPCA6330a. Para ello vamos a subir el siguiente sketch al Arduino UNO:

#include "SPIFlash.h"
#include <SPI.h>
#include <avr/wdt.h>
//////////////////////////////////////////
// flash(SPI_CS, MANUFACTURER_ID)
// SPI_CS - CS pin attached to SPI flash chip (10 in case of UNO)
// MANUFACTURER_ID - OPTIONAL, 0x1F44 for adesto(ex atmel) 4mbit flash
// 0xEF30 for windbond 4mbit flash
//////////////////////////////////////////
SPIFlash flash(10, 0);

byte buf[1024];

void setup() {

Serial.begin(115200);

while (!Serial);

if (flash.initialize())

Serial.println("Init OK!");

else

Serial.println("Init FAIL!");

}

void loop() {

char cmd;

if (!Serial.available()) return;

cmd = Serial.read();

if (cmd == 't') {

Serial.print("COM ok\n");

return;

}

if (cmd == 'i')

{

Serial.print("DeviceID: ");

Serial.print(flash.readDeviceId(), HEX);

Serial.print('\n');

return;

}

if (cmd == 'a')

{

flash.chipErase();

while (flash.busy());

Serial.print("OK");

Serial.print('\n');

return;

}

if (cmd == 'e')

{

long sector = Serial.parseInt();

Serial.read(); // разделитель

flash.blockErase4K(sector);

Serial.print("OK");

Serial.print(sector);

Serial.print('\n');

return;

}

if (cmd == 'w')

{

long addr = Serial.parseInt();

Serial.read(); // разделитель

for (int bufsz = 0; bufsz < 128; bufsz++)

{

while (Serial.available() == 0);

buf[bufsz] = Serial.read();

}

flash.writeBytes(addr, buf, 128);

Serial.print("OK");

Serial.print(addr);

Serial.print('\n');

return;

}

if (cmd == 'r') {

long addr = Serial.parseInt();

Serial.read(); // разделитель

for (int i = 0; i < 4; i++)

{

flash.readBytes(addr + (i * 1024) + 0, buf, 1024);

for (int j = 0; j < 1024; j++)

Serial.write(buf[j]);

}

return;

}

}

Necesitarán además descargar la librería necesaria “SPIFlash.h” y descomprimirla en la carpeta libraries de su instalación de Arduino.

Flasheando…

Para subir el nuevo firmware, una vez realizadas las conexiones y subido el sketch al Arduino, utilizamos la herramienta del post original (seguramente podrán utilizar otras pero yo decidí ir a lo seguro). Está en ruso también, así que paso a señalar las opciones que deben seleccionar: conectar spi arduino - 25q64

Opción 2

ESTE PROCEDIMIENTO DEBES HACERLO SIN ALIMENTACIÓN USB Y SIN LA BATERÍA DE LA CÁMARA. Es decir, que la alimentación la harás a través del Arduino UNO, la alimentación normalmente es a través de los 3.3v, sin embargo según la experiencia no deberías tener inconveniente si utilizas la salida de 5v (de Arduino).

Si todo es correcto aparecerá una pantalla como la de abajo, y deberán utilizar el 2do botón para seleccionar el firmware a subir, para este caso les recomiendo descargar el firmware “original”, supuestamente enviado por la empresa. Una vez seleccionado el programa inicia la subida de manera automática, podrán ver en la barra de la parte inferior derecha el estado. La subida puede demorar entre 15 y 20 minutos (más o menos).

Una vez finalizada la subida, y antes de intentar encender la cámara, deben desconectar todos los pines entre el Arduino y el 25Q64, de lo contrario verán que la cámara no iniciará.

Una vez desconectados los conectores procedemos a encender la cámara como de costumbre, y listo.

camara flasheada - firmware actualizado

Espero que esta guía les sirva de ayuda, y recuerden que puede serles útil para conectarse mediante ciertas interfaces como la 25Q64CWIG25Q128FVSG25L3206E y similares. Además que deben chequear correctamente el controlador que desean actualizar, en este caso la cámara posee el SPCA6330a, pero incluyo algunos drivers y programas compatibles con otras versiones.

¡Dejame un comentario!