デジカメを Linux マシンにつなぐには具体的にはどうするのだろう? と思って調べたことや、実際に試してみたことをまとめました。また、デジカメのサムネイル画像とExif 情報を表示するプログラム「TKデジカメ」を作りました。目次
1.はじめに
2.カーネルとUSBのサポート
3.usbmgrとmurasaki
4.デジカメ用アプリ
4.1 Tkデジカメ
4.2 gphoto
5.参考資料
6.このページの履歴
デジカメの画像をパソコンに転送する方法は色々あります。2.カーネルとUSBのサポート
「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クラスのデバイスは、キーボード、マウス、ジョイスティックなどです。私は、USB Mass Storage クラスのデジカメ、富士フィルム:FinePix 2300 をTurbo Linux 7 Workstation に接続できるか試してみました。
Mass Storage クラスは CD-ROM, テープ、フロッピードライブなどのデバイス用のクラスです。USB のデジカメには、Mass Storage クラスに属するものもあるし、ベンダーが定義した独自のクラスもあります。Mass Storage の場合、パソコンからはデジカメがハードディスクのように見えるため、扱うのが容易です。普通のファイルと同様に ls コマンドとか cp コマンドが使えます。
[参考]以下のデジカメは 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(スマートメディアリーダ)
先ずはUSBを使えるようにする必要があります。カーネル 2.2 でも可能ですが、正式にサポートされるようになったカーネル 2.4 を使用するのが無難でしょう。3.usbmgr と murasaki■ 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(2) カーネルのアップグレード
# make xconfigOHCI support および USB Mass Storage その他ほとんどのデバイス用のドライバが既にモジュールになっていることが分かったので何もせずに終了。
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
ホットプラグ(活線挿抜:かっせんそうばつ:電源が入ったままの機器のケーブルを抜き挿しすること)もできるようにしたいですね。Linux マシンと USB 機器間でこれを可能にするのが usbmgr (USB Manager) および murasaki というソフトです。usbmgr はカーネル 2.2 の頃に作成されましたが 2.4 でも動作するとのことです。murasaki は、カーネル2.4専用です。何れも同じ日本人の作者によるものです。(どーでもいーけど Hotplug が、なぜ「紫」なんだろう?)4.デジカメ用アプリ(1) usbmgr と murasaki は、下記にあります。
http://www.dotaster.com/~shuu/linux/usbmgr/index_ja.html(2) デジカメのファイルは Mass Storage の場合、SCSI エミュレーションで SCSI のハードディスクのように扱われるので、これをマウントできるように準備します。 (/var/log/messages の内容を参照する)詳しくは「参考文献」の項で示した解説文書や、RPM パッケージをインストールしてから usbmgr または murasaki のドキュメントをご覧下さい。
[注]Turbo Linux 7 Workstation には murasaki がデフォルトでインストールされていました。私は、そうとも知らず usbmgr をインストールし、後で気が付いて usbmgr をアンインストールしたのですが事前に rpm コマンドとか locate コマンドで確認しておくべきでした。
(a) /etc/fstab に下記1行を追加(3) murasaki の設定/dev/sda1 /mnt/usbcam vfat noauto,user,rw 0 0(b) マウントポイントを作成# mkdir /mnt/usbcam(a) /etc/murasaki/murasaki.call に下記1行を追加。(4) マシンをリブート後、デジカメの電源を入れ USB コネクタを接続すると「ピッ」という音がします。以下、念のため確認。usb-storage: /etc/murasaki/action(b) /etc/murasaki/action というファイルを作成。内容は下記の1行のみです。なお、action というファイル名は私が勝手に付けただけで、例えばデジカメの型番など任意の名前で良いですが、前記の murasaki.call に記述したものと一致させる必要があります。これはカーネルモジュール usb-storage が読み込まれた際に /etc/murasaki/action を実行することを指定しています。
/bin/mount -t vfat /dev/sda1 /mnt/usbcam(c) 実行属性を加えます。# chmod +x action$ less /var/log/messages | tail(5) これでOK!
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)$ cd /mnt/usbcam
で、デジカメのファイルシステムの中に入っていくことができます。
4.1 Tkデジカメ
4.2 gphototkdgcam-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 &
「Linuxでデジカメを使おう」 http://www.linux.or.jp/column/19991016.html というページに使い方や日本語化の方法が説明されてます。Linux ディストリビューションには gphoto 0.4.3 が標準でインストールされるものもありますが、gphoto の Webページ http://www.gphoto.org/ にはバージョン 2.0 のベータ版(2002年1月現在)もあります。
(1) 「Linuxでデジカメを使おう」6.このページの履歴http://www.linux.or.jp/column/19991016.html(2) 各種デジカメをLinuxからアクセスするプログラムの一覧デジカメの記録形式、記憶媒体と転送方法の解説があります。また、gphotoというデジカメ用アプリの使い方や日本語化の方法なども出ていて参考になります。
http://lss.eternity.ne.jp/cgi-bin/link/lss_frame.cgi?class.cgi?41(3) USBデバイスの認識から使い方まで(後編)現在のように USB が主流になる以前のデジカメを接続するためのプログラムが沢山あります。
http://www.zdnet.co.jp/help/howto/linux/0007master/10/16.html 〜 19.html(4) LinuxでUSBを使おうこの後編の 16.html〜19.html には、Murasakiのインストール 、設定、しくみと使い方 、カスタマイズの方法が詳しく解説されています。前編の最初から通して読むと USB についてかなり詳しくなるでしょう。
http://www.flowernet.gr.jp/jado/comp/hotplug.html(5) USBUSBを扱う上で必要な基礎知識、USBコントローラの種類と見分け方、HotPlug設定レシピ(murasaki編) 、など
http://www.susono.com/~norio/linux/usb/usb.html(6) Turbo Linux 7.0 on ThinkPad i1800 P3Jkernel-2.4 のバックポートパッチを kernel-2.2.x に当 てる(kernel-2.2.18 以前の場合) 方法、USB マウス、デジカメ(FinePix4700z)、スキャナ(EPSON GT8700F)、プリンタ(EPSON PM-920C)を接続。
http://www.ops.dti.ne.jp/~kohf/computer/TL7/(7) 「Linux にUSBストレージクラスのデジカメを接続する」Tirbo Linux 7 で USB モデム(PHS用 UHA6400)、USB プリンタ(キヤノンBJ S630)、USB フロッピードライブ(LFD-31US)を接続。
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 Projecthttp://www.linux-usb.org/(10) JEIDA:(社)日本電子工業振興協会英語ですが Linux USB Guide とか、Device Driver Support 一覧など、色々あります。
http://it.jeita.or.jp/jhistory/document/standard/exif_jap/jeida49jap.htm(11)「Exif形式の画像ファイル解説」「ディヂタルスチルカメラ用画像ファイルフォーマット規格(Exif)Ver 2.1」
「カメラファイルシステム規格 (Design rule for Camera File system(略称DCF))」http://www.ba.wakwak.com/~tsuruzoh/Computer/Digicams/exif.html(12) Exif-Tools home page橘家鶴蔵さんによる Exif2.1 および DCF 仕様の解説です。
http://exif-tools.sourceforge.net/(13) ExifDumpプログラムhttp://www.interq.or.jp/japan/s-imai/tcltk/exif.html「Tkデジカメ」は、このプログラムをベースにしています。
第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(国際化)
プログラミングの試み