mai 10 2008

Les walkmans Sony sous Ubuntu Hardy

ATTENTION : cet article est peut-être obsolète.

Depuis la dernière version d’Ubuntu – et c’est également le cas des autres distributions qui utilisent la version 0.5.11rc2 de HAL ou plus récente – les lecteurs mp3 NWZ-A81x et NWZ-S61x que Sony a eu la bonne idée de rendre compatibles USB mass-storage, i.e. utilisables comme des clés USB, ne sont plus montés automatiquement sur le bureau (il reste possible d’utiliser mount). On peut les utiliser comme périphériques MTP avec rhythmbox ou banshee, mais pas comme périphériques UMS.

En cause, une amélioration du code source de HAL : la vérification du retour d’une fonction dans le fichier hald/util.c – fonction hal_util_get_int_from_file(), introduite le 28 janvier 2008. En soit, c’est une bonne chose, mais avec pour effet de bord la fin de la détection du volume FAT32 qui se trouve sur le walkman (car sa taille est reportée de manière erronée par sysfs).

Vous trouverez plus d’infos sur le bug sur Launchpad.

Bref, voici la solution palliative : nous allons faire une modification dans le code source de HAL, puis le recompiler et reconstruire un paquet. Vous avez besoin d’avoir une source de logiciels offrant les paquets source sur votre système.


# récupération du paquet source
apt-get source hal
# installation des dépendances
sudo apt-get build-dep hal
cd hal-0.5.11~rc2/
# nous modifions strtol() par strtoul() dans util.c
sed -i '201s/strtol/strtoul/' hald/util.c
# nous recompilons HAL et reconstruisons le paquet
dpkg-buildpackage -us -uc -rfakeroot
cd ..
sudo dpkg -i hal_0.5.11~rc2-1ubuntu8.1_i386.deb

N.B. Les versions des paquets peuvent évoluer au fil des mises à jour d’Hardy (cf. commentaires).

A ce point, normalement, le lecteur devrait être monté sans problème et apparaître sur le bureau.

Par contre, pour qu’il soit bien reconnu par Rhythmbox et consorts comme un lecteur MP3 UMS, il faut :
- désactiver le plugin Lecteurs portables MTP dans Rhythmbox
- copier le descriptif HAL du Sony A818 dans /etc/hal/fdi/information
- rédémarrer HAL : sudo invoke-rc.d hal restart
- brancher le baladeur

Je pense que le fichier descriptif fonctionne pour toute la série des A81x. Pour les autres, il suffit d’adapter le champ product_id (utilisez la commande lsusb pour trouver le couple vendor_id:product_id).

L’étape de création du paquet pose un problème : notre version sera remplacée par la prochaine mise à jour. Si quelqu’un peut m’apporter une aide précieuse sur les modifications à apporter au paquet source, je suis preneur.


nov 28 2007

Sony NWZ-A818 sous Linux

ATTENTION : cet article est peut-être obsolète.

Sony A818
Pour ceux qui se posent la question, le dernier lecteur MP3 de Sony à mémoire flash, le A818 (ainsi que ceux de la série A810 a priori) fonctionne en mode UMS sous Linux, c’est à dire comme une simple clé USB (alors qu’il fonctionne en mode MTP sous Windows).
Il suffit donc de copier la musique dans le répertoire MUSIC, les vidéos dans VIDEO et les photos dans PICTURES. Logique.

Faire reconnaître le baladeur comme tel

Par contre, sur Ubuntu Gutsy, les descriptifs de périphériques de HAL (Hardware Abstraction Layer) ne sont pas à jour.

Qu’à cela ne tienne : voici un patch vite fait – bien fait. Le fichier incriminé se trouve dans /usr/share/hal/fdi/information/10freedesktop/ et se nomme 10-usb-music-players.fdi

Le patch est .

Pour l’appliquer :
$ cd
$ wget http://www.delagoutte.net/sony-nwz-a818.diff
$ sudo -s
# cd /usr/share/hal/fdi/information/10freedesktop
# patch -p0 < ~/sony-nwz-a818.diff

Redémarrer HAL et brancher le baladeur : il est reconnu dans Rhythmbox, et on peut gérer la musique par glisser/déposer.

Pochettes d’albums

Pour que le baladeur affiche les pochettes d’album, il faut les insérer dans le tag ID3. Attention, il faut absolument utiliser un tag ID3v2.3 (la v2.4 n’est pas supportée par le lecteur). Pour faire tout ça, il est pratique d’utiliser CoverFinder et Easytag.

Vidéos

En général, les podcasts vidéos prévus pour l’iPod fonctionnent (h.264 en 320×240). Je n’ai pas investigué plus loin (les bandes-annonces Allociné sont lues, de même que les recettes du Casse-Croûte et le 6minutes d’M6).

Et sinon…

Pour le reste, ce baladeur est au poil niveau qualité sonore (c’est avant tout ce qu’on lui demande), agréable à utiliser.


juin 19 2007

Configurer le Neuf Twin sous Linux

ATTENTION : cet article est peut-être obsolète.

