Pagine

giovedì 15 aprile 2010

Guida alla modifica dell'Apple TV

Disclaimerla guida ha solamente uno scopo puramente informativo e non si vuole per nulla incitare la pirateria. Il Blog e il suo legittimo proprietario non si assumono nessuna resonasabilità in merito all'utilizzo che farete di questa guida, in quanto si è provveduto ad avvisare l'utente circa i risci a cui si va in contro.






Introduzione
Nella recensione dell'Apple TV, ho parlato delle funzionalità di 
base come riproduttore multimediale. Il prodotto è convincente 
ma non è certo esente da difetti - il peggiore riguarda il supporto 
molto limitato dei formati video. Gli unici formati supportati sono 
difatti l'H.264 e l'MPEG4. Abbiamo inoltre considerato il problema
 della dimensione dell'hard disk interno che, se più capiente
 rispetto l'hard disk del computer con cui verrà sincronizzato, 
parte dello spazio di archiviazione rimarrà inutilizzato. Inoltre, 
allo stato attuale l'Apple TV non può attingere materiale dai NAS 
collegati alla LAN.
Fortunatamente tutti questi problemi possono essere risolti con 
un po' di creatività, invalidando tuttavia la garanzia del prodotto. 
Appena dopo la presentazione dell'Apple TV, tanti appassionati 
hanno iniziato a lavorare sul prodotto per cercare di spremerne 
al massimo le potenzialità. Era abbastanza chiaro che l'ATV
 (Apple TV) poteva facilmente essere modificata, poiché 
basata su una versione dell'OS X di Apple, gestito da un processore 
x86.
In questo articolo/guida, proverò alcune estensioni sviluppate da
 appassionati, nonché un'applicazione sviluppata personalmente 
che mi permetterà finalmente di utilizzare i NAS collegati alla mia rete.
Partiamo
Tutte le volte che si cerca di modificare un prodotto come questo, 
il passo più importante consiste nel trovare il modo di accedere 
alla linea di comando, così da poter poi curiosare nel sistema e 
modificarlo a piacimento. La comunità degli hacker ha 
velocemente scoperto che la copia della standard secure-shell 
daemon di un sistema OSX x86 funziona tranquillamente sull'Apple 
TV. Tuttavia, il fattore limitante per molte persone è il passo
 precedente all'utilizzo della shell, cioè la messa in opera della
 stessa.
Per questo hacking è necessario smontare l'ATV, rimuovere 
l'hard disk, collegarlo tramite un adattatore IDE da 2.5" a un 
sistema OSX, copiare i file, aggiungere uno script di avvio, e 
poi rimettere tutto assieme. Fortunatamente, con il passare del
 tempo questo processo si è evoluto ed ora è più semplice.
Alcuni appassionati su AwkwardTV.org hanno trovato il modo di
 utilizzare una memory stick per compiere l'intero processo. 
Questa memory stick avviabile (chiamata Patchstick), è quella 
che ho utilizzato per modificare il mio sistema. Se avete anche voi
 necessità di creare questa chiavetta, potete scaricare lo script da 
questo link. Dovrete anche scaricare e installare l'ultimo aggiornamento
 da Apple, a questo link. Una volta scaricati i file, basterà seguire le 
istruzioni presenti nel file zip.
Fate attenzione, lo script per la creazione della Patchstick funziona 
senza problemi con un sistema Apple OS X. Per Windows e Linux 
la procedura è un po' più complicata. Potete trovare le istruzioni qui.
Dopo aver creato la Patchstick, dovrete semplicemente inserirla
 nella vostra ATV e accenderla. Se tutto è andato per il meglio, 
si visualizzerà una schermata piena di errori, come potete vedere
 dall'immagine.
Niente paura per gli errori, sono inoffensivi e non si ripeteranno più.
Awkward TV
Dopo che il boot è ultimato, rimuovete la chiavetta USB e riavviate 
l'ATV. Se tutto funziona, vi ritroverete al menù principale dell'Apple TV,
 con in più una nuova voce "Awkward TV".
Questo plugin è progettato per scaricare e installare altri plugin, 
nonché per avviare la sshd daemon e un file server AFP.
Come vedete dall'immagine, ho abilitato sia la SSH che il server 
AFP. Tuttavia ora siamo di fronte a un'altra difficoltà. Quando 
l'Apple TV fu presentata, erano presenti molte funzionalità inutilizzate. 
Ma l'aggiornamento alla versione 1.1 rimuoveva molte di queste 
funzionalità, tra cui il server AFP. Apple non ha solo rimosso parte 
dei file, ma ha rimosso le funzionalità anche dal kernel stesso.
Per esempio, con la versione 1.0, era possibile fruire in maniera 
remota di file su un sistema Windows tramite la linea di commando 
ssh. Dopo l'aggiornamento, questo supporto è stato rimosso dal
 kernel, rendendo ora la condivisione file con Windows più difficile - 
