[17 août 2004] Le contenu de cette page est obsolète. Je la laisse en ligne à toutes fins utiles (de toute façon, casser des liens sans raison, c'est mal).

Le noyau Linux prend désormais (depuis un moment, en fait) en charge le Camedia C-220 Zoom sans bidouille particulière. Pour utiliser l'appareil, il suffit d'un pilote USB Mass Storage configuré normalement. Peut-être souhaiterez-vous installer de plus hotplug et (avec un noyau 2.6) udev.

17 août 2002 ; mises à jour mineures le 21 août 2002, le 11 janvier 2003, puis le 3 mai 2003.

Depuis quelques jours, je suis l'heureux propriétaire d'un appareil photo numérique de marque Olympus, le Camedia C-220 ZOOM, également vendu sous les noms de C-2 Zoom ou D-520 ZOOM dans certaines régions du monde. Cet appareil se connecte à l'ordinateur via le port USB. Il se comporte comme un périphérique de stockage USB (USB Mass Storage device), et devrait donc fonctionner sous Linux sans logiciel spécifique (du type gphoto). Malheureusement, un bug de l'appareil complique quelque peu l'affaire.

Je ne connais pas de documentation en français sur le sujet ; et la documentation en anglais, assez éparse, n'est pas toujours facile à trouver. Le but de cette page est d'indiquer comment utiliser ce modèle d'appareil particulier, mais aussi de fournir quelques informations plus générales et des pistes pour tous les utilisateurs d'appareils Olympus ou USB mass storage. Toute remarque est la bienvenue ; mais je doute de trouver le temps de tenir cette page à jour. Évidemment, les informations fournies le sont sans aucune garantie. Il s'agit, pour l'essentiel, d'une compilation d'éléments rencontrés au cours de ma recherche, et provenant dles différentes pages vers lesquelles pointent les liens.

Vous pouvez faire ce que vous voulez du contenu de cette page, y compris le modifier et le redifuser, à la seule condition que vos modifications soient clairement identifiées comme telles. Un lien vers la source accompagné de la précision que votre travail en est dérivé fait l'affaire.

Ce qui est indiqué ici comme spécifique au C-220Z devrait en fait s'appliquer aussi au Camedia D-150 Zoom (alias C-1Z).

Généralités

En règle générale, un appareil photo numérique se connecte à l'ordinateur soit par le port série, soit (de plus en plus souvent) par le port USB. Un grand nombre d'appareils des deux types sont utilisables sous Linux, même si leur contructeur s'en moque. Si vous ne savez pas à quelle catégorie appartient votre appareil, vous pouvez par exemple consulter cette page (chez Hubert Figuière, un des développeurs de gphoto2).

Les appareils série, et une bonne partie des appareils USB, nécessitent des logiciels spécifiques. Beaucoup (dont Kamera et gphoto) sont basés sur la bibliothèque gphoto2, qui supporte plus de cent modèles d'appareils. (Pour mettre les choses au clair : gphoto2 est le nom de la bibliothèque, mais aussi celui de son interface en ligne de commande. gphoto est celui du prédécesseur de gphoto2, et de son interface graphique GTK actuelle. gphoto s'est aussi appelé gtkam.) Les utilisateurs d'appareils Olympus série peuvent aussi aller voir du côté de camediaplay. Il existe encore photopc (ancêtre de gphoto à sa façon), usdsc (pour FreeBSD), qvplay, pencam, coriander et jcam (en Java, et qui semble avoir disparu). Ces logiciels sont moins célèbres et moins complets que gphoto2, mais ils supportent des appareils que gphoto2 ne gère pas ou pas complètement. N'hésitez pas à consulter le Hardware-HOWTO (en français ou en anglais) pour une liste (peut-être)un peu plus complète, précise et à jour.

Si votre appareil entre dans la catégorie précédente, le reste de cette page ne vous intéresse probablement pas.

