LinuxでWebカメラの設定に挑戦する

 往年のGNU/Linuxの雰囲気を味わいたい人は、Webカメラの設定に挑戦してみてはどうだろう。大半の周辺機器とは違い、普通はディストリビューションのインストール中にWebカメラの設定が行われることはない。また、プリンタであればCUPS(Common Unix Printing System)とそのインタフェースが用意されているが、一般にWebカメラの場合はインターネットで見つかった情報とカーネルモジュールおよびドライバに関する自らの知識に頼ることになる。こうした敷居の高さはWebカメラの設定が挑み甲斐のある作業になり得ることを示している。だが、決断力とひたむきさ、そして少しの運があれば、半日以内にWebカメラを動作させることができるはずだ。

 Webカメラの設定に最も適した状況は、外付けのWebカメラを購入した場合だ。さまざまなメーカー、モデルのサイトが無数に存在するので、手に入れたWebカメラがGNU/Linuxに対応しているかどうかは、たいていWebで検索すればわかる。ほとんどの場合、メーカーのサイトにはあまり情報がない。しかし、通常はコミュニティによって構築されたサイトが見つかる。そこにはたいていユーザのコメントが載っている。Howard Shane氏の「The Webcam HOTO」には、サイトの古さがところどころに見られるものの、コンシューマにとって役立つリンクが多数含まれている。また、FireWire接続のカメラについては、Damien Douxchamps氏が管理している「The IEEE1394 Digital Camera List」というサイトを参照してみてほしい。

 とりわけ便利なのがMichel Xhaard氏の「A Free World」というサイトで、ここにあるSpca5xxドライバはDebianなど主だったディストリビューションのリポジトリに収録され始めている。このサイトに適切なドライバが見つかり、使っているディストリビューションにそうしたドライバにふさわしいパッケージが入っていれば、そのWebカメラはドライバパッケージのインストール時に自動設定が可能かもしれない。その場合は、手間がほとんどあるいはまったくかからない。

 しかし、ときには(特にノートPCでは)、内蔵Webカメラの設定を行うのに一苦労することになるかもしれない。おそらくこうしたWebカメラは購入時の重要な検討項目になることはなく、ディストリビューションにもドライバパッケージが収録されていない可能性が高い。このような場合は、コンピュータの型式でWeb検索をかけるとその内蔵カメラの設定方法がわかることがある。

 もっと多いのは、そのコンピュータから直接、内蔵カメラに関する情報を取得しなければならない場合である。そのためのいくつかの方法を以下に示す。

  • 適切なプログラム(後述)を使ってカメラの動作テストをする。それでうまく動作すれば、そのカメラはカーネルが直接サポートしているモデルの1つということになる。これは今となっては珍しく、幸運なケースといえる。
  • dmesg | more」というコマンドを使ってブート中にカメラが検出されたかどうかを確認する。カメラへのリファレンスが見つかったら、/lib/modulesでサブフォルダ/usbを探し、該当する読み込み可能なカーネルモジュールがないか確認する(リストから推測できたかもしれない)。このサブフォルダの厳密な場所はディストリビューションによって異なる。Debianなら/lib/modules/kernel/build/drivers/usb、Fedora 7なら/lib/modules/kernel/kernel/drivers/usbである。
  • 最近、最も多いのはUSBカメラだろう。この場合はlsusbを使って、あるいはもしディストリビューションに用意されていればv4l2-toolというGUIツールを使ってUSBデバイスのリストを参照する。デバイス名を見ながら、消去法や推測によってそのカメラに該当するものを特定し、リストの最後の欄にあるコロンで区切られた8桁の数字を記録する。この数字はベンダと製品IDを識別するものであり、インターネットからドライバの候補を見つけ出すのに利用できる。v4l2-toolを使っている場合は、「Suggest Driver」タブにこのIDを入力すれば推奨ドライバの名前が表示されることもある。この情報が手に入れば、インターネットでそのドライバを検索して、ダウンロードとコンパイルが行える。場合によっては、依存関係のあるモジュールをまずダウンロードする必要があるかもしれない。たとえば、Ricoh R5U870というドライバであれば、DKMS(Dynamic Kernel Module Support)パッケージのインストールも必要になる。

 このRicoh R5U870の場合は、DKMSを有効にしておくとドライバのコンパイルが終わり次第、自動的にドライバのインストールが行われる。場合によってはカーネルパッチ経由でドライバをインストールする必要があるかもしれないが、ひと昔前のWebカメラでない限りそういうケースはまれだ。ほとんどの場合は、ドライバが準備できたら「modprobe drivermodulename 」を実行してカーネルにドライバをロードする必要がある。うまくロードできたら、ドライバ名を/etc/modulesに追加するか、「modprobe drivermodulename 」という行を/etc/rc.localに追加するかして、ブート時にカメラが有効になるようにしておく。

テストの実施

 ここまで来たら最大の難関は乗り越えたといえる。だが、動作確認に至るまでにはまだいくつか面倒な作業が残っている。ディストリビューションによっては、addgroupコマンドを使って新たなvideoグループを作り、/etc/group内のこのグループにユーザアカウントを追加して誰でもカメラを使えるようにしておく必要があるだろう。また、WebカメラはCamStream、Ekiga、Kopeteなどさまざまなプログラムでテストする必要がある。というのは、特定のカメラまたはそのドライバではプログラムが動作しない可能性があるからだ。場合によっては、プログラムを新しいバージョンにアップデートすると突然動作するようになるかもしれない。

 また、DKMSを使ってWebカメラのドライバをインストールした場合は、別の周辺機器が動作しなくなっている可能性がある(私の場合は、Ndiswrapperで有効にしていた無線カードだった)。この問題はリブートでは解決しないかもしれないが、マシンをシャットダウンして再起動すれば嘘のように消えてしまうはずだ。それでも解決しない場合は、動作しなくなったものをすべてアンインストールしたうえでインストールし直すという方法もある。

まとめ

 残念ながら、本稿ではWebカメラ設定のとっかかりの部分しか紹介できない。Webカメラのメーカーとモデルは非常に数多く存在するだけでなく、ほかで売られているカメラの商標名を変えただけのものも多いため、同じシリーズとして販売されているカメラでも中身が異なる場合がある。

 また、多くのハードウェアメーカーと同様、WebカメラのメーカーはGNU/Linux用ドライバのリリースにあまり関心を示していない。つまり、現存するWebカメラのドライバの多くはリバースエンジニアリングによってコミュニティの開発者が作ったものであり、彼らの多くはほかの開発者の成果との間で標準化を行うことはまったく考えていないようだ。

 こうした理由から、設定に関する詳細の多くは特定のカメラやモジュールに依存した内容にならざるを得ない。しかし、多くのユーザにとっての問題はWebカメラの設定が難しいことではなく、むしろその全体像が見えないことにある。おそらく、ここで説明した情報や状況を参照すれば、途中でどんなことが起こり、ある方法が失敗したときにはほかにどんな方法が試せるかを知ったうえで、Webカメラの設定に着手できるはずだ。

Bruce Byfieldは、Linux.comとIT Manager’s Journalに定期的に寄稿しているコンピュータジャーナリスト。

Linux.com 原文