有关特定 Solaris 发行版中的 USB 音频支持的信息,请参见Solaris 对 USB 设备的支持。
此 Solaris 发行版提供了由一对协作驱动程序 usb_ac 和 usb_as 实现的 USB 音频支持。 音频控制器驱动程序 usb_ac 是与 Solaris USB 体系结构兼容的客户机驱动程序,用于向用户应用程序提供控制接口。音频流驱动程序 usb_as 可在播放和录制期间处理音频数据消息。该驱动程序将设置样例频率和精度,并对来自 usb_ac 驱动程序的请求进行编码。这两个驱动程序都符合 USB 音频类 1.0 规范。
某些音频设备可以在软件控制下设置音量。为了管理此功能,可以将 STREAMS 模块 usb_ah 推送至 HID 驱动程序的顶部。
Solaris 支持仅播放、仅录制或同时播放和录制的 USB 音频设备, 还支持热插拔 USB 音频设备。
具有 USB 连接器的 SPARC UltraTM 和 x86 平台支持 USB 音频设备。
Solaris 8 10/01、Solaris 8 2/02 或 Solaris 9 发行版支持的 USB 音频设备必须支持固定的 44100 Hz 或 48000 Hz 抽样频率以进行播放或录制。 Solaris 10 发行版中不再要求 44100 Hz 或 48000 Hz 抽样频率。
有关完全支持的音频数据格式的信息,请参见 usb_ac(7D)。
主音频设备为 /dev/audio。通过使用以下命令,可以检验 /dev/audio 是否指向 USB 音频:
% mixerctl Device /dev/audioctl: Name = USB Audio Version = 1.0 Config = external Audio mixer for /dev/audioctl is enabled |
连接 USB 音频设备后,可以通过 /dev/sound/N 设备链路使用 audioplay 和 audiorecord 命令对其进行访问。
请注意,/dev/audio 和 /dev/sound/N 设备可能是指扬声器、麦克风或组合设备。 如果引用不正确的设备类型,则该命令将失败。例如,如果尝试将其与麦克风一同使用,则 audioplay 命令将失败。
对于大多数 Sun 音频应用程序(如 audioplay 和 audiorecord),通过设置 AUDIODEV shell 变量或为这些命令指定 -d 选项,可以选择特定的缺省音频设备。但是,设置 AUDIODEV 不适用于将 /dev/audio 硬编码为音频文件的第三方应用程序。
插入 USB 音频设备时,如果没有正在使用 /dev/audio,则该设备将自动成为主音频设备 /dev/audio。有关将 /dev/audio 从板载音频更改为 USB 音频或从 USB 音频更改为板载音频的说明,请参阅如何更改主 USB 音频设备和 usb_ac(7D)。
如果将 USB 音频设备插入系统,该设备将成为主音频设备 /dev/audio。即使在重新引导系统后,该设备也仍为主音频设备。如果插入其他 USB 音频设备,则最后一个设备将成为主音频设备。
有关 USB 音频设备问题疑难解答的其他信息,请参见 usb_ac(7D)。
主音频设备 /dev/audio 指向 USB 扬声器。
% ls -l /dev/audio lrwxrwxrwx 1 root root 10 Feb 13 08:46 /dev/audio -> usb/audio0 |
(可选)移除扬声器。然后,重新插入扬声器。
如果移除扬声器,则 /dev/audio 设备将恢复回板载音频。
% ls -l /dev/audio lrwxrwxrwx 1 root root 7 Feb 13 08:47 /dev/audio -> sound/0 |
添加 USB 麦克风。
% ls -l /dev/audio lrwxrwxrwx 1 root root 10 Feb 13 08:54 /dev/audio -> usb/audio1 |
此过程假定已连接 USB 音频设备。
使用 ls 命令显示系统的新音频链路。
例如:
% ls -lt /dev/audio* lrwxrwxrwx 1 root root 7 Jul 23 15:46 /dev/audio -> usb/audio0 lrwxrwxrwx 1 root root 10 Jul 23 15:46 /dev/audioctl -> usb/audioctl0/ % ls -lt /dev/sound/* lrwxrwxrwx 1 root root 74 Jul 23 15:46 /dev/sound/1 -> ../../devices/pci@1f,4000/usb@5/hub@1/device@3/sound-control@0:... lrwxrwxrwx 1 root root 77 Jul 23 15:46 /dev/sound/1ctl -> ../../devices/pci@1f,4000/usb@5/hub@1/device@3/sound-control@0:... lrwxrwxrwx 1 root other 66 Jul 23 14:21 /dev/sound/0 -> ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audio lrwxrwxrwx 1 root other 69 Jul 23 14:21 /dev/sound/0ctl -> ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audioctl % |
请注意,主音频设备 /dev/audio 指向新插入的 USB 音频设备 /dev/usb/audio0。
还可以使用 prtconf 命令来检查系统的 USB 音频设备,并查找 USB 设备信息。
% prtconf . . . usb, instance #0 hub, instance #0 mouse, instance #0 keyboard, instance #1 device, instance #0 sound-control, instance #0 sound, instance #0 input, instance #0 . . . |
有时,USB 扬声器不会发出任何声音,即使连接了驱动程序并将音量设置为高也是如此。热插拔该设备可能不会更改该行为。
解决方法是关闭然后再打开 USB 扬声器的电源。
插入 USB 音频设备并登录控制台后,控制台即是 /dev/* 项的属主。此情况表明,只要登录控制台,便可使用音频设备。
如果插入 USB 音频设备时未登录控制台,则超级用户会成为该设备的属主。但是,如果登录控制台并尝试访问 USB 音频设备,则设备拥有权将归控制台所有。有关更多信息,请参见 logindevperm(4)。
如果使用 rlogin 命令远程进行登录并尝试访问 USB 音频设备,则拥有权不会更改。这表明,未经授权的用户无法通过他人拥有的麦克风侦听会话。