Ricevitore DVB-T HD barbone...
Inviato: 21 nov 2009, 12:16
Visto che il mio alterego e' l'autore , riporto anche qui il progetto che sto seguendo...Non si tratta di nulla di particolarmente innovativo, visto che non sono un mago ed il tempo e' tiranno, comunque magari qui, con meno rumore di fondo, si riesce a cavare un ragno dal buco...
Premetto che:
- il pirelli e' dato in comodato d'uso agli abbonati telecom alice home tv, ma si acquista su ebay...
- dispone di un frame buffer con accelerazione HD
- con il toolchain si possono ricompilare teoricamente tutte le applicazioni (quindi anche vdr). Personalmente visti i limiti di tempo a disposizione sono ancora in fase di studio molto preliminare, ma ritengo che l'applicazione webtv integrata, potrebbe essere modificata per funzionare come client di vdr+streamdev server.
In ogni caso anche, allo stato attuale, per pochi euro si puo' entrare in possesso di un ricevitore dvb-t HD, con linux smanettabile, ftp, client torrent, etc...
Aggiungo che c'e' su ilpuntotecnicoeadsl un thread lungo quasi 200 pagine sull'hardware in oggetto...
Wiki http://hy100wiki.algasystems.net/wiki/doku.php/start
usbfs_hy100 - versione 0.1
Scaricabile qui
file system usb per hy100 basato sulla versione 1.81 del firmware pirelli
Questo fs mantiene la funzionalita' del firmware originale in modalita' offline e cioe' il funzionamento come decoder dtt.
PREMESSA
- L'Hy100 (e il modello Hy101) e' un STB (set top box) basato su processore Sigma che utilizza come sistema operativo linux.
Per volonta' del produttore si presenta come un dispositivo chiuso e "blindato": non c'e' accesso alla console dei comandi (telnet), non e' presente un demone ftp per scaricare files, etc...Inoltre il firmware originale presenta una signature (codice di controllo) che impedisce di modificarne il contenuto e poi effettuare l'upgrade secondo quando previsto dalla procedura di upgrade, questo perche' attualmente non e' possibile generare una nuova signature per il firmware modificato.
- La scoperta di una falla nel sistema operativo dell'hy100, ha reso possibile comunque far eseguire del codice arbitrario al pirelli. La procedura prende il nome del suo scopritore, e' conosciuta come "hack di cyberstorm". Tramite questo hack e' possibile flashare lzma.bin e rendere piu' docile il pirelli.
- L'hack di cyberstorm e' una procedura non troppo semplice da realizzare, ma comunque ampiamente descritta passo passo dalla "Guida di Vertex."
- Il kernel lzma.bin (ricompilato da roleo) e' in pratica un loader (+ la classica immagine del kernel, ma in formato compresso lzma) che decomprime il kernel in memoria e grazie al fatto che abilita le porte usb prima del caricamento dello stesso consente di effettuare il boot da dispositivo usb.
Questo kernel per poter essere attivo, ed avviare un file system da usb deve essere scritto nella flash dell'hy100 (anche se avendo accesso a yamon, potrebbe essere caricato da rete via tftp). Oltre alla scrittura della flash, deve essere modificata la sequenza di start per consentire l'utilizzo del nuovo kernel ed effettuare il boot da usb.
Per questa ragione un hy100 che e' stato modificato non e' piu' in grado di caricare il firmware originale che e' presente nella flash e se non trova un filesystem su pendrive che e' un grado di montare come / (root) rimarra' in una fase di stallo per l'impossibilita' di caricare il S.O.
- E' possibile tramite yamon (il boot loader dell'hy100) ripristinare la sequenza di boot originale. L'accesso a yamon viene effettuato tramite console seriale, serve quindi un programma di terminale come putty e un convertitore di livelli rs232-ttl.
Per il collegamento pc hy100 consiglio di utilizzare il cavo dati per nokia DKU-5. Si puo' acquistare su ebay per pochi euro comprese le spese di spedizione.
Cosa richiede:
Aver eseguito l'hack di cyberstorm e flashato il kernel compresso lzma.bin di roleo
Potete scaricare il toolkit completo (grazie a cyberstorm, JackTheVendicator e roleo) con la Guida di Vertex QUI
Note per l'installazione:
Il filesystem si puo' installare su pendrive o disco usb.
- formattare il dispositivo
- decomprimere l'archivio, p.e.
tar xjf usbfs_hy100-0.1
- copiare il contenuto su una pendrive o un disco usb, ad esempio il mount point del disco usb e' /pippo
cp -p -r ./disk /pippo
Smontare il dispositivo usb. Nel caso dell'esempio precedente:
umount /pippo
Inserire il pendrive nella porta usb A (alta) del hy100.
N.B. il firmware funziona solo se il dispositivo usb e' inserito nella porta A. Vedi la sezione Bugs per ulteriori informazioni.
Caratteristiche aggiuntive rispetto al firmware originale:
- accesso da console telnet. Non sono richiesti user e password
- accesso via ftp (user root, password root).
- accesso via smb:// (vengono montare in auto le cartelle /USB, /tmp e /share/Downloads)
- client torrent (transmission) accessibile via http://your_ip:9091
- e2fsprogs installati per la gestione dei dischi
- nano e mc
- [s]semi[/s]automount del dispositivo usb inserito nella porta usb B (bassa): usbmnt o tramite servizio al boot.
Pacchetti utilizzati:
roleo:
- kernel lzma.bin
- telnetd
compilati con toolchain di Lundman (scaricaribile da qui http://www.lundman.net/wiki/index.php/NMT:downloads) :
- vsftpd
- samba
- e2fprogs
binari da nmt (network media tank)
- mc
- nano
- transmission
Note sulla release:
- Tutti i servizi disattivabili sono stati copiati in /_etc/start.d
Vengono startati in ordine di priorita' solo quelli che iniziano con 'S' (da script di boot dell'azbox), per disattivare un servizio allo startup basta quindi cambiarne i permessi con chmod 644 (o da ftp) oppure rinominandolo.
p.e. mv /_etc/start.d/S20crond /_etc/start.d/s20crond
- /tmp e' montata in ram (spazio 2Mb). Se la dimensione fosse troppo ridotta editare /_etc/fstab
- Un dispositivo usb installato sulla porta usb B viene montato allo startup da /_etc/start.d/S10usb con mount point /USB.
E' possibile montare/smontare manualmente da console tramite lo script usbmnt
- Se viene utilizzato transmission per scaricare file grossi, conviene cambiare la cartella di download (/share/Download). Dalla webgui cliccare sulle opzioni (in basso a sx) e poi preferences...
- Il filesystem non viene controllato al boot, ma ho inserito uno script di shutdown che effettua il check di /dev/sda1 prima di effettuare il reboot (-r) o se si desidera spegnere (-h) l'hy100. Per effettuare il reboot con check: shutdown -r /c
- Il led 'internet' viene utilizzato per indicare la modalita': offline = rosso online = verde
- Il led 'upgrade' viene utilizzato per indicare il mount di un dispositivo sulla porta B: ext2/3 = verde, vfat= giallo, auto = rosso
- Alcune impostazioni sono in coda al file /_etc/rcS
- smb.conf e' in /var/smb
Upgrade:
upgrade -1- per usbfs-0.1
Scaricabile QUI
/usr/sbin/acme-thttpd - Nuova versione ricompilata. Ho disattivato STATS_TIME che creava problemi con syslogd.
/sbin/hotplug - Implementata gestione minimale hotplug per l'automount un dispositivo usb di storage collegato alla porta USB Bassa (2). N.B. Per smontare il dispositivo e' necessario utilizzare il comando usbmnt umount da console.
Ricordate di rinominare o togliere i permessi di esecuzione a /_etc/start.d/S30usbmnt, dal momento che non serve piu'...
/sbin/usbmnt - Modificato per funzionare con hotplug (path estesi per i comandi).
/sbin/shutdown - piccole modifiche...
/bin/thttpd/SignonDispacher/index.html - Eliminata la blacklist, ora vengono visualizzati tutti i canali (cercate Blacklist nel file per vedere come funziona )...
N.B. L'Hy100 e' in grado di sintonizzare anche i canali DTT HD (in dvb-t1), ma scarta al caricamento tutti i canali che hanno in /_etc/dtt_scan un valore diverso da 1 nel primo campo che segue l'intestazione SERVICE:
Per visualzzare il cartello di Premium Calcio HD che viene trasmesso in FTA modificare il valore 25 in 1.
Bugs:
- Se il pirelli parte con il cavo di rete staccato, rimane forzatamente in modalita' offline, ed anche collegando il cavo di rete successivamente non prende l'ip.
- L'hy100 non riesce ad effettuare il boot da usb se ad entrambe le porte usb sono collegati dei dispositivi.
Questo probabilmente perche' non esiste una priorita' di selezione fra le 2 porte e quindi il kernel al boot va in confusione.
Per ovviare a questo problema, che ripeto si presenta solo nel caso si voglia utilizzare entrambe le porte (p.e. pendrive come boot e disco usb come data storage), si deve patchare lzma.bin in modo che in fase di boot solo una porta sia attiva.
In lzma.bin all'offset 0x210 il valore 0x0C deve essere sostituito da 0x08.
In questa maniera e' attiva solo la porta usb A e l'hy100 carica il s.o. con entrambi i dispositivi popolati.
Tutti gli script interessati sono stati modificati per gestire USB A come boot device, mentre USB B viene attivata dopo...
Il problema si ripresenta anche nel caso si volgia riavviare il sistema tramite il comando reboot: entrambe le porte rimangono attive e quindi il boot fallisce...Per riavviare il sistema utilizzare lo script shutdown -r
La soluzione ottimale, IMHO, sarebbe quella di ricompilare il loader generando un nuovo lzma.bin, forzando prima entrambe le porte ad off e poi attivando solo la USB A...
Ricapitolando:
se utilizzate una sola usb (pendrive o disco): ok
se collegate alla usb B un dispositivo dopo l'avvio del sistema: ok
se volete utilizzare entrambe le usb lasciando sempre collegati entrambi i dispositivi: dovete patchare lzma.bin e riflasharlo.
Premetto che:
- il pirelli e' dato in comodato d'uso agli abbonati telecom alice home tv, ma si acquista su ebay...
- dispone di un frame buffer con accelerazione HD
- con il toolchain si possono ricompilare teoricamente tutte le applicazioni (quindi anche vdr). Personalmente visti i limiti di tempo a disposizione sono ancora in fase di studio molto preliminare, ma ritengo che l'applicazione webtv integrata, potrebbe essere modificata per funzionare come client di vdr+streamdev server.
In ogni caso anche, allo stato attuale, per pochi euro si puo' entrare in possesso di un ricevitore dvb-t HD, con linux smanettabile, ftp, client torrent, etc...
Aggiungo che c'e' su ilpuntotecnicoeadsl un thread lungo quasi 200 pagine sull'hardware in oggetto...
Wiki http://hy100wiki.algasystems.net/wiki/doku.php/start
usbfs_hy100 - versione 0.1
Scaricabile qui
file system usb per hy100 basato sulla versione 1.81 del firmware pirelli
Questo fs mantiene la funzionalita' del firmware originale in modalita' offline e cioe' il funzionamento come decoder dtt.
PREMESSA
- L'Hy100 (e il modello Hy101) e' un STB (set top box) basato su processore Sigma che utilizza come sistema operativo linux.
Per volonta' del produttore si presenta come un dispositivo chiuso e "blindato": non c'e' accesso alla console dei comandi (telnet), non e' presente un demone ftp per scaricare files, etc...Inoltre il firmware originale presenta una signature (codice di controllo) che impedisce di modificarne il contenuto e poi effettuare l'upgrade secondo quando previsto dalla procedura di upgrade, questo perche' attualmente non e' possibile generare una nuova signature per il firmware modificato.
- La scoperta di una falla nel sistema operativo dell'hy100, ha reso possibile comunque far eseguire del codice arbitrario al pirelli. La procedura prende il nome del suo scopritore, e' conosciuta come "hack di cyberstorm". Tramite questo hack e' possibile flashare lzma.bin e rendere piu' docile il pirelli.
- L'hack di cyberstorm e' una procedura non troppo semplice da realizzare, ma comunque ampiamente descritta passo passo dalla "Guida di Vertex."
- Il kernel lzma.bin (ricompilato da roleo) e' in pratica un loader (+ la classica immagine del kernel, ma in formato compresso lzma) che decomprime il kernel in memoria e grazie al fatto che abilita le porte usb prima del caricamento dello stesso consente di effettuare il boot da dispositivo usb.
Questo kernel per poter essere attivo, ed avviare un file system da usb deve essere scritto nella flash dell'hy100 (anche se avendo accesso a yamon, potrebbe essere caricato da rete via tftp). Oltre alla scrittura della flash, deve essere modificata la sequenza di start per consentire l'utilizzo del nuovo kernel ed effettuare il boot da usb.
Per questa ragione un hy100 che e' stato modificato non e' piu' in grado di caricare il firmware originale che e' presente nella flash e se non trova un filesystem su pendrive che e' un grado di montare come / (root) rimarra' in una fase di stallo per l'impossibilita' di caricare il S.O.
- E' possibile tramite yamon (il boot loader dell'hy100) ripristinare la sequenza di boot originale. L'accesso a yamon viene effettuato tramite console seriale, serve quindi un programma di terminale come putty e un convertitore di livelli rs232-ttl.
Per il collegamento pc hy100 consiglio di utilizzare il cavo dati per nokia DKU-5. Si puo' acquistare su ebay per pochi euro comprese le spese di spedizione.
Cosa richiede:
Aver eseguito l'hack di cyberstorm e flashato il kernel compresso lzma.bin di roleo
Potete scaricare il toolkit completo (grazie a cyberstorm, JackTheVendicator e roleo) con la Guida di Vertex QUI
Note per l'installazione:
Il filesystem si puo' installare su pendrive o disco usb.
- formattare il dispositivo
- decomprimere l'archivio, p.e.
tar xjf usbfs_hy100-0.1
- copiare il contenuto su una pendrive o un disco usb, ad esempio il mount point del disco usb e' /pippo
cp -p -r ./disk /pippo
Smontare il dispositivo usb. Nel caso dell'esempio precedente:
umount /pippo
Inserire il pendrive nella porta usb A (alta) del hy100.
N.B. il firmware funziona solo se il dispositivo usb e' inserito nella porta A. Vedi la sezione Bugs per ulteriori informazioni.
Caratteristiche aggiuntive rispetto al firmware originale:
- accesso da console telnet. Non sono richiesti user e password
- accesso via ftp (user root, password root).
- accesso via smb:// (vengono montare in auto le cartelle /USB, /tmp e /share/Downloads)
- client torrent (transmission) accessibile via http://your_ip:9091
- e2fsprogs installati per la gestione dei dischi
- nano e mc
- [s]semi[/s]automount del dispositivo usb inserito nella porta usb B (bassa): usbmnt o tramite servizio al boot.
Pacchetti utilizzati:
roleo:
- kernel lzma.bin
- telnetd
compilati con toolchain di Lundman (scaricaribile da qui http://www.lundman.net/wiki/index.php/NMT:downloads) :
- vsftpd
- samba
- e2fprogs
binari da nmt (network media tank)
- mc
- nano
- transmission
Note sulla release:
- Tutti i servizi disattivabili sono stati copiati in /_etc/start.d
Vengono startati in ordine di priorita' solo quelli che iniziano con 'S' (da script di boot dell'azbox), per disattivare un servizio allo startup basta quindi cambiarne i permessi con chmod 644 (o da ftp) oppure rinominandolo.
p.e. mv /_etc/start.d/S20crond /_etc/start.d/s20crond
- /tmp e' montata in ram (spazio 2Mb). Se la dimensione fosse troppo ridotta editare /_etc/fstab
- Un dispositivo usb installato sulla porta usb B viene montato allo startup da /_etc/start.d/S10usb con mount point /USB.
E' possibile montare/smontare manualmente da console tramite lo script usbmnt
- Se viene utilizzato transmission per scaricare file grossi, conviene cambiare la cartella di download (/share/Download). Dalla webgui cliccare sulle opzioni (in basso a sx) e poi preferences...
- Il filesystem non viene controllato al boot, ma ho inserito uno script di shutdown che effettua il check di /dev/sda1 prima di effettuare il reboot (-r) o se si desidera spegnere (-h) l'hy100. Per effettuare il reboot con check: shutdown -r /c
- Il led 'internet' viene utilizzato per indicare la modalita': offline = rosso online = verde
- Il led 'upgrade' viene utilizzato per indicare il mount di un dispositivo sulla porta B: ext2/3 = verde, vfat= giallo, auto = rosso
- Alcune impostazioni sono in coda al file /_etc/rcS
- smb.conf e' in /var/smb
Upgrade:
upgrade -1- per usbfs-0.1
Scaricabile QUI
/usr/sbin/acme-thttpd - Nuova versione ricompilata. Ho disattivato STATS_TIME che creava problemi con syslogd.
/sbin/hotplug - Implementata gestione minimale hotplug per l'automount un dispositivo usb di storage collegato alla porta USB Bassa (2). N.B. Per smontare il dispositivo e' necessario utilizzare il comando usbmnt umount da console.
Ricordate di rinominare o togliere i permessi di esecuzione a /_etc/start.d/S30usbmnt, dal momento che non serve piu'...
/sbin/usbmnt - Modificato per funzionare con hotplug (path estesi per i comandi).
/sbin/shutdown - piccole modifiche...
/bin/thttpd/SignonDispacher/index.html - Eliminata la blacklist, ora vengono visualizzati tutti i canali (cercate Blacklist nel file per vedere come funziona )...
N.B. L'Hy100 e' in grado di sintonizzare anche i canali DTT HD (in dvb-t1), ma scarta al caricamento tutti i canali che hanno in /_etc/dtt_scan un valore diverso da 1 nel primo campo che segue l'intestazione SERVICE:
Per visualzzare il cartello di Premium Calcio HD che viene trasmesso in FTA modificare il valore 25 in 1.
Bugs:
- Se il pirelli parte con il cavo di rete staccato, rimane forzatamente in modalita' offline, ed anche collegando il cavo di rete successivamente non prende l'ip.
- L'hy100 non riesce ad effettuare il boot da usb se ad entrambe le porte usb sono collegati dei dispositivi.
Questo probabilmente perche' non esiste una priorita' di selezione fra le 2 porte e quindi il kernel al boot va in confusione.
Per ovviare a questo problema, che ripeto si presenta solo nel caso si voglia utilizzare entrambe le porte (p.e. pendrive come boot e disco usb come data storage), si deve patchare lzma.bin in modo che in fase di boot solo una porta sia attiva.
In lzma.bin all'offset 0x210 il valore 0x0C deve essere sostituito da 0x08.
In questa maniera e' attiva solo la porta usb A e l'hy100 carica il s.o. con entrambi i dispositivi popolati.
Tutti gli script interessati sono stati modificati per gestire USB A come boot device, mentre USB B viene attivata dopo...
Il problema si ripresenta anche nel caso si volgia riavviare il sistema tramite il comando reboot: entrambe le porte rimangono attive e quindi il boot fallisce...Per riavviare il sistema utilizzare lo script shutdown -r
La soluzione ottimale, IMHO, sarebbe quella di ricompilare il loader generando un nuovo lzma.bin, forzando prima entrambe le porte ad off e poi attivando solo la USB A...
Ricapitolando:
se utilizzate una sola usb (pendrive o disco): ok
se collegate alla usb B un dispositivo dopo l'avvio del sistema: ok
se volete utilizzare entrambe le usb lasciando sempre collegati entrambi i dispositivi: dovete patchare lzma.bin e riflasharlo.