Check out the new blog at http://linuxehacking.ovh , this one will no longer be updated

giovedì 19 settembre 2013

Recuperare un'interfaccia Ralink a 5 Ghz con EEPROM danneggiata senza riprogrammare il chip

Molti mesi fa , mi si danneggiò la EEPROM della mia ALFA dual-band, la situazione inizialmente sembrava tragica, la periferica non veniva neanche più riconosciuta ( i descrittori usb contenuti nella eeprom erano danneggiati ).
La eeprom di questa periferica difatti , nonostante tramite USB sia possibile leggerne i primi 0x110 byte , in realtà è da 0x400 byte ed all'indirizzo 0x200 inizia la parte dei descrittori USB la quale è utilizzata dal chipset.
Una volta dissaldata la eeprom si può notare che l'interfaccia wireless funziona di nuovo, però le funzionalità dual-band non ci sono più, ed anche il mac address è danneggiato.
Dato che i tentativi che ho fatto di sostituire la eeprom , un po' per sfortuna , un po' per la mia poca esperienza a lavorare in SMD sono andati male , ho tentato di modificare il driver, in modo che nel caso il chip id della eeprom sia 0xffff ( ovvero quando il chip non è presente ) , vada a caricare un file in /lib/firmware in modo da riconoscere correttamente l'id del chip RF ed altri parametri ( tipo le antenne da utilizzare )

Ho modificato il file rt2800usb.c del driver rt2x00 , modificando la funzione rt2800usb_read_eeprom nel seguente modo

static int rt2800usb_read_eeprom(struct rt2x00_dev *rt2x00dev)
{
int retval;
    mm_segment_t fs;
    struct file *f;
if (rt2800_efuse_detect(rt2x00dev))
retval = rt2800_read_eeprom_efuse(rt2x00dev);
else
{
  
retval = rt2x00usb_eeprom_read(rt2x00dev, rt2x00dev->eeprom,
      EEPROM_SIZE);
        if ( rt2x00dev->eeprom[0] == 0xffff ) //No eeprom chip
        {
            printk("rt2800usb: connected device has broken/missing eeprom chip\n");
            f = filp_open("/lib/firmware/rt2800usb_eeprom.bin", O_RDONLY, 0);
            if ( IS_ERR(f) )
            {
                printk("rt2800usb: Cannot load eeprom from /lib/firmware/rt2800usb_eeprom.bin\n");
                return -1;
            }
            fs = get_fs();
            set_fs(get_ds());
            f->f_op->read(f,(char*)rt2x00dev->eeprom,EEPROM_SIZE,&f->f_pos);
            set_fs(fs);
  
            filp_close(f,NULL);
            printk("rt2800usb: Loaded eeprom override\n");
        }
     }

return retval;
}

In questo modo il driver al collegamento di una periferica rt2800usb andrà a cercare un file in /lib/firmware/rt2800usb_eeprom.bin contenente la EEPROM da utilizzare.
Purtroppo ci sono delle limitazioni, ad esempio non si possono usare più ralink 2800usb con eeprom danneggiata nello stesso sistema.



Allego di seguito la eeprom della mia ALFA , dovete assolutamente modificare il mac address con il vostro , oppure metterne uno casuale ( è consigliabile lasciare inalterati i primi 3 byte )

