Linuxとデジカメ
第1版:2002年1月20日
デジカメを Linux マシンにつなぐには具体的にはどうするのだろう? と思って調べたことや、実際に試してみたことをまとめました。また、デジカメのサムネイル画像とExif 情報を表示するプログラム「TKデジカメ」を作りました。

目次

1.はじめに
2.カーネルとUSBのサポート
3.usbmgrとmurasaki
4.デジカメ用アプリ
 4.1 Tkデジカメ
 4.2 gphoto
5.参考資料
6.このページの履歴

1.はじめに
デジカメの画像をパソコンに転送する方法は色々あります。
「Linuxでデジカメを使おう」 http://www.linux.or.jp/column/19991016.html というページにデジカメの記録形式、記憶媒体と転送方法の解説があります。また、gphotoというデジカメ用アプリの使い方や日本語化の方法なども出ていて参考になります。

USB 接続ではないデジカメを Linux で使うためのプログラムは下記をご覧下さい。
http://lss.eternity.ne.jp/cgi-bin/link/lss_frame.cgi?class.cgi?41

最近主流の USB 方式のデジカメですが、Mass Storage クラスの機種の場合、メーカ提供の独自ドライバや専用アプリが無くても、汎用の USB ドライバで Linux からも比較的簡単に接続できます。

USBデバイスには、共通の特性やサービスで分類する「クラス」というものがあります。例えば、Audio Device, Communication Device, Mass Storage, Human Interface Device(HID), Monitor Control, Power Device, Printer といったクラスがあります。HIDクラスのデバイスは、キーボード、マウス、ジョイスティックなどです。
Mass Storage クラスは CD-ROM, テープ、フロッピードライブなどのデバイス用のクラスです。

USB のデジカメには、Mass Storage クラスに属するものもあるし、ベンダーが定義した独自のクラスもあります。Mass Storage の場合、パソコンからはデジカメがハードディスクのように見えるため、扱うのが容易です。普通のファイルと同様に ls コマンドとか cp コマンドが使えます。

私は、USB Mass Storage クラスのデジカメ、富士フィルム:FinePix 2300 をTurbo Linux 7 Workstation に接続できるか試してみました。

[参考]以下のデジカメは Mass Storage クラスのようです。
 
オリンパス CAMEDIA  C-1, C-100, C-200Z, C-2040, C-3040, C-3100ZOOM, C-40ZOOM, C-4040ZOOM, C-700 Ultra Zoom, E-10, E-20, E-100RS
カシオ QV-2000UX, QV-2300UX, UX2400UX, QV-2800UX, QV-2900UX, QV-3000EX, QV-8000SX,  XV-3
キヤノン ?
京セラ ?
三洋 ?
ソニー Cybershot DSC-F505K, F505V, F550X, F55DX, F55V
Cyber-Shot  DSC-P1, P30, S30, S50, S70, S75
Mavica MVC-CD200, CD300
東芝 Allegretto M4, M5,  M40/M40S, M60, M70
ニコン Coolpix 99
日本ビクター GR-DVP3
富士フィルム FinePix  40i,  50i, 1300, 2300, 1400Z,  2400Z,  FinePix2500Z, 4500, 4700Z,  4800Z, 4900Z, 6800Z, 6900Z
ミノルタ DiMAGE 5、Dimage 7、Dimage 2300, Dimage 2330 ZOOM, S304、E203
ライカ Digilux 4. 
EPSON ?
Kodak DC240i Zoom, DC280J Zoom, DC290 Zoom, DC4800 Zoom
PENTAX EI-C90, EI-200、EI-2000、Optio 330/430、
リコー RDC-200G, RDC-5000, RDC-5300, RDC-7/7S, RDC-i500, RDC-i700
HP PhotoSmart 315, 618, 91 

下記のものは、独自のクラスですがドライバが存在します。
 
コダック DC-220, DC-240, DC-260, DC-265, DC-280, DC-290
[ドライバ(カーネル・モジュール)の名前:dc2xx]
Mustek MDC800

Mass Storage クラスの USB カードリーダ
 
