Ubuntu Weekly Recipe

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

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

今回はオーディオインターフェイス特集第2弾ということで,Firewire接続のものをUbuntuに導入してみます。

Firewire/IEEE1394とは

Firewireとはもともと米国のApple社が提唱し,1995年に同じく米国のThe Institute of Electrical and Electronics Engineers, Inc.(IEEE)によってIEEE1394として標準化された規格です。2002年に,この規格の愛称としてAppleの商標の「Firewire」を使うことが発表されました。

2000年には上位互換のIEEE1394a規格(Firewire 400)が,2002年には高速化を図ったIEEE1394b規格(Firewire 800)が出されました。規格としてはこれ以降にもいくつか出されているようですが,筆者はあいにく見たことがありません。

IEEE1394aが現在一般的で,主にラップトップコンピュータに実装されている4ピンのコネクタと,バスパワーが供給できる6ピンのコネクタがあります。

Firewire接続のオーディオインターフェイスとFFADO

Firewire接続のオーディオインターフェイスを使う場合は,サウンドドライバとしてALSAではなく,FFADOプロジェクトの提供しているものを使います。FFADOは24ビットサンプル,192kHzまでのサンプリング周波数への対応,MIDI入出力,SPDIF入出力,ADAT/SMUX入出力,ワードクロック切り替えなどに対応しています。

FFADO公式ウェブサイトのDevice support databaseにて,対応するサウンドデバイスを調べることができます。M-Audio社,Echo社,Focusrite社,Presonus社,MOTU社,Mackie社などの特定の製品が掲載されています。このうち,Echo社とFocusrite社とは直接の協力関係を結んでいて,技術情報を直接提供いただいているそうです。

さて,UbuntuにFirewire接続のオーディオインターフェイスを導入するには,IEEE1394インターフェイスの確保を含む以下の4ステップを踏む必要があります。

  1. IEEE1394インターフェイスの導入
  2. IEEE1394用カーネルモジュールの有効化
  3. デバイスファイルへのアクセス許可
  4. FFADOライブラリパッケージのインストール

ここでは,筆者が所有しているEcho社のAudiofire Pre 8の導入例を,筆者がデバッグテストに参加している,Ubuntuの次期リリースのNattyに関する状況を交えてお伝えしていきます。

IEEE1394インターフェイスの導入

Firewire接続のオーディオインターフェイスを使いたいので,コンピュータ側にIEEE1394インターフェイスが必要です。もしお使いのコンピュータがIEEE1394インターフェイスを搭載していない場合は,別途導入する必要があります。デスクトップであればPCI/PCI-Expressバス接続のものが,ラップトップであればPCMCIA接続のカードタイプが一般的です。

IEEE1394インターフェイス用ドライバについて

次に,このIEEE1394インターフェイス用ドライバが必要です。Linuxには新しいドライバセットと旧いドライバセットがあり,Ubuntuの場合,Lucid,Maverick,Nattyでそれぞれインストール状況が異なっています。ちょうど移行期間にあたっていると考えてください。まとめると以下のようになります。

表1 IEEE1394/Firewire用カーネルモジュールセットのインストール状況と標準のモジュール

バージョンインストール状況標準のモジュール
10.04(Lucid)新旧
10.10(Maverick)新旧
11.04(Natty)新のみ

IEEE1394インターフェイスの中には新ドライバセットが対応していないものもあるようですが,新しいドライバは旧いドライバセットと比べて効率がよく,一般的なIEEE1394インターフェイスに対して,よりよい動作が期待できます。FFADOライブラリは新しいドライバセットでも動きますが,最新の2.0.1リリースにおいても新ドライバセットへの対応は実験的(experimental)で,可能なら旧いドライバセットを使ってもらいたいということです。

表から判断するに,LucidとMaverickは旧ドライバセットを,Nattyでは新ドライバセットを使うのがよいでしょう。そうなると,現在の最新リリースであるMaverickでは,旧ドライバセットへ切り替える必要があります。

以降はLinuxの作法に従い,ドライバをカーネルモジュールと呼んでいきます。このIEEE1394用カーネルモジュールに関して詳しく知りたい方はLinux FireWire wikiを参照してください。

カーネルモジュールの切り替え

現在システムで有効化しているカーネルモジュールを確認するには,端末で以下のコマンドを実行します。

MaverickとNattyにおける出力結果

$ lsmod | egrep '(1394|firewire)';
firewire_ohci          30801  0 
firewire_core          54903  1 firewire_ohci
crc_itu_t              12331  1 firewire_core

Lucidにおける出力結果

$ lsmod | egrep '(1394|firewire)';
ohci1394               27024  0 
ieee1394               81069  1 ohci1394

新旧の見分け方は,名前です。旧カーネルモジュールはsbp2.koを除いて全て「1394」という文字列を含み,新カーネルモジュールはnosy.koを除くすべてが「firewire」という文字列を含みます。Maverick/Nattyでは新カーネルモジュールが,Lucidでは旧カーネルモジュールが有効となっていることがわかります。

Maverickでは旧カーネルモジュールも使えるので,切り替えてみます。切り替えはファイル「/etc/modprobe.d/blacklist-firewire.conf」で行います。コマンド「cat」で内容を見てみましょう。

$ cat /etc/modprobe.d/blacklist-firewire.conf;
# Select the legacy firewire stack over the new CONFIG_FIREWIRE one.

blacklist ohci1394
blacklist sbp2
blacklist dv1394
blacklist raw1394
blacklist video1394

#blacklist firewire-ohci
#blacklist firewire-sbp2

blacklistという構文により,旧カーネルモジュールである「ohci1394」「sbp2」「dv1394」「raw1394」「video1394」が,起動時に読み込まれないリストに登録されています。対して新カーネルモジュールは,行頭の「#」によってコメントアウトされ,リストから外されています。そのため,新カーネルモジュールが有効となります。

旧カーネルモジュールを有効にするには,このコメントアウトを逆にします。操作としては,端末にて以下を実行します。

$ gksudo gedit /etc/modprobe.d/blacklist-firewire.conf;

パスワードを入力するとテキストエディタが開きますので,新旧のコメントアウトを逆にして,以下のようにします。

# Select the legacy firewire stack over the new CONFIG_FIREWIRE one.

#blacklist ohci1394
#blacklist sbp2
#blacklist dv1394
#blacklist raw1394
#blacklist video1394

blacklist firewire-ohci
blacklist firewire-sbp2

修正が終わったら,保存してテキストエディタを終了してください。

通常のカーネルモジュール(ALSAプロジェクトのカーネルモジュールなど)であればblacklist設定はこれで終了なのですが,IEEE1394用カーネルモジュールはブートプロセス以前のinitramfsプロセスで有効化されるため注1),以下のコマンドでinitramfsを再生成しておきます。

$ gksudo update-initramfs -u;

システムを再起動すると,新旧のカーネルモジュールの切り替えができているはずです。端末で確認してみましょう。

$ lsmod | egrep '(1394|firewire)';
ohci1394               27024  0 
ieee1394               81069  1 ohci1394

なお,新カーネルモジュールに切り替えたい場合は,ファイル「/etc/modprobe.d/blacklist-firewire.conf」を書き換えた上で,同様の操作を行ってください。

注1
Firewire接続のハードディスク内のファイルシステムをマウントするためです。

著者プロフィール

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

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

コメント

コメントの記入