Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

There has been much written on getting the beep sound from Ubuntu releases over the years. Example: fixing the beep

My needs are slightly different in that I do not want to ensure sound card beeps are functioning. Instead, I want PC speaker beeps, the kind produced by the original built-in speaker because I believe they will produce less CPU load. I have confirmed that my computer has the PC speaker by unplugging the external speakers and shutting down Ubuntu. At some point in the shutdown and restart process a beep is heard even though the external speakers have no power.

I have tried the following:

In /etc/modprobe.d/blacklist.conf, turn these lines into comments:

#blacklist snd_pcsp
#blacklist pcspkr

In .bashrc

/usr/bin/xset b on
/usr/bin/xset b 100

Enable in the gnome terminal: Edit > Profile Prefs > General > Terminal Bell

Ensure no "mute" selections in: System > Prefs > Sound > various tabs (uncheck them all).

Select "Enable window and button sounds" in: System > Prefs > Sound > Sound Effects

In gconf-editor desktop > gnome > sound, select the three sound check boxes.

In gconf-editor apps > metacity > general select the audible bell check box.

Still I get no PC speaker beeps when I send code 7 to the console via my Java program or use

echo -e '\a'

on the bash command line. What else should I try?

Update Since my goal is to minimize load on the CPU, here is a comparison of elapsed times. Each test is for 100,000 iterations. Each variant was performed three times so three results are presented for each.

printwriter.format("%c", 7); 
// 1.3 seconds, 1.5 seconds, 1.5 seconds

Toolkit.getDefaultToolkit().beep(); 
// 0.8 seconds, 0.3 seconds, 0.5 seconds

try { Runtime.getRuntime().exec("beep"); } catch (IOException e) { } 
// 10.3 seconds, 16.3 seconds, 11.4 seconds

These runs were done inside Eclipse so multiply by some value less than 1 for standalone execution. Unfortunately, Toolkit's beep is silent on my computer and so is code 7. The beep utility works but has the most cost.

share|improve this question
    
I want "echo -e '\a'" to work, too. Because I want to know if a script has termined: foo-script.py; while true; do echo -e '\a'; done –  guettli Jan 18 '12 at 16:02
    
I guess your search for a solution (reduce cpu usage) has already created a lot of cpu cycles..... –  guettli Jan 18 '12 at 16:04
add comment

3 Answers 3

Make sure your terminal and theme don't eat the event.

External tools work, you say. You could dive into their code. This might help.

share|improve this answer
    
Thanks, I looked a bit into coding the solution. It looks simple, just play with a few hardware ports. Unfortunately, Java probably does not give you hardware port I/O the way C/C++ do. –  broiyan Jan 24 '12 at 11:57
    
add comment

On my Oneiric system I had to do the following to get XBell/XkbBell working again:

  1. Load the module pcspkr (like you already did via /etc/modprobe.d/blacklist.conf)
  2. Remove the package pulseaudio-module-x11 (that seems to absorb all XBell events)
  3. Put options snd-hda-intel beep_mode=2 into /etc/modprobe.d/enable-beep.conf (you only need that case you own a system with an intel sound chip like my Latitude E6420). Unmute the speaker in alsamixer after that.

Some terminals (like konsole, see bug Bug 177861) ignore the bell character. A good way to test the system beep is with the xkbbell command.

After I did all that the java call Toolkit.getDefaultToolkit().beep() works just fine.

share|improve this answer
add comment

Use the beep program (http://johnath.com/beep/), i've compiled the v1.3, because the 1.2.2 in Lucid repositories do not work.

  • you need to run it with sudo
  • the pcspkr module must be loaded, as you all ready did
share|improve this answer
    
I don't think you need sudo for the beep utility. The trouble with it is that Runtime.getRuntime().exec("beep"); is how I have been doing it in Java. Might be slow compared to code 7 to the standard output. –  broiyan Jan 18 '12 at 14:22
1  
without sudo gives Could not open /dev/tty0 or /dev/vc/0 for writing open: No such file or directory –  playerum Jan 18 '12 at 14:45
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.