系统管理指南:设备和文件系统

使用 USB 音频设备

有关特定 Solaris 发行版中的 USB 音频支持的信息,请参见Solaris 对 USB 设备的支持

此 Solaris 发行版提供了由一对协作驱动程序 usb_acusb_as 实现的 USB 音频支持。 音频控制器驱动程序 usb_ac 是与 Solaris USB 体系结构兼容的客户机驱动程序,用于向用户应用程序提供控制接口。音频流驱动程序 usb_as 可在播放和录制期间处理音频数据消息。该驱动程序将设置样例频率和精度,并对来自 usb_ac 驱动程序的请求进行编码。这两个驱动程序都符合 USB 音频类 1.0 规范。

某些音频设备可以在软件控制下设置音量。为了管理此功能,可以将 STREAMS 模块 usb_ah 推送至 HID 驱动程序的顶部。

Solaris 支持仅播放、仅录制或同时播放和录制的 USB 音频设备, 还支持热插拔 USB 音频设备。

主音频设备为 /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 设备链路使用 audioplayaudiorecord 命令对其进行访问。

请注意,/dev/audio/dev/sound/N 设备可能是指扬声器、麦克风或组合设备。 如果引用不正确的设备类型,则该命令将失败。例如,如果尝试将其与麦克风一同使用,则 audioplay 命令将失败。

对于大多数 Sun 音频应用程序(如 audioplayaudiorecord),通过设置 AUDIODEV shell 变量或为这些命令指定 -d 选项,可以选择特定的缺省音频设备。但是,设置 AUDIODEV 不适用于将 /dev/audio 硬编码为音频文件的第三方应用程序。

插入 USB 音频设备时,如果没有正在使用 /dev/audio,则该设备将自动成为主音频设备 /dev/audio。有关将 /dev/audio 从板载音频更改为 USB 音频或从 USB 音频更改为板载音频的说明,请参阅如何更改主 USB 音频设备usb_ac(7D)

热插拔多个 USB 音频设备

如果将 USB 音频设备插入系统,该设备将成为主音频设备 /dev/audio。即使在重新引导系统后,该设备也仍为主音频设备。如果插入其他 USB 音频设备,则最后一个设备将成为主音频设备。

有关 USB 音频设备问题疑难解答的其他信息,请参见 usb_ac(7D)

Procedure如何添加 USB 音频设备

  1. 插入 USB 扬声器。

    主音频设备 /dev/audio 指向 USB 扬声器。


    % ls -l /dev/audio
    
    lrwxrwxrwx   1 root     root    10 Feb 13 08:46 /dev/audio -> usb/audio0
  2. (可选)移除扬声器。然后,重新插入扬声器。

    如果移除扬声器,则 /dev/audio 设备将恢复回板载音频。


    % ls -l /dev/audio
    
    lrwxrwxrwx   1 root     root   7 Feb 13 08:47 /dev/audio -> sound/0
  3. 添加 USB 麦克风。


    % ls -l /dev/audio
    
    lrwxrwxrwx   1 root     root    10 Feb 13 08:54 /dev/audio -> usb/audio1

Procedure如何确定系统的主音频设备

此过程假定已连接 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
      
      .
      
      .
      
      .

Procedure如何更改主 USB 音频设备

    选择以下操作之一可更改主 USB 音频设备。

    • 如果要使板载音频设备成为主音频设备,请移除 USB 音频设备。然后,/dev/audio 链接即会指向 /dev/sound/0 项。如果 /dev/sound/0 项不是主音频设备,请关闭系统并使用 boot -r 命令,或以超级用户身份运行 devfsadm -i 命令。

    • 如果要使 USB 音频设备成为主音频设备,只需插入 USB 音频设备并检查设备链路即可。

USB 音频设备问题疑难解答

有时,USB 扬声器不会发出任何声音,即使连接了驱动程序并将音量设置为高也是如此。热插拔该设备可能不会更改该行为。

解决方法是关闭然后再打开 USB 扬声器的电源。

音频设备拥有权要点

使用音频设备时,请牢记音频设备拥有权的以下要点: