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