ma non impossibile.
La Patchstick supporta sia la versione originale che quella 
aggiornata, così da poter modificare il sistema anche se è già 
stato aggiornato alla versione 1.1. Tuttavia, se state utilizzando
 un'ATV venduta direttamente con la versione 1.1, sarà più 
difficile per abilitare le funzionalità aggiuntive.
Alternativamente potete utilizzare l'opzione di "ripristino 
impostazioni di fabbrica" dal menu "impostazioni" per tornare 
alla versione 1.0, dopodichè potrete aggiungere selettivamente
 i miglioramenti della versione 1.1, come il supporto per 
YouTube. Questo processo è descritto qui ed è la strada 
che ho deciso di seguire.
Dopo aver abilitato la SSH, potete loggarvi nell'ATV con 
l'utente frontrow e password frontrow. Dalla linea di 
comando, il comando di login sarà:
# ssh frontrow@AppleTV.local 
Notate l'utilizzo del dominio .local. Dopo che il demone
 SSH è attivo, si identificherà sulla rete in maniera autonoma 
tramite il protocollo standard Apple. Per gli utenti Windows e 
Linux la situazione è un po' differente, dato che dovrà essere 
determinato precedentemente l'indirizzo IP per il login. 
Allo stesso modo, potete muovere i file utilizzando il comando di 
copia scp o tramite il server AFP.
Plugins
Cos'è possibile fare dopo aver abilitato il supporto ssh e 
l'accesso alla linea di comando? Per iniziare, io ho montato 
il NAS presente sulla mia rete per espandere le potenzialità di 
archiviazione.
Con la versione 1.0 è tutto abbastanza semplice, poichè supporta 
le condivisione con Windows, AFP e NFS. Con la versione 1.1 è più 
complicato. Come già menzionato, il supporto nativo per le reti 
Windows è disabilitato, quindi dovete affidarvi a un supporto 
esterno nel caso di Windows. Per le condivisioni NFS potete
 utilizzare il comando presente in un altro sistema OS X e riabilitare 
il supporto AFP.
C'è da fare qualche sforzo in più per montare automaticamente le 
condivisioni di rete, ma la via più semplice è di mettere il comando 
necessario in uno script che verrà avviato nella fase di boot 
chiamato /etc/rc.local.
Per facilitare molte azioni, il sito AwkardTV.org mette a disposizione 
una lunga lista di funzionalità. Quello che però stavo cercando era 
un modo per estendere la compatibilità video del prodotto, cioè una
 maniera per utilizzare altri codec.
