Content
=======
1. Load the pkspkr.ko Kernel Driver Module (required)
2. Add non-root users to the "beep" group
3. Avoid using `beep`
4. Example Usage
1. Load the pkspkr.ko Kernel Driver Module (required)
-----------------------------------------------------
To have a working PC speaker beep on Fedora >= 12, you must load the
kernel driver module `pcspkr.ko` first.
You can do this manually as root as follows:
[root@host ~]# modprobe pcspkr
If you want the system to automatically load the pcspkr driver the
next time it boots, uncomment the
alias platform:pcspkr pcspkr
line in the `/etc/modprobe.d/beep.conf` config file.
You can check whether pcspkr.ko is loaded by running
[root@host ~]# lsmod | grep pcspkr
as root.
When pcspkr is loaded, you can run
[root@host ~]# beep
as root and verify that you hear the beep coming from the PC speaker.
2. Add non-root users to the "beep" group
-----------------------------------------
For more information on permission setup, please consult
/usr/share/doc/beep/PERMISSIONS.md file.
To add user `jane` to the `beep` group, have root run
[root@host ~]# usermod jane -a -G beep
You can check which users are members of the `beep` group by running
[user@host ~]$ getent group beep
beep:x:951:jane,bill
[user@host ~]$
However, any user newly added to the `beep` group must re-login so
their processes can pick up the group membership. A user can check
their group membership as follows:
[jane@host ~]$ id
uid=1000(jane) gid=1000(jane) groups=1000(jane),10(wheel),951(beep) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[jane@host ~]$
To check the permission of the PC speaker device file, run
[user@host ~]$ ls -lH /dev/input/by-path/platform-pcspkr-event-spkr
crw-rw----+ 1 root input 13, 85 29. Dez 02:52 /dev/input/by-path/platform-pcspkr-event-spkr
[user@host ~]$ getfacl /dev/input/by-path/platform-pcspkr-event-spkr
getfacl: Removing leading '/' from absolute path names
# file: dev/input/by-path/platform-pcspkr-event-spkr
# owner: root
# group: input
user::rw-
group:beep:-w-
group::rw-
mask::rw-
other::---
[user@host ~]$
3. Avoid using `beep`
---------------------
An alternative way to get sound output for non-root users works if the
system has a sound card set up with a speaker connected to it.
The standard 440Hz square wave which `beep` emits can be played
through the standard sound infrastructure with the command `play` from
the `sox` package (more pleasant examples are in the `sox(1)` man
page):
[jane@host ~]$ play -q -n synth 0.3 square 440
However, modern desktop systems with the freedesktop.org suite of
middleware (systemd user sessions, pulseaudio audio routing, etc.)
will probably not be set up to allow use of the sound infrastructure
for users other than the user currently logged into the current
virtual console.
4. Example Usage
----------------
An acoustic notification when a long running compile job finishes
(whether the build was successful or not) could be done with
[jane@host ~/src/foobar]$ ./configure --prefix=$HOME/.local && make && make check && make install; beep
or
[bill@host ~/rpms/foobar]$ fedpkg mockbuild; beep