[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).
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.
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
(Attention : il peut arriver que le chargement du module réussisse, mais qu'il ne convienne pas en réalité, et donc que la suite des manipulations échoue. Dans ce cas, essayez un autre des modules possibles.)
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.
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.)
Voir aussi les liens disséminés sur la page. Seuls certains sont repris ici.
...à 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.