2013年4月14日日曜日

Linux で USB DAC を使う

いいヘッドフォンを買ったので、USB DAC にもチャレンジしてみた。
購入前はどの DAC が Linux で使えるかよくわからなかったので、調べたことをメモメモ。
環境は以下のとおり。
  • Linux 3.7.10-gentoo
  • ALSA
  • PulseAudio とか JACK は使ってない、よくわからない
まずどの DAC が使用可能かは、Windows や Mac の OS 標準ドライバで動くと謳っているものは (だいたい?) Linux でも使用可能なよう。
USB オーディオの接続方式として、大きく分けると以下の 3 つがある。
  • USB Audio Class 1
  • USB Audio Class 2
  • その他独自方式
USB Audio Class 1, 2 が USB.org で策定されており Linux もこれらに対応しているため、普通に ALSA のドライバで使える。
独自方式にものについては Windows や Mac にも OS 標準ドライバとして搭載できないため別途ドライバをインストールする必要があり、そうすると Linux 向けのドライバがあるものは少ないでしょう。

カーネルコンフィグで有効にするものは以下。
CONFIG_SND_USB_AUDIO=m
これでデバイスを接続するとあっさりと認識された。
$ dmesg
--- snip ---
[   53.016830] usb 3-3.7: New USB device found, idVendor=0909, idProduct=0015
[   53.016833] usb 3-3.7: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[   53.016837] usb 3-3.7: Product: USB Headphone Amp.
[   53.016840] usb 3-3.7: Manufacturer: audio-technica
[   53.017051] usb 3-3.7: usb_probe_device
[   53.017067] usb 3-3.7: configuration #1 chosen from 1 choice
[   53.017213] usb 3-3.7: Successful Endpoint Configure command
[   53.017402] usb 3-3.7: adding 3-3.7:1.0 (config #1, interface 0)
[   53.017526] usbhid 3-3.7:1.0: usb_probe_interface
[   53.017540] usbhid 3-3.7:1.0: usb_probe_interface - got id
[   53.027020] input: audio-technica USB Headphone Amp. as /devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3.7/3-3.7:1.0/input/input11
[   53.027346] hid-generic 0003:0909:0015.0005: input,hidraw4: USB HID v1.00 Device [audio-technica USB Headphone Amp.] on usb-0000:00:14.0-3.7/input0
[   53.027421] usb 3-3.7: adding 3-3.7:1.1 (config #1, interface 1)
[   53.030843] usb 3-3.7: adding 3-3.7:1.3 (config #1, interface 3)
[   53.039448] snd-usb-audio 3-3.7:1.1: usb_probe_interface
[   53.039463] snd-usb-audio 3-3.7:1.1: usb_probe_interface - got id
[   53.049793] usb 3-3.7: Successful Endpoint Configure command
[   53.050427] usb 3-3.7: Successful Endpoint Configure command
[   53.050878] usb 3-3.7: Successful Endpoint Configure command
[   53.051410] usb 3-3.7: Successful Endpoint Configure command
[   53.052305] usbcore: registered new interface driver snd-usb-audio
--- snip ---
$ cat /proc/asound/cards 
 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xa0610000 irq 47
 1 [Amp            ]: USB-Audio - USB Headphone Amp.
                      audio-technica USB Headphone Amp. at usb-0000:00:14.0-3.7, full speed
$ aplay -L
--- snip ---
sysdefault:CARD=Amp
    USB Headphone Amp., USB Audio
    Default Audio Device
front:CARD=Amp,DEV=0
    USB Headphone Amp., USB Audio
    Front speakers
surround40:CARD=Amp,DEV=0
    USB Headphone Amp., USB Audio
    4.0 Surround output to Front and Rear speakers
--- snip ---

実際に音を出すには、ALSA のデフォルトの出力先か、アプリケーション単位で出力先デバイスを設定する必要がある。前者は ~/.asoundrc に設定すれば良い。
# ~/.asoundrc
pcm.!default sysdefault:Amp
この設定はアプリケーション起動時のものが反映されるようなので、ノート PC を使用している時など接続変更が発生する時でも、接続後に設定、アプリーケション起動としてやれば良い。

USB DAC をつないで音が良くなったか? というのは別問題。耳が追いついていない。

参考

第1回 USB-DACといっても必ずしも同じではない | Gaudio+PCオーディオfan: http://www.pc-audio-fan.com/special/usb-dac-research/20101115_1438/
USB.org - Approved Device Class Document Download: http://www.usb.org/developers/devclass_docs
What's Best Forum - USB audio: http://www.whatsbestforum.com/showthread.php?2932-USB-audio
.asoundrc - ALSA wiki: http://alsa.opensrc.org/.asoundrc

0 件のコメント:

コメントを投稿