D'autres appareils USB, ceux qui nous occupent en priorité, adhèrent à l'USB Mass Storage protocol. Cela signifie qu'ils se comportent comme des périphériques de stockage amovibles. En pratique, sous Linux, ils sont vus comme des périphériques SCSI. On peut donc monter le système de fichiers de la carte mémoire, lire son contenu, et même y écrire. J'ai pu sans aucun problème utiliser mon appareil pour enregistrer sur la carte (SmartMedia) des choses qui n'avaient rien à voir avec les images de l'appareil, et donc utiliser la carte comme une grosse disquette. Mais je ne sais pas si c'est fait pour, ni si Olympus apprécierait. À ma connaissance, aucun des logiciels cités plus haut ne permet d'accéder aux photos prises par les appareils de cette catégorie. Ces logiciels peuvent quand même servir à contrôler quelques-uns de ces appareils, par exemple pour leur ordonner de prendre une photo. Le noyau Linux contient quant à lui tout ce qu'il faut pour accéder aux images selon la marche à suivre décrite ci-dessous.

Utilisation de l'USB Mass Storage protocol

Les instructions données ici devraient s'appliquer à tous les appareils utilisant ce protocole. En revanche, elles supposent un noyau 2.4.x modulaire ; il peut être nécessaire de les adapter à votre configuration.

Pour accéder à votre appareil, vous aurez besoin d'un certain nombre de modules, dont certains seront sans doute déjà chargés. Ils peuvent avoir des dépendances diverses, mais si votre système n'est pas trop vieux, les indications qui suivent devraient suffire à modprobe. L'USB Mass Storage protocol est pris en charge par le module usb-storage. Pour l'utiliser, vous aurez besoin au minimum

Installez ces modules comme vous voulez, ou comme votre distribution veut. Les deux premiers seront sans doute déjà chargés si vous utilisez déjà un périphérique USB, et le troisième si vous possédez un graveur de CD (IDE comme SCSI) ou un périphérique SCSI. Notez aussi que selon votre configuration et la méthode d'installation que vous choisissez, le chargement de ces modules peut être plus ou moins automatique, et chacun peut ou non charger automatiquement les autres modules dont il a besoin. De même, ils peuvent ou non être rechargés automatiquement au démarrage suivant du système.

Si vous ne comprenez rien à tout cela, c'est normal, mes explications sont incomplètes et pas très claires. Essayez simplement, en tant que root, de taper modprobe -a scsi_mod usbcore usb-ohci usb-storage, puis regardez les messages qui s'affichent ou allez voir dans vos logs (regardez dans /var/log/messages ou /var/log/kern.log). Si cela ne marche pas, réessayez en remplaçant usb-ohci par usb-uhci, puis uhci.

Pour plus de détails (en anglais), voir le manuel.

Si tout a fonctionné, votre ordinateur est prêt à recevoir l'appareil photo. Branchez-le en vous conformant aux instructions de son manuel (si elles sont données pour Windows, appliquez les étapes concernant l'appareil et ignorez celles concernant l'ordinateur). En général, il suffit de brancher l'appareil, éteint. Il peut être nécessaire de l'allumer ensuite ou de le passer dans un mode particulier. L'appareil devrait vous signaler d'une façon ou d'une autre qu'il a été branché. Si vous êtes en mode console, vous verrez probablement un message indiquant l'arrivée d'un nouveau périphérique USB. (Dans le cas du C-220Z, il faut brancher l'appareil éteint. Un voyant s'allume immédiatement ; l'autre clignote quelques secondes, indiquant la communication avec l'ordinateur.)

