[How-To] Guida completa al debrick dell'ADB P.DG-A4001N, aka AGPWI

  • 42 Risposte
  • 27932 Visite

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Mendocino89

  • Membro Anziano
  • ***
  • 384
  • Sesso: Maschio
Come già anticipato in un altro post, grazie ad un AGPWI fornitomi dall'utente notthesun, ho potuto sperimentare il debrick di questi device.

   > Cos'è il debrick: E', nel senso stretto del termine, la procedura che permette la ri-scrittura del bootloader dell'apparato.
       Si applica generalmente a causa di una scrittura errata del bootloader stesso, o comunque in tutti quei casi in cui
       bootloader viene corrotto o sovrascritto con dei dati non validi.

    
La procedura di debrick dell'AGPWI (e dei router similari, vedi l'AGTWI di Technicolor) risulta leggermente più complessa rispetto ad apparati quali AGPF, AGA, WRT54G etc, nei quali è possibile usare la JTAG.
Sebbene, infatti, l'AGPWI sia dotato di interfaccia JTAG, al momento la combinazione BCM6328 e flash seriale non è supportata da nessun programma come tjtag, brjtag od anche il famoso alice03bis.
Risulta pertanto necessario scrivere direttamente sulla flash, bypassando tutto il resto dei componenti.

A tale scopo ci vengono in aiuto due risorse: una software ed una hardware.
Il software altro non è che spipgm, sviluppato e mantenuto da RayeR, link: http://rayer.g6.cz/programm/programe.htm.
Si tratta di un piccolo programma che permette, attraverso l'interfacciamento diretto alla flash tramite porta parallela, la scrittura e lettura delle più diffuse flash seriali disponibili ad oggi.
A corredo della parte software si necessita anche pertanto dell'interfaccia hardware, che in buona sostanza è composto da 1 connettore DB25, 4 resistenze da 150ohm 1/4W e qualche spezzone di cavo elettrico.
La sua costruzione è banale e poco costosa (a Catania ho comprato tutto per 5€).

REALIZZAZIONE DELL'INTERFACCIA PARALLELA

Prima di tutto partiamo dallo schema di ciò di cui stiamo parlando:



Come è possibile vedere vengono sfruttati 4 pin sul connettore DB25 più quello di riferimento a massa.
In buona sostanza la loro funzione è:

Codice: [Seleziona]
Pin 7 : D5  => Chip Select #
Pin 8 : D6  => Clock
Pin 9 : D7  => Serial Data IN
Pin 10: ACK => Serial Data OUT
Pin 18: GND => Riferimento a massa

Per quanto riguarda le connessioni sulla flash i pin DIO, DO, CLK e CS# sono di semplice comprensione.
Gli altri segnali invece sono:

Codice: [Seleziona]
>Vcc:  ovvero la tensione di alimentazione della flash, che è generalmente 3,3V
>WP#:  che sta per WriteProtect, si tratta di un segnale "negato", pertanto per impostarlo a 0 dovremo dargli in ingresso
un livello logico 1, e cioè Vcc.
>HLD#: anch'esso negato, la sua funzione è quella di bloccare temporaneamente lettura e scrittura , segue la  stessa logica d
i WP#, e deve essere portato a Vcc.

Il risultato finale non dovrebbe essere molto differente da un anonimo connettore DB25 con 5 cavi:


                                 
Tuttavia la flash usata dall'AGPWI ha una piccola differenza: il pin con funzione HLD# non è presente e pertanto può essere tranquillamente omesso.
Il pinout del contenitore è il seguente:


                                    
A questo punto resta da dissaldare la flash dalla board dell'AGPWI, al fine di poterla interfacciare con la porta parallela, e quindi saldare i cavi sui pin in questione.
La dissaldatura della flash non è certo un'operazione semplicissima per chi non ha molta dimestichezza col saldatore.
Si tratta infatti di un componente SMD con una spaziatura fra i pin dell'ordine del millimetro.
Tuttavia con un pò di dimestichezza non si tratta di un'operazione impossibile: basta prestare attenzione a questi particolari:

- abbiate cura a non riscaldare troppo il componente, per non danneggiarlo
- se usate un saldatore a stilo NON fate forza con la punta sui pin, per evitare di deformarli o addirittura spezzarli
- durante l'operazione di rimozione della flash dal PCB fate attenzione che tutti i pin siano disposti a staccarsi dal pad: in caso contrario correte il serio rischio di staccare quest'ultimo dal pcb con il risultato di poter andare a buttare tutto nell'immondizia.
- fate attenzione durante tutto il processo a non urtare o peggio ancora staccare i piccolissimi componenti SMD vicini alla flash. Il rischio mi sembra abbastanza chiaro!

Questo ad esempio è quello che dovreste ottenere una volta rimossa la flash (e magari ripulito il tutto dal flussante bruciato)


                                    
I più attenti noteranno un particolare: il chip BCM6328 è SENZA il suo dissipatore di calore.
Si tratta di un'operazione che raccomando caldamente per avere un margine di manovra decente. Infatti spesso e volentieri il dissipatore viene fissato non perfettamente dritto, ma del tutto storto (Netgear DGND-3700 docet), impedendo l'accesso alla flash.
La sua rimozione è abbastanza semplice: è fissato al PCB attraverso un perno nell'angolo superiore destro, che bisogna quindi dissaldare dal lato opposto, facendo attenzione non incidere con la punta del saldatore le piccolissime piste che stanno attorno alla piazzola del perno.
Una volta dissaldato il perno bisognerà rimuovere il collante bianco che blocca il dissipatore nella parte opposta.
La via più semplice è quella di incidere il collante lungo la linea di contatto con il dissipatore. Prestate però molta attenzione a non affondare troppo la lama per evitare di incidere il pcb.
A questo punto l'unica cosa che impedisce al dissipatore di staccarsi dal chip è del biadesivo che ha il compito di assicurare l'aderenza e lo scambio termico (anche se avrei qualche dubbio sull'efficienza di questa soluzione).
Fate una leggerissima leva verso l'alto da uno degli angoli del dissipatore e poi sollevatelo a mano, cercando di rimanere il più paralleli possibile al pcb, per evitare che il perno di fissaggio si deformi.

Una volta rimossa la flash non vi resta che saldare i cavi di collegamento all'interfaccia parallela ed ad un alimentatore a 3,3V.
Vi consiglio di usare dei cavi molto fini ed elastici al fine di evìtare che un movimento brusco vada a fare forza sul pin, spezzandolo.
Nel mio specifico caso ho saldato dei cavetti molto corti, circa 6 cm, che si andavano a raccordare poi con i cavi dell'interfaccia parallela.



La lunghezza complessiva dei cavi, vi raccomando, deve essere inferiore ai 30cm, per evitare la degradazione dei segnali.
Vi ricordo infatti che l'interfaccia che si sta usando è si molto semplice, ma NON è bufferizzata.

Ulteriori raccomandazioni sono necessarie al riguardo della tensione di alimentazione:

- deve essere quanto più precisa e vicina ai 3,3V. Una piccolissima tolleranza di 0,2V sarà tollerata dalla flash, ma non di più
- deve essere quanto meno rumorosa possibile, il che vuol dire che ad esempio è meglio evitare trasformatori meccanici con un ulteriore regolatore di tensione a 3,3V.
- cercate se possibile di usare batterie anzichè alimentatori esterni. Un esempio: la CR2032 che si usa come tampone per il BIOS, che quando è completamente carica eroga circa 3,25V.
 
Tornando per un attimo allo schema di connessione: fra Vcc e GND è presente un condensatore di 1mF la cui funzione dovrebbe essere di filtraggio ai disturbi in alta frequenza. Se avete l'intenzione di usare la 3,3V del vostro alimentatore ATX è bene usarlo, altrimenti se usate una CR2032 può essere tranquillamente omesso.

Dopo questa lunga preparazione è tutto pronto per collegare il connettore DB25 alla porta LPT e ripristinare il bootloader!
Vi raccomando di usare un pc con sistema operativo a 32bit, quale ad esempio Win XP o Win Vista/7 x86.
Scompattate l'archivio contenente i binari di spipgm (che trovate qua: http://rayer.g6.cz/programm/spipgm.zip) ed all'interno copiate anche il binario del bootloader (che vi ricordo essere di 128KB).
Procedete quindi ad aprire un prompt dei comandi, spostatevi nella cartella dove risiede l'eseguibile di spipgm.
I comandi e la sintassi sono:

Codice: [Seleziona]
spipgmw /comando <filename>
dove <filename> è il file a cui fa riferimento il comando;
comando può essere:
/i per verificare il corretto riconoscimento della flash
/r per specificare manualmente un indirizzo della flash sul quale operare
/d per fare un dump completo della flash
/p per programmare il file specificato a partire dall'inizio della flash
/v per verificare che quanto scritto sulla flash sia conforme al file specificato
/e per cancellare tutto il contenuto della flash
/eb per cancellare solo dei settori della flash
/u per sbloccare la scrittura della flash

La prima operazione da fare è quindi la verifica di riconoscimento della flash, con il comando:
Codice: [Seleziona]
spipgmw /i
Considerando che la flash installata sulla stragrande maggioranza degli AGPWI è una Macronix MX25L12845EMI-10G non dovrebbero
esserci problemi di sorta: la flash viene perfettamente riconosciuta, ma come una MX25L12835E/12536E, che è praticamente la stessa cosa.
Il prossimo step è quello di sbloccare la flash, con il comando:
Codice: [Seleziona]
spipgmw /u
Nel caso il software non riuscisse a sbloccare la flash vi raccomando di verificare che il pin WP# sia stato correttamente portato a livello logico 1 e quindi Vcc.
A questo punto bisogna cancellare il contenuto della flash. Sebbene sia disponibile il comando /eb che permette di cancellare solo delle porzioni di flash, personalmente ho preferito cancellare tutto il contenuto della flash, col comando:
Codice: [Seleziona]
spipgmw /e
E' il momento di ri-scrivere il bootloader. Supponendo che il binario contenente il CFE si chiami cfe.bin, il comando sarà:
Codice: [Seleziona]
spipgmw /p cfe.bin
Dopo il seguente comando il software vi avvertirà sul fatto che il file che avete specificato è lungo solo 128K, mentre la flash è 16384K. Semplicemente confermate di voler proseguire.
Attendete quindi il completamento dell'operazione, e successivamente verificate che la scrittura sia avvenuta correttamente con:
Codice: [Seleziona]
spipgmw /v cfe.bin
Il software dovrebbe avvertirvi al solito del mismatch della dimensione del file, ma che comunque la scrittura è verifica è avvenuta con successo.

A questo punto siete pronti a dissaldare dalla flash i cavetti, ripulire e raddrizzare (nel caso qualcuno si fosse leggermente deformato) i pin, al fine di garantire la perfetta aderenza ai pad sul pcb.
Effettuata la saldatura della flash resta solo da riattaccare il dissipatore sul BCM6328.Sarà quindi necessario applicare del biadesivo molto sottile sulla superficie del dissipatore, dopo aver ovviamente ripulito sia quest'ultimo che il BCM6328 dalle tracce di biadesivo precedente.
Una volta rimesso il dissipatore al suo posto, magari facendo una lieve pressione per assicurarsi della effettiva aderenza fra le due parti, bisognerà risaldare il perno di blocco del dissipatore.
Ecco il tutto a lavoro ultimato:




I più volenterosi potranno all'occorrenza ripulire tutto dalle tracce di collante bianco e riapplicare qualcosa di simile, per riprodurre lo "scenario pre-debrick" !
Io, onestamente, me ne sono fregato altamente, dato che il dissipatore è già immobile cosi.

Non vi resta che collegare la seriale e verificare se effettivamente il tutto sia andato per il verso giusto, godendovi il log del cfe !
Tutto ciò che riguarda il caricamento del firmware non è oggetto di questa guida, e dovrà quindi essere affrontato nei thread di competenza.

Come ultima, ma non ultima cosa, ci sono dei ringraziamenti da fare, alle persone che hanno contribuito direttamente ed indirettamente alla stesura di questa guida, e queste sono notthesun, per avermi gentilmente fornito un AGPWI come cavia ed il maestro roleo, per aver trattato per il primo l'argomento, sul thread dell'AGTWI, ed al quale mi sono indubbiamente ispirato, riportandolo sull'AGPWI.
Grazie!
« Ultima modifica: 09 Dicembre 2018, 16:49 da MisterFTTH »
ADB P.RG-AV4202N
Repository firmware: http://beghiero.myftp.org/mendocino89/

Offline Mendocino89

  • Membro Anziano
  • ***
  • 384
  • Sesso: Maschio
Re:[How-To] Guida completa al debrick dell'ADB P.DG-A4001N, aka AGPWI
« Risposta #1 il: 15 Aprile 2013, 13:52 »
post di servizio
ADB P.RG-AV4202N
Repository firmware: http://beghiero.myftp.org/mendocino89/

Offline L4ky

  • Nuovo Iscritto
  • *
  • 25
Re:[How-To] Guida completa al debrick dell'ADB P.DG-A4001N, aka AGPWI
« Risposta #2 il: 23 Maggio 2013, 23:15 »
Cosa succede se riprogrammi la flash senza dissaldare ma saldando i cavi sulla flash attaccata alla scheda?

Offline jlbhfa

  • Ex-Staff
  • Esperto
  • *****
  • 590
  • Sesso: Maschio
Re:[How-To] Guida completa al debrick dell'ADB P.DG-A4001N, aka AGPWI
« Risposta #3 il: 24 Maggio 2013, 14:58 »
Roleo cosiglia di staccarla, in quanto alui non ha funzionato, puoi anche provare ma senza alimentazione del router!

Offline L4ky

  • Nuovo Iscritto
  • *
  • 25
Re:[How-To] Guida completa al debrick dell'ADB P.DG-A4001N, aka AGPWI
« Risposta #4 il: 26 Maggio 2013, 13:25 »
Al momento non ne ho necessità.
Appena riesco a configurare bene DD WRT sull access point inizio a provare i firmware per questo AGPWI.

Chiedevo per curiosità, grazie!

Novità per la JTAG?

Offline Antoniuss

  • Nuovo Iscritto
  • *
  • 7
Re:[How-To] Guida completa al debrick dell'ADB P.DG-A4001N, aka AGPWI
« Risposta #5 il: 29 Agosto 2014, 20:40 »
Non c'e' un dettaglio dei componenti dell'interfaccia parallela ?

Offline JackTheVendicator

  • Esperto
  • ****
  • 1913
  • Sesso: Maschio
  • I'm watching you.
    • Firmware modificati
Re:[How-To] Guida completa al debrick dell'ADB P.DG-A4001N, aka AGPWI
« Risposta #6 il: 11 Settembre 2014, 13:02 »
Sono 4 resistenze e un condensatore... lo schema nella prima immagine del post basta e avanza :)

