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.
Come installare un plugin video da un repository non ufficiale (quindi non compreso nell'elenco):
*-repo.zip
.
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.
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 <fontset>
, con un id
ed un idloc
univoci.
<fontset id="Huge" idloc="31393" unicode="true"> ... </fontset>
language/English/strings.xml
Si dà un nome al fontset aggiungendo una <string>
con id
opportuno:
<string id="31393">Huge fonts</string>
720p/Home.xml
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.
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'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
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:
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.
È 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:
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
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: Unsupported Hardware watermark.
Vedere i seguenti riferimenti:
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 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 AC3 o 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.
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 /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:
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 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.
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 $@
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 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 diversion.
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 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.
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 |