mardi, mars 10, 2009

XBMC use Shuttle VFD with LCDProc on Mythbuntu/Xubuntu

CONTEXTE:

XBMC installé sur Mythbuntu 8.10 (Xubuntu 8.10) dans un barebone de Shuttle incluant un affichage LCD en façade.

Modèles Shuttle potentiellement concernés :
SD32G5, SD30G2B, SG31G2B, SD36G5, SG33G5, SG33G6, SK22G2 ,SN68SG2, SN68PTG5, SN68PTG6 Deluxe ,SN21G5, SN95G5
LCD présent par défaut ou après achat du kit PF27 (http://eu.shuttle.com/DesktopDefault.aspx/tabid-123/241_read-13739/)

Version XBMC : from PPA SVN BUILD : XBMC Pre-9.04 R18324, MAR 7 2009




HOW-TO:

XBMC supporte le pilotage de LCD via LCDProc. (http://lcdproc.org)
LCDProc possède un pilote pour le LCD des boitiers Shuttle depuis mi-fin 2007 dans ses dépots CVS.
Le paquet LCDProc a disposition d'ubuntu/debian est le 0.5.2 et ne dispose pas du pilote pour LCD Shuttle

Vérification du support du LCD Shuttle
lsusb
On doit avoir ID 051c:0005 ou ID 051c:0x0003


Compilation de LCDProc (depuis les sources CVS)
wget http://lcdproc.sourceforge.net/nightly/lcdproc-CVS-current.tar.gz
tar xvf lcdproc-CVS-current.tar.gz
cd lcdproc-CVS-current.tar.gz

sudo apt-get install libusb-dev xmlto libncurses5-dev libsvga1-dev libxosd-dev
./configure --help
./configure --enable-drivers=shuttleVFD
make
sudo make install


Installation du démarrage automatique
sudo cp scripts/init-LCDd.debian /etc/init.d/LCDd
sudo cp scripts/init-lcdproc.debian /etc/init.d/lcdproc
sudo chmod 655 /etc/init.d/LCDd
sudo chmod 655 /etc/init.d/lcdproc
sudo update-rc.d LCDd defaults


Editer /usr/local/etc/LCDd.conf
DriverParth=/usr/local/lib/lcdproc/
Driver=shuttleVFD
ServerScreen=no
Hello="Welcome to XBMC"


Démarrage
sudo /etc/init.d/LCDd start





DANS XBMC:
Dans les paramètres systèmes, LCD : choisir Type LCD = LCDproc


Editer ~/.xbmc/userdata/LCD.xml
<lcd>
<music>
<line>* $INFO[MusicPlayer.Artist] * $INFO[MusicPlayer.Title] ** $INFO[Player.Time]/$INFO[Player.Duration] ** $INFO[System.Time] *</line>
</music>
<video>
<line>* $INFO[VideoPlayer.Title] ** INFO[Player.Time]/$INFO[Player.Duration] ** $INFO[System.Time] *</line>
</video>
<general>
<line>* $INFO[System.Time] ** $INFO[System.Date] *</line>
</general>
<screensaver>
<line>* $INFO[System.Time] ** $INFO[System.Date] *</line>
</screensaver>
</lcd>



Editer ~/.xbmc/userdata/advancedsettings.xml

<lcd>
<rows>1</rows> <!-- Number of rows to use for the LCD. -->
<columns>20</columns> <!-- Number of columns to use for the LCD. -->

<address1>0</address1> <!-- Memory address for row 1. -->
<address2>20</address2> <!-- Memory address for row 2. -->
<address3>64</address3> <!-- Memory address for row 3. -->

<address4>84</address4> <!-- Memory address for row 4. -->
<heartbeat>true</heartbeat> <!-- Enables LCDprocs heartbeat symbol. Defaults to false. -->
<scrolldelay>2</scrolldelay> <!-- Delay of the scroller widget. Defaults to 1. -->

</lcd>





AMELIORATIONS:

Une meilleure programmation de LCD.xml, notemment avec la prise en compte des icônes du LCD des shuttle.
- Le header (.h) du driver du shuttleVFD avec les codes pour les icones : http://lcdproc.cvs.sourceforge.net/viewvc/lcdproc/lcdproc/server/drivers/shuttleVFD.h?view=markup
- Le détail des codes pour LCD.xml : http://xbmc.org/wiki/index.php?title=LCD.xml

XBMC dans Mythbuntu - Xubuntu et partage réseau SMB (en mode user=security)

XBMC inclut son propre client SMB. La version 3.0.23a de libsmbclient figure dans les sources. Cette version peut poser de multiples problèmes d'accès aux répertoires (samba en mode share/user, kerberos, ntlm etc..)

PROBLEME :
Quand XBMC tente d'accèder à des partages samba, deux cas se présentent :
En mode security = share, XBMC n'a aucun problème avec les partages public ou privés et ne nécessite pas d'utiliser fusesmb. L'utilisation de l'ajout d'une source de type smb:// avec renseignement du login/pass le cas échéant suffit amplement.
En mode security = user, XBMC ne sait pas gérer ce type de source smb://


SOLUTION :
La solution de créer des points de montage via CIFS dans /etc/fstab ne résout pas le problème : XBMC on ne peut pas accéder au contenu des points de montage de type CIFS, pour une raison inconnue

Une des solutions, en attendant que les développeurs de XBMC intègre une version plus récente de la libsmbclient (http://xbmc.org/trac/ticket/5653), consiste à passer par un point de montage FUSESMB.


CONTEXTE:
Ma configuration est une installation de XBMC (version SVN PPA : XBMC Pre-9.04 R18324, MAR 7 2009) dans Mythbuntu 8.10 (Donc dans xubuntu 8.10)
A noter qu'ici XFCE est le gestionnaire de fenêtre et Thunar le gestionnaire de fichiers. Le serveur de partage est samba 3.0.24 sur une Debian 4.0 etch.

Le serveur samba partage des répertoires à accès public et privés. Les répertoires privés sont visibles (browseable=yes)
Il est en mode security = user et passdb backend = tdbsam (notamment à cause de la nécessité d'accès à ce serveur par un poste Vista)

Samba est installé et configuré sur la machine XBMC.




HOW-TO:

Installation fuse/fusesmb
sudo apt-get install fuse-utils libfuse2 fusesmb

Creation du point de montage
cd ~
mkdir -p Network


Ajout de l'utilisateur au groupe fuse
sudo gpasswd -a $USER fuse


NOTE BUG:
Il y a un bug identifié qui fait que fusesmb ne fonctionne pas correctement, comme par exemple monte les répertoires réseaux et les fait disparaitre quelques minutes après.
L'erreur provient d'une erreur dans libsmbclient qui surgit à l'utilisation de fusesmb.
https://bugs.launchpad.net/ubuntu/+source/fusesmb/+bug/198351
https://bugs.launchpad.net/ubuntu/+source/samba/+bug/290673
Solution :
downgrader le package avec la version contenue dans ubuntu hardy (8.04) => libsmbclient 3.0.28a au lieu de libsmbclient 3.2.3
Utiliser smbnetfs ne résout rien car il comporte la meme erreur vu qu'il repose lui aussi sur la même version de libsmbclient.


Downgrade de libsmbclient

Télécharger et décompresser le .deb de la 3.0.28a depuis http://packages.ubuntu.com/hardy-updates/libsmbclient puis
sudo mv /usr/lib/libsmbclient.so.0 /usr/lib/libsmbclient.so.0.bak
sudo cp /CONTENTS/usr/lib/libsmbclient.so.*
sudo ldconfig




Génération des fichiers de configuration

On les efface en premier lieu pour mieux gérer la configuration du cache, et éviter quelques bugs.
cd ~
rm .smb/
fusesmb Network && fusermount -u Network



Créer-éditer ~/.smb/smb.conf
Dans le cas où l'on souhaite accèder également à un serveur en mode security=share : La navigation dans le point de montage d'un serveur en mode share dans des répertoires demandant une authentification nécessite d'activer l'authentification lanman. (NOTE : il faut que les definitions de ces repertoires contiennent browseable=yes, available = yes, public = no)
[global]
workgroup = WORKGROUP
client lanman auth = yes #si on veut accéder à un serveur samba en mode share -reporter cette ligne eventuellement egalement dans /etc/samba/smb.conf-



Créer-éditer ~/.smb/fusesmb.conf
A adapter.
; Global settings
[global]

; Default username and password
username=user
password=totallysecret

; List hidden shares
showhiddenshares=true

; Connection timeout in seconds
timeout = 10

;Interval for updating new shares in minutes
interval = 0

; Share-specific settings
[/SERVER/SHARE]
username=john
password=doe

; Server-specific settings
[/SERVER]
username=jane
password=doe


Droits du fichier
chmod 600 ~/.smb/fusesmb.conf


Montage du réseau
fusesmb Network

Pour le faire démarrer automatiquement au démarrage de la session X
Applications > Settings > Autostarted Applications > ajouter une application qui sera la ligne de commande suivante : fusesmb Network


Dans Thunar :
Pour accèder au voisinage réseau, il suffit alors de naviguer dans le répertoire Network de son home. On peut éventuellement créer un lien de Network dans les raccourcis de Thunar

Dans XBMC:
Il suffit d'ajouter une source pointant sur /home/user/Network/WORKGROUP/SERVER/SHARE