Offline eglio

  • Membro Anziano
  • ***
  • 121
Re:[How-To] Guida completa al debrick dell'ADB P.DG-A4001N, aka AGPWI
« Risposta #7 il: 22 Settembre 2014, 17:14 »
Nel mio caso la memoria SPI non si è programmata sul circuito ma ho dovuto staccarla con l'aria calda..(270°) e ingegnarmi un programmatore volante... poi i problemi DOS con SPIPGM e IOPERM.SYS (driver).....
Diciamo che il buon esito dell'operazione è dettato fondamentalmente dal tipo di porta parallela e dal pc utilizzato!!!
Da controllare sono le impostazioni della porta EPP-ECP-STANDARD ecc .
Ogni impostazione restituisce un risultato diverso come pure la lunghezza dei cavi di collegamento tra parallela e chip!!!

Offline roleo

  • VIP
  • *****
  • 4601
    • Repository ilpuntotecnico.com
Re:[How-To] Guida completa al debrick dell'ADB P.DG-A4001N, aka AGPWI
« Risposta #8 il: 22 Settembre 2014, 17:34 »
Nel mio caso la memoria SPI non si è programmata sul circuito ma ho dovuto staccarla con l'aria calda..(270°) e ingegnarmi un programmatore volante... poi i problemi DOS con SPIPGM e IOPERM.SYS (driver).....
Diciamo che il buon esito dell'operazione è dettato fondamentalmente dal tipo di porta parallela e dal pc utilizzato!!!
Da controllare sono le impostazioni della porta EPP-ECP-STANDARD ecc .
Ogni impostazione restituisce un risultato diverso come pure la lunghezza dei cavi di collegamento tra parallela e chip!!!

