升级到 20.04.1 LTS 后蜂鸣声不再工作

sen*_*hor 9 sound udev evdev

我刚刚完成升级到 Ubuntu Server 20.04.1 LTS,到目前为止,只出现了一个问题:以用户身份运行时,命令beep返回

蜂鸣声:错误:无法打开任何设备`。

正如预期的那样,跑步sudo beep不起作用。经过一些研究后,我发现beep系统上不存在任何组,正如手册页所预期的那样。我尝试过重新安装和重新配置,但没有成功。

更奇怪的是,beep在启动期间可以通过rc.local; 然而,在某些时候,它会停止工作并返回错误,从而破坏了我的rc.local例程。另外,这个命令工作得很好:

sudo env -u SUDO_GID -u SUDO_COMMAND -u SUDO_USER -u SUDO_UID beep
Run Code Online (Sandbox Code Playgroud)

澄清一下:我正在运行一个未连接到任何扬声器的无头家庭服务器;简单的发声扬声器用于在启动期间以及出现需要干预的错误时提供简单的反馈。我的设置过去在 Ubuntu Server 18.04 LTS 下运行良好。

小智 4

将我的用户添加到组input对我有用,即:

sudo usermod -aG input $USER
Run Code Online (Sandbox Code Playgroud)

直到您再次登录后,更改才可见(在 Ubuntu 上,我必须重新启动,而不仅仅是注销并重新登录,然后新 shell 才会在 的输出中显示新组groups。) 要查看一个 shell 中的更改,打开一个新的登录 shell:

su $USER -
Run Code Online (Sandbox Code Playgroud)


sen*_*hor 1

不好的解决方案:

我很确定这是一个权限问题,但我不知道如何解决它。我尝试udev根据ArchLinux Wiki创建文件和组,但这不起作用。

然后,我更改了设备本身的权限:

sudo chmod 777 /dev/input/by-path/platform-pcspkr-event-spkr
Run Code Online (Sandbox Code Playgroud)

虽然这确实有效,但让设备对任何人都可写肯定是个坏主意。