2007年2月3日土曜日

FreeBSD 6.2-RELEASEをインストールしてみたら、オーディオデバイスがサポートされていなくて音が鳴らなかった…がっくり。HDAって何ですか?

最近よく使う仕事用パソコンは、OSはWindows XPでして、VMware Playerを使ってFreeBSDを使っていました。そういう環境でもまあまあよかったんですが、



  • 搭載しているメモリが1GBと少なくて、やっぱりちょっと足りないかな


  • Windowsじゃなくて、FreeBSDだけでも、けっこういけそうな手ごたえ(昔はそうやって仕事をしてたし)


っていう感じがしてきていました。というわけで、実はインストールしてあったけど動かしていなかったFreeBSDを、最新のバージョン6.2にupgrade installして、いろいろ環境構築してみました。



  1. VMwareの中とはちがって、やっぱりサクサク動くところがいい!


  2. やっぱり、KDEとかGNOME2とかは使わず、むかーしから使っているfvwm-1.24をソースから自分でビルド


  3. firefoxとthunderbirdがあれば、とりあえず大丈夫。どうしてもInternet Explorerを使わなければいけない事務作業とかあるけど、そのときはそのときということで。


  4. firefoxのflashプラグインは、仕事をするだけなら不要だし、なんか昔から入れると不安定になることが多い気がするので、入れていません。


  5. 日本語入力は、scim-anthyというのをはじめて使ってみました。何か自分の環境が悪いせいか、最初うまく動かなくて手間取ったのですが、いざ動き出すと、これって、けっこうよくできてていいですね。以前は、むかーし買ったFreeBSD版のWnn7や、Solarisなサーバー上で動いているWnn6を、Emacs/XEmacsで使ってました。firefoxやthunderbirdでは、日本語入力は使ってませんでした(xwnmoを使うとクラッシュしやすい気がしたので・・・気のせい?)。メールはEmacsでgnusだったのでthunderbirdは動作確認程度にしか使ってなかったし。


☆ ☆ ☆ ☆ ☆ ☆ 



一通り使える環境になったかなぁと思ったところで、オーディオデバイスの設定をしていないことに気がつきました。どうせ、kldload snd_ichだろうなと思ってたら、違う?!



・・・一通りすべてのドライバを試しましたが、ぜんぜんオーディオデバイスが認識されません。もしや、サポートされていないデバイス?という気がしてきました。



scanpciとかpciconf -lとかで調べてみると、オーディオデバイスはこれらしいです。



pci bus 0x0000 cardnum 0x1b function 0x00: vendor 0x8086 device 0x2668
Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Con
troller



ICH6と書いてあるから、snd_ichでサポートされているんじゃないかなと思い、ドライバのソースコードを、grep 2668とかしてみたりしたのですが、おしい、ちょっと違う。じゃ、追加すれば動くんじゃない?と一瞬思ったのですが、一応、googleで検索してみたところ、驚愕の事実が。



「High Definition Audio」(略してHDA。ぜんぜん知らなかったのですが、AC97の後継となる、新しいオーディオ規格のことらしいです)というやつは、



  • 2007年1月現在のところ、FreeBSD 6系ではサポートされていない


  • CURRENTブランチであるFreeBSD 7では、snd_hdaというドライバでサポートされている


ということでした。



マニュアルはこちらに。



http://www.freebsd.org/cgi/man.cgi?query=snd_hda&apropos=0&sektion=4&manpath=FreeBSD+7-current&format=html



ソースコードをcvswebで見てみると、0x2668はサポートされているようです。



http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/sys/dev/sound/pci/hda/hdac.c?rev=1.23&content-type=text/x-cvsweb-markup



FreeBSD 6系でがんばってsnd_hdaを動かすpatchもあるみたいで、しばらく待っていれば、MFCされるかも?という希望もないこともないかもしれないけどどうなんだろうな、みたいな? それが現状っぽい雰囲気です。



昔、5-CURRENTのころは仕事用パソコンにインストールして、ときどきcvsup & make buildworldまでして使っていましたが、最近はCURRENTはぜんぜん使っていません。保守的になっちゃったなぁ。うーん、どうしよう。



よし、今年はアグレッシブに行こう、ということで、とりあえず、以下で公開されている、7.0-CURRENTのsnapshot版をダウンロード。



ftp://ftp2.jp.freebsd.org/pub/FreeBSD/snapshots/200701/7.0-CURRENT-200701-i386-bootonly.iso



ISO9660ファイルから、カーネルだけをひっこぬいてきました~~~たとえばこんなかんじ・・・意味がわからない人、動かなくなったときの復旧方法を知らない人はご遠慮ください・・・



mdconfig -a -t vnode -f /somewhere/7.0-CURRENT-200701-i386-bootonly.iso
mount -o ro -t cd9660 /dev/md0 /mnt
cp -pr /mnt/boot /boot7



再起動させ、FreeBSDのboot loaderで、プロンプトに抜けて、module_pathを/boot7に変更(これをやらないとkernelが落ちる)、/boot7/boot/kernelを使ってFreeBSD7でブート。



kldload snd_hdaしてみたところ、認識されました。



dmesgでは・・・
pcm0: <Intel 82801F High Definition Audio Controller> mem 0xb0000000-0xb0003fff irq 16 at device 27.0 on pci0
pcm0: <HDA Codec: Realtek ALC260>
pcm0: <HDA Driver Revision: 20070105_0038>



cat /dev/sndstat では・・・
FreeBSD Audio Driver (newpcm: 32bit)
Installed devices:
pcm0: <Intel 82801F High Definition Audio Controller> at memory 0xb0000000 irq 16 kld snd_hda [20070105_0038] (1p/1r/1v channels duplex default)







カーネルだけFreeBSD7にするという無茶苦茶なことをやってますが、xmmsでMP3やWMAも再生できてます。thunderbirdで新着メールがあったときにも音がなりました(WAVファイルを自分で指定しないと音が鳴らなかったけど、よくわかんね)。



ただ、たまにスタッタリングみたいなノイズがでます。



それと、別に使わないのでかまわないけどeclipseが動きませんでした(diablo-jdkのクラッシュ)。



FreeBSD 7.0-RELEASEは、今のところ2007年6月リリースの予定らしいです。じゃあ、このままなし崩し的に、7.0-CURRENTに移行してしまおうかな?!



(2007/2/16)
FreeBSD 7.0-CURRENTにして、オーディオデバイス(Intel HDA)は、おおむね、動いているのですが、1つ、明らかにおかしいところがあります。ボリューム(ミキサー)がおかしいです。ボリュームが、4段階くらいしかないんです。



1.無音、2.やや音がでかい、3.やかましい、4.やめてくれ、
という感じの4段階。音量をセットするレジスタのビットがずれているとか、そんな感じのバグの気がします。



0 件のコメント:

コメントを投稿