Mini guida riassuntiva per flashare l'ip301 con tjtag

Questa guida e' brutale e riscritta. Serve a sbrindellare l'IP301 distribuito da Eutelia di merda.

Foto del telefono aperto:

Hardware necessario:

Software necessario:

Files:

Links:

Operazioni pratiche hardware da effettuare con un saldatore adeguato (microstilo)

Assemblaggio del cavo JTAG: collegare il cavo jtag (5 fili) al connettore jp10 dell' ip301 secondo questo schema:

Codice:

LPT------------JP10
2<----100ohm--->3 (DATA0)
3<----100ohm--->9 (DATA1)
4<----100ohm--->7 (DATA2)
13<---100ohm--->5 (SELECT)
17-25<--------->2 (GND)

L'ordine delle piazzole del JP10 e' indicato da una serigrafia bianca vicino al piedino 1 (che e' quadrato): le piazzole 2-4-6-8-10-12 sono tutte gnd. Se avete dei dubbi controllate con un tester. Un particolare del connettore JP10 qui:

http://www.flickr.com/photos/32180926@N02/3063753427/

Per le resistenze si possono utilizzare quelle da 1/4w o da 1/2w, non ha importanza, la cosa fondamentale e che i fili non siano piu' lunghi di 8 centimetri. Il che equivale a far penzolare il telefono dalla parallela del pc. Io le resistenze NON LE HO USATE.

Qualsiasi problema possiate avere e' dovuto al connettore/cavo jtag... sappiate che io ne ho avuti di assurdi. Alla fine ho usato cavetti saldati direttamente sul telefono, niente resistenze, e connettore cannon 25 pin con contatti IN ORO.

Backup della flash

Da root:

./tjtag -backup:wholeflash

Per flashare il telefono

Da root:

Ricordiamoci nuovamente di disattivare il demone lp: # sudo rmmod lp

Meglio se ammazzate anche CUPS.

Per flashare il nuovo firmware: Rinominate il firmware come WHOLEFLASH.BIN e dopo date:

# sudo ./tjtagv2 -flash:wholeflash

Poi accendiamo il telefono: se tutto e' ok, apparira il POST ed il telefono partira'.

per accedere: http://indirizzo.ip:9999, user admin, pw 24234880

Vecchia guida CHE NON FUNZIONA, CAZZI VOSTRI

N.B: Ho utilizzato linux per comodita', in quanto tjtag e' gia compilato ed e' possibile utilizzare una distro live avendo l'accortezza di scaricare i file necessari su pendrive.

Hardware necessario:

Lo schema per la realizzazione dell'adattatore di livelli rs232-ttl a componenti discreti e' questo: http://picprojects.org.uk/projects/simpleSIO/ssio.htm

Lo schema con integrato max si puo trovare qui: http://www.compsys1.com/workbench/On_top_of_the_Bench/Max233_Adapter/max233_adapter.html Su ebay si trovano gia montati: basta cercare rs232-ttl.

Software necessario:

notare anche http://roleo.dyndns.org/public/varie/doc/jtag.html

Attenzione nuova versione di tjtag: Citazione di: roleo Ho messo le label per definire le aree di memoria, per cui ora si può leggere e scrivere senza usare custom.

Queste le label:

BOOTLOADER
FCODEC
IC
VOIP
X
Y
SETTINGS
WHOLEFLASH

Le label X e Y non so cosa contengono per cui l'indirizzo di start e la lunghezza potrebbero non essere corretti. Anche su SETTINGS ho qualche dubbio.

Ho disattivato il parametro /nodma perché non sono riuscito a farlo funzionare pienamente in PrAcc mode, tanto non serve.

Ecco un comando di esempio per leggere ic.gz:

# tjtagv2-1-4.exe -backup:ic

Altra roba necessaria:

server)

-1- Operazioni pratiche hardware da effettuare con un saldatore adeguato (microstilo):

Assemblaggio del cavo JTAG: collegare il cavo jtag (5 fili) al connettore jp10 dell' ip301 secondo questo schema:

Codice:

LPT------------JP10
2<----100ohm--->3 (DATA0)
3<----100ohm--->9 (DATA1)
4<----100ohm--->7 (DATA2)
13<---100ohm--->5 (SELECT)
17-25<--------->2 (GND)

