Linux Mint + Cinnamon: Volume buttons stop to work suddenly
The nuisance
After trying to fix another problem with Pulseaudio, and messing up a bit with its configuration files, the option to control the volume by virtue of keyboard buttons suddenly stopped to work. The cursor would blink briefly when pressing the button, but nothing else happened.
I tried all the fairly normal things, including to restart the Pulseaudio daemon, to restart Cinnamon (with Alt-F2 + “r”), restart the session by changing the user (to the same user), disconnect and reconnect the (USB) keyboard, and a whole lot of other things.
It took me quite some time to fix this, so here’s what worked for me this time, along with some debug info.
The machine was a Linux Mint 19 with Cinnamon.
At an earlier stage, even the sound applet was gone from its desktop panel. To fix that, I right-clicked the panel, picked Troubleshoot > Looking Glass, and picked the Extension tab. There’s an applet listed called “Sound”. So I right-clicked it, and chose “Reload Code”. That got the applet back to the panel, and it worked flawlessly. But then I was stuck with the volume button problem.
The fix
What I actually did:
- Kill the process named csd-keyboard (probably irrelevant)
- Kill the process named csd-media-keys
- Restart pulseaudio with “pulseaudio -k”
This was the output of journalctl as a result of these:
May 31 12:17:03 cinnamon-session[2115]: WARNING: t+1132491.55749s: Application 'cinnamon-settings-daemon-keyboard.desktop' killed by signal 15
May 31 12:17:17 cinnamon-session[2115]: WARNING: t+1132505.78238s: Application 'cinnamon-settings-daemon-media-keys.desktop' killed by signal 15
May 31 12:17:17 rtkit-daemon[2284]: Successfully made thread 4304 of process 4304 (n/a) owned by '1010' high priority at nice level -11.
May 31 12:17:17 rtkit-daemon[2284]: Supervising 8 threads of 4 processes of 1 users.
May 31 12:17:17 pulseaudio[4304]: [pulseaudio] pid.c: Daemon already running.
May 31 12:18:04 bluetoothd[12009]: Endpoint unregistered: sender=:1.120210 path=/MediaEndpoint/A2DPSource
May 31 12:18:04 bluetoothd[12009]: Endpoint unregistered: sender=:1.120210 path=/MediaEndpoint/A2DPSink
May 31 12:18:04 rtkit-daemon[2284]: Successfully made thread 4345 of process 4345 (n/a) owned by '1010' high priority at nice level -11.
May 31 12:18:04 rtkit-daemon[2284]: Supervising 4 threads of 4 processes of 1 users.
May 31 12:18:04 pulseaudio[4345]: [pulseaudio] sink.c: Default and alternate sample rates are the same.
May 31 12:18:04 rtkit-daemon[2284]: Supervising 3 threads of 3 processes of 1 users.
May 31 12:18:04 rtkit-daemon[2284]: Successfully made thread 4347 of process 4345 (n/a) owned by '1010' RT at priority 5.
May 31 12:18:04 rtkit-daemon[2284]: Supervising 4 threads of 3 processes of 1 users.
May 31 12:18:04 rtkit-daemon[2284]: Supervising 4 threads of 3 processes of 1 users.
May 31 12:18:04 rtkit-daemon[2284]: Successfully made thread 4348 of process 4345 (n/a) owned by '1010' RT at priority 5.
May 31 12:18:04 rtkit-daemon[2284]: Supervising 5 threads of 3 processes of 1 users.
May 31 12:18:04 rtkit-daemon[2284]: Supervising 5 threads of 3 processes of 1 users.
May 31 12:18:04 rtkit-daemon[2284]: Successfully made thread 4349 of process 4345 (n/a) owned by '1010' RT at priority 5.
May 31 12:18:04 rtkit-daemon[2284]: Supervising 6 threads of 3 processes of 1 users.
May 31 12:18:05 rtkit-daemon[2284]: Supervising 6 threads of 3 processes of 1 users.
May 31 12:18:05 rtkit-daemon[2284]: Successfully made thread 4350 of process 4345 (n/a) owned by '1010' RT at priority 5.
May 31 12:18:05 rtkit-daemon[2284]: Supervising 7 threads of 3 processes of 1 users.
May 31 12:18:05 bluetoothd[12009]: Endpoint registered: sender=:1.120482 path=/MediaEndpoint/A2DPSource
May 31 12:18:05 bluetoothd[12009]: Endpoint registered: sender=:1.120482 path=/MediaEndpoint/A2DPSink
May 31 12:18:05 pulseaudio[4345]: [pulseaudio] backend-ofono.c: Failed to register as a handsfree audio agent with ofono: org.freedesktop.DBus.Error.ServiceUnknown: The name org.ofono was not provided by any .service files
May 31 12:18:05 rtkit-daemon[2284]: Successfully made thread 4352 of process 4352 (n/a) owned by '1010' high priority at nice level -11.
May 31 12:18:05 rtkit-daemon[2284]: Supervising 8 threads of 4 processes of 1 users.
May 31 12:18:05 pulseaudio[4352]: [pulseaudio] pid.c: Daemon already running.
May 31 12:18:58 gnome-keyring-daemon[2204]: asked to register item /org/freedesktop/secrets/collection/login/9, but it's already registered
I suppose that killing csd-media-keys was the part that really did the trick, because that caused a request to start Pulseaudio.
Why it worked (presumably)
The cinnamon-settings-daemon is the component responsible for passing the keyboard request to Pulseaudio. Apparently, messing up with Pulseaudio caused one of its components, csd-media-keys, to mess up as well. Killing it caused cinnamon-settings-daemon to restart it automatically. From fresh.
It’s fine to kill the csd-* processes. Nothing dramatic happens. The killed process is just restarted. But I haven’t tried to kill cinnamon-settings-daemon itself. I believe it will restart Cinnamon completely, something I wanted to avoid.
Dbus activity
I’ve already written a post mentioning how to monitor the Dbus. So here’s a different take on the same topic.
The difference is quite evident when running dbus-monitor (not as root) as follows in order to monitor the activity for the current session:
$ dbus-monitor
This is the output as a result of pressing a volume up button, when it works correctly (i.e. after fixing the problem):
method call time=1685525392.173838 sender=:1.6531 -> destination=:1.6616 serial=1431 path=/org/cinnamon/SettingsDaemon/KeybindingHandler; interface=org.cinnamon.SettingsDaemon.KeybindingHandler; member=HandleKeybinding uint32 2 method call time=1685525392.174967 sender=:1.6616 -> destination=org.freedesktop.DBus serial=566 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch string "type='signal',interface='ca.desrt.dconf.Writer',path='/ca/desrt/dconf/Writer/user',arg0path='/org/cinnamon/desktop/sound/'" method return time=1685525392.175012 sender=org.freedesktop.DBus -> destination=:1.6616 serial=382 reply_serial=566 method call time=1685525392.175026 sender=:1.6616 -> destination=:1.6531 serial=567 path=/org/Cinnamon; interface=org.Cinnamon; member=ShowOSD array [ dict entry( string "icon" variant string "audio-volume-medium-symbolic" ) dict entry( string "level" variant int32 34 ) ] method call time=1685525392.175170 sender=:1.6616 -> destination=org.freedesktop.DBus serial=568 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RemoveMatch string "type='signal',interface='ca.desrt.dconf.Writer',path='/ca/desrt/dconf/Writer/user',arg0path='/org/cinnamon/desktop/sound/'" method return time=1685525392.175189 sender=org.freedesktop.DBus -> destination=:1.6616 serial=383 reply_serial=568 method call time=1685525392.175198 sender=:1.6616 -> destination=org.freedesktop.DBus serial=569 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch string "type='signal',interface='ca.desrt.dconf.Writer',path='/ca/desrt/dconf/Writer/user',arg0path='/org/cinnamon/desktop/sound/'" method return time=1685525392.175216 sender=org.freedesktop.DBus -> destination=:1.6616 serial=384 reply_serial=569 method call time=1685525392.176330 sender=:1.6618 -> destination=org.freedesktop.DBus serial=26 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RequestName string "org.freedesktop.ReserveDevice1.Audio2" uint32 5 signal time=1685525392.176383 sender=org.freedesktop.DBus -> destination=(null destination) serial=50 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameOwnerChanged string "org.freedesktop.ReserveDevice1.Audio2" string "" string ":1.6618" signal time=1685525392.176411 sender=org.freedesktop.DBus -> destination=:1.6618 serial=51 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired string "org.freedesktop.ReserveDevice1.Audio2" method return time=1685525392.176427 sender=org.freedesktop.DBus -> destination=:1.6618 serial=52 reply_serial=26 uint32 1 method return time=1685525392.184853 sender=:1.6616 -> destination=:1.6531 serial=570 reply_serial=1431 method call time=1685525392.184915 sender=:1.6616 -> destination=org.freedesktop.DBus serial=571 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RemoveMatch string "type='signal',interface='ca.desrt.dconf.Writer',path='/ca/desrt/dconf/Writer/user',arg0path='/org/cinnamon/desktop/sound/'" method return time=1685525392.184937 sender=org.freedesktop.DBus -> destination=:1.6616 serial=385 reply_serial=571 method return time=1685525392.190757 sender=:1.6531 -> destination=:1.6616 serial=1432 reply_serial=567
Unfortunately, I didn’t save the output before the fix. But it was exactly two rows of output. As far as I recall, the first and last row from this dump were present when it didn’t work (i.e. the row involving KeybindingHandler’s request, and the return method that closed it).
The bus addresses can be listed with the following command:
$ busctl --user
In this specific session the output was:
NAME PID PROCESS USER CONNECTION UNIT SESSION DESCRIPTION :1.0 2103 systemd eli :1.0 user@1010.service - - :1.1014 45251 pxgsettings eli :1.1014 session-c1.scope c1 - :1.1015 45277 scp-dbus-servic eli :1.1015 user@1010.service - - :1.1016 45277 scp-dbus-servic eli :1.1016 user@1010.service - - :1.12 2213 csd-a11y-keyboa eli :1.12 session-c1.scope c1 - :1.1234 53331 nemo eli :1.1234 session-c1.scope c1 - :1.13 2221 csd-a11y-settin eli :1.13 session-c1.scope c1 - :1.131 16564 klauncher eli :1.131 session-c1.scope c1 - :1.16 2232 csd-cursor eli :1.16 session-c1.scope c1 - :1.17 2225 csd-color eli :1.17 session-c1.scope c1 - :1.18 2238 csd-clipboard eli :1.18 session-c1.scope c1 - :1.19 2242 csd-orientation eli :1.19 session-c1.scope c1 - :1.20 2233 csd-wacom eli :1.20 session-c1.scope c1 - :1.21 2245 csd-xsettings eli :1.21 session-c1.scope c1 - :1.22 2248 csd-mouse eli :1.22 session-c1.scope c1 - :1.24 2256 csd-print-notif eli :1.24 session-c1.scope c1 - :1.26 2258 csd-background eli :1.26 session-c1.scope c1 - :1.27 2260 gvfsd eli :1.27 user@1010.service - - :1.28 2267 csd-housekeepin eli :1.28 session-c1.scope c1 - :1.29 2274 csd-screensaver eli :1.29 session-c1.scope c1 - :1.30 2270 csd-power eli :1.30 session-c1.scope c1 - :1.31 2299 dconf-service eli :1.31 user@1010.service - - :1.32 2285 csd-automount eli :1.32 session-c1.scope c1 - :1.329 22590 xreader eli :1.329 session-c1.scope c1 - :1.33 2306 gvfsd-fuse eli :1.33 user@1010.service - - :1.330 22596 xreaderd eli :1.330 user@1010.service - - :1.332 22606 WebKitNetworkPr eli :1.332 session-c1.scope c1 - :1.35 2313 csd-printer eli :1.35 session-c1.scope c1 - :1.37 2349 gvfs-udisks2-vo eli :1.37 user@1010.service - - :1.38 2384 gvfs-gphoto2-vo eli :1.38 user@1010.service - - :1.39 2277 csd-xrandr eli :1.39 session-c1.scope c1 - :1.40 2410 gvfs-goa-volume eli :1.40 user@1010.service - - :1.41 2414 goa-daemon eli :1.41 user@1010.service - - :1.42 2427 goa-identity-se eli :1.42 user@1010.service - - :1.43 2432 gvfs-mtp-volume eli :1.43 user@1010.service - - :1.44 2436 gvfs-afc-volume eli :1.44 user@1010.service - - :1.448 31116 gvfsd-http eli :1.448 user@1010.service - - :1.457 31367 gvfsd-network eli :1.457 user@1010.service - - :1.46 2472 polkit-gnome-au eli :1.46 session-c1.scope c1 - :1.463 31401 gvfsd-dnssd eli :1.463 user@1010.service - - :1.47 2481 cinnamon-killer eli :1.47 session-c1.scope c1 - :1.48 2478 nemo-desktop eli :1.48 session-c1.scope c1 - :1.49 2480 nm-applet eli :1.49 session-c1.scope c1 - :1.5 2115 cinnamon-sessio eli :1.5 session-c1.scope c1 - :1.50 2474 blueberry-obex- eli :1.50 session-c1.scope c1 - :1.51 2474 blueberry-obex- eli :1.51 session-c1.scope c1 - :1.52 2499 obexd eli :1.52 user@1010.service - - :1.54 2506 gvfsd-trash eli :1.54 user@1010.service - - :1.55 2512 gvfsd-metadata eli :1.55 user@1010.service - - :1.56 2535 python2 eli :1.56 session-c1.scope c1 - :1.5653 62813 chrome eli :1.5653 session-c1.scope c1 - :1.5654 62813 chrome eli :1.5654 session-c1.scope c1 - :1.5655 62813 chrome eli :1.5655 session-c1.scope c1 - :1.5656 62813 chrome eli :1.5656 session-c1.scope c1 - :1.5661 62813 chrome eli :1.5661 session-c1.scope c1 - :1.57 2534 cinnamon-screen eli :1.57 session-c1.scope c1 - :1.58 2574 gnome-terminal eli :1.58 session-c1.scope c1 - :1.5834 52878 xreader eli :1.5834 session-c1.scope c1 - :1.5836 52891 WebKitNetworkPr eli :1.5836 session-c1.scope c1 - :1.5842 54509 xreader eli :1.5842 session-c1.scope c1 - :1.5843 54522 WebKitNetworkPr eli :1.5843 session-c1.scope c1 - :1.59 2574 gnome-terminal eli :1.59 session-c1.scope c1 - :1.6 2115 cinnamon-sessio eli :1.6 session-c1.scope c1 - :1.60 2579 gconfd-2 eli :1.60 user@1010.service - - :1.61 2574 gnome-terminal eli :1.61 session-c1.scope c1 - :1.6105 47745 xreader eli :1.6105 session-c1.scope c1 - :1.6107 47757 WebKitNetworkPr eli :1.6107 session-c1.scope c1 - :1.6477 31538 thunderbird-bin eli :1.6477 session-c1.scope c1 - :1.6478 31538 thunderbird-bin eli :1.6478 session-c1.scope c1 - :1.6531 2451 cinnamon eli :1.6531 session-c1.scope c1 - :1.6562 69100 csd-sound eli :1.6562 session-c1.scope c1 - :1.6592 1641 firefox-bin eli :1.6592 session-c1.scope c1 - :1.6593 1641 firefox-bin eli :1.6593 session-c1.scope c1 - :1.6594 1700 Web Content eli :1.6594 session-c1.scope c1 - :1.6595 1760 WebExtensions eli :1.6595 session-c1.scope c1 - :1.6596 1824 Web Content eli :1.6596 session-c1.scope c1 - :1.6597 1876 Web Content eli :1.6597 session-c1.scope c1 - :1.6598 1975 cinnamon-settin eli :1.6598 session-c1.scope c1 - :1.6599 1975 cinnamon-settin eli :1.6599 session-c1.scope c1 - :1.6608 2640 Web Content eli :1.6608 session-c1.scope c1 - :1.6609 3399 Web Content eli :1.6609 session-c1.scope c1 - :1.6615 4286 csd-keyboard eli :1.6615 session-c1.scope c1 - :1.6616 4296 csd-media-keys eli :1.6616 session-c1.scope c1 - :1.6617 4296 csd-media-keys eli :1.6617 session-c1.scope c1 - :1.6618 4345 pulseaudio eli :1.6618 session-c1.scope c1 - :1.6621 4692 xed eli :1.6621 session-c1.scope c1 - :1.6625 5225 busctl eli :1.6625 session-c1.scope c1 - :1.67 2860 applet.py eli :1.67 session-c1.scope c1 - :1.7 2189 at-spi-bus-laun eli :1.7 user@1010.service - - :1.73 3537 gnome-system-mo eli :1.73 session-c1.scope c1 - :1.8 2196 at-spi2-registr eli :1.8 user@1010.service - - :1.9 2204 gnome-keyring-d eli :1.9 session-c1.scope c1 - :1.92 8884 xdg-desktop-por eli :1.92 user@1010.service - - :1.93 8888 xdg-document-po eli :1.93 user@1010.service - - :1.94 8891 xdg-permission- eli :1.94 user@1010.service - - :1.95 8902 pxgsettings eli :1.95 user@1010.service - - :1.96 8906 xdg-desktop-por eli :1.96 user@1010.service - - ca.desrt.dconf 2299 dconf-service eli :1.31 user@1010.service - - ca.desrt.dconf-editor - - - (activatable) - - org.Cinnamon 2451 cinnamon eli :1.6531 session-c1.scope c1 - org.Cinnamon.HotplugSniffer - - - (activatable) - - org.Cinnamon.LookingGlass 2451 cinnamon eli :1.6531 session-c1.scope c1 - org.Cinnamon.Melange - - - (activatable) - - org.Cinnamon.Slideshow - - - (activatable) - - org.Nemo 53331 nemo eli :1.1234 session-c1.scope c1 - org.NemoDesktop 2478 nemo-desktop eli :1.48 session-c1.scope c1 - org.PulseAudio1 4345 pulseaudio eli :1.6618 session-c1.scope c1 - org.a11y.Bus 2189 at-spi-bus-laun eli :1.7 user@1010.service - - org.bluez.obex 2499 obexd eli :1.52 user@1010.service - - org.cinnamon.ScreenSaver 2534 cinnamon-screen eli :1.57 session-c1.scope c1 - org.cinnamon.SettingsDaemon.KeybindingHandler 4296 csd-media-keys eli :1.6616 session-c1.scope c1 -
So it’s quite clear that the players here were cinnamon’s main socket, csd-media-keys and pulseaudio.
Reader Comments
The kills and restarting pulseaudio did not fix my problem. Later, I tried the Sound applet “Reload Code” you mentioned and that did fix it. Thanks!
Linux … 5.15.0-119-generic #129-Ubuntu SMP Fri Aug 2 19:25:20 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux