Difference between revisions of "How to disable the pc speaker (beep!)"

From ThinkWiki
Jump to: navigation, search
(There are now two kernel modules, which allow the computer to shatter your eardrums.)
 
(One intermediate revision by one other user not shown)
Line 17: Line 17:
  
 
If this does not feel comfortable, you can also edit the aforementioned file with your favorite text editor and add the blacklist lines yourself.
 
If this does not feel comfortable, you can also edit the aforementioned file with your favorite text editor and add the blacklist lines yourself.
 +
 +
 +
== New kernels: remove via !<module> ==
 +
In the new linux kernels, the use of file {{path|/etc/modprobe.d/blacklist}} is is deprecated. The correct solution is to put a ! in front ov every module you want to blacklist. For instance, in ArchLinux you just have to modify your {{path|/etc/rc.conf}} according to the following:
 +
 +
MODULES=(!pcspkr !snd_pcsp <other modules>)
 +
  
 
=== Re-enabling the pc speaker ===
 
=== Re-enabling the pc speaker ===
Line 44: Line 51:
  
  
== Learning to love the beeps ==
+
== Dr. Thinkpad; Or: How I Learned to Stop Worrying and Love the Beep ==
  
 
Actually, these beeps are quite useful sometimes (especially with shell-scripts that want to get your attention with echo -e "\a" ).  
 
Actually, these beeps are quite useful sometimes (especially with shell-scripts that want to get your attention with echo -e "\a" ).  

Latest revision as of 20:26, 23 January 2011

Get rid of the annoying beeps in Linux

Remove the pc speaker modules "pcspkr" and "snd_pcsp"

You might have only one of these modules in use, but they both enable beeps.

Open a terminal and issue this command as root:

# modprobe -r pcspkr snd_pcsp

To prevent the "pcspkr" and "snd_pcsp" modules from loading again at startup add them to modprobe's blacklist in /etc/modprobe.d/blacklist. You can do this with the following command:

# cat <<END >>/etc/modprobe.d/blacklist
blacklist pcspkr
blacklist snd_pcsp
END

If this does not feel comfortable, you can also edit the aforementioned file with your favorite text editor and add the blacklist lines yourself.


New kernels: remove via !<module>

In the new linux kernels, the use of file /etc/modprobe.d/blacklist is is deprecated. The correct solution is to put a ! in front ov every module you want to blacklist. For instance, in ArchLinux you just have to modify your /etc/rc.conf according to the following:

MODULES=(!pcspkr !snd_pcsp <other modules>)


Re-enabling the pc speaker

The speaker can be temporarily activated by loading either of the modules:

# modprobe pcspkr

or

# modprobe snd_pcsp

If you do not want to prevent the modules from loading during startup, delete the two blacklist lines mentioned in the previous section from /etc/modprobe.d/blacklist.

Disable console beeps in /etc/inputrc

Another solution is to disable console beeps in /etc/inputrc (change with your favourite editor, should work on all distributions)

# do not bell on tab-completion
set bell-style none

Disable the system beep in Gnome

In Ubuntu 7.10 and later, uncheck:

System > Preferences > Sound > System Beep > Enable System Beep

Or if it's just the terminal tab auto-completion that's bothering you, uncheck:

Terminal > Edit > Current Profile > Terminal bell


Dr. Thinkpad; Or: How I Learned to Stop Worrying and Love the Beep

Actually, these beeps are quite useful sometimes (especially with shell-scripts that want to get your attention with echo -e "\a" ). The reason people tend to hate them are because they get overused.

1. Make bash tab-completion less beepy, by editing /etc/inputrc (or ~/.inputrc). Add:

# Show all if ambigious.
set show-all-if-ambiguous on

This makes tab-completion more useful, as well as less irritating: we now only get a beep on a true error (no possible completions); if multiple options are possible, all are printed, and it doesn't beep.


2. Make the beep quieter, shorter, and a nicer pitch. I tend to set 440 Hz, 50ms. Configure with kcontrol (in KDE), or just use xset in your startup files:

xset b 50 440 50