0000:0000 | 70 27  04 01  00 C0  CA 32 | p'...ÀÊ2
0000:0008 | B7 FE  FF FF  FF FF  FF FF | ·Dÿÿÿÿÿÿ
0000:0010 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0018 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0020 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0028 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0030 | FF FF  FF FF  12 04  20 00 | ÿÿÿÿ.. .
0000:0038 | FF FF  15 01  FF FF  FF FF | ÿÿ..ÿÿÿÿ
0000:0040 | FF FF  FF FF  09 04  00 00 | ÿÿÿÿ....
0000:0048 | 00 04  00 00  00 03  FF FF | ......ÿÿ
0000:0050 | FF FF  02 02  02 02  02 03 | ÿÿ......
0000:0058 | 03 03  03 03  03 03  03 03 | ........
0000:0060 | 00 00  00 00  00 00  00 00 | ........
0000:0068 | 00 00  00 00  00 00  FF FF | ......ÿÿ
0000:0070 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0078 | 06 06  06 06  06 06  06 06 | ........
0000:0080 | 06 06  06 06  05 05  05 05 | ........
0000:0088 | 05 05  05 05  05 05  06 06 | ........
0000:0090 | 06 06  06 06  06 06  06 06 | ........
0000:0098 | 06 06  07 FF  FF FF  FF FF | ...ÿÿÿÿÿ
0000:00A0 | FF FF  FF FF  FF FF  00 00 | ÿÿÿÿÿÿ..
0000:00A8 | 00 00  00 00  00 00  00 00 | ........
0000:00B0 | 00 00  00 00  00 00  00 00 | ........
0000:00B8 | 00 00  00 00  00 00  00 00 | ........
0000:00C0 | 00 00  00 00  00 00  00 00 | ........
0000:00C8 | 00 FF  FF FF  FF FF  FF FF | .ÿÿÿÿÿÿÿ
0000:00D0 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:00D8 | FF FF  FF FF  FF FF  88 88 | ÿÿÿÿÿÿ..
0000:00E0 | 99 AA  88 66  AA AA  88 66 | .ª.fªª.f
0000:00E8 | AA AA  88 66  AA AA  88 66 | ªª.fªª.f
0000:00F0 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:00F8 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0100 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0108 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0110 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0118 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0120 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0128 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0130 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0138 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0140 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0148 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0150 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0158 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0160 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0168 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0170 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0178 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0180 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0188 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0190 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0198 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:01A0 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:01A8 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:01B0 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:01B8 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:01C0 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:01C8 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:01D0 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:01D8 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:01E0 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:01E8 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:01F0 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:01F8 | FF FF  FF FF  FF FF  FF FF | ÿÿÿÿÿÿÿÿ
0000:0200 | 12 01  00 02  00 00  00 40 | .......@
0000:0208 | 8F 14  70 27  01 01  01 02 | ..p'....
0000:0210 | 03 01  0A 06  00 02  00 00 | ........
0000:0218 | 00 40  01 00  09 02  35 00 | .@....5.
0000:0220 | 01 01  00 80  E1 09  04 00 | ....á...
0000:0228 | 00 07  FF FF  FF 05  07 05 | ..ÿÿÿ...
0000:0230 | 81 02  00 02  00 07  05 01 | ........
0000:0238 | 02 00  02 00  07 05  02 02 | ........
0000:0240 | 00 02  00 07  05 03  02 00 | ........
0000:0248 | 02 00  07 05  04 02  00 02 | ........
0000:0250 | 00 07  05 05  02 00  02 00 | ........
0000:0258 | 07 05  06 02  00 02  00 B8 | .......¸
0000:0260 | 11 7D  08 0D  00 00  00 00 | .}......
0000:0268 | 54 69  7A 69  61 6E  6F 42 | TizianoB
0000:0270 | 61 63  6F 63  63 6F  48 41 | acoccoHA
0000:0278 | 43 4B  20 20  00 00  00 00 | CK  ....
0000:0280 | 12 01  00 02  00 00  00 40 | .......@
0000:0288 | 8F 14  70 28  01 00  06 07 | ..p(....
0000:0290 | 08 01  0A 06  00 02  00 00 | ........
0000:0298 | 00 40  01 00  09 02  20 00 | .@.... .
0000:02A0 | 01 01  00 80  E1 09  04 00 | ....á...
0000:02A8 | 00 02  08 06  50 0A  07 05 | ....P...
0000:02B0 | 81 02  00 02  00 07  05 01 | ........
0000:02B8 | 02 00  02 00  00 00  00 00 | ........
0000:02C0 | 00 00  00 00  00 00  00 00 | ........
0000:02C8 | 00 00  00 00  00 00  00 00 | ........
0000:02D0 | 00 00  00 00  00 00  00 00 | ........
0000:02D8 | 00 00  00 00  00 00  00 00 | ........
0000:02E0 | 00 00  3F 00  00 00  00 00 | ..?.....
0000:02E8 | 00 00  00 00  00 00  00 00 | ........
0000:02F0 | 00 60  70 A2  FF A2  60 70 | .`p¢ÿ¢`p
0000:02F8 | A2 FF  A2 FF  FF FF  FF FF | ¢ÿ¢ÿÿÿÿÿ
0000:0300 | 04 03  09 04  00 00  00 00 | ........
0000:0308 | 00 00  00 00  00 00  00 00 | ........
0000:0310 | 00 00  00 00  00 00  00 00 | ........
0000:0318 | 00 00  00 00  00 00  00 00 | ........
0000:0320 | 00 00  00 00  00 00  00 00 | ........
0000:0328 | 00 00  00 00  00 00  00 00 | ........
0000:0330 | 00 00  00 00  00 00  00 00 | ........
0000:0338 | 00 00  00 00  00 00  00 00 | ........
0000:0340 | 00 00  00 00  00 00  00 00 | ........
0000:0348 | 00 00  00 00  00 00  00 00 | ........
0000:0350 | 00 00  00 00  00 00  00 00 | ........
0000:0358 | 00 00  00 00  00 00  00 00 | ........
0000:0360 | 0E 03  52 00  61 00  6C 00 | ..R.a.l.
0000:0368 | 69 00  6E 00  6B 00  00 00 | i.n.k...
0000:0370 | 1E 03  38 00  30 00  32 00 | ..8.0.2.
0000:0378 | 2E 00  31 00  31 00  20 00 | ..1.1. .
0000:0380 | 6E 00  20 00  57 00  4C 00 | n. .W.L.
0000:0388 | 41 00  4E 00  00 00  00 00 | A.N.....
0000:0390 | 04 03  09 04  00 00  00 00 | ........
0000:0398 | 00 00  00 00  00 00  00 00 | ........
0000:03A0 | 00 00  08 03  31 00  2E 00 | ....1...
0000:03A8 | 30 00  00 00  00 00  00 00 | 0.......
0000:03B0 | 00 00  00 00  00 00  00 00 | ........
0000:03B8 | 00 00  00 00  00 00  00 00 | ........
0000:03C0 | 00 00  00 00  00 00  00 00 | ........
0000:03C8 | 00 00  00 00  00 00  00 00 | ........
0000:03D0 | 00 00  00 00  00 00  00 00 | ........
0000:03D8 | 00 00  00 00  00 00  00 00 | ........
0000:03E0 | 00 00  00 00  00 00  00 00 | ........
0000:03E8 | 00 00  00 00  00 00  00 00 | ........
0000:03F0 | 00 00  00 00  00 00  00 00 | ........

0000:03F8 | 00 00  00 00  00 00  00 00 | ........

martedì 3 settembre 2013

[FISICA] Produrre raggi X in casa senza ricorrere a componenti costosi

Introduzione

Quello che illustrerò di seguito è come produrre raggi X in casa utilizzando componenti facilmente reperibili, tuttavia i raggi X prodotti, non sono assolutamente sufficienti per fare una lastra, è utile questo esperimento solo per fini didattici.

Pericoli


I raggi X, in modo simile ai raggi ultravioletti nelle ore di punta, possono creare ustioni o nel peggior dei casi tumori, la differenza sostanziale è che i raggi X spesso vanno più in profondità , quindi le eventuali ustioni sono molto più gravi.
Utilizzando una valvola termoionica con accoppiamento capacitivo sul catodo, è difficile produrre dosi pericolose, tuttavia è altamente consigliabile non trovarsi nella stanza quando l'apparecchiatura è attiva.

Funzionamento

Per produrre i raggi X è necessario ottenere una collisione di elettroni sufficientemente accelerati su un bersaglio metallico.
Gli elettroni possono essere facilmente accelerati da una differenza di potenziale applicata ai 2 estremi di una valvola termoionica.
Viene usata una valvola termoionica, perché è il tubo con vuoto spinto più facilmente reperibile e più economico.
Nella figura in alto:
1: Valvola termoionica
2: Sonda Beta+Gamma del contatore geiger SV-500 schermata e collegata a terra
3:Webcam USB con ottica rimossa, anche essa schermata e collegata a terra

Il cavo rosa è il catodo, ed è collegato tramite un pezzo di carta stagnola sulla parte superiore della valvola, in questo modo gli elettroni provenienti dal catodo andranno a collidere sui vari elementi metallici della valvola collegati all'anodo e quindi produrranno raggi X

1: Trasformatore di riga TV 
2: Trasformatore avvolto su nucleo di un altro trasformatore di riga , serve ad alzare il voltaggio dell'inverter ZVS
3:Condensatore necessario a limitare la corrente per evitare di rompere il vetro del tubo termoionico
4:Driver ZVS di Mazzilli
5: Collegamento a terra
Lo scopo di questo circuito è di fornire una tensione di almeno 50-60000 volt per accelerare sufficientemente gli elettroni all'interno del tubo
È inutile riportare il numero di giri dei vari avvolgimenti in quanto andranno trovati in ogni caso sperimentalmente.
Questo è quanto basta per produrre raggi X, per verificare che vengano prodotti viene usato un contatore geiger con una sonda sensibile ai raggi beta la quale deve essere assolutamente schermata e collegata a terra.
Una volta realizzato questo esperimento si possono condurre vari esperimenti come ad esempio testare la penetrazione dei raggi X nei vari materiali, oppure sperimentare con altri tipi di rivelatori come ho fatto io, provando con il CCD di una webcam.
Nel mio canale youtube ( http://youtube.com/lo9765 ) ho caricato un video dove viene mostrato il tutto in funzione e a breve ne verrà caricato un altro dove viene mostrato l'uso del sensore CCD come rivelatore di radiazioni.
Anche nel video già presente alla terza volta che alimento il tutto è possibile notare in alto a destra un puntino bianco su un fotogramma il quale indica che un fotone di raggi X ha colpito il sensore CCD del cellulare.