L'heure de vérité est arrivée ! Allez voir dans /proc/scsi/scsi si une entrée correspondant à votre appareil photo est apparue. Elle devrait commencer par Host:scsix, avec x remplacé par un nombre. Vous pouvez désormais accéder à la mémoire de l'appareil par le périphérique SCSI correspondant : /dev/sda1 si x était 0, /dev/sdb1 si x était 1, et ainsi de suite. (Note : cette partie est empruntée à Michael Schubart, et il précise qu'il n'est pas sûr que ce soit la Bonne Méthode. Je n'en sais pas plus que lui, mais je ne connais pas de cas où ça ne marche pas.)

Pour accéder à vos images, il vous reste à créer un point de montage (disons /mnt/photo) et à y monter la mémoire de l'appareil. Dans le cas du C-220Z, le système de fichiers de la carte est de type vfat, les images enregistrées sont des fichiers .jpg, et les clips vidéeo des fichiers .mov. Le tout se trouve dans un répertoire, lui-même divisé en un ou plusieurs sous-répertoires. Je crois que c'est standard. La commande à utiliser est donc du genre mount -t vfat /dev/sda1 /mnt/photo, où vous aurez remplacé sda1 par le périphéphérique que nous venons de déterminer, et adapté le point de montage à votre convenance. C'est fini ! Vous pouvez récupérer les images, les supprimer, en ajouter (il vous faudra sans doute faire preuve d'astuce pour que votre appareil accepte de les afficher), etc. Lorsque vous avez terminé, démontez le périphérique (umount /mnt/photo) puis débranchez l'appareil.

Tout cela semble bien long et bien compliqué. En fait, il vous suffit d'automatiser le chargement des modules et d'ajouter une entrée pour votre appareil dans /etc/fstab pour que la connexion à l'appareil se résume à le brancher et à taper mount /mnt/photo. Mieux, vous pouvez rendre le montage de l'appareil automatique à chaque branchement. Encore une astuce : si vous écrivez des scripts qui accèdent à l'appareil, pensez à créer un lien symbolique (par exemple /dev/photo) vers le périphérique correspondant à l'appareil, puisque ce dernier est susceptible de changer si vous ajoutez un périphérique SCSI à votre machine par exemple.

Le cas du Camedia C-220 Zoom

Cet appareil est buggé : au cours de la communication avec l'ordinateur, il envoie la chaîne « USBU » quand il devrait envoyer « USBS » (un bit mal placé !). Même si les opérations décrites ci-dessus ont réussi, le module usb-storage ne reconnaît pas l'appareil quand on le connecte au port USB. Il existe deux principales solutions à ce problème.

La première est simple, rapide et crade. Il s'agit de remplacer, dans le fichier binaire /lib/modules/<votre-noyau>/kernel/drivers/usb/storage/usb-storage.o, toutes les occurences de USBS par USBU. Pour ce faire, éditez le fichier en question en tant que root (avec hexedit, par exemple), recherchez la chaîne USBS (commande / de hexedit, appuyez sur Tab pour passer de la recherche binaire à la recherche ASCII), modifiez-la à chaque fois, puis quittez le programme en sauvant vos modifications (Ctrl-X). Le principal avantage de cette solution est de ne pas nécessiter de recompilation du noyau ; son principal inconvénient est qu'elle empêche votre système de reconnaître les autres périphériques usb-storage, ceux qui envoient bien USBS (pas forcément tous, en fait, mais peu importe). Vous pouvez garder, sous un autre nom, le module d'origine et charger l'un ou l'autre selon le périphérique à utiliser.

L'autre solution consiste à modifier le noyau pour qu'il accepte aussi bien USBS que USBU. Un patch qui fait le nécessaire est disponible. Appliquez-le (ou faites les modifications correspondantes si le patch ne convient pas à votre noyau), puis recompilez. Il n'est pas prévu d'intégrer aux futurs noyaux le support de cet appareil qui viole le standard. (03/05/2003 Je ne sais pas ce qu'il en est maintenant. Le message qui donnait cette précision a disparu, c'est pourquoi le lien précédent est cassé. Peut-être le support sera-t-il finalement disponible dans le noyau officiel.)

Sources et informations complémentaires (en anglais)

Voir aussi les liens disséminés sur la page. Seuls certains sont repris ici.

Photo numérique sous Linux

Appareils USB Mass Storage

C-220Z et D-150Z

Remerciements...

...à Olivier Aubert (oaubert, chez bat710.univ-lyon1.fr, Guillaume Negre (guillaume.negre, chez freesbee.fr) et Mathieu Malaterre (malat, arobase free.fr) pour leurs suggestions.