Ubuntu Weekly Recipe

第160回 オーディオインターフェイスを使う ― Firewire導入編

この記事を読むのに必要な時間:およそ 5 分

足りないカーネルモジュールの有効化

旧カーネルモジュールを使う場合には「ieee1394」「ohci1394」の他に,もうひとつ「raw1394」を有効化する必要があります注2)⁠このカーネルモジュールはシステムが起動した後に必ず有効化されるようにしたいので,ファイル「/etc/modules」に追記します。以下を実行してください。

$ gksudo gedit /etc/modules;

テキストエディタが開きますので,/etc/modulesの末尾に以下の1行を追記して保存します。

raw1394

システムを再起動して,有効となっているカーネルモジュールを確認してみましょう。

$ lsmod | egrep '(1394|firewire)';
raw1394                22462  0 
ohci1394               27024  0 
ieee1394               81069  2 raw1394,ohci1394

このようになれば,Lucid/Maverickでの旧カーネルモジュール設定は完了です。

なお,新旧のカーネルモジュールがどちらも有効となった場合,IEEE1394インターフェイスがうまく使えなくなる可能性があります。もしどちらも有効化されていたら,コマンド「modprobe」の使い方を調べ,不要なモジュールを無効化してみてください。

注2
後述するデバイスファイル「/dev/raw1394」のためのカーネルモジュールが,raw1394であるからです。新カーネルモジュールでは,firewire_ohciがデバイスファイル「/dev/fw*」を設けます。

デバイスファイルの読み書き許可

Linuxの作法のひとつに,⁠デバイスへの読み書きはファイルを通じて行う」というものがあります。デバイスに対する読み書きを,普通のファイルに対する読み書きと同じようにしたい,というわけです。この「デバイス用のファイル」はLinuxの作法では「デバイスファイル」「特殊ファイル」と呼ばれており,パス「/dev」以下に設けられています。

IEEE1394インターフェイスもデバイスのひとつですので,このデバイスファイルを持っています。旧カーネルモジュールを有効にしている場合はファイル「/dev/raw1394」⁠新カーネルモジュールが有効になっていればファイル「/dev/fw*」⁠*は0からの通し番号)となります。

このデバイス用ファイルの状態について,調べてみましょう。以下のコマンドを実行します。

$ ls -la /dev | egrep '(fw|1394)';
crw-------  1 root root  251, 0 2011-01-26 09:34 /dev/raw1394

この出力結果は,Lucid/Maverickで旧カーネルモジュールを有効にした場合です注3)⁠Linuxのファイルアクセス権に慣れていない人には難しいですが,ログインユーザは読み取りも書き込みもできなくなっていることがわかります。これではログインユーザがFFADOライブラリを通じてデバイスへアクセスできません。そのため,アクセスできるように設定を変更します。

このデバイス用ファイルは,UDEVが管理しています。UDEV(linux Userspace DEVice Management)は,必要に応じてデバイスファイルの作成/削除を行ったり,アクセス権の設定を行なったりします。設定はパス「/lib/udev/rules.d」以下のファイルや,⁠/etc/udev/rules.d」以下のファイルに記述されています。

今回はここに,デバイスファイル「/dev/raw1394」に対する設定ファイルを配置してみましょう。具体的な操作方法は以下のとおりです。

  1. 端末で「$ gksudo gedit /etc/udev/rules.d/60-raw1394.rules」を実行します
  2. パスワードを入力すると,テキストエディタが開きます
  3. 末尾に「KERNEL=="raw1394", OWNER="root", GROUP="audio", MODE="660"」を記述します
  4. テキストエディタ上で保存をクリックすると,ファイルが作成されます
  5. システムを再起動します

デバイス用ファイルが読み取り/書き込み可となっているかを確認してみましょう。以下を実行します。

$ ls -la /dev | egrep '(fw|1394)';
crw-rw----  1 root audio  251, 0 2011-01-26 09:34 /dev/raw1394

「rw-rw----」「audio」が含まれていれば成功です。これは,rootだけではなく,グループ「audio」に所属するユーザも読み取り/書き出しができますということです。

