Voyage MPD 0.9にM2TECH hiFaceのドライバをインストールする方法

初出:2012/12/01
改訂:2013/04/10

Voyage MPD 0.9は、M2TECHのhiFace(白)に標準対応していません。対応させるためには、公式の専用ドライバを手動で作成してインストールする必要があります。以下にその手順を記載します。初歩的なLinuxの知識が必要ですが、Voyage MPDのユーザーならば何とかなるでしょう。

注意:
ドライバがアップデートされるスピードが速すぎて、このページの情報はあっという間に陳腐化してしまいました。
ドライバ作者はかなり精力的にアップデートをしているようなので、今後どうなるか不明です。
このページの情報は、あくまで参考程度にとどめてください。(2013/2/16)

関連記事

リンク集

準備

注意:
本手順で利用しているVoyage MPDのバージョンは「0.9-rc1」です。rc2以降をお使いの場合は、linuxバージョン番号を適宜読み替えてください。
※Release版が出た際に改訂を行う予定です。
  1. Voyage MPDで書き込みできるようにします。
  2. 
    root@voyage:~# remountrw
    
    
  3. コンパイルするための開発環境をインストールします。
  4. 
    root@voyage:~# apt-get install build-essential
    
    
  5. git(ソースコードのダウンロードツール)をインストールします。
  6. 
    root@voyage:~# apt-get install git
    
    
  7. Voyage Linuxのソースコードをダウンロードします。
  8. 
    root@voyage:~# apt-cache search linux-source
    linux-source-3.2 - Linux kernel source for version 3.2 with Debian patches
    linux-source - Linux kernel source (meta-package)
    linux-source-2.6 - Linux kernel source (dummy package)
    linux-source-3.4.4-voyage - Linux kernel source for version 3.4.4-voyage
    root@voyage:~# apt-get install linux-source-3.4.4-voyage
    
    
    ※ソースコード配布サイトの手順では「kernel-headers」のダウンロードを行っていますが、Voyage MPD 0.9は「kernel-headers」を提供していません。
    代わりに「linux-source」を使います。
  9. Voyage Linuxのソースコードを解凍します。
  10. 
    root@voyage:~# cd /usr/src
    root@voyage:/usr/src# ls
    linux-source-3.4.4-voyage.tar.bz2
    root@voyage:/usr/src# tar xvjf linux-source-3.4.4-voyage.tar.bz2
    
    
  11. hiFaceドライバのソースコードをダウンロードします。
  12. 
    root@voyage:/usr/src# git clone git://github.com/panicking/snd-usb-asyncaudio.git
    root@voyage:/usr/src# ls
    linux-source-3.4.4-voyage          snd-usb-asyncaudio
    linux-source-3.4.4-voyage.tar.bz2
    
    

hifaceドライバの作成(コンパイル)

  1. Voyage Linuxソースコードのディレクトリにリンクを作成します。
  2. 
    root@voyage:/usr/src# ln -s /usr/src/linux-source-3.4.4-voyage /lib/modules/3.4.4-voyage/build
    root@voyage:/usr/src# ls /lib/modules/3.4.4-voyage/build
    COPYING               MAINTAINERS     block    include  net       usr
    CREDITS               Makefile        crypto   init     samples   virt
    Debian.src.changelog  README          debian   ipc      scripts
    Documentation         README.Debian   drivers  kernel   security
    Kbuild                REPORTING-BUGS  fs       lib      sound
    Kconfig               arch            get.sh   mm       tools
    
    
  3. Voyage Linuxソースコードでコンパイルの準備をします。
  4. 
    root@voyage:/usr/src# cd linux-source-3.4.4-voyage/
    root@voyage:/usr/src/linux-source-3.4.4-voyage# make oldconfig
    root@voyage:/usr/src/linux-source-3.4.4-voyage# make prepare
    root@voyage:/usr/src/linux-source-3.4.4-voyage# make modules_prepare KERNELRELEASE=$(uname -r)
    root@voyage:/usr/src/linux-source-3.4.4-voyage# cat include/generated/utsrelease.h
    #define UTS_RELEASE "3.4.4-voyage"
    
    
    ※最後に「cat include/generated/utsrelease.h」を行って、「#define UTS_RELEASE "3.4.4-voyage"」と表示させていますが、「"3.4.4-voyage"」のところが「uname -r」コマンドの結果と一致していればOKです。
  5. hifaceドライバを作成(コンパイル)します。
  6. 
    root@voyage:/usr/src/linux-source-3.4.4-voyage# cd ../snd-usb-asyncaudio/
    root@voyage:/usr/src/snd-usb-asyncaudio# make clean
    root@voyage:/usr/src/snd-usb-asyncaudio# ls
    Makefile  chip.h    control.c  dkms.conf  pcm.h
    chip.c    common.h  control.h  pcm.c
    root@voyage:/usr/src/snd-usb-asyncaudio# make
    make -C /lib/modules/3.4.4-voyage/build SUBDIRS=/usr/src/snd-usb-asyncaudio modules
    make[1]: Entering directory `/usr/src/linux-source-3.4.4-voyage'
    
      WARNING: Symbol version dump /usr/src/linux-source-3.4.4-voyage/Module.symvers
               is missing; modules will have no dependencies and modversions.
    
      CC [M]  /usr/src/snd-usb-asyncaudio/chip.o
      CC [M]  /usr/src/snd-usb-asyncaudio/control.o
      CC [M]  /usr/src/snd-usb-asyncaudio/pcm.o
      LD [M]  /usr/src/snd-usb-asyncaudio/snd-usb-asyncaudio.o
      Building modules, stage 2.
      MODPOST 1 modules
      CC      /usr/src/snd-usb-asyncaudio/snd-usb-asyncaudio.mod.o
      LD [M]  /usr/src/snd-usb-asyncaudio/snd-usb-asyncaudio.ko
    make[1]: Leaving directory `/usr/src/linux-source-3.4.4-voyage'
    root@voyage:/usr/src/snd-usb-asyncaudio# ls
    Makefile        common.h   modules.order          snd-usb-asyncaudio.mod.c
    Module.symvers  control.c  pcm.c                  snd-usb-asyncaudio.mod.o
    chip.c          control.h  pcm.h                  snd-usb-asyncaudio.o
    chip.h          control.o  pcm.o
    chip.o          dkms.conf  snd-usb-asyncaudio.ko
    
    

