On Laptop MSI CR600, device PNP0C0A (corresponding to battery) does not appear in /proc/acpi/battery nor in /sys/bus/acpi/drivers/battery/ with Linux 2.6.28.9.
mardi, juin 16 2009
Battery not detected on MSI CR600
Par Jérôme Pouiller le mardi, juin 16 2009, 12:15 - Contributions
lundi, juin 15 2009
Ajout du support 2.6.28 sur EB8541
Par Jérôme Pouiller le lundi, juin 15 2009, 17:41 - Technique
- Ajout de la gestion d'un FPGA spécifique intégrant:
- Gestionnaire d'interruption,
- Watchdog
- Quelques gpio
- Bus i2c
- Description de la carte accessible par le bus i2c
- Ajout de la gestion d'un bootloader encore non supporté par le noyau: NetBootLoader
- 4 ports ethernet avec le support de MDIO (2x100Mbps + 2x1Gbps)
- Gestion d'une mémoire Flash
- Ajout de la gestion d'un second bus i2c et sur celui-ci:
- une DRAM
- une sonde de température
- un RTC
- Gestion d'un bus PCI
- 6 ports RS232
- Gestion d'une interface IDE (lecteur de cartes compact flash)
mardi, juin 2 2009
MSI WMI support
Par Jérôme Pouiller le mardi, juin 2 2009, 12:56 - Contributions
Buttons on MSI WindTop AE1900-WT (also called MS-6638) are currently not supported on Linux 2.6.28.9.
After long time of investigations, I found these buttons are handled by WMI. I wrote a WMI module for MSI.
Currently, there is an issue with interrupts. Buttons send between 25 and 30 interrupts when they are pressed. Kernel should forward only one event for each key press.
In add, this module should support Brightness.
vendredi, mai 29 2009
Hue control not properly detected on webcam BisonCam, NB Pro (5986:0241)
Par Jérôme Pouiller le vendredi, mai 29 2009, 12:33 - Contributions
Using Kernel 2.6.28.9, webcam BisonCam, NB Pro (5986:0241) on MSI WindTop AE1900-WT (also called MS-6638) is badly detected.
After some investigation, I found uvcvideo driver answers EIO when
libv4l do VIDIOC_QUERYCTRL, with a particular id: 0x980903. This id
seems correct and correspond to "Hue" control.
Also, dmesg says:
uvcvideo: Failed to query (135) UVC control 6 (unit 5) : -32 (exp. 2).
Error 32 corresponds to EPIPE ("Stalled endpoint").
I wrote a workaround in libv4l :
--- libv4l-0.5.8.orig/libv4l2/libv4l2.c
+++ libv4l-0.5.8/libv4l2/libv4l2.c
@@ -740,0 +740,6 @@
+ // Jezz: Fix bug with '5986:0241 BisonCam, NB Pro'
+ if (request == VIDIOC_QUERYCTRL && result != 0 && errno == EIO) {
+ struct v4l2_queryctrl *queryctrl = arg;
+ if (queryctrl->id == 0x980903)
+ errno = EINVAL;
+ }
This workaround work fine, so problem exists only with this id.
Nevertheless, it is not a perennial solution. Laurent Pinchart wrote a better patch that I have adapted for 2.6.28.9.
Notice this problem seems specifics to this computer, not to this webcam. You can find there program I wrote to test this bug.
See also http://lists.berlios.de/pipermail/linux-uvc-devel/2009-May/004795.html
lundi, mai 25 2009
Utilisation d'apt-get dans un environnement multi-architecture
Par Jérôme Pouiller le lundi, mai 25 2009, 12:42 - Technique
Je recherchais un outil capable de facilement récupérer des paquets (binaires ou sources) Debian provenant de dépôts multiples (architectures ou distributions). Il me semblait qu'il n'y avait rien capable de me satisfaire aujourd'hui. Puis, je me suis rappelé de la puissance des fichiers de configuration d'apt. Finalement, apt répond parfaitement à mes besoins.
Il est possible de spécifier des options de configuration sur la ligne de commande. Il suffit de modifier Dir pour que apt utilise un autre répertoire comme racine. L'option Dir::State::status est particulière car c'est un chemin absolu. Nous devons la modifier aussi:
apt-get -o Dir=/tmp/woody-ppc -o Dir::State::status=/tmp/woody-ppc/dpkg_lib/status update
Vu que je ne souhaite pas avoir une arborescence complète, j'ai aussi modifier les autres chemins afin d'avoir une arborescence moins profonde:
apt-get -o Dir=/tmp/woody-ppc -o Dir::State::status=/tmp/woody-ppc/dpkg-lib/status Dir::Etc=etc -o Dir::State=apt-lib -o Dir::Cache=apt-cache update
Apt ne fonctionnera pas si les répertoires n'existent pas:
mkdir -p /tmp/woody-ppc/etc mkdir -p /tmp/woody-ppc/apt_lib/lists/partial mkdir -p /tmp/woody-ppc/apt_cache/archives/partial mkdir -p /tmp/woody-ppc/dpkg_lib touch /tmp/woody-ppc/dpkg_lib/status
Et bien entendu, il nous faut un fichier /tmp/woody-ppc/etc/sources.list valable:
cat << EOF > /tmp/woody-ppc/etc/sources.list deb http://archive.debian.org/debian/ woody contrib main non-free deb http://archive.debian.org/debian/ woody contrib main non-free EOF
Enfin, l'option APT::Architecture nous permet d'obtenir les paquets d'une autre architecture:
apt-get -o Dir=/tmp/woody-ppc -o Dir::State::status=/tmp/woody-ppc/dpkg_lib/status Dir::Etc=etc -o Dir::State=apt_lib -o Dir::Cache=apt_cache -o APT::Architecture=ppc update
J'ai créé un fichier de configuration pour abréger cette ligne. Il me suffit maintenant de faire:
apt-get -c woody-ppc.conf update
Pour résumer, pour gérer un nouveau repository, je fais:
mkdir -p /tmp/woody-ppc/etc mkdir -p /tmp/woody-ppc/apt-lib/lists/partial mkdir -p /tmp/woody-ppc/apt-cache/archives/partial mkdir -p /tmp/woody-ppc/dpkg-lib touch /tmp/woody-ppc/dpkg-lib/status cat << EOF > woody-ppc.conf APT::Architecture "ppc"; Dir "/tmp/woody-ppc/"; Dir::Etc "etc/"; Dir::State "apt_lib/"; Dir::Cache "apt_cache/"; # We need absolute path there Dir::State::status "/tmp/woody-ppc/dpkg_lib/status"; EOF cat << EOF > /tmp/woody-ppc/etc/sources.list deb http://archive.debian.org/debian/ woody contrib main non-free deb http://archive.debian.org/debian/ woody contrib main non-free EOF
puis,
# Vérifier la configuration apt-config -c woody-ppc.conf dump # Mettre à jour la liste de paquets apt-get -c woody-ppc.conf update # Quelle version de bash y avait-il en woody? apt-cache -c woody-ppc.conf show bash # Recupération d'une binaire de bash pour ppc apt-get -c woody-ppc.conf install --download-only bash apt-get -c woody-ppc.conf install --print-uris bash # Bon départ pour porter le bash de woody sur une autre distribution apt-get -c woody-ppc.conf source bash
lundi, mai 18 2009
Le téléphone portable comme machine de bureau
Par Jérôme Pouiller le lundi, mai 18 2009, 10:46 - Technique
AdamW décrit sur son blog un nouveau périphérique pouvant s'apparenter à une carte graphique (et son écran) sur USB. C'est le chainon manquant que l'on attendait. Il y avait les claviers USB, les périphériques de stockage USB, les ports ethernet sur USB, les cartes son sur USB, il ne manquait que la carte vidéo. Avec la puissance des système embarqués qui ne cessent de grimper, bientôt, je pourrais brancher toute la tripaille de périphériques USB sur mon téléphone portable et m'en servir de machine de bureau.
samedi, mai 16 2009
Packager son noyau
Par Jérôme Pouiller le samedi, mai 16 2009, 18:21 - Technique
Lorsque l'on touche au noyau, on se trouve rapidement confronté au problème de la distribution du noyau et de ses modules additionnels.
Je propose d'expliquer comment j'ai empaqueté le noyau 2.6.28.9 pour la société Substantiel. Il s'agit d'un cas complet avec des patch et des modules externes.
lundi, mai 4 2009
Debian package for microdia (sn9c20x) driver
Par Jérôme Pouiller le lundi, mai 4 2009, 19:25 - Contributions
I packed Microdia drivers for Debian. Direct link to source package
vendredi, avril 24 2009
Patch Bootplash pour 2.6.28.9
Par Jérôme Pouiller le vendredi, avril 24 2009, 16:10 - Contributions
Bootsplash est un patch complètement obsolète pour avoir un démarrage graphique. Le développement s'est arrêté au noyau 2.6.21. Néanmoins, on a de temps en temps besoin des patch complètement obsolètes ;-). Donc, voici le patch porté sur le kernel 2.6.28.9. Notez que vous aurez besoin d'outils en userspace.
samedi, avril 18 2009
Non aux drivers binaires
Par Jérôme Pouiller le samedi, avril 18 2009, 00:41 - Technique
Je commence à véritablement détester les drivers propriétaires. Il y a toujours les arguments classiques: "C'est pas libre", "L'équipe kernel ne vous apportera aucune aide si vous avez un kernel "tainted"", etc ...
De mon point de vue, c'est surtout une catastrophe pour porter ces drivers d'une version à l'autre du noyau. Pas la peine de demander de l'aide à l'entreprise originaire du driver. Réponse classique: "On ne supporte que la version 2.6.4/gcc2.95 du noyau" [1]. Pire, parfois, vous n'avez qu'un .ko. Dans ce cas, il n'est mais pas envisageable de choisir un autre compilateur ou une autre version du kernel (ni certaines options de compilation). Evidement, rapidement, vous vous retrouvez sur votre système avec un driver qui ne fonctionne que en 2.6.8 et un autre que en 2.6.30. Il faut bien en porter un des deux. C'est généralement là que les choses se gâtent. On se rend compte que les auteurs ont gardé le code fermé, non pas pour préserver un soi-disant secret de fabrication, mais pour éviter qu'on les prennent pour des codeurs du dimanche [2]. Bref, porter un driver ça n'est pas forcément évident. Si il est mal codé, c'est pire: on risque de faire apparaitre des bugs "latents". Et si il vous n'avez ni les sources, ni les spécifications du matériel, ça devient un véritable casse-tête de comprendre les problèmes.
Par conséquent, pour avoir retarder le développement de certains de mes projets, je délationne : Fglrx, Nvidia (bien que le suivis du mainstream soit suffisament proche pour qu'il y ait peu de problèmes), DVS (fabriquant de cartes d'acquisition vidéo), Intel Poulsbo (Libre, mais personne n'est capable de comprendre ce qu'il fait), TrueFFS (Disk On Chip), etc...
mercredi, mars 18 2009
EmDebian
Par Jérôme Pouiller le mercredi, mars 18 2009, 19:07 - Technique
Je me dis toujours qu'il faudrait un système de paquet pour les systèmes embarqués. Builtroot est trop monolithique et reste une suite de binaires. Il y a bien le système OpenEmbedded avec ipkg, mais il reste très monolithique dans sa manière de gérer les sources. Une Debian cross-compilée (avec scratchbox par exemple) donne un excellent système, mais même une installation minimale utilise plusieurs dizaines de mégas.
Pour bien faire, il faudrait partir d'une Debian. Le plus important serait de supprimer les dépendances avec perl et ne laisser que busybox comme interpréteur. Il faudrait avoir la possibilité d'utiliser µlibc. Lorsque l'on (corss-)compile, les paquets -dev, -doc, -dbg doivent être produit pour l'architecture hôte. Il faudrait aussi que le répertoire /use/share/doc soit supprimé. Et enfin, il faudrait pouvoir désinstaller apt/dpkg lors de la mise en production du système.
J'en rêvais, emDebian l'a fait. L'uniformité et la QA de Debian appliqué à l'embarqué... Formidable!
Bref, un projet à suivre de près.
vendredi, mars 13 2009
Add quick calculator to zsh
Par Jérôme Pouiller le vendredi, mars 13 2009, 17:51 - Technique
How to add this kind of behavior to zsh:
$ = 2 +4 2 + 4 = 6
First, we need a command to do calculus. Personnaly, I love qalc command, so I use it as calculator. Nevertheless, it is not a standard command, so it is usefull to have a fallback. Zsh arithmetic expansion is great, we could use it:
function myCalculator() { echo $(($*)) }
Now, we need to add an alias to = command. But, alias doesn't accept syntax alias ==myCalculator. So we have to edit manualy aliases has table:
$ # Be sure zsh/parameter module is loaded $ zmodload zsh/parameter $ aliases[=]=myCalculator
To use it, don't forget you need to type a space between = and your expression
Currently, I havn't find any solution for bash
lundi, octobre 20 2008
Contrôler 8 périphériques RS422 à partir d'un réseau CAN
Par Jérôme Pouiller le lundi, octobre 20 2008, 00:03 - General
Peut-on contrôler 8 périphériques RS422 à partir d'un bus CAN (avec du temps réel souple)? Je suis confronté au problème. J'ai une carte avec un contrôleur CAN et quelques I/Os. Evidement, je n'ai pas 8 ports RS422.... Mais j'ai un USB. J'utilise donc un hub USB sur lequel je connecte 8 convertisseurs USB/RS422 [1]. Les normes de RS422 étant ce qu'elles sont, je suis obligé de fabriquer des convertisseurs entre le pin-out utilisé par mes périphériques et celui de mes convertisseurs. Pour compléter le problème, je me rends compte qu'il y une erreur de conception sur notre carte et que notre port USB délivre du 3.3V. Il faut couper la piste d'alimentation (pour éviter le court-circuit entre notre carte et le hub) et rehausser le signal en utilisant un hub à alimentation externe.
Ouf... Voilà pour le hard. Maintenant coté soft. Il nous tout d'abord compiler notre driver usbserial, puis créer les devices appropriés. Maintenant, il faut être certain que le noyau ne nous joue pas des tours [2]. La commande suivante permet d'obtenir un bon paramétrage (sur le device /dev/ttyUSB0 avec en prime le paramétrage de la vitesse de transmission à 115200bps):
stty -F/dev/ttyUSB0 115200 raw min 0 time 0 -echo
Bien entendu, nous sommes à la merci des buffers matériels. A priori, à notre échelle (20ms), ça devrait bien se passer.
Maintenant, il ne reste plus qu'à écrire un programme traduisant nos données CAN en données séries. Et au final, ça marche et c'est en production.
dimanche, décembre 30 2007
XDMCP couplé à un VPN
Par Jérôme Pouiller le dimanche, décembre 30 2007, 19:49 - Technique
J'ai lu récemment cet article sur eyeOS. Ca me donne une impression de déjà vu. Vous ne souvenez pas de ce bon vieux serveur X distant? Je pense que l'on sous-estime sa puissance. Je vous rappelle ses avantages:
- pas de récriture des applications
- simplicité de mise en oeuvre du serveur
- technologie éprouvée
- portable sous Windows, Mac, Linux, BSD, SGI, etc... (Je rappelle les problèmes de portabilité entre les différentes machines virtuelles (autrefois, on avait des navigateurs) auxquels est confronté eyeOS)
- nécessite seulement un client léger
- parfaitement adapté aux environnement réseaux complexes
mercredi, novembre 1 2006
Hébergement de xulfr
Par Jérôme Pouiller le mercredi, novembre 1 2006, 21:14 - Sysmic, informations système
Le serveur de sysmic.org héberge désormais aussi le célèbre site xulfr. La migration s'est bien passé. Le serveur tiens la charge. Je suis fier de pouvoir donner ma petite contribution à la communauté de Xul.
mardi, août 22 2006
Tricky shell
Par Jérôme Pouiller le mardi, août 22 2006, 15:10 - Technique
Je viens de m'apercevoir que la syntaxe suivante fonctionnait parfaitement en shell :
true && foo() { echo ok; } || foo() { echo ko; }
Je ne sais pas si je dois trouver ça beau ou pas. Ca a un arrière goût de fonctionnel, mais pas assez pour que ça soit utilisable.
lundi, août 7 2006
Add kListViewSearchLineWidget to Twinkle addressbook
Par Jérôme Pouiller le lundi, août 7 2006, 19:36 - Contributions
I have written a quick and dirty patch which add a kListViewSearchLineWidget (a filtering bar) to addressbook form of Twinkle (see picture).
Why this patch is dirty?
- Because it force twinkle to be dependent of kdelibs.
- Because of Qt designer (or KDE widgets plugin) have a bug with kListViewSearchLineWidget class. It don't call correctly constructor of this class. So I have to go round adding this widget in init() method.
You will find:
- twinkle_0.8.1.orig.tar.gz is original
- twinkle_0.8.1-abFilter.1.patch is my patch
- twinkle_0.8.1-abFilter.1_i386.deb is built package
Nom de domaine en UTF8
Par Jérôme Pouiller le lundi, août 7 2006, 11:24 - Technique
Une expérience intéressante de jd. Néanmoins, je ne suis pas d'accord avec les résultats de son expérience. Tout d'abord, http://www.domainsite.com[1] est compatible IDN. Ensuite, la compatibilité IDN se fait au niveau client et non au niveau des serveurs (cela poserait trop de problème d'encodage)[2]. Il suffit d'enregistrer un nom directement en Punycode pour que cela fonctionne avec n'importe quel domain register.
PS pour Julien: Un cercle surscrit (tel que Å) s'appelle un "rond en chef"
jeudi, août 3 2006
Updade of par multibyte encoding patch
Par Jérôme Pouiller le jeudi, août 3 2006, 18:44 - Contributions
Follow up to bug report #310495 in debian bug tracking system, I have updated my previous patch for par.
As suggested by some Debian mainteners, I have changed structure of my directory:
- par_1.52.orig.tar.gz is original from Adam M. Costello
- par-1.52-i18n.2.patch is my patch
- par-1.52-i18n.2.tgz is par_1.52.orig.tar.gz patched with par-1.52-i18n.2.patch
- debian/par_1.52.orig.tar.gz is a symbolic link on par_1.52.orig.tgz
- debian/par_1.52-i18n.2.diff.gz is patch to apply to build debian package. This patch contains all debian stuff and my patch in debian/patches
- debian/par_1.52-i18n.2_i386.deb is built package
lundi, juillet 3 2006
L'œuf et la poule
Par Jérôme Pouiller le lundi, juillet 3 2006, 12:16 - Pensées personnelles
Est-ce que c'est l'œuf qui a trouvé la poule ou la poule qui a trouvé l'œuf?
Comprendra qui pourra....
« billets précédents - page 2 de 5 - billets suivants »