ハギワラシスコム FlashGate HBC-UCF1(コンパクトフラッシュ専用リーダーライター)
富士フイルム SM-R1(スマートメディアリーダ)

2.カーネルとUSBのサポート
先ずはUSBを使えるようにする必要があります。カーネル 2.2 でも可能ですが、正式にサポートされるようになったカーネル 2.4 を使用するのが無難でしょう。

■ 2002年の正月に「Linux, USB,  デジカメ、Exif, usbmgr, murasaki」といったキーワードで検索をすると、Vine ML の過去ログが沢山出てきました。Vine 2.1/2.15 はカーネル 2.2 ながら 2.4 のバックポートパッチで1年ぐらい前から接続できていたようですね。大したもんです。

■ Vine 以外のカーネル 2.2 の Linux もパッチをあてることにより USB を使えるようになります。その方法を解説したWebページもあります。「参考資料」の項をご覧下さい。

■ 私は、Turbo Linux 7 Workstation で以下のようにしました。

(1) カーネル config で USB ドライバの確認。

    # cd /usr/src/linux
    # make xconfig

OHCI support および USB Mass Storage その他ほとんどのデバイス用のドライバが既にモジュールになっていることが分かったので何もせずに終了。

(2) カーネルのアップグレード
Turbo Linux 7 のカーネルは 2.4.5 です。このままでも上手くいくようですが、私はアップデートパッケージ(Linux Japan 2002年2月号付録)を入れてカーネル 2.4.9 にしました。カーネルのアップグレードは通常、カーネルのコンフィグレーションをしてから、カーネルソースをコンパイルしますが、アップデートパッケージの場合は以下のように turbopkg コマンドでインストールするだけなので簡単です。

# miniuni  (kon に代わるフレームバッファを利用した日本語コンソール)
# mount /mnt/cdrom
# cd /mnt/cdrom/update/Turbo/Workstation/7/RPMS
# ls  (アップデートパッケージがあるのを確認)
# cd  (ホームディレクトリに戻る)
# turbopkg
        「ようこそ」----------------> 自動アップデート
        「メディア」----------------> ローカルディレクトリ
        「ローカルディレクトリ」----> ベースパスの入力
                  /mnt/cdrom/update/Turbo/Workstation/7/RPMS

3.usbmgr と murasaki
ホットプラグ(活線挿抜:かっせんそうばつ:電源が入ったままの機器のケーブルを抜き挿しすること)もできるようにしたいですね。Linux  マシンと USB 機器間でこれを可能にするのが  usbmgr  (USB Manager) および  murasaki というソフトです。usbmgr はカーネル 2.2 の頃に作成されましたが 2.4 でも動作するとのことです。murasaki は、カーネル2.4専用です。何れも同じ日本人の作者によるものです。(どーでもいーけど Hotplug が、なぜ「紫」なんだろう?)

(1) usbmgr と murasaki は、下記にあります。

http://www.dotaster.com/~shuu/linux/usbmgr/index_ja.html

 詳しくは「参考文献」の項で示した解説文書や、RPM パッケージをインストールしてから usbmgr または murasaki のドキュメントをご覧下さい。

[注]Turbo Linux 7 Workstation には murasaki がデフォルトでインストールされていました。私は、そうとも知らず usbmgr をインストールし、後で気が付いて usbmgr をアンインストールしたのですが事前に rpm コマンドとか locate コマンドで確認しておくべきでした。

(2) デジカメのファイルは Mass Storage の場合、SCSI エミュレーションで  SCSI のハードディスクのように扱われるので、これをマウントできるように準備します。 (/var/log/messages の内容を参照する)
(a) /etc/fstab に下記1行を追加
/dev/sda1    /mnt/usbcam    vfat     noauto,user,rw   0 0
(b) マウントポイントを作成
# mkdir /mnt/usbcam
(3) murasaki の設定
(a) /etc/murasaki/murasaki.call に下記1行を追加。
usb-storage:    /etc/murasaki/action

これはカーネルモジュール usb-storage が読み込まれた際に /etc/murasaki/action を実行することを指定しています。

