====== XBMC Media Center ====== Si è installata la versione Live scaricata da [[http://xbmc.org/download/]]. Si tratta di una **Ubuntu 10.04 LTS**, con gli opportuni pacchetti **XBMC versione 10.1 Dharma**. Dopo l'installazione è possibile eseguire tutte le operazioni **''apt-get''** per aggiornare l'installazione e aggiungere il software necessario. I repository Ubuntu e XBMC sono già configurati. ===== Installare un plugin video ===== Come installare un plugin video da un repository non ufficiale (quindi non compreso nell'elenco): - Aggiungere il repo installando l'opportuno file **''*-repo.zip''**. - Aggiungere il plugin ===== Modificare una skin ===== Le skin predefinite si trovano nelle directory **''/usr/share/xbmc/addons/skin.*''**, quelle scaricate dal repository ufficiale oppure installate da file .zip vengono installate in **''$HOME/.xbmc/addons/skin.*''**. Per aggiungere una skin all'elenco di quelle disponibili **non è sufficiente** creare la directory ''$HOME/.xbmc/addons/skin.*'', la strada più semplice è creare un file .zip e scegliere dal menu //Sistema//, //Add-ons//, //Installa da un file zip//. Ad esempio il file si può chiamare **''skin.conflu-hf-1.1.0.1.zip''** e deve contenere la directory **''skin.conflu-hf''** con tutta la gerarchia propria di una skin. Il file .zip può essere copiato in un punto qualunque del filesystem, che sia sfogliabile dalla funzione //Installa da un file zip//. L'installazione provvede a copiare il file zip in **''$HOME/.xbmc/addons/packages/''**, a scompattare il file .zip in **''$HOME/.xbmc/addons/''** e ad aggiungere la skin all'elenco di quelle disponibili. ==== Modificare la dimensione dei font ==== Anzitutto verificare qual'è la risoluzione predefinita della skin: nel file **''addon.xml''** cercare ''addon'', ''extension'' e vedere il valore dell'attributo **''defaultresolution''**. Se ad esempio è **''720p''** dovrebbe esistere una directory con lo stesso nome, quella contiene i file che vogliamo modificare. **''720p/Font.xml''** Si crea una nuova sezione ''%%%%'', con un **''id''** ed un **''idloc''** univoci. ... **''language/English/strings.xml''** Si dà un nome al fontset aggiungendo una **''%%%%''** con **''id''** opportuno: Huge fonts **''720p/Home.xml''** ===== Miniature ===== Se si vuole fornire una miniatura per un file video basta preparare un file .jpg con lo stesso nome del file video e modificare l'estensione da **.jpg** a **.tbn**. È possibile con lo stesso metodo anche assegnare una miniatura ad una directory. ===== Sorgenti e repository ufficiali ===== Il codice sorgente è navigabile su github: [[https://github.com/xbmc/xbmc]], si può clonare in locale con: git clone git://github.com/xbmc/xbmc.git L'[[http://wiki.xbmc.org/index.php?title=Official_Add-on_Repository|Official Add-on Repository]] è clonabile con: git clone git://xbmc.git.sourceforge.net/gitroot/xbmc/plugins git clone git://xbmc.git.sourceforge.net/gitroot/xbmc/scrapers git clone git://xbmc.git.sourceforge.net/gitroot/xbmc/screensavers git clone git://xbmc.git.sourceforge.net/gitroot/xbmc/scripts git clone git://xbmc.git.sourceforge.net/gitroot/xbmc/skins git clone git://xbmc.git.sourceforge.net/gitroot/xbmc/visualizations git clone git://xbmc.git.sourceforge.net/gitroot/xbmc/webinterfaces ===== Installazione XBMC 11.0 su Debian Squeeze (era Wheezy) ===== **ATTENZIONE:** ad oggi (2012-08-18) su **Debian Wheezy** viene installato XBMC da Git - cioè la futura versione 12 - sia utilizzando il repository ufficiale Debian che il repository **www.deb-multimedia.org**. Purtroppo la versione Git 12 di XBMC non appare ancora matura, abbiamo riscontrato i seguenti problemi: impossibile utilizzare il driver Alsa per l'audio, impossibile aggiungere directory dal menu Video -> Files, impossibile eseguire il plugin Youtube. Quanto basta per tornare indietro di corsa a Debian Squeeze! Un problema con il kernel 2.6.x di Squeeze è l'assenza di supporto ai sensori lm-sensors della scheda madre ASUSTeK E35M1-I DELUXE. Vedere questi ottimi tutorial: * **[[http://fw.hardijzer.nl/?p=104|XBMC on Asus AT5IONT-I using Debian]]** * **[[http://vincent.bernat.im/en/blog/2012-xbmc-debian-wheezy.html|XBMC Eden on Debian Wheezy]]** Si aggiunge il repository **deb-multimedia** a ''/etc/apt/sources.list'': deb http://ftp.it.debian.org/debian squeeze main non-free contrib deb http://www.deb-multimedia.org squeeze main non-free Quindi si installa il pacchetto **xbmc**. Non è necessario installare un ambiente desktop completo, è sufficiente il pacchetto **xinit**. ==== Driver video accelerato ==== È necessario installare il driver grafico accelerato per X, altrimenti l'interfaccia di XBMC risponde lentissima, quasi inusabile. Nel nostro caso (scheda video AMD nee ATI Wrestler Radeon HD 6310) significa configurare **''/etc/X11/xorg.conf''** con il driver **fglrx** e caricare il modulo kernel **fglrx**. Il modulo kernel deve essere compilato ripsetto al kernel in uso, per fortuna il sistema Debian fa tutto in automatico, basta seguire i passaggi: * Installare i pacchetti **fglrx-driver** e **fglrx-modules-dkms** da Debian non-free. * Verificare che vengano installati i pacchetti **linux-headers-*** relativi ai kernel installati. * Il pacchetto **build-essential** dovrebbe essere installato per dipendenza, e con questo il compilatore, ecc. In teoria l'infrastruttura DKMS (Dynamic Kernel Module Support) di Debian dovrebbe provvedere tramite gli script di postinst a compilare e installare il modulo kernel. Se qualcosa dovesse andare storto i passaggi per compilare il modulo kernel sono i seguenti (dove **12-3** è la versione del driver fglrx, **3.0.0-1-686-pae** è la versione del kernel e **i686** è l'architettura): dkms build -m fglrx -v 12-3 -k 3.0.0-1-686-pae -a i686 dkms install -m fglrx -v 12-3 -k 3.0.0-1-686-pae -a i686 dkms status -m fglrx -v 12-3 -k 3.0.0-1-686-pae -a i686 Questo è il file di configurazione **''/etc/X11/xorg.cong''** (vedere eventualmente il comando **''aticonfig(1x)''**): Section "ServerLayout" Identifier "aticonfig Layout" Screen 0 "aticonfig-Screen[0]-0" 0 0 EndSection Section "Module" EndSection Section "Monitor" Identifier "aticonfig-Monitor[0]-0" Option "VendorName" "ATI Proprietary Driver" Option "ModelName" "Generic Autodetecting Monitor" Option "DPMS" "true" EndSection Section "Device" Identifier "aticonfig-Device[0]-0" Driver "fglrx" BusID "PCI:0:1:0" EndSection Section "Screen" Identifier "aticonfig-Screen[0]-0" Device "aticonfig-Device[0]-0" Monitor "aticonfig-Monitor[0]-0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 EndSubSection EndSection ==== Watermark Logo Unsupported Hardware ==== Purtroppo il driver fornito dal pacchetto **fglrx-driver** (Debian Squeeze) non riconosce la scheda video integrata nella scheda madre **E35M1-I**, sebbene ne supporti il chip e quindi le funzionalità accelerate. Pertanto nell'angolo in basso a sinistra dello schermo X.org compare un logo sovraimpresso che indica "Unsupported Hardware". Si è trovata questa ricetta per patchare il driver binario e rimuovere il logo: [[http://phoronix.com/forums/showthread.php?19875-Unsupported-Hardware-watermark|Unsupported Hardware watermark]]. ==== Output audio via HDMI ==== Vedere i seguenti riferimenti: * **[[ftp://download.nvidia.com/XFree86/gpu-hdmi-audio-document/gpu-hdmi-audio.html|HDMI Audio on NVIDIA GPUs]]** * **[[http://unix.stackexchange.com/questions/29185/how-to-check-why-sound-over-hdmi-doesnt-work|How to check why sound over HDMI doesn't work]]** * **[[http://www.mythtv.org/wiki/User_Manual:HDAudioPassthrough|mythTV User Manual HD Audio Passthrough]]** Ottenere l'audio via HDMI non è immediato. Dopo aver installato i pacchetti **alsa-base** e **alsa-utils** verifichiamo con ''aplay'' che sia stata riconosciuta una periferica audio HDMI: aplay -l **** List of PLAYBACK Hardware Devices **** card 0: Generic [HD-Audio Generic], device 3: HDMI 0 [HDMI 0] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: SB [HDA ATI SB], device 0: ALC892 Analog [ALC892 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: SB [HDA ATI SB], device 1: ALC892 Digital [ALC892 Digital] Subdevices: 1/1 Subdevice #0: subdevice #0 si vede che il **device 3** della **scheda audio 0** è quello che ci interessa. Per far sì che le librerie audio ALSA utilizzino questa periferica come canale PCM di default è sufficiente creare il seguente file **''/etc/asound.conf''**: pcm.!default { type plug slave.pcm "dmixer" } pcm.dmixer { type dmix ipc_key 1024 slave { pcm "hw:0,3" } } Questa configurazione unisce le funzioni del plugin **plug** con quelle del plugin **dmix**; il primo effettua il resample dell'audio on-the-fly se necessario (ad esempio per suonare un brano mono sul device stereo), il secondo permette il downmixing di diverse tracce audio. Il downmix è fondamentale in XBMC se si vogliono eseguire altri programmi che fanno uso dell'audio (ad esempio con il plugin //Advanced Launcher//), altrimenti il device ALSA risulterebbe in uso esclusivo da parte di XBMC. Vedere [[wp>Advanced Linux Sound Architecture]] per alcune note sul downmixing. Con **''alsamixer''** verifichiamo che il canale non sia muto: tramite il tasto F6 assicuriamoci di aver selezionato la scheda audio 0 //Generic [HD-Audio Generic]//, il canale viene mostrato come controllo S/PDIF con la sola impostazione on/off. :!: **ATTENZIONE!** Deve essere in esecuzione **il server X** e non deve essere attivo il **salva-schermo**, altrimenti non si avrà alcun suono! Verificare che ELD (EDID like Data) riporti un monitor attivo, altrimenti l'audio non funzionerà: cat /proc/asound/card0/eld#0.0 monitor_present 1 Con i driver liberi Debian GNU/Linux è possibile che all'avvio il kernel non attivi l'audio su porta HDMI, questo il log per una AMD nee ATI Wrestler HDMI Audio (Radeon HD 6250/6310): HDMI status: Codec=0 Pin=3 Presence_Detect=0 ELD_Valid=0 In questo caso basta aggiungere **radeon.audio=1** alla command line del kernel per avere: HDMI status: Codec=0 Pin=3 Presence_Detect=1 ELD_Valid=1 Quando l'hardware viene riconosciuto e attivati si prova ad ascoltare un suono: aplay /usr/share/sounds/alsa/Front_Center.wav Per verificare la funzione di downmixing si prova a suonare due brani contemporaneamente. Dopo che il device ALSA default funziona, nel menu //System// -> //Settings// -> System -> //Audio output// di XBM si imposta come segue: ^ Audio output | HDMI | ^ Speaker Configuration | 2.0 | ^ Dolby Digital (AC3) capable receiver | No | ^ DTP capable receiver | No | ^ Audio output device | Defaults (ALSA) | in alternativa si potrebbe indicare: ^ Audio output device | Custom | ^ Custom audio device | ALSA:default | Se si volesse scegliere come dispositivo di output direttamente il device PCM, senza passare per il plugin //plug// (resampling, downmixing, ecc.), bisognerebbe indicare come dispositivo custom **''ALSA:hw:0,3''**. Nel nostro caso l'audio viene passato al televisore via HDMI, XBMC provvede all'eventualde decodifica e downmixing dei segnali [[wp>Dolby Digital|AC3]] o [[wp>DTS (sound system)|DTS]], ecc. Per questo motivo sono state disabilitate le opzioni //Dolby Digital (AC3) capable receiver// e //DTS capable receiver//. Nel caso in cui il dispositivo di output fosse capace di tale decodifica bisogna indicare il canale con il quale si comunica con esso //Passthrough output device//. ==== Altre impostazioni ==== Si crea **l'utente xbmc** che verrà usato per eseguire il programma al bootstrap. Come minimo l'utente deve appartenere al gruppo **audio**. Per l'audio che non funzionava? Basta creare il file **''~/.asoundrc''** per l'utente? Vedere meglio le istruzioni di cui sopra, forse c'è la soluzione. Per far partire XBMC al bootstrab si crea un file **''{{.:xbmc:xbmc.gz|/etc/init.d/xbmc}}''** e si modifica la riga in **''/etc/X11/Xwrapper.config''**: #allowed_users=console allowed_users=anybody Per consentire lo spengimento della macchina dal menu di XBMC si installano i pacchetti: * **upower** * **acpi-support** e si edita il file **''/var/lib/polkit-1/localauthority/50-local.d/custom-actions.pkla''**: [Actions for xbmc user] Identity=unix-user:xbmc Action=org.freedesktop.upower.*;org.freedesktop.consolekit.system.*;org.freedesktop.udisks.* ResultAny=yes ResultInactive=no ResultActive=yes ==== Problema audio suoni di sistema ==== Problema su Debian Wheezy con kernel **3.2.0-2-686-pae**: non funzionano i suoni di sistema (tasti freccia, ecc.). Tutto funziona regolare con il kernel 3.0.0-1-686-pae oppure con i kernel della serie **2.6.x** di Debian Squeeze. ==== Problema tastiera non US ==== Con una Debian Squeeze e una tastiera italiana correttamente configurata, XBMC eredita le impostazioni corrette. La tastiera è stata configurata in fase di installazione installando i pacchetti **keyboard-configuration** e **console-setup**. Con Debian Wheezy invece XBMC non riconosce la tastiera italiana; il problema si presenta nonostante che da sistema operativo si sia selezionata la tastiera **it**, eseguendo il comando **''dpkg-reconfigure console-data''**. Dalla console testuale la tastiera funziona correttamente. Il server X pare interpretare correttamente l'impostazione, infatti da una finestra ''xterm'' il comando **''setxkbmap''** risponde: setxkbmap -query rules: evdev model: pc104 layout: it tuttavia per rendere effettiva la mappa italiana è necessario eseguire: setxkbmap it Probabilmente lo script di avvio **''/etc/init.d/xbmc''** - eseguendo direttamente **''xinit''** - salta qualunque impostazione Debian relativa alla tastiera. Per la verità non abbiamo proprio installato né un login manager né un display o window manager e di conseguenza neanche ''Xsession'' viene eseguito. Per ovviare al problema abbiamo creato lo script **''/usr/local/bin/xbmc-setxkbmap''** che contiene: #!/bin/sh -e # Test if the program can run ($DISPLAY, permission, etc). setxkbmap -query > /dev/null # Get current X keyboard layout. layout="$(setxkbmap -query | awk '/^layout:/ {print $2}')" test -n "$layout" || layout=us # Set keyboard layout. setxkbmap "$layout" || setxkbmap us quindi si è modificato **''/etc/init.d/xbmc''** in modo che al posto di ''/usr/bin/xbmc'' esegua lo script **''/usr/local/bin/xbmc-xbmc''**: #!/bin/sh /usr/local/bin/xbmc-setxkbmap exec /usr/bin/xbmc $@ ==== Lanciare xterm ==== Anzitutto si è fatto in modo di poter lanciare ''xterm'' da root lanciando **''startx''** (ovviamente bisogna aver fermato il servizio ''xbmc''). Basta predisporre il file **''/root/.xinitrc''**: #!/bin/sh # Set keyboard layout. /usr/local/bin/xbmc-setxkbmap # Start an xterm. exec xterm -font 12x24 -geometry 113x31 Per lanciare ''xterm'' dal menu //Programs// di XBMC si è installato il plugin **[[http://code.google.com/p/xbmc-advanced-launcher/|Advanced Launcher]]** e quindi si è collegato lo script **''/usr/local/bin/xbmc-xterm''**: #!/bin/sh if [ -f /etc/default/locale ]; then source /etc/default/locale else LANG=en_US.UTF-8 fi export LANG cd exec xterm -font 12x24 -geometry 113x31 -e /bin/bash -l Per avere come shell predefinita ''bash'' invece di ''dash'' si è eseguito: dpkg-reconfigure dash che usa il meccanismo Debian delle //[[http://www.debian.org/doc/debian-policy/ap-pkg-diversions.html|diversion]]//. ===== Ottimizzazioni ===== ==== Problema di timing: scorrimento testo e slideshow ==== Con le impostazioni predefinite (XBMC 11.0 su Debian Squeeze) si presentava un vistoso problema di timing che affliggeva lo scrolling del testo (ad esempio nel testo scorrevole del feed RSS) e nello slideshow delle immagini (particolarmente vistoso se si attiva l'effetto pan/zoom). In pratica il movimento non era fluido ma avanzava a scatti. La [[http://forum.xbmc.org/showthread.php?tid=140060|richiesta di help sul forum]] non ha avuto molto seguito, per fortuna ho scoperto che basta modificare l'impostazione //System// -> //System// -> //Video output// -> //Vertical blank sync// in **Always enabled** invece di //Let driver choose//. ==== Problema di fluidità nelle scene di pan veloce ==== Con le impostazioni predefinite si notava qualche artefatto nelle scene di pan veloce, come se la scheda video non riuscisse a stare dietro al refresh del video. In pratica si notavano degli scatti nel video che risultava come suddiviso in strisce orizzontali. Modificando alcune impostazioni il problema si è notevolmente ridotto. In particolare queste sono le impostazioni di //System// -> //Video// -> //Playback//: ^ Render method | Auto detect | ^ Allow hardware acceleration (VDPAU) | On | ^ Allow hardware acceleration (VAAPI) | On | ^ Adjust display refresh rate to match video | Off | ^ Sync playback to display | On | ^ A/V sync method | Video clock (Resample audio) | ^ Allowed error in aspect ratio to minimize black bars | None | ^ Display 4:3 videos as | Normal | ^ VDPAU Studio level color conversion | Off | ^ Activate Teletext | On |