L'ordine delle piazzole del JP10 e' indicato da una serigrafia bianca vicino al piedino 1 (che e' quadrato): le piazzole 2-4-6-8-10-12 sono tutte gnd. Se avete dei dubbi controllate con un tester. Un particolare del connettore JP10 qui:

http://www.flickr.com/photos/32180926@N02/3063753427/

Per le resistenze si possono utilizzare quelle da 1/4w o da 1/2w, non ha importanza, la cosa fondamentale e che i fili non siano piu' lunghi di 15-20 centimetri.

Collegare il cavo seriale+adattatore di livelli al connettore jp2 (3 fili) dell'ip301 (qui la guida: Accedi)

-2- Operazioni preliminari per l'utilizzo di tjtag:

- scompattare l'archivio con il software per jtaggare l'ip301 # sudo unzip tjtag.zip

- entrare nella cartella dove risiede l'eseguibile: # cd tjtag/linux

N.B. Da qui in poi le operazioni sono comuni alle 2 modalita': - cambiare i permessi a tjtagv2: # sudo chmod 777 tjtagv2

- disattiviamo il demone lp per consentire l'accesso diretto

# sudo rmmod lp

- lanciamo tjtag per vedere se tutto fin qui e' ok (permessi, etc): # sudo ./tjtagv2

Dovrebbero apparire una serie di info...andiamo avanti.

-3- Backup della flash:

- Effettuiamo il backup dei primi 4 blocchi della memoria dell'ip301 (blocco 1: bootloader, blocchi 2,3 i codec, e blocco 4 l'interprete dei comandi gestibile via interfaccia seriale: ic......):

Codice: # sudo ./tjtagv2 -backup:custom /window:0x1fc00000 /start:0x1fc00000 /length:0x40000

Se tutto e' ok, verranno visualizzati dei messaggi diagnostici, visualizzato e scritto un file (CUSTOM.BIN.SAVEDxxxxxxxx...) con il dump della memoria.

Se qualcosa non va per il verso giusto potrebbe dipendere da:

  1. cavo jtag male realizzato o troppo lungo
  2. collegamenti cavo ip301 errati
  3. saldature fredde, male eseguite o in corto

-4- Patch di ic...... per consentire l'accesso seriale al programma di diagnostica dell'ìip301:

Il dump che abbiamo effettuato comprende 4 blocchi da 64k ciascuno, quello che ci interessa e' l'ultimo contenente ic.gz (ic...... in formato compresso con gzip).

La patch a ic...... serve per eliminare la richiesta della password quando da seriale si accede al programma di diagnostica premendo INVIO al boot dell'ip301.

Dobbiamo estrarre l'ultimo blocco da 64k dal nostro dump, scompattarlo (con gzip), patcharlo con un editor binario (come hex workshop) e poi riasseamblarlo all'interno del file di dump per poterlo riflashare.

-5- Preparazione per la patch:

- Facciamo una copia del nostro dump... # sudo cp CUSTOM.BIN.SAVEDxxxxxxx CUSTOM.BIN

- Otteniamo ic.gz da CUSTOM.BIN: # sudo dd if=CUSTOM.BIN of=ic.gz bs=256 skip=768 count=256

- Scompattiamo ic.gz: # sudo gunzip -cd ic.gz > ic......

Ora abbiamo ic...... da patchare.

-6- Patch di ic......:

all'offset 00023AC0.

Prima:

Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00023A70 63 00 00 00 6F 00 00 00 c...o...
00023A80 65 00 00 00 6D 00 00 00 74 00 00 00 75 00 00 00 e...m...t...u...
00023A90 61 00 00 00 6E 00 00 00 37 00 00 00 32 00 00 00 a...n...7...2...
00023AA0 64 00 00 00 72 00 00 00 38 00 00 00 33 00 00 00 d...r...8...3...
00023AB0 34 00 00 00 35 00 00 00 30 00 00 00 0A 20 0A 20 4...5...0.... . 

Dopo:

Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00023A70 00 00 00 00 00 00 00 00 ........
00023A80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00023A90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00023AA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00023AB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

- Salviamo il file (sempre su pendrive) dandogli ad esempio nome icmod...... - Rifacciamo il boot con linux

