You are not logged in.
There has been a change in the kernel/alsamixer which removed the controls for the microphone LED inside alsamixer. The default seems to be "follow-mute" and I want to change it to "follow-route". I have created an udev rule, but it's not working, giving me an "The line takes no effect, ignoring." or a permission denied error (see below).
Does anyone have an idea what I'm doing wrong and how I could change the to my desired mode? Perhaps udev isn't the right approach to modify /sys values?
The LED mode is exposed under: /sys/devices/virtual/sound/ctl-led/mic/mode
$ cat /sys/devices/virtual/sound/ctl-led/mic/mode
follow-muteMy udev rule:
$ cat /etc/udev/rules.d/20-mic_led.rules
KERNEL=="mic" ATTR{mode}=="follow-route"That one is giving me te "The line takes no effect, ignoring" error.
$ cat /etc/udev/rules.d/20-mic_led.rules
KERNEL=="mic" ATTR{mode}="follow-route"This one is giving me a "permission denied" error.
Information from "udevadm info" where I got the KERNEL and ATTR from:
$ udevadm info -a /sys/devices/virtual/sound/ctl-led/mic/
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/virtual/sound/ctl-led/mic':
KERNEL=="mic"
SUBSYSTEM==""
DRIVER==""
ATTR{brightness}=="0"
ATTR{mode}=="follow-route"
ATTR{power/control}=="auto"
ATTR{power/runtime_active_time}=="0"
ATTR{power/runtime_status}=="unsupported"
ATTR{power/runtime_suspended_time}=="0"
looking at parent device '/devices/virtual/sound/ctl-led':
KERNELS=="ctl-led"
SUBSYSTEMS=="sound"
DRIVERS==""
ATTRS{power/control}=="auto"
ATTRS{power/runtime_active_time}=="0"
ATTRS{power/runtime_status}=="unsupported"
ATTRS{power/runtime_suspended_time}=="0"Error message from udevadm test:
$ udevadm test /devices/virtual/sound/ctl-led/mic
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.
Trying to open "/etc/systemd/hwdb/hwdb.bin"...
Trying to open "/etc/udev/hwdb.bin"...
Trying to open "/usr/lib/systemd/hwdb/hwdb.bin"...
Trying to open "/usr/lib/udev/hwdb.bin"...
=== trie on-disk ===
tool version: 249
file size: 11485395 bytes
header size 80 bytes
strings 2376979 bytes
nodes 9108336 bytes
Load module index
Failed to read $container of PID 1, ignoring: Permission denied
Found cgroup2 on /sys/fs/cgroup/, full unified hierarchy
Found container virtualization none.
Loaded timestamp for '/etc/systemd/network'.
Loaded timestamp for '/usr/lib/systemd/network'.
Parsed configuration file /usr/lib/systemd/network/99-default.link
Created link configuration context.
Loaded timestamp for '/etc/udev/rules.d'.
Reading rules file: /usr/lib/udev/rules.d/01-md-raid-creating.rules
Reading rules file: /usr/lib/udev/rules.d/10-dm.rules
Reading rules file: /etc/udev/rules.d/10-hideswap.rules
Reading rules file: /usr/lib/udev/rules.d/11-dm-lvm.rules
Reading rules file: /usr/lib/udev/rules.d/13-dm-disk.rules
Reading rules file: /etc/udev/rules.d/20-mic_led.rules
/etc/udev/rules.d/20-mic_led.rules:1 The line takes no effect, ignoring.
Reading rules file: /usr/lib/udev/rules.d/40-gphoto.rules
Reading rules file: /usr/lib/udev/rules.d/50-udev-default.rules
Reading rules file: /usr/lib/udev/rules.d/51-android.rules
Reading rules file: /usr/lib/udev/rules.d/60-autosuspend.rules
Reading rules file: /usr/lib/udev/rules.d/60-block.rules
Reading rules file: /usr/lib/udev/rules.d/60-cdrom_id.rules
Reading rules file: /usr/lib/udev/rules.d/60-drm.rules
Reading rules file: /usr/lib/udev/rules.d/60-evdev.rules
Reading rules file: /usr/lib/udev/rules.d/60-fido-id.rules
Reading rules file: /usr/lib/udev/rules.d/60-input-id.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-alsa.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-input.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-storage-tape.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-storage.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-v4l.rules
Reading rules file: /usr/lib/udev/rules.d/60-rfkill.rules
Reading rules file: /usr/lib/udev/rules.d/60-sensor.rules
Reading rules file: /usr/lib/udev/rules.d/60-serial.rules
Reading rules file: /usr/lib/udev/rules.d/63-md-raid-arrays.rules
Reading rules file: /usr/lib/udev/rules.d/64-btrfs-dm.rules
Reading rules file: /usr/lib/udev/rules.d/64-btrfs.rules
Reading rules file: /usr/lib/udev/rules.d/64-md-raid-assembly.rules
Reading rules file: /usr/lib/udev/rules.d/65-kvm.rules
Reading rules file: /usr/lib/udev/rules.d/65-libwacom.rules
Reading rules file: /usr/lib/udev/rules.d/69-dm-lvm-metad.rules
Reading rules file: /usr/lib/udev/rules.d/69-libmtp.rules
Reading rules file: /usr/lib/udev/rules.d/69-md-clustered-confirm-device.rules
Reading rules file: /usr/lib/udev/rules.d/70-infrared.rules
Reading rules file: /usr/lib/udev/rules.d/70-joystick.rules
Reading rules file: /usr/lib/udev/rules.d/70-memory.rules
Reading rules file: /usr/lib/udev/rules.d/70-mouse.rules
Reading rules file: /usr/lib/udev/rules.d/70-power-switch.rules
Reading rules file: /usr/lib/udev/rules.d/70-touchpad.rules
Reading rules file: /usr/lib/udev/rules.d/70-uaccess.rules
Reading rules file: /usr/lib/udev/rules.d/71-seat.rules
Reading rules file: /usr/lib/udev/rules.d/73-seat-late.rules
Reading rules file: /usr/lib/udev/rules.d/75-net-description.rules
Reading rules file: /usr/lib/udev/rules.d/75-probe_mtd.rules
Reading rules file: /usr/lib/udev/rules.d/78-sound-card.rules
Reading rules file: /usr/lib/udev/rules.d/80-drivers.rules
Reading rules file: /usr/lib/udev/rules.d/80-libinput-device-groups.rules
Reading rules file: /usr/lib/udev/rules.d/80-net-setup-link.rules
Reading rules file: /usr/lib/udev/rules.d/80-udisks2.rules
Reading rules file: /usr/lib/udev/rules.d/81-net-dhcp.rules
Reading rules file: /usr/lib/udev/rules.d/84-nm-drivers.rules
Reading rules file: /usr/lib/udev/rules.d/85-nm-unmanaged.rules
Reading rules file: /usr/lib/udev/rules.d/85-tlp.rules
Reading rules file: /usr/lib/udev/rules.d/90-alsa-restore.rules
Reading rules file: /usr/lib/udev/rules.d/90-brltty-device.rules
Reading rules file: /usr/lib/udev/rules.d/90-brltty-uinput.rules
Reading rules file: /usr/lib/udev/rules.d/90-libinput-fuzz-override.rules
Reading rules file: /usr/lib/udev/rules.d/90-nm-thunderbolt.rules
Reading rules file: /usr/lib/udev/rules.d/90-pulseaudio.rules
Reading rules file: /usr/lib/udev/rules.d/90-udisks2-zram.rules
Reading rules file: /usr/lib/udev/rules.d/90-vconsole.rules
Reading rules file: /usr/lib/udev/rules.d/95-dm-notify.rules
Reading rules file: /usr/lib/udev/rules.d/96-e2scrub.rules
Reading rules file: /usr/lib/udev/rules.d/99-fuse.rules
Reading rules file: /usr/lib/udev/rules.d/99-fuse3.rules
Reading rules file: /usr/lib/udev/rules.d/99-systemd.rules
mic: Failed to update database under /run/udev/data/: No such file or directory
DEVPATH=/devices/virtual/sound/ctl-led/mic
ACTION=add
USEC_INITIALIZED=1011375420
Unload module index
Unloaded link configuration context.Last edited by justasug (2021-09-10 13:35:26)
Offline
Why do you have to trigger it from udev? It just works with a systemd service by a ExecStartPre delay otherwise the /sys/devices/... files are not yet created during boot time. The mic_led.rules only required if you need to trigger it again by a certain event with ACTION="", what could that be?
# cat /etc/udev/rules.d/99-mic_led.rules
ACTION="add" KERNEL=="mic" ATTR{mode}=="follow-mute"
ENV{SYSTEMD_WANTS}+="mic_led.service"
#cat /lib/systemd/system/mic_led.service
[Unit]
Description=MIc Led service
[Service]
Type=oneshot
ExecStartPre=/bin/sleep 5
ExecStart=/bin/bash -c "echo follow-route > /sys/devices/virtual/sound/ctl-led/mic/mode"
[Install]
WantedBy=multi-user.target
#Last edited by solskog (2021-09-10 11:37:22)
Offline
I don't have a hard requirement on udev. It's just what popped up on related internet searches for a way to set attributes in the sys filesystem for hardware during boot.
Thanks, I settled for using a systemd service started after the .device unit of my soundcard.
[Unit]
Description=Change microphone LED to follow-route
[Service]
ExecStart=/bin/bash -c "echo follow-route > /sys/devices/virtual/sound/ctl-led/mic/mode"
BindsTo=sys-devices-pci0000:00-0000:00:1b.0-sound-card0-controlC0.device
After=sys-devices-pci0000:00-0000:00:1b.0-sound-card0-controlC0.device
[Install]
WantedBy=multi-user.targetLast edited by justasug (2021-09-22 11:11:47)
Offline