AmarokからAirMac Expressに繋いだスピーカーを鳴らそうとしたけど無理だった
Ubuntu 8.04で、カーネルのバージョンは2.6.24-21-genericで鳴らそうとやったけどダメでした。
他にもUbuntuで上手く動かない人がいるようだ。英語だからよくわからない…
(2008/10/26追記:どうやらUbuntu8.04のカーネルのALSA関係に問題があるらしいので、カーネルをどうにかしなきゃいけないようです)
- 必要なパッケージ
- libssl(libssl0.9.8が入ってた)
- libssl-dev
- libfltk1.1-dev
- libfltk1.1
- fluid
- libglib2.0-dev
- libsamplerate0
- libsamplerate0-dev
- libid3tag0
- libid3tag0-dev
入ってなかったらSynapticなどで入れる。
-
- build-essentialも、コンパイラ等が入ってなかったようなので入れた
- raop_playのsourceをダウンロード。
http://prdownloads.sourceforge.net/raop-play/raop_play-0.5.1.tar.gz?download
後に解凍する。
- パッチをダウンロードする
http://sourceforge.net/tracker/download.php?group_id=119473&atid=684238&file_id=237676&aid=1756825
- パッチをraop_play-0.5.1ディレクトリに入れ、当てる
patch -p0 < fix-typedefs.patch
- geditなどでdrivers/alsa_raoppcm.cを開き、
#include <linux/config.h>
を
#include <linux/autoconf.h>
に変更する。
- /raop_play-0.5.1/aexcl/ipod/glibsubst.cを編集…
g_mallocとg_malloc0の引数のgulongをgsizeに変更
inline gpointer g_malloc(gulong size) { return malloc(size); } inline gpointer g_malloc0(gulong size) { gpointer p; if((p=malloc(size))) memset(p,0,size); return p; }
を
inline gpointer g_malloc(gsize size) { return malloc(size); } inline gpointer g_malloc0(gsize size) { gpointer p; if((p=malloc(size))) memset(p,0,size); return p; }
に。
(makeしたら型が違ってるって怒られたから/usr/include/glib-2.0/glib/gmem.hに合わせて変更したけど、大丈夫だよね?)
- コンパイル、インストール
cd raop_play-0.5.1 ./configure make sudo make install
ここまでは成功(してると思う)。ターミナルにaexcl_playと打って実行して、出てきたウィンドウで適当な音楽ファイルを選んで再生したら、AirMac Expressから音楽が流れた。
(mp3を再生するにはmpg321、oggにはogg123、aacにはfaad、flacにはflacをインストールする必要がある)
cd raop_play-0.5.1/drivers make sudo make install
- シェルスクリプトを用意する
- load_airport_express_driver
#!/bin/sh module=alsa_raoppcm devnode=/tmp/pcmout if ! grep "^$module" /proc/modules > /dev/null; then /sbin/modprobe alsa_raoppcm fi major=`sed -n -r "s/(^[0-9]+) pcmout/\\1/p" /proc/devices` if [ -c $devnode ]; then rm -f $devnode; fi mknod $devnode c $major 0
-
- start_airport_express
#!/bin/bash sudo load_airport_express_driver raop_play airport /tmp/pcmout &
"airport"はAirMac Expressの名前か、IPアドレスに置き換える
-
- stop_airport_express
#!/bin/bash killall -9 raop_play
スクリプトは実行属性をつけて、パスを通しておけばいいようです
sudo chmod +x load_airport_express_driver sudo cp load_airport_express_driver /usr/bin (以下省略)
- 実行
sudo start_airport_express
これでちゃんとできるはずなんですが。
$ sudo start_airport_express mknod: missing operand after `0' 詳しくは `mknod --help' を実行して下さい. $ DBG: CSeq: 1 DBG: Apple-Response: y7AXn4R1i... DBG: Audio-Jack-Status: connected; type=analog DBG: CSeq: 2 DBG: Session: 809F79C0 DBG: Transport: RTP/AVP/TCP;unicast;interleaved=0-1;mode=record;server_port=6000 DBG: Audio-Jack-Status: connected; type=analog DBG: CSeq: 3 DBG: Audio-Jack-Status: connected; type=analog DBG: CSeq: 4 DBG: Audio-Jack-Status: connected; type=analog connected ERR: errror: auds_open
エラーがでて、上手いこと動かない。
cat /proc/asound/cards
とやってみても、1つしか表示されない。
うまくいってたなら、ここでAmarokの設定をすれば聞こえるようになるんだろうけど・・・
参考サイト:
http://raop-play.sourceforge.net/
2006-05-30
airport_express [Wiki ubuntu-fr]
http://www.jroller.com/nwinkler/entry/amarok_and_the_airport_express
http://www.jroller.com/nwinkler/
http://ubuntuforums.org/showthread.php?t=192806