Se invece stiamo utilizzando ubuntu installato sul pc, possiamo utilizzare ghex (se non e' installato basta andate su Applicazioni->Aggiungi/Rimuovi ed installarlo.

- Lanciamo ghex [Applicazioni->Programmazione->Editor Esadecimale] - Apriamo ic...... e compiamo le stesse operazioni da effettuare

L'immagine salvata non ha controllo di checksum o crc, ma verificate che il file salvato sia lungo esattamente 146.832 byte.

N.B.da qui le operazioni tornano ad essere in comune:

-7- Preparazione per flashare icmod...... patchato:

In ubuntu lanciamo una finestra con la console (vedi prima parte) e torniamo nella nostra cartella di lavoro.

Ricordiamoci nuovamente di disattivare il demone lp se siamo tornati da windows: # sudo rmmod lp

Ora dobbiamo ricomprimere il file patchato (icmod......): Codice: # sudo gzip -c icmod...... > icmod.gz

Poiche flashare e' un operazione lenta e critica, preferiamo flashare solo il blocco modificato, quindi dovremo preparare un file CUSTOM da dare in pasto a tjtag: # cp icmod.gz CUSTOM.BIN

A questo punto abbiamo pronto il file per essere flashato.

-8- Flash di CUSTOM.BIN (icmod.gz): La prossima operazione e' molto critica e se qualcosa va male l'ip301 sicuramente smettera' (per il momento) di funzionare. Quindi controllate bene le operazioni fin qui eseguite, perche' e' meglio un telefono bloccato che uno da rianimare...

- Andiamo con lo sblocco: scrivendo solo il blocco aggiornato:

Codice: # sudo ./tjtagv2 -flash:custom /window:0x1fc00000 /start:0x1fc30000 /length:0x10000 /silent

NOTA: io ho fatto ./tjtagv2 -backup:custom /window:0x1fc00000 /start:0x1fc30000 /length:0x10000 backuppandomi solo quel che devo moddare :)

Al termine dell'operazione se tutto e' andato per il verso giusto sara' possibile l'accesso via seriale all'ip301

N.B. se non riusciamo a flashare il telefono, cioe' tjtag non riesce a completare la scrittura, armiamoci di pazienza e ricontrolliamo tutti i collegamenti cavo jtag <-> ip301: e' un problema nostro e non del telefono. Se tutto e' ok l'operazione di flash va in porto senza problemi ed il telefono funzionera come al solito, anzi meglio visto che ora e' possibile accedervi via seriale.

-9- Rianimiamo il morto: Come detto precedentemente se qualcosa e' andato storto il telefono non funzionera' piu'...pero' possiamo sempre riflashare il dump che abbiamo effettuato in precedenza. Diamo un occhiata alla nostra cartella di lavoro:

Codice: # ls -l CUSTOM.BIN.*

Controlliamo che l'output del comando ls riporti almeno un file (potrebbero essercene piu' di uno se abbiamo dato diverse volte il comando per effettuare il backup) e controlliamo che la lunghezza sia esattamente di 262144 bytes. Annotiamo il file che e' ok e facciamone una copia:

Codice: # cp CUSTOM.BIN.SAVED_xxxxxxx CUSTOM.BIN (sostituite xxxxxxx con la parte finale del vostro file CUSTOM.BIN.SAVED...)

Rianimiamo l'ip301: Codice: # sudo ./tjtagv2 -flash:custom /start:0x1fc00000 /window:0x1fc00000 /length:0x40000

Quest'ultima parte sara' meno approfondita in quanto giunti a questo punto saremo tutti piu' smaliziati ed informati...

Se siamo gia in possesso di una versione patchata di ic.gz e' possibile andare direttamente al punto -8- (flash di CUSTOM.BIN), tuttavia consiglio sempre di fare il backup della flash per testare il funzionamento del collegamento jtag.

Certi del funzionamento del collegamento jtag, dotati di buona pazienza, nulla ci impedisce di flashare l'intero contenuto della memoria dell'ip301 con un firmware nobrand per non dover intervenire via seriale. Basta saper attendere perche il tempo per flashare l'intera memoria e' lungo...

Io consiglio questo firmware IP-301_80521.rom perche' l'ultimo (IP301_0810170.rom) ha un bug che esclude la prima suoneria. Il comando per flashare l'intera memoria con un file .rom e' il seguente:

Codice: # sudo ./tjtagv2 -flash:custom /start:0x1fc00000 /window:0x1fc00000 /length:0x200000

oppure

Codice: # sudo ./tjtagv2 -flash:wholeflash

Se vogliamo seguire la via seriale anche per scoprire il programma di diagnostica dell'ip301, colleghiamo il cavo seriale all'ip301.

Ultima operazione e' quella di verificare la presenza di voip.gz nella cartella di upload del server tftp

- Lanciamo putty, selezioniamo la porta COM alla quale e' collegato il telefono e modifichiamo la velocita' da 9600 a 57600.

- Accendiamo il telefono: se tutto e' ok, apparira il POST.

- Premiamo INVIO ed entriamo nel programma di diagnostica.

- Selezioniamo

Codice: [F] Tftp ****** e poi

Codice: [2] Burn Voip to Flash

Ed il gioco e' fatto...

In questa guida non vi sono dati sensibili di nessun operatore quindi per cui non viola nessuna legge, la riparazione di un telefono che si guasta e consentita dal nostro ordinamento, ogniutilizzo illecito delle informazioni qui riportate sono da attribuire a ogni singola persona. E COMUNQUE, VAFFANCULO, IL TELEFONO E' MIO E CI FACCIO IL CAZZO CHE MI PARE.