Articles taggés avec ‘walkman’

Les walkmans Sony sous Ubuntu Hardy

Samedi 10 mai 2008

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

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.