Una fonte popolare di codec compatibili con OS X 
è Perian (http://perian.org/). Ci sono codec per molti formati, 
tra cui i più popolari XviD e DivX. Se avete Perian già installato 
sul vostro Mac, e avete utilizzato lo script Patchstick, i codec sono
 già stati trasferiti sull'Apple TV durante la fase di boot della Patchstich. 
In caso contrario, dovrete scaricare e installare il Perian sul Mac, 
e poi copiare la diectory/Library/QuickTime/Perian.component 
nella stessa posizione sull'Apple TV.
Notate che Perian.component è la directory, non un singolo file, 
quindi dovrete effettuare una copia ricorsiva per spostarlo. 
Quando aggiungete manualmente il componente alla directory 
di sistema sull'ATV, dovrete effettuare alcuni passi.
Prima di tutto, la partizione primaria del sistema operativo deve 
essere montata in sola lettura. Dalla linea di comando dell'ATV dovre montare nuovamente la partizione dell'OS con questo comando:
# sudo mount -ow /
Sudo permette agli utenti senza privilegi, come Frontnow, di utilizzare comandi privilegiati.
Dopo aver installato i codec, verrebbe da pensare che ora 
sarà possibile riprodurre i file DivX o XviD, giusto? No, sbagliato.
 Sfortunatamente, il riproduttore dell'Apple TV ha già scartato tutti 
i file che non siano MPEG4 o H.264, e non c'è modo di sistemare 
questo problema. L'alternativa è di spostare i file manualmente 
sull'ATV, o di leggerli da un driver di rete installando un riproduttore 
alternativo.
Riproduttori multimediali alternativi
Ci sono tre interessanti riproduttori multimediali che possono 
essere usati: Sapphire, nitoTV e ATVFiles.
Tutte queste tre alternative hanno i loro pregi e difetti. Sapphire è 
specializzato per gli show TV e tiene traccia di quello che si è già 
visto. nitoTV opera al di fuori della sfera Quicktime e può essere 
adottato per vedere anche i DVD rippati dai file VOB. ATVFiles offre 
invece funzionalità generali. Tutti possono essere installati direttamente 
dal menù Awkward TV.
Nel mio caso ho avuto problemi con l'installazione automatica
 tramite il menu dell'Apple TV. Se succederà anche a voi, 
semplicemente scaricate il plugin da Awkwardtv.org, spostatelo 
sull'ATV, dezippatelo e rinominatelo nella directory /System/Library/CoreServices/Finder.app/Contents/PlugIns.
Infine, l'installazione manuale necessità il riavvio dell'Apple 
TV finder. Questa linea di comando dovrebbe fare al caso nostro:
$ sudo kill `ps -ax | grep [F]inder | awk '{print $1}'`
Dopo aver installato il plugin, verrà visualizzato nel menù con una nuova voce.
ATVFiles
In questa immagine potete vedere ATVFiles in opera. Questo plugin 
supporta la visualizzazione delle copertine dei film e le visualizza alla 
stessa maniera del menù film standard del'Apple TV. C'è anche la 
possibilità di gestire altri metadata, informazioni come il titolo, gli attori, 
l'anno d'uscita, il genere, etc. Quando metterete in pausa il film, 
l'immagine si rimpicciolirà e verranno visualizzate alcune informazioni. 
È un plugin molto carino che funziona anche molto bene.
Non ho avuto alcun problema a visualizzare i miei DivX o XviD, tra 
cui anche alcuni trailer in 720p trasferiti tramite connessione NFS. 
Siccome questo programma utilizza il framework QuickTime, tutti i 
comandi del riproduttore standard funzionano senza problemi. 
L'unico problema riguarda i lenti tempi di risposta nella visualizzazione 
di una directory contenente molto materiale.
Sapphire
Sapphire si comporta come ATVFiles, tranne che per dei menu 
addizionali in cui è possibile visuallizare i filmati non ancora visti 
o marchiare alcuni film come "visti", "da vedere", etc. 
Entrambi questi riproduttori riescono a gestire la mia 
completa collezione di film - eccezione fatta per quelli 
in MPEG1 e MPEG2. Apple vende un codec MPEG per circa 20$.
nitoTV
Non tutte le speranze riguardanti i file MPEG sono perse. 
nitoTV funziona all'esterno del formato QuickTime ed è dotato 
dei suoi codec. È in grado di visualizzare la maggior parte dei miei
 file, tra cui anche i film MPEG a definizione standard e i file VOB 
rippati dai DVD. Senza sorpresa, il tentativo di visualizzare un
 MPEG2 1080i è fallito, con molte pause e problemi di visualizzazione. 
L'hardware dell'Apple TV non è sufficiente per gestire i segnali 1080i.
Una negatività del nitoTV è che non è esteticamente molto bello da 
vedere. Inoltre, siccome non lavora con QuickTime, non può 
avantaggiarsi dell'accelerazione hardware utilizzata dai codec Apple.
 Permangono anche alcuni bug. Quando selezionate un film dal
 menù del nitoTV, per esempio, lo schermo diventa verde prima
 dell'avvio del film, mentre in alcuni casi il video partirà senza 
però essere visualizzato - si sentirà l'audio.
Crediamo che questi problemi verranno a breve sistemati, 
dato che il plugin è nei primi stadi di sviluppo. Ci sono anche 
voci di corridoio che dicono che il nitoTV potrà integrarsi 
presto con il framework standard Apple, e sarà in grado di 
rippare completamente un DVD.
Sincronizzazione
Ora che finalmente possiamo visualizzare praticametne tutti i film
 in circolazione, è ora di passare al prossimo obiettivo. Come già 
menzionato, la mia Apple TV da 160 GB è praticamente vuota per 
più della metà, dato che l'ho sincronizzata con un laptop con hard
 disk da 80 GB. Sarebbe belle poter effettuare la sincronizzazione 
dei contenuti con altri dispositivi, come dei NAS.
L'idea basilare è che l'Apple TV, periodicamente, controlli delle 
fonti esterne e sincronizzi autonomamente i nuovi contenuti. Lo 
strumento che utilizzo più spesso per questo tipo di attività si chiama rsync.
Rsync è un potente strumento che permette di effettuare veloci 
sincronizzazioni incrementali tra due directory, locale e remota. 
È disponibile per molte piattaforme, tra cui l'Apple OS X. 
Sfortunatamente non è incluso nell'Apple TV. Tuttavia, 
una veloce copia del codice binario di rsync dal sistema OS X 
alla directory /usr/bin/  dell'Apple TV risolve questo problema.
Successivamente, dovremo impostare lo script per definire la 
sincronizzazione. Per questo scopo, ho creato una sottodirectory
 per gli script nella directory home dell'utente Frontrow. 
Dentro questa directory ho creato il seguente semplice script,
 chiamato periodic.sh,  che definisce i miei trasferimenti.
#!/bin/sh
# Check to see if we are already running, if so exit
if test -e /tmp/time ; then echo "Already running"; exit 0; fi
# create a timestamp touch /tmp/time
local rsync -r jbuzbee@192.168.1.77:appleT
# synch from a remote system, to the VDropBox/ /Users/frontrow/Movies/local/ # remove the timestamp
rm /tmp/time
Questo script manca di qualche controllo di sicurezza, 
ma funziona.
Per far funzionare questo script senza problemi, dovrete 
impostare una relazione ssh aperta, senza necessità di password,
 tra l'ATV e il sistema remoto. A questo link potete trovare tutte
 le informazioni necessarie a tale proposito. Diamo per scontato
 che anche nella locazione remota sia presente una sessione ssh e rsync.
 Gli utenti OS X potranno semplicemente avviare il login remoto 
nelle preferenze di condivisione del sistema. Gli utenti Windows 
dovranno invece seguire una procedura Dopo aver impostato 
la relazione ssh, rendete lo script eseguibile (chmod +x periodic.sh)
 e provatelo qualche volta per assicurarvi che tutto funzioni senza 
la richiesta di password.
Dopo che avete verificato il funzionamento dello script, dovrete 
avviarlo periodicamente. Da vecchio utente Linux, la prima cosa
 a cui ho pensato è stata cron. Cron è un potente strumento 
progettato per avviare dei processi a intervalli prestabiliti. 
OS X include cron, ma ancora una volta non è presente nell'Apple TV. 
Apple ha anche abbandonato l'utilizzo di cron per un nuovo
 sistema, chiamato launchd , incluso nell'ATV. Tanto per imparare 
qualcosa di nuovo, ho deciso di scrivere un XML che faccia al caso
 mio. Il file XML è poi stato chiamato periodic.plist ed è stato inserito 
nella directory/Library/LaunchAgents/  dell'Apple TV. Di seguito 
riporto il contenuto del file XML:
Computer//DTD PLIST 1.0//EN"
/DTDs/PropertyList-1.0.dtd">
"http://www.apple.co
m
        Label
        test
        Program
        Users/frontrow/scripts/periodic.sh
        ProgramArguments
       
                Users/frontrow/scripts/periodic.sh
       
        RunAtLoad
       
        ServiceDescription
        periodic
        StartInterval
        1800
Questo file richiama il mio script e dice al demone launchd di avviarlo 
ogni 1800 secondi.
Il passo finale consiste nell'avviare lo script:
# launchctl load /Library/LaunchAgents/periodic.plist
Allo stesso modo, il comando "unload" permette di rimuovere lo script. 
Ora che tutto funziona, la mia Apple TV si sincronizzerà autonomamente
 con gli altri dispositivi della rete.
Conclusioni
La combinazione dell'interfaccia utente di Apple, con i plugin di 
AwkwardTV, hanno trasformato l'Apple TV in un sistema ideale. 
Tutti i file, nonché tutte le fonti, sono ora gestite senza problemi.
Al momento, l'unico punto negativo riguarda la mancanza del 
supporto ai segnali in risoluzione 1080, la vera alta definizione.
Alcuni potrebbero dire che utilizzare un PC con Microsoft 
Media Center sarebbe di gran lunga una soluzione più semplice
 e veloce. Tuttavia, per quello che mi riguarda, non voglio mettere in 
salotto un costoso, caldo e rumoroso PC, che necessità di 
riavviarsi dopo ogni aggiornamento automatico del sistema.
L'Apple TV è piccola, quasi completamente silenziosa, consuma 
solo 18W e costa circa 300 euro, meno di un PC.
Fonte:tomshw







Nessun commento:

Posta un commento

LinkWithin

Related Posts with Thumbnails