(b) /etc/murasaki/action というファイルを作成。内容は下記の1行のみです。なお、action というファイル名は私が勝手に付けただけで、例えばデジカメの型番など任意の名前で良いですが、前記の murasaki.call に記述したものと一致させる必要があります。
/bin/mount    -t  vfat    /dev/sda1    /mnt/usbcam
(c) 実行属性を加えます。
# chmod  +x  action
(4) マシンをリブート後、デジカメの電源を入れ USB コネクタを接続すると「ピッ」という音がします。以下、念のため確認。
$ less /var/log/messages | tail
murasaki.usb[820]:〜〜〜
murasaki.usb[820]:〜〜〜
murasaki.usb[820]:〜〜〜
kernel: Initializimg USB Mass Storage driver...
kernel: usb.c: registered new driver usb-Storage
kernel: scsi0:SCSI emulation for USB Mass Storage devices
kernel:      Vendor:Fujifilm  Model:Finepix 1400Zoom  Rev:1000
kernel:      Type: Direct-Access   ANSI SCSI revision:02
kernel:  Attached scsi removal disk sda at scsi0, channel 0, id 0, lun 0

# cat /proc/scsi/scsi
Attached devices:
Host: scsi0   channel:00   Id:00   Lun:00
Vendor: Fujifilm   Model: FinePix 1400 Zoom    Rev:1000
Type: Direct-Access   ANSI SCSI revision:02

# lsmod  (以下はUSB関係のみ)
usb-storge     47952  0  (unused)
usb-ohci       17616  0  (unused)
usb-core       47616  1  (usb-storge usb-ohci)

# mount
/dev/hda2    on /               type ext3     (rw)
none         on /proc           type proc
none         on /dev/pts        type devpts   (rw,gid=5,mode=620)
usbdevfs     on /proc/bus/usb   type usbdevfs (rw)
/dev/sda1    on /mnt/usbcam type vfat (rw,noexec,nosuid,nodev)

(5) これでOK!
$ cd /mnt/usbcam
で、デジカメのファイルシステムの中に入っていくことができます。
4.デジカメ用アプリ

4.1 Tkデジカメ

tkdgcam-0.4.tar.gz
デジタルカメラの画像ファイルは、Exif フォーマットという形式で JPEG フォーマットなどの画像データ以外に、撮影日時、解像度など多くの撮影情報とサムネイルも書き込まれています。

このExif情報を表示する ExifDump というプログラムがありますが、私はこれをベースにしてデジカメの画像、サムネイル画像、Exif情報を表示する「Tkデジカメ」を作成しました。大それたネーミングですが、デジカメとの何らかのインタフェース機能を持っているわけではありません。

■ スクリーンショット

■ tar.gz 形式のパッケージの展開
   適当なディレクトリで
   # tar zxvf tkdgcam-0.4tar.gz

   下記の 4つのファイルができます。
   tkdgcam        (プログラム本体。Tcl/Tk のスクリプト)
   tkdgcam-readme (ドキュメント)
   tkdgcam.gif    (アイコン)
   tkdgcam.xpm (アイコン)

■ ファイルのコピー
   % su
   # cp tkdgcam /usr/X11R6/bin

   # mkdir /usr/doc/tkdgcam-0.4
   # cp tkdgcam-readme /usr/doc/tkdgcam-0.4

■ 起動
   $ tkdgcam &

4.2 gphoto
「Linuxでデジカメを使おう」 http://www.linux.or.jp/column/19991016.html というページに使い方や日本語化の方法が説明されてます。

Linux ディストリビューションには gphoto 0.4.3 が標準でインストールされるものもありますが、gphoto の Webページ  http://www.gphoto.org/  にはバージョン 2.0 のベータ版(2002年1月現在)もあります。


5.参考資料

(1)  「Linuxでデジカメを使おう」
http://www.linux.or.jp/column/19991016.html

デジカメの記録形式、記憶媒体と転送方法の解説があります。また、gphotoというデジカメ用アプリの使い方や日本語化の方法なども出ていて参考になります。

(2) 各種デジカメをLinuxからアクセスするプログラムの一覧
http://lss.eternity.ne.jp/cgi-bin/link/lss_frame.cgi?class.cgi?41

