ttt

getttyent

FreeBSD 6.2-RELEASEをインストールしてみたら、オーディオデバイスがサポートされてい

2007-02-03 10:32:37 | デジタル・インターネット

最近よく使う仕事用パソコンは、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段階。音量をセットするレジスタのビットがずれているとか、そんな感じのバグの気がします。