Spero che tu abbia usato spipgmw su xp e non spipgm...
Altrimenti devi aver fatto parecchia fatica a farlo andare :)
--- SONO TUTTI OPEN CON IL SOURCE DEGLI ALTRI ---

Non rispondo in pm a tutte quelle domande che hanno una risposta nel forum.
Usate il pulsante "Ricerca".

Offline eglio

  • Membro Anziano
  • ***
  • 121
Re:[How-To] Guida completa al debrick dell'ADB P.DG-A4001N, aka AGPWI
« Risposta #9 il: 22 Settembre 2014, 18:19 »
Si Roleo è cosi ... ho fatto questo lavoro parecchio tempo fa e non ricordo bene i dettagli infatti di eseguibili ce ne sono 2 uno per i sistemi base win95-98 e uno per nt-xp però ti posso confermare che molto dipende dal tipo hardware della porta parallela...
Per questo motivo ho un pc vecchio HP XE3 dedicato per queste cose che è infallibile!

Offline roleo

  • VIP
  • *****
  • 4601
    • Repository ilpuntotecnico.com
Re:[How-To] Guida completa al debrick dell'ADB P.DG-A4001N, aka AGPWI
« Risposta #10 il: 23 Settembre 2014, 08:34 »
Per questo motivo ho un pc vecchio HP XE3 dedicato per queste cose che è infallibile!

