diff --git a/release/CHANGELOG.md b/release/CHANGELOG.md index afb5d63bb..c52367541 100644 --- a/release/CHANGELOG.md +++ b/release/CHANGELOG.md @@ -2,6 +2,11 @@ ## Unreleased +### Added +- `ryoku-desktop` ships `system/hardware/audio/70-ryoku-maono.rules` to + `/usr/lib/udev/rules.d`, so the vendor HID node on Maono USB mics is reachable + by the active-session user. See the system/hardware changelog. + ### Fixed - `ryoku-desktop` no longer ships the PipeWire `switch-on-connect` drop-in (`ryoku/apps/pipewire/`): it broke the saved default audio device on every diff --git a/release/packages/ryoku-desktop/PKGBUILD b/release/packages/ryoku-desktop/PKGBUILD index 8c20ff732..a424da630 100644 --- a/release/packages/ryoku-desktop/PKGBUILD +++ b/release/packages/ryoku-desktop/PKGBUILD @@ -492,6 +492,11 @@ package() { install -Dm644 "$_repo/system/hardware/ddc/60-ryoku-i2c.rules" \ "$pkgdir/usr/lib/udev/rules.d/60-ryoku-i2c.rules" + # Maono USB mics: their control features sit on a vendor HID page the kernel + # leaves root-only, so uaccess is what lets a control app reach them at all. + install -Dm644 "$_repo/system/hardware/audio/70-ryoku-maono.rules" \ + "$pkgdir/usr/lib/udev/rules.d/70-ryoku-maono.rules" + # Bluetooth tuning: bluez owns /etc/bluetooth/main.conf and BlueZ has no # drop-in dir, so Ryoku cannot ship a copy here (pacman file conflict). The # ryoku-bluetooth-tune helper (installed by the hardware glob above) sets the diff --git a/system/hardware/CHANGELOG.md b/system/hardware/CHANGELOG.md index e1a0157e6..e312c5de8 100644 --- a/system/hardware/CHANGELOG.md +++ b/system/hardware/CHANGELOG.md @@ -3,6 +3,15 @@ ## Unreleased ### Added +- `audio/70-ryoku-maono.rules`: reach the control features on Maono USB mics. + The PD400X and its siblings put gain, EQ, compressor, limiter and the monitor + mix behind a vendor-defined HID page (usage page `0xFF01`) instead of the audio + interface, and the kernel leaves both `/dev/hidraw*` and the raw USB node + root-owned, so a control app running as the user cannot open either one. The + rule grants the active-session user access (`uaccess`, no group setup), the + same pattern as `60-ryoku-i2c.rules`. Shipped to `/usr/lib/udev` by + `ryoku-desktop`. The four standard USB-audio controls (mic gain and mute, + headphone level and mute) already worked without it. - `leds/ryoku-leds`: `RYOKU_LEDS_DISABLE=1` turns the OpenRGB accent sync off. `ryoku-leds apply` runs from Hyprland autostart and again from the shell daemon on every wallpaper change, and there was no off switch short of forking the diff --git a/system/hardware/audio/70-ryoku-maono.rules b/system/hardware/audio/70-ryoku-maono.rules new file mode 100644 index 000000000..e11c1f3aa --- /dev/null +++ b/system/hardware/audio/70-ryoku-maono.rules @@ -0,0 +1,6 @@ +# Maono USB mics (PD400X, DM30, ...) expose gain, EQ, compressor, limiter and +# the monitor mix on a vendor-defined HID page rather than the audio interface. +# The kernel leaves that node root-only, so grant the active-session user access +# (uaccess, no group setup) and any control app can reach it. +KERNEL=="hidraw*", ATTRS{idVendor}=="352f", TAG+="uaccess" +SUBSYSTEM=="usb", ATTR{idVendor}=="352f", TAG+="uaccess"