テスト

  1. ドライバの情報を表示します。
  2. 
    root@voyage:/usr/src/snd-usb-asyncaudio# modinfo snd-usb-asyncaudio.ko
    filename:       /usr/src/snd-usb-asyncaudio/snd-usb-asyncaudio.ko
    license:        GPL v2
    description:    M2Tech HiFace USB audio driver
    author:         Michael Trimarchi 
    alias:          usb:v249Cp9008d*dc*dsc*dp*ic*isc*ip*
    (中略)
    alias:          usb:v04B4p930Bd*dc*dsc*dp*ic*isc*ip*
    depends:
    vermagic:       3.4.4-voyage SMP mod_unload 486
    
    
  3. ドライバを一時的に組み込みます。
  4. 
    root@voyage:/usr/src/snd-usb-asyncaudio# insmod snd-usb-asyncaudio.ko
    
    
    ※ここで「Error: could not insert module snd-usb-asyncaudio.ko: Invalid module format」と表示された場合は、ドライバ情報を確認してください。
    「vermagic:」の箇所が、「3.4.4-voyage」のように、「uname -r」コマンドと同じ結果になる必要があります。単なる「3.4.4」ではエラーになります。
    この場合は「hifaceドライバの作成」の2.へ戻り、もう一度やり直してください。
  5. 組み込まれたドライバの一覧を表示します。
  6. 
    root@voyage:/usr/src/snd-usb-asyncaudio# lsmod
    Module                  Size  Used by
    snd_usb_asyncaudio      6517  0
    nfsd                  160651  2
    exportfs                2514  1 nfsd
    (後略)
    
    
    ※「snd_usb_asyncaudio」が表示されればOKです。
  7. サウンドサービス(ALSA)でhifaceドライバを認識していることを確認します。
  8. 
    root@voyage:/usr/src/snd-usb-asyncaudio# aplay -l
    **** List of PLAYBACK Hardware Devices ****
    card 0: HDMI [HDA ATI HDMI], device 3: HDMI 0 [HDMI 0]
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: hiFace [hiFace], device 0: hiFace [AsyncAudio USB]
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    
    
    ※「hiFace」が表示されればOKです。他にサウンドカードが搭載されている場合は、それらも一緒に表示されます。

インストール

  1. hifaceドライバファイルをkernelディレクトリへコピーします。
  2. 
    root@voyage:/usr/src/snd-usb-asyncaudio# cp snd-usb-asyncaudio.ko /lib/modules/3.4.4-voyage/kernel/sound/usb/
    
    
  3. ドライバ登録情報を更新します。
  4. 
    root@voyage:/usr/src/snd-usb-asyncaudio# depmod -a
    
    
    ※OS起動時に自動でドライバを読ませるために、必ず行ってください。
  5. OSを再起動します。
  6. 
    root@voyage:/usr/src/snd-usb-asyncaudio# reboot
    
    
  7. 再起動後、hifaceドライバが組み込まれているか確認します。
  8. 
    root@voyage:~# aplay -l
    **** List of PLAYBACK Hardware Devices ****
    card 0: hiFace [hiFace], device 0: hiFace [AsyncAudio USB]
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: HDMI [HDA ATI HDMI], device 3: HDMI 0 [HDMI 0]
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    
    

MPDへの登録

  1. Voyage MPDで書き込みできるようにします。
  2. 
    root@voyage:~# remountrw
    
    
  3. MPDの設定ファイルを開きます。
  4. 
    root@voyage:~# vi /etc/mpd.conf
    
    
  5. hifaceの設定を追記します。
  6. 
    #
    # hiFace output:
    #
    audio_output {
            type            "alsa"
            name            "hiFace"
            device          "hw:0,0"
    }
    
    
    ※「device "hw:0,0"」の数値は、「aplay -l」コマンドで表示された結果により異なります。
    「card 0: hiFace [hiFace], device 0: hiFace [AsyncAudio USB]」ならば、「device "hw:0,0"」
    「card 1: hiFace [hiFace], device 0: hiFace [AsyncAudio USB]」ならば、「device "hw:1,0"」
    のように、「device "hw:{card番号},{device番号}"」と記述します。
  7. MPDを再起動します。
  8. 
    root@voyage:~# /etc/init.d/mpd restart
    [ ok ] Stopping Music Player Daemon: mpd.
    [ ok ] Starting Music Player Daemon: mpd.
    
    
  9. MPDクライアントでhiFaceを選択し、音楽ファイルを再生してみます。

以上。

改訂履歴

2013/04/10 2013/01/30 2012/12/01


copyright © 2012 H'Imagine. All rights reserved.