Guarda caso stesso PC anche io. :)
--- SONO TUTTI OPEN CON IL SOURCE DEGLI ALTRI ---

Non rispondo in pm a tutte quelle domande che hanno una risposta nel forum.
Usate il pulsante "Ricerca".

Offline eglio

  • Membro Anziano
  • ***
  • 121
Re:[How-To] Guida completa al debrick dell'ADB P.DG-A4001N, aka AGPWI
« Risposta #11 il: 23 Settembre 2014, 08:52 »
...Probabilmente il "front-end" Hardware di questi vecchi pc rispecchia gli standard TTL infatti se misuri sulla porta hai un valore prossimo ai 5 volt (con multimetro digitale) con diversi milliampere ... Nei nuovi PC i front-end delle porte sono alimentati a 3,3v o rispecchiano gli standard C-Mos ; appena si caricano leggermente con qualche milliampere si siedono..
Questo rende molto difficoltoso far funzionare qualche programmatore o dispositivo direttamente dalla porta...

Offline zoomx

  • Esperto
  • ****
  • 589
Re:[How-To] Guida completa al debrick dell'ADB P.DG-A4001N, aka AGPWI
« Risposta #12 il: 23 Settembre 2014, 09:41 »
Ho letto che è possibile leggere le memorie flash con interfaccia seriale SPI con dei semplici adattatori per leggere le SD su USB. La flash del Nintendo 3DS viene letta con questi adattatori economicissimi (e su USB!!!) e in rete ci sono parecchie guide. Collegandole su un PC la flash viene vista come unità non formattata, perché il layout della flash non viene ovviamente riconosciuto. Però è possibile sia leggere che scrivere l'intera immagine usando dd su Linix e Win32DiskImager (o programma simile) su Windows. Tali adattatori potrebbero fornire anche l'alimentazione a 3.3v.
Oppure si potrebbe utilizzare un Arduino, un Launchpad MSP430 o altra schedina di sviluppo economica.

Offline logan

  • Membro Anziano
  • ***
  • 305
  • Sesso: Maschio
  • Ing Inf
Re:[How-To] Guida completa al debrick dell'ADB P.DG-A4001N, aka AGPWI
« Risposta #13 il: 05 Ottobre 2014, 17:39 »
Ragazzi qualcuno ha provato ad utilizzare la JTAG per l'AGPF sull'AGPWI?

Offline Miguel89

  • Ex-Staff
  • VIP
  • *****
  • 5047
  • Sesso: Maschio
Re:[How-To] Guida completa al debrick dell'ADB P.DG-A4001N, aka AGPWI
« Risposta #14 il: 05 Ottobre 2014, 18:04 »
Erano stati fatti vari test, ma sembra non funzionare (non viene riconosciuta da nessun software)
Se non sbaglio se ne parlava in questo thread