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.
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ù.
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.
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.
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 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$.
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.
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.
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.