あるときから beep が鳴らなくなってしまった。このときはパッケージ alsa-base のバージョンを上げたときで、/etc/modprobe.d/alsa-base-blacklist.conf
に blacklist pcspkr
と書かれるようになったからで、これをコメントアウトしてカーネルのモジュール pcspkr をロードするようにして復活した。
別の事情のためにカーネルのバージョンを 2.6.30 にしたら、またまた beep が鳴らなくなってしまった。というか、PC スピーカーからではなく ALSA のほうに行ってしまい、そちらに外部スピーカーを接続して alsamixer の beep コントロールを適切に設定すればそちらから音が出るようになった。
しかし、ここでは外部スピーカー(ヘッドホン)は音楽を聴くときなど限られたときしか使っていない。そのため警告音として役に立たない。
検索の結果、Anyone know what happened with PC speaker in 2.6.30? の中ほどを見ると、カーネルの config で、SND_HDA_INPUT_BEEP
を off
にすればいいようだ。このためだけに Debian パッケージのカーネルを使えずにカーネルの再構築をしなければならないとはひどく面倒だ。
まとめると、Debian で beep を PC スピーカーで鳴らすには、
SND_HDA_INPUT_BEEP
をoff
にしてカーネルを再構築する- カーネルのモジュール pcspkr はロードする
- alsamixer の beep はミュートする (そうしないと ALSA から「も」beep が鳴る)
検索してみても、いかに beep を消すかというばかりが見つかり、逆に beep を PC スピーカーで鳴らしたいというのはほとんど見つからない。時代遅れなのだろうか。