void-linux / void-linux/void-runit
elogind service starts after sound device initialization, causing permission failures
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 245
- Forks
- 67
- Avg merge
- 2d
- Merged PRs (30d)
- 2
Description
Display Manager: SDDM
Desktop: KDE Plasma
On a fresh Void Linux installation with elogind, sound devices are created with incorrect permissions at boot, making them inaccessible to logged-in users. This occurs because elogind starts via D-Bus activation after udev has already processed sound devices.
Current Behavior:
At boot (before login):
crw------- 1 root root 116, 12 /dev/snd/controlC0
After manual udev trigger:
crw-rw----+ 1 root audio 116, 12 /dev/snd/controlC0
Void Linux ships elogind with only D-Bus activation enabled (/usr/share/dbus-1/system-services/org.freedesktop.login1.service)
No runit service is enabled by default (/var/service/elogind does not exist)
Boot sequence
- udev processes sound devices early in boot
- udev rules tag devices with uaccess (via /usr/lib/udev/rules.d/70-uaccess.rules
- elogind helper (/usr/libexec/elogind/elogind-uaccess-command) should set ACLs
- BUT elogind is not running yet (D-Bus hasn't activated it)
- Devices get root:root 600 permissions
User logs in → D-Bus now activates elogind → Too late, devices already processed
Sound devices remain inaccessible until manual udevadm trigger --subsystem-match=sound
Attempted Solutions:
ln -s /etc/sv/elogind /var/service/
Service fails to start because /etc/sv/elogind/run contains sv check dbus >/dev/null || exit 1, which fails with permission errors for non-root users. Meanwhile, D-Bus still auto-activates elogind, creating a conflict.
Option 2: Disable D-Bus activation + enable service
mv /usr/share/dbus-1/system-services/org.freedesktop.login1.service
/usr/share/dbus-1/system-services/org.freedesktop.login1.service.disabled
ln -s /etc/sv/elogind /var/service/
Result: SDDM fails to start resulting in no graphical login.
Any workarounds essentially lead me to either using rc.local with sleep and retrigger of udevadm, which is frankly a very bad solution, or rewriting the /etc/sv/sddm/run which I frankly think I shouldn't be doing.
I am not sure if this is even the correct repo to report this to, but this seems like a very obscure timing bug that should be probably looked into. If i am doing something wrong or have any suggestions how to fix this please let me know.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading /etc/sv/elogind/run and /usr/share/dbus-1/system-services/org.freedesktop.login1.service, then inspect how /etc/sv/sddm/run depends on elogind and D-Bus. Reproduce the boot sequence and compare device permissions before and after udevadm trigger --subsystem-match=sound. Done means elogind starts reliably early enough for sound-device ACLs without breaking SDDM or creating a D-Bus/service conflict.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux
- Domain
- devops, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100