git: 428517a7712e - main - sound: Notify devd when no devices are connected
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 03 Mar 2026 11:32:59 UTC
The branch main has been updated by christos:
URL: https://cgit.FreeBSD.org/src/commit/?id=428517a7712e44b58e0687fbee4037a8ebe5bf5a
commit 428517a7712e44b58e0687fbee4037a8ebe5bf5a
Author: Christos Margiolis <christos@FreeBSD.org>
AuthorDate: 2026-03-03 11:32:38 +0000
Commit: Christos Margiolis <christos@FreeBSD.org>
CommitDate: 2026-03-03 11:32:38 +0000
sound: Notify devd when no devices are connected
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D55531
---
sbin/devd/devd.conf.5 | 4 +++-
sbin/devd/snd.conf | 10 ++++++++++
sys/dev/sound/pcm/sound.c | 2 ++
3 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/sbin/devd/devd.conf.5 b/sbin/devd/devd.conf.5
index b1fca89991ed..a1d6a9051389 100644
--- a/sbin/devd/devd.conf.5
+++ b/sbin/devd/devd.conf.5
@@ -38,7 +38,7 @@
.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
.\" SOFTWARE.
.\"
-.Dd July 9, 2025
+.Dd February 26, 2026
.Dt DEVD.CONF 5
.Os
.Sh NAME
@@ -666,6 +666,8 @@ variable.
Connected output device specified in
.Pa cdev
variable.
+.It Li SND Ta Li CONN Ta Li NODEV Ta
+No connected devices.
.El
.Pp
.\"
diff --git a/sbin/devd/snd.conf b/sbin/devd/snd.conf
index a45f427f6c79..5ca0be86e246 100644
--- a/sbin/devd/snd.conf
+++ b/sbin/devd/snd.conf
@@ -24,3 +24,13 @@ notify 0 {
# See comment above.
action "/usr/sbin/virtual_oss_cmd /dev/vdsp.ctl -P /dev/$cdev";
};
+
+notify 0 {
+ match "system" "SND";
+ match "subsystem" "CONN";
+ match "type" "NODEV";
+
+ # No connected devices. Disable both recording and playback to avoid
+ # repeated virtual_oss error messages.
+ action "/usr/sbin/virtual_oss_cmd /dev/vdsp.ctl -f /dev/null";
+};
diff --git a/sys/dev/sound/pcm/sound.c b/sys/dev/sound/pcm/sound.c
index abd92d93e02d..305d663cd6ad 100644
--- a/sys/dev/sound/pcm/sound.c
+++ b/sys/dev/sound/pcm/sound.c
@@ -483,6 +483,8 @@ pcm_unregister(device_t dev)
snd_unit = pcm_best_unit(-1);
if (snd_unit_auto == 0)
snd_unit_auto = 1;
+ if (snd_unit < 0)
+ devctl_notify("SND", "CONN", "NODEV", NULL);
}
return (0);