linuxでbeepのOn/Offを設定する

linuxbeep(bell)を鳴らしたい場合・止めたい場合の設定方法をまとめます

beepコマンド

beepコマンドで,beep音が出るか確認します

$ beep

beepコマンドで permission errorが出る場合

beepバイスは,デバイスファイル /dev/input/by-path/platform-pcspkr-event-spkr で管理されています.このファイルはシンボリックリンクです.readlink -f で実際のデバイスファイルを確認します

$ readlink -f  /dev/input/by-path/platform-pcspkr-event-spkr 

手元の環境では以下の一行が出力されました

/dev/input/event21

このファイル名が実際のデバイスファイルです.とりあえずchmodコマンドでパーミッションを変更します.

$ sudo chmod a+w 

これでbeepコマンドで音が出る場合は,パーミッション・アクセス制限の問題です.


通常パーミッションは udev で管理されています.設定ファイルは debianの場合 /lib/udev/rules.d/70-pcspkr-beep.rules になります

この設定ファイルの中身は,debainの場合,以下のようになっています.

# Give write access to the PC speaker to "beep" group so they can run "beep"
ACTION=="add", SUBSYSTEM=="input", ATTRS{name}=="PC Speaker", ENV{DEVNAME}!="", TAG+="uaccess"

応急措置としては,このファイルを編集して,例えば

ACTION=="add", SUBSYSTEM=="input", ATTRS{name}=="PC Speaker", ENV{DEVNAME}!="", TAG+="uaccess",MODE="666"

という感じで MODE="666"を追加すれば,パーミッションの問題は回避できます.

システムレベルでbeepを止めたい場合

beepバイスカーネルモジュール(Windowsでいうデバイスドライバ)pcspkr が制御しています.

以下のコマンドでモジュールをunloadするとbeep音が出なくなります.

sudo modprobe -r pcskpr 

再起動後もbeep音を無効にしたい場合は, pcskpr をブラックリストに入れて,pcskpr がカーネルに組み込まれないようにします.

具体的には,/etc/modprobe.d/nobeep.conf というテキストファイルを作成し,設定として以下の一行を加えます.

blacklist pcspkr

システムレベルでbeepを許可したい場合

音が出ない場合は pcspkr モジュールがロードされているか確認します.

$ /sbin/lsmod |grep pcspkr

pcspkr で始まる行が1行出力されればモジュールはロードされています.

pcspkr                 16384  0

モジュールがロードされてない場合は手動でロードしてみます

$ sudo modprobe pcspkr

再度,/sbin/lsmod |grep pcspkr を実行してモジュールがロードされていればOKです

モジュールがロードされない場合は,設定ファイルで pcspkr が無効化されている可能性があります.

設定ファイルは /etc/modprobe.d/ の下にあります.pcspkr を無効化する設定は以下の一行です

blacklist pcspkr

以下のコマンドで blacklist pcspkr の設定を探してみます

$ cd /etc/modprobe.d
$ grep pcspkr . -r

設定がある場合は,その一行を削除すればbeep音が鳴るはずです.

ユーザレベルでbeep音の有効・無効を設定したい

bashなどのコンソール画面

~/.inputrc に以下の設定を加えます

set bell-style none

これでbeepが無効になります

X11 (Xorg)

X window (GUI)でbeepをオフしたい場合は

$ xset -b

を実行します

GNOME
$ gsettings set org.gnome.desktop.wm.preferences audible-bell false
GTK

~/.config/gtk-3.0/settings.ini の[Settings]セクションで設定できます

[Settings]
gtk-error-bell = 0
GNU screen

~/.screenrc で on/off を設定できます

vbell on
lessコマンド

オプション"-Q"または"-q"でbeep音をオフできます