そこで,次にログインユーザをグループ「audio」に加えます。これは,Ubuntuのメニューからシステム,システム管理と進み,ユーザとグループから行います。

図1 ユーザとグループ管理画面

図1 ユーザとグループ管理画面

Nattyでは,デバイスファイル「/dev/fw*」⁠*は0からの通し番号)に対応したUDEVの設定は,パッケージ「libffado2」がインストールするように予定されています。ファイル「/lib/udev/rules.d/60-ffado.rules」です。そのため,ユーザに必要な操作はグループ「audio」への登録だけとなりそうです。

注3
より正確には,raw1394カーネルモジュールを有効にした場合です。

FFADOライブラリパッケージのインストール

さて,ここまででIEEE1394インターフェイスを使う準備が整いましたので,次にFFADOライブラリパッケージをインストールします。Synapticパッケージマネジャーを使うのが最も簡単でしょう。

パッケージ「libffado2」「ffado-tools」⁠⁠ffado-mixer-qt4」をインストールしてください注4)⁠前者がライブラリで,後者の2つはツール集となります。これらパッケージに含まれるファイル「/usr/share/doc/libffado2/README.gz」で,FFADOプロジェクトに関する詳細や対応デバイス情報を見ることができます。

注4
Bug #524702にて,パッケージ「ffado-tools」に必要なライブラリがパッケージ「ffado-mixer-qt4」に含まれているのはおかしいのではないかというバグ報告がされました。Ubuntu 11.04では必要なライブラリが移されたため,⁠libffado2」「ffado-tools」の2つをインストールするだけで済みそうです。

認識の確認

ここまでの設定が済んだら,再びシステムを再起動し,IEEE1394のケーブルでコンピュータのIEEE1394ジャックとオーディオインターフェイスのFirewireジャックを接続してオーディオインターフェイスの電源を入れます。きちんと設定ができていると,端末でコマンド「$ ffado-test ListDevices;」を実行することで,オーディオインターフェイスの認識を確認できます注5)⁠

$ ffado-test ListDevices;
-----------------------------------------------
FFADO test and diagnostic utility
Part of the FFADO project -- www.ffado.org
Version: 2.0.1
(C) 2008, Daniel Wagner, Pieter Palmers
This program comes with ABSOLUTELY NO WARRANTY.
-----------------------------------------------

=== 1394 PORT 0 ===
  Node id  GUID                  VendorId     ModelId   Vendor - Model
   0       0x0014860a5b6bdb9b  0x00001486  0x00000AF9   Echo Digital Audio - AudioFirePre8
   1       0x005b47de006cf049  0x00005B47  0x00000000   Linux - ohci1394  - 
no message buffer overruns

もし認識されないようであれば,以下のコマンドで診断プログラムを実行します。

$ ffado-diag;

出力を参照して,IEEE1394のカーネルモジュールが有効となっているか,デバイスファイル「/dev/raw1394」あるいは「/dev/fw*」⁠*は0からの通し番号)へのアクセスが許可されているか,FFADOライブラリが対応しているオーディオインターフェイスなのかを確認してください。フォーラムなどに相談する場合は,この出力も一緒に伝えるといいでしょう。

残念ながら,ここで与えられた文字数が尽きてしまいました。Ubuntuからデバイスへ音声出力をする方法,デバイスから音声を取得する方法,そしてハードウェアミキシングやデイジーチェーンといった,Firewire接続のサウンドデバイスの持つ特性を利用していく方法は,次週にお伝えします。

最後となりましたが,今回の原稿を書くのにあたり,initramfsとIEEE1394用カーネルモジュールの関係に関してご助言くださった松江大雄さんに感謝いたします。

注5
Nattyではここにエラーが出力されます。筆者がFFADOのユーザメーリングリストで尋ねてみたところ,ログインユーザには設定できないアクセス権の問題であり,使用には影響ないということでした。

著者プロフィール

坂本貴史(さかもとたかし)

Ubuntuのマルチメディア編集環境であるUbuntu Studioのユーザ。主にUbuntu日本コミュニティとUbuntu Studioコミュニティで活動。いつかユーザ同士で合作するのが夢。