現在のように USB が主流になる以前のデジカメを接続するためのプログラムが沢山あります。

(3) USBデバイスの認識から使い方まで(後編)
http://www.zdnet.co.jp/help/howto/linux/0007master/10/16.html 〜 19.html

この後編の 16.html〜19.html には、Murasakiのインストール 、設定、しくみと使い方 、カスタマイズの方法が詳しく解説されています。前編の最初から通して読むと USB についてかなり詳しくなるでしょう。

(4) LinuxでUSBを使おう
http://www.flowernet.gr.jp/jado/comp/hotplug.html

USBを扱う上で必要な基礎知識、USBコントローラの種類と見分け方、HotPlug設定レシピ(murasaki編) 、など

(5) USB
http://www.susono.com/~norio/linux/usb/usb.html

kernel-2.4 のバックポートパッチを kernel-2.2.x に当 てる(kernel-2.2.18 以前の場合) 方法、USB マウス、デジカメ(FinePix4700z)、スキャナ(EPSON  GT8700F)、プリンタ(EPSON PM-920C)を接続。

(6) Turbo Linux 7.0 on ThinkPad i1800 P3J
http://www.ops.dti.ne.jp/~kohf/computer/TL7/

Tirbo Linux 7 で USB モデム(PHS用 UHA6400)、USB プリンタ(キヤノンBJ S630)、USB フロッピードライブ(LFD-31US)を接続。

(7) 「Linux にUSBストレージクラスのデジカメを接続する」
http://www.bf.wakwak.com/~nkon/homepc/digi-cam/
(8) 「CAMEDIA C-700 Ultra ZoomをUSB 接続する」
http://www2.biglobe.ne.jp/~panos1/linux/20010513.html
(9)  Linux USB Project
http://www.linux-usb.org/

英語ですが Linux USB Guide とか、Device Driver Support 一覧など、色々あります。

(10) JEIDA:(社)日本電子工業振興協会
http://it.jeita.or.jp/jhistory/document/standard/exif_jap/jeida49jap.htm

「ディヂタルスチルカメラ用画像ファイルフォーマット規格(Exif)Ver 2.1」
「カメラファイルシステム規格 (Design rule for Camera File system(略称DCF))」

(11)「Exif形式の画像ファイル解説」
http://www.ba.wakwak.com/~tsuruzoh/Computer/Digicams/exif.html

橘家鶴蔵さんによる Exif2.1 および DCF 仕様の解説です。

(12) Exif-Tools home page
http://exif-tools.sourceforge.net/
(13) ExifDumpプログラム
http://www.interq.or.jp/japan/s-imai/tcltk/exif.html

「Tkデジカメ」は、このプログラムをベースにしています。

6.このページの履歴
第1版:2002年1月20日 ドラフト


最初のページに戻る

1.GUIでパソコン通信しよう。Seyonの使い方
2.Linuxでスキャナを使おう   3.GUIのメールソフト、Nmail
4. Mozilla を使おう!  5.SoundBlaster AWE64 をLinuxで使う
6.ホームページ作成ソフト   7.翻訳ソフト、辞書   8.ワープロ、表計算、その他
9. ゲーム    10.ウィンドウマネージャ等   11.付箋ソフト
12.Linuxアプリ関連のリンク    13.困ったときは、どーするか?
14.ABOUT-NLSの翻訳   15.ブートマネージャ
16.Linmodem ドライバでWinmodemを動かそう
17.Linuxで FAXを使おう   18.ホイール付きマウスを活用しよう
19.LinuxでCD-Rを焼こう   20.Linux で DV(デジタルビデオ)編集しよう
21.Linux で ADSL に接続しよう   22.NTP で時計をピッタリ合わせよう!
23.Linuxでインターネット電話 (IP電話)

gtkfind 1.1 の日本語化パッチ   Tk付箋   Tk  カラー・ブラウザ    conv2nmail4
翻訳魂のGUI クライアント『Tk翻訳』   翻訳の王様のGUI『Tk翻訳王』
Tcl/Tk による I18N(国際化) プログラミングの試み

Free Solaris  <Intel 版>