Neuf mettait autrefois à la disposition des propriétaires de téléphone Twin une page web permettant de s’affranchir de l’application Windows pour configurer son compte SIP et ses profils Wi-Fi. Elle n’est plus disponible, aussi je ressors mon propre fichier de configuration pour les utilisateurs de Linux.

Cette page demandait un certain nombre de renseignements puis générait un fichier texte. Voici le mien, utilisable pour se connecter à sa ligne Freebox.

Configuration du compte SIP

[SIP_ALL]
AuthId = 0952******
AuthPassword = ********
PhoneNumber = 0952******
DisplayName = mobile
SipProxy = freephonie.net
SipRegistrar = freephonie.net
Domain = freephonie.net
SipLocalPort = 5060
SipProxyPort = 5060
SipRegistrarPort = 5060
DnsServerFlag = 0
DnsServerPort = 53
Codec = 0
ExpiredTime = 4800
RegisterTimeout = 2
AecFlag = 0
CngFlag = 0
AnonymousFlag = 0
SipPingFlag = 2

Dans les champs AuthId et PhoneNumber, il faut renseigner son numéro de ligne Freebox. Dans AuthPassword, préciser le mot de passe associé au compte SIP Freebox.

Configuration des profils Wi-Fi

Il est possible de définir les cinq profils Wi-Fi du téléphone depuis l’interface du téléphone, mais on peut également le faire dans ce fichier de configuration.

[WIFI_1]
SSID = MON_SSID_WPA
EncryType = 5
AuthType = 1
WepKeyIndex = 1
WepKeyValue =
WepKeyValue2 =
WepKeyValue3 =
WepKeyValue4 =
PreShareKey = ********
activeBrowser = 0
DHCP = 1
IPAddress =
NetworkMask =
DefaultGateway =
DomainNameServer =

Vous avez ici un exemple de réseau Wi-Fi type point d’accès privé, protégé par WPA. Il faut spécifier le nom du réseau dans SSID, puis la clé partagée dans PreShareKey.

On remarque qu’il est possible de lancer automatiquement le navigateur web Opera à la connexion en plaçant activeBrowser à 1 (utile pour les réseaux avec portail captif).

On obtient notre adresse IP par bail DHCP (DHCP = 1), mais il est également possible d’utiliser un adressage fixe en renseignant les champs suivants.

Ce profil Wi-Fi correspond à « Neuf Box Wifi » dans le gestionnaire de profils du téléphone.

Vous pouvez définir les quatre autres profils Wi-Fi à votre guise :

[WIFI_2]
SSID = JP0R50
EncryType = 0
AuthType = 0
WepKeyIndex = 1
WepKeyValue =
WepKeyValue2 =
WepKeyValue3 =
WepKeyValue4 =
PreShareKey =
activeBrowser = 0
DHCP = 1
IPAddress =
NetworkMask =
DefaultGateway =
DomainNameServer =

[WIFI_3]
SSID = BU_Voix_1
EncryType = 0
AuthType = 0
WepKeyIndex = 1
WepKeyValue =
WepKeyValue2 =
WepKeyValue3 =
WepKeyValue4 =
PreShareKey =
activeBrowser = 0
DHCP = 1
IPAddress =
NetworkMask =
DefaultGateway =
DomainNameServer =

[WIFI_4]
SSID = JP0R50
EncryType = 0
AuthType = 0
WepKeyIndex = 1
WepKeyValue =
WepKeyValue2 =
WepKeyValue3 =
WepKeyValue4 =
PreShareKey =
activeBrowser = 0
DHCP = 1
IPAddress =
NetworkMask =
DefaultGateway =
DomainNameServer =

[WIFI_5]
SSID = JP0R50
EncryType = 0
AuthType = 0
WepKeyIndex = 1
WepKeyValue =
WepKeyValue2 =
WepKeyValue3 =
WepKeyValue4 =
PreShareKey =
activeBrowser = 0
DHCP = 1
IPAddress =
NetworkMask =
DefaultGateway =
DomainNameServer =

Mise en place de la configuration

Pour charger cette configuration, il faut la sauvegarder entièrement dans un fichier texte, et donner le nom updateProfile.conf à ce fichier.

Ensuite, brancher le téléphone par le câble USB, puis taper OK-7-Options-Synchro. profil.

Monter le téléphone, qui va apparaître comme un périphérique de stockage de masse, puis copier le fichier updateProfile.conf à la racine.

Démonter le téléphone puis appuyer sur Retour.

La synchronisation de la configuration est effectuée !


mar 27 2007

Connaissez-vous debootstrap ?

ATTENTION : cet article est peut-être obsolète.

Récemment, j’ai voulu monter un serveur WebDAV chez un collègue, pour partager des calendriers. J’ai d’abord configuré et testé le service en local, sur mon ordinateur portable, puis j’ai transmis les fichiers de configuration au collègue. Pour ne pas mettre le bazar dans mon système, j’ai reconstitué dans un dossier un système Linux tout neuf, tout propre, avec l’aide de debootstrap.

