EJTAG su 7141

Da Vocesuip.

EJTAG su Fritz!Box Wlan 7141

Questa delicata procedura è necessaria solamente nel caso abbiate corrotto il bootloader del vostro fritz. (Il bootloader funziona nel fritz un po' come il bios funziona nel computer. Se questo viene corrotto la macchina non si avvia più).

NATURALMENTE INTENDO PRECISARE CHE NON MI ASSUMO ALCUNA RESPONSABILITA' PER QUELLO CHE FARETE SUL VOSTRO FRITZ. QUALUNQUE OPERAZIONE LA COMPIETE A VOSTRO RISCHIO.

Occorre ovviamente avere il backup originale del bootloader per poterlo ripristinare. Per poter salvare sul vostro hd il bootloader originale (quando ancora tutto funziona) una via è quella di istallare un server tftp sul vostro computer. Io uso Solarwinds TFTP Server (gratuito)

Solarwinds TFTP Server

Una volta istallato prendete nota dell'indirizzo ip che appare nella schermata principale nell'angolo in basso a destra. Ora dobbiamo determinare dove si trova il bootloader. Se fate:

cat /proc/sys/urlader/environment

otterrete, tra le altre cose, le partizioni fisiche.

mtd0    0x90000000,0x90000000
mtd1    0x90010000,0x90780000
mtd2    0x90000000,0x90010000
mtd3    0x90780000,0x907C0000
mtd4    0x907C0000,0x90800000

Poichè sappiamo che il bootloader ha dimensione 65536 (che in esadecimale è pari a 0x10000) saremo indotti a pensare che il bootloader si trovi nell'mtd2. In realtà il firmware rimappa dinamicamente le partizioni in modo diverso. Per sapere dove realmente si trova il bootloader dobbiamo fare un:

cat /proc/mtd

dev:    size   erasesize  name
mtd0: 00800000 00010000 "phys_mapped_flash"
mtd1: 006cdc00 00010000 "filesystem"
mtd2: 00770000 00010000 "kernel"
mtd3: 00010000 00010000 "bootloader"
mtd4: 00040000 00010000 "tffs (1)"
mtd5: 00040000 00010000 "tffs (2)"
mtd6: 00200000 00010000 "jffs2"
mtd7: 00570000 00010000 "Kernel without jffs2"


da cui si evince che il bootloader si trova nell'mtd3

Ora avviate il tftp server, aprite una finestra di telnet, collegatevi al fritz e inserite i seguenti comandi:

cat /dev/mtdblock3 > /var/mtd3.bin

cd \var

tftp -p -l mtd3.bin -r mtd3.bin <vostro indirizzo ip>

Se tutto è andato bene, nella finestra del tftp server troverete scritto che il trasferimento è andato a buon fine e nella cartella relativa troverete il file mtd3.bin di dimensioni appunto 65536.

Ora potete pure smanettare sul vostro povero fritz. Quando avrete definitivamente "segato" il bootloader l'unico modo per ripristinare la funzionalità del fritz è appunto la procedura ejtag che comporta un accesso a basso livello nella memoria della macchina e nella scrittura byte per byte di questo prezioso file. Per fare ciò è necessario costruirsi un'interfaccia chiamata "cavo xilinx" o "cavo wiggler". Esistono vari schemi. Il cavo xilinx chiamato "poor man's cable" perchè molto economico soffre un po' le interferenze elettriche e non è particolarmente stabile: richiede inotre cavi moooolto corti. In compenso è economico. Lo schema è questo:

Schema elettrico poor man's cable

Lista componenti:

    * R1 = 100 Ω ¼ w
    * R2 = 100 Ω ¼ w
    * R3 = 100 Ω ¼ w
    * R4 = 100 Ω ¼ w
    * R5 = 100 Ω ¼ w
    * R6 = 47 KΩ ¼ w
    * R7 = 10 KΩ ¼ w
    * R8 = 100 Ω ¼ w
    * Q1 = BC337

e lo potete vedere in questa originale quanto ardita realizzazione di Feadi (un utente molto competente del sito tedesco)

ejtag in pratica

Altrimenti lo schema che dà molta più stabilità, ma è più complesso da realizzare, è quello seguente:

cavo ejtag stabile

Una volta realizzata la parte hardware, passiamo al software. Utilizzeremo i files di questo link.

programmi per ejtag

Per prima cosa dobbiamo istallare il driver giveio.sys. Copiamo prima giveio.sys sotto c:\windows\system32\drivers\ e poi usiamo il file loaddrv.exe per caricarlo. Ricordate di scrivere il nome del file giveio.sys quando lanciate loaddrv.exe.

Disabilitate vari firewall e antivirus e (anche se non necessario) scollegatevi da internet.

Ora che il driver è caricato, mettete il file Feadi-jtag.exe in una cartella insieme al mtd3.bin originale. Rinominate mtd3.bin in CUSTOM.BIN. Collegate il cavo xilinx e accendete il fritz.

Aprite una shell di dos dalla stessa cartella e lanciate il seguente comando:

Feadi-jtag.exe -flash:custom /skipdetect /instrlen:5 /instrprefix:9 /dataprefix:2 /window:90000000 
/start:90000000 /length:10000

Per flashare il bootloader occorrono circa 15-20 minuti, quindi prendetevela comoda e non meravigliatevi se va lento. Purtroppo più veloci non si può. Se necessario, volendo, potete flashare anche altri files come il kernel, ma, vista la lentezza se fate un calcolo scoprirete che per il kernel che è di circa 8 mega il programma impiegherebbe ininterrottamente 30 ore e 15 minuti.

Una volta ripristinato il bootloader il fritz riacquista quel minimo di funzionalità per permettergli di poter usare le procedure ben note (e non oggetto di questo tutorial) per ripristinare il firmware.

Strumenti personali