BodhiLinux sur un ExoPC Slate
ExoPC est une sympatique société canadienne qui vends du matos bien sympa bien que sur une archi x86 à base d’Atom de nos amis d’Intel. (Tiens, chpo, elle est pour toi celle la, mange ton caca ^^). Regardons un peu la Slate
Ca marche sous SaleOS, c’est même livré avec, mais avec un autre OS ?
Les gens qui suivent un peu les Hackathons d’Intel ou les OS fonctionnant avec ce matos savent que ca marche sous Windows, MeeGo (enfin aussi bien que MeeGo fonctionne).
L’idée est de voir ce que cela donne avec un Linux.
Le hardware est en gros un PC. c’est du x86 (Atom) avec du Stockage SSD en ATA, du intel en graphique et du broadcom pour le wireless (Wifi et bluetooth). On peut donc en theorie mettre un peu n’importe quoi dessus du moment que ca marche sur PC de Mme Michu.
Mais …
c’est une tablette et donc, il n’y a pas de clavier, juste un touchscreen. Un clavier USB est nécessaire pour les installs.
Apres un rapide tour d’horizon, j’en arrive à la conclusion suivante :
- Windows marche
- Linux marche ( MeeGO ou un truc standard )
- Android en version x86 marchotte (pas pu vraiement testé, le gars qui a fait l’image a omis le support USB pour le clavier de l’installateur, balot hein ?).
Cependant, les linux ont un problème majeur, il n’y a pas vraiement d’interface réelement utilisable avec un gros doigt boudiné, Ubuntu, apres bricolage fonctionne mais c’est lent avec 10.01 et 11.04, avec 10.04 ca marche MAIS le ppa de utouch n’a plus de support pour cette version qui est pourtant une LTS. Debian marche mais faut reinventer la roue. MeeGo, bon comment dire, c’est pas vraiement mature, y’a qu’a voir la FAQ d’Intel pour les devs.
Durant mes longues péligrinations, je suis tombé sur Bodhi Linux qui à vocation à fournir un distro minimaliste mais qui a de la gueule pour les netbook/tablette/laptop et c’est avec du e17 dedans.
Principaux avantages de Bodhi :
- un clavier virtuel qui marche !
- Elfe (la couche tablette d’e17) est utilisable
Principal désavantage :
- Les puristes vont hurler qand ils verront le sources.list :)
Je ne vais pas revenir sur comment installer l’iso sur l’exopc, c’est trivial, intéressons nous plutôt à ce qui fonctionne et qui ne fonctionne pas ;)
J’utlise le profil tablet qui me fournit un desktop avec Elfe (le desktop pour tablet du projet E17)
Les “bidouilles” ci dessous sont principalement des workarounds que j’ai appliqué histoire d’avoir un truc qui marche. Oui par moment c’est pas tres classe, oui y’a mieux ;)
Touchscreen, WiFi, driver graphique Intel, driver son, webcam
Ça marche out of the box. Cool, /me ondule problème suivant !
Bouton ACPI
Quand on met en veille la tablette via le bouton ACPI (le gros bouton power bleu derriere) , on se mange un joli power-off, j’ai pas cherché plus que cela, la gestion ACPI d’E17 ne semble pas fonctionner correctement, j’ai donc poser un petit workaround dans le /etc/acpi. Il faut noter qu’acpi_listen ne voit pas l’event…
#On se garde l'origine sous le coude
mv /etc/acpi/power-btn.sh /etc/acpi/powerbtn.sh.ORI
#On remplace par une copie du script de suspend.
cp /etc/acpi/sleep.sh /etc/acpi/powerbtn.sh
Comme ca, quand on appuie, on passe en veille (un pm-suspend)
Capteur de luminosité
Sur la batterie, j’ai trouvé comment desactiver la luminosité auto, mais pas encore comment la regler sur batterie. sur secteur, l’ajout de la commande suivante dans le /etc/acpi/power.sh
permettra de mettre la luminosité à fond lors du branchement sur le secteur.
#!/bin/sh
test -f /usr/share/acpi-support/key-constants || exit 0
. /usr/share/acpi-support/policy-funcs
if [ -z "$*" ] && ( [ `CheckPolicy` = 0 ] || CheckUPowerPolicy ); then
exit;
fi
#### AJOUT ####
echo 15 > /sys/class/backlight/acpi_video0/brightness
#############
pm-powersave $*
sur batterie, pour se débarasser si besoin de l’autoajustement, un petit echo 0 bien placé, une fois sur batterie fera l’affaire. Un fois desactivé, la methode ci-dessus ne fonctionne pas, il paraitrait que xbacklight fonctionne, j’ai pas encore testé. Il faut se débrouiller pour obtenir la luminosité désirée puis un petit echo bien placé :
echo 0 > /sys/devices/platform/asus_laptop/ls_switch
Pour retourner à l’etat normal, echo 1 ou rebrancher l’alim.
EDIT : xbacklight ne semble pas marcher non plus.
CrystalHD
Un peu de compil est nécessaire, en se basant sur les howto existants
On recupere les sources (j’ai mis un snapshot là des fois que)
git clone git://git.wilsonet.com/crystalhd.git
#On compile la lib
cd crystalhd/linux_lib/libcrystalhd/
make
make install
#On compile le module
cd ../../driver/linux/
autoconf
./configure
###### SUR UN KERNEL RECENT , GENRE 3.2 AMD64
sed -i 's/-Werror/-Wno-error=implicit-function-declaration/g' Makefile.in
make
make install
./bcm_70012_run.sh
#On a le driver, on va faire un tour pour gstreamer
cd ../../filters/gst/gst-plugin/
autoconf
./configure
make
make install
#Normalement on a tout
Il existe un git pour avoir un mplayer qui supporte CrystalHD mais c’est pas encore ça d’apres mes tests. VLC ne supporte pas la carte, XBMC la supporte.
Sortie HDMI
alors la, va y a voir du lulz, ca se complique un peu. Le HDMI de la tablette n’est pas fourni par le driver graphique, vous pouvez donc vous assoir avec grâce, tact et délicatesse sur les methodes connues (a base de xrandr etc ..).
J’ai reussi a faire un truc en partant des seuls gars que j’ai trouvé (et qui parlent cette belle langue chantante qu’est l’allemand) et en allant chercher un vague driver pour le chip Chrontel 7036 qui s’occupe de cela. La FAQ MeeGo cite d’ailleurs cette thead en de_DE.
MAIS C’EST UN PIEGE ! Les drivers WeTab sont tout bricolé pour etre QTifiés.
Apres moulte recherches, on trouve un truc dans les 3rd parties de ChromiumOS. Un snap du git est dispo ici
#on git
git clone http://git.chromium.org/chromiumos/third_party/chrontel.git
make
#on recupere les deux binaires
cp ch7036_monitor /usr/local/bin/hdmi-daemon
cp ch7036_debug /usr/local/bin/hdmi-debug
il faut brancher le device HDMI avant de lancer le daemon. Sur ma samsung 1080p FullHD, ca passe tout seul apres quelques secondes, sur ma Samsung HDReady 720p, les EDIDs sont foireux, j’arrive à avoir un truc pas trop moche avec /usr/local/bin/hdmi-daemon -M6 -v
/usr/local/bin/hdmi-debug
file de l’info sur de qu’il se passe et /usr/local/bin/hdmi-daemon
a un -h
pas trop mal fourni.
Accelerometre
Il existe un patch pour le ADXL345/346 d’Analog Devices, mais j’ai pas encore testé.
Rotation de l’écran
xrandr -o
permet bien de basculer l’ecran, mais le touchscreen ne l’est pas. touchscreen-helper
ayant aussi un ppa lacunaire, on va recuperer les sources et les compiler
wget http://ppa.launchpad.net/plippo/t101mt/ubuntu/pool/main/t/touchscreen-helper/touchscreen-helper_0.0.1.orig.tar.gz
tar xzvf touchscreen-helper_0.0.1.orig.tar.gz
cd touchscreen-helper
make
make install
et la le xrandr va orienter le touchscreen de facon cohérente.
Notez quand même que le clavier virtuel, lui, se tape une barre.
Bluetooth
A tester / j’ai des pistes
Hot button
Encore rien trouvé, si vous avez des idées … OMADIKE c’etait un event ACPI mais je ne trouve rien de particulier.
Tips de confs
XBMC et libSDL
La libSDL kiffe pas des masses les touchscreens, ceci est principalement dû au fonctionnement du système de pointage qui revoie des ccordonées relatives et non absolue, il suffit donc de prevenir SDL avec un simple export. A priori, elle ne veut pas se retrouver system-wide, du coup j’ai mis un petit script dans /usr/bin/xbmcRUN
#!/bin/bash
export SDL_MOUSE_RELATIVE=0
/usr/bin/xbmc
exit $?
ensuite, on modifie le /usr/share/applications/xbmc.desktop
en replacant
Exec=xbmc
par
Exec=xbmcRUN
EDIT : Tips fonctionnant avec un peu tout les trucs a base de libSDL (genre ScummVM
)
Chrom{e,ium} et la navigation au doigt.
Par défaut, c’est midori, c’est bien mais au doigt, c’est coton, Firefox le gere depuis la 4.0 qui n’est pas dans les depots founit. Reste Chrome qui avec l’extention “ChromeTouch” fait tres bien son taff.
Sources
En plus des liens inline, quelques ressources qui m’ont servi
- http://www.phlerion.com/blog/exopc/
- http://www.phlerion.com/blog/exopc/exopc-ubuntu/
- irc://irc.freenode.net/#bodhilinux