Il y a plusieurs manières de tester une nouvelle configuration, une nouvelle application, un nouveau service sur un système Linux propre :

  • disposer d’une machine libre, installer un système dessus,
  • jouer avec les machines virtuelles, comme kvm ou qemu,
  • installer un système en chroot.

J’ai utilisé cette dernière possibilité. Les distributions basées sur Debian disposent du magnifique debootstrap, un utilitaire qui télécharge tous les paquets nécessaires depuis les depôts, puis les installe dans un dossier du système de fichiers.

On installe tout d’abord debootstrap :

$ sudo apt-get install debootstrap

Puis on lui demande l’installation d’une distribution dans un dossier local :

$ sudo debootstrap dapper /mnt http://fr.archive.ubuntu.com/ubuntu/

Dans cette commande, on a demandé l’installation de la distribution Dapper Drake dans le répertoire /mnt, en utilisant le miroir http://fr.archive.ubuntu.com/ubuntu/. Ce dernier champ est facultatif ; par défaut, c’est le miroir que vous utilisez pour la distribution hôte qui est utilisé.

Ce qui est intéressant, c’est que, sous Edgy, je vais pouvoir télécharger et installer une distribution différente, correspondant à la machine cible. La liste des distributions disponibles se trouve dans /usr/lib/debootstrap/scripts/. Sous Ubuntu Edgy, j’aurais très bien pu installer Debian Sarge[1].

Le système installé est le système de base, minimal. Pour l’utiliser, on procède en deux étapes :

Monter le pseudo système de fichiers /proc dans la cible :

$ sudo mount -t proc none /mnt/proc

La distribution cible aura ainsi accès aux paramètres du noyau de la distribution hôte.

Chrooter dans le répertoire cible :

$ sudo chroot /mnt

Vous obtenez alors un accès root dans la distribution cible. Vous pouvez installer des nouveaux logiciels avec apt-get, lancer ou arrêter des services, etc.

deboostrap permet donc de monter très facilement des pseudo-serveurs de test, sans toucher à la configuration de la machine hôte. Vous pouvez également utiliser les prisons chroot pour isoler les services critiques du reste du système.

La page de manuel de debootstrap vous donnera toutes les infos sur cet outil très pratique, dont seulement une partie des fonctionnalités est présentée ici.

Notes

[1] Il faut alors spécifier un miroir Debian à la place du miroir Ubuntu.


mar 26 2007

Un système de fichiers en mémoire vive

ATTENTION : cet article est peut-être obsolète.

Les ordinateurs récents disposent d’un microprocesseur rapide et d’une quantité de mémoire vive confortable, si bien que l’élément limitant la réactivité de la machine est généralement le disque dur. C’est vrai pour les ordinateurs de bureau, et ça l’est encore plus pour les portables. Linux permet d’utiliser la mémoire vive directement comme système de fichier.

Pourquoi utiliser la mémoire vive à la place du disque dur ? Les temps d’accès comme le débit de la RAM sont véritablement superlatifs par rapport à ceux du disque dur. Si les accès au disque sont pénalisants pour votre application (par exemple pour si vous travaillez du son ou de la vidéo), vous apprécierez un tel gain de vitesse. C’est également utile sur un portable car les accès disque sont consommateurs d’énergie.

Le principe exposé ici repose sur l’utilisation du système de fichier en mémoire vive tmpfs. Il est disponible est standard dans les distributions Linux. Pour cet exemple, j’ai utilisé Ubuntu Edgy.

Comme pour un système de fichier normal, il va falloir spécifier un point de montage dans l’arborescence Linux. Si vous choisissez un répertoire qui contient déjà des fichiers, vous ne pourrez plus y accéder tant que notre tmpfs sera monté car ils seront masqués[1].

Prenons par exemple /mnt. À l’invite de commandes, tapez simplement :

$ sudo mount -t tmpfs -o size=512M none /mnt

Vous remarquerez que la taille du système de fichiers est spécifiées par l’option size. J’ai mis ici 512 mégaoctets ; je dispose d’un gigaoctet de RAM.

On peut vérifier que le tmpfs a bien été monté en faisant appel à mount :

$ mount
 ...
 none on /mnt type tmpfs (rw,size=512M)

Que se passe-t’il si vous spécifiez une taille supérieure à l’espace disponible en mémoire physique ? Linux va alors placer l’excédent en mémoire virtuelle, autrement dit en swap, donc sur le disque dur, ce qui nous fait perdre le bénéfice de la rapidité.

Vous pouvez désormais utiliser le répertoire /mnt comme un disque dur ultra-rapide, en copiant les fichiers dessus.

ATTENTION : le contenu de la mémoire vive est perdu en cas d’extinction ou de redémarrage de la machine. Je vous conseille fortement de prendre vos précautions en termes d’alimentation électrique (onduleur, travail sur secteur dans le cas d’un portable…) et de sauvegarde des données (on travaille sur une copie en mémoire vive, et on la sauvegarde régulièrement sur le disque dur).

Notes

[1] Pas d’inquiétude, toutefois : ils ne sont pas effacés et vous les retrouverez dès que vous aurez démonté le tmpfs.