皆さんは物持ちが良い人でしょうか、私はそうです。中々ものが捨てられません。一般的には古くて使えないものもつい勿体無いからと大事に仕舞い込んでしまいます。場所をとるので粗大ゴミの度に脅威に晒されますが(むしろ、ゴミの山に使えそうなのを見つけて欲しくなったことありませんか?)、そういったものに利用価値を見出したり全く違う用途を考えるのも楽しいものです。しかし、そういった品は大抵どこかひと手間かけてやらないと使えません。
最近では、とある古いノートPC(CPUはPentium3!)を実験机で利用しようと思い立ちOSにDebianをインストールしたとき音源が機能しませんでした。それには古いYamaha YMF-724/740/744/754 (DS-1)といった音源が載っています。ここでは古いYamaha音源をLinux環境で動作させるための覚書を残しておこうかと思います。
環境
学生時代のやつなので、もう10年以上前のですね。物持ち良く(捨てられず)倉庫に残っていました。
- Dynabook A2/X10PMC (Satellite 2851)
- CPU:Pentium3
- MEM:256 + 256MByte
- 音源:Yamaha YMFシリーズ
- OS:Debian 8 jessie(32bit版)
Yamaha YMF音源が機能していない
このノートPCは実験室で使うために倉庫から引っ張り出してきたお古です。ネットワークに接続したいのでアップデートが行われているDebianをインストールすることにしました。しかし画面がまともに出力されず、それを解決しても今度は音が鳴りませんでした。
モジュールが読み込まれているか等を調べてみても、音源に関してはぱっと見では認識しているようだったので理由が分かりません。
~$ lspci | grep -i audio 02:07.0 Multimedia audio controller: Yamaha Corporation YMF-754 [DS-1E Audio Controller] ~$ lsmod | grep snd snd_ymfpci 32063 0 snd_mpu401_uart 13299 1 snd_ymfpci snd_rawmidi 22372 1 snd_mpu401_uart snd_opl3_lib 17206 1 snd_ymfpci snd_hwdep 12906 1 snd_opl3_lib snd_seq_device 12980 2 snd_rawmidi,snd_opl3_lib gameport 13270 1 snd_ymfpci snd_intel8x0m 17500 0 snd_ac97_codec 96151 2 snd_ymfpci,snd_intel8x0m snd_pcm_oss 44124 0 snd_mixer_oss 21822 1 snd_pcm_oss snd_pcm 78128 4 snd_pcm_oss,snd_ymfpci,snd_ac97_codec,snd_intel8x0m snd_timer 26105 3 snd_ymfpci,snd_pcm,snd_opl3_lib snd 55101 12 snd_pcm_oss,snd_ymfpci,snd_ac97_codec,snd_hwdep,snd_timer,snd_pcm,snd_rawmidi,snd_mpu401_uart,snd_seq_device,snd_mixer_oss,snd_intel8x0m,snd_opl3_lib soundcore 12890 1 snd ac97_bus 12462 1 snd_ac97_codec
そこでブートログを見てみると、なにやらfirmwareの読み込みに失敗している旨のエラーメッセージが出力されています。
~$ sudo cat /var/log/messages | grep snd_ymfpci [ 15.717629] snd_ymfpci 0000:02:07.0: firmware: failed to load yamaha/ds1_dsp.fw (-2) [ 15.718146] snd_ymfpci 0000:02:07.0: Direct firmware load failed with error -2 [ 15.718153] snd_ymfpci 0000:02:07.0: Falling back to user helper [ 15.722884] snd_ymfpci 0000:02:07.0: firmware request failed: -12 [ 15.723475] snd_ymfpci: probe of 0000:02:07.0 failed with error -12
以下のサイトを読んでいると、どうも過去にライセンス関係で問題があって必要なファームウェアがDebianパッケージから取り除かれてしまったようです。別途ソースコードからのビルドが必要です。
- Debian - Yamaha YMF-724/740/744/754 (DS-1) devices
https://wiki.debian.org/snd-ymfpci
In linux-2.6 2.6.23-1, the binary-only firmware in this driver was removed (see the package changelog), due to discovered licensing issues. This was also removed from the alsa-source package to resolve bug 483918.
Installation
You are required to supply three firmware files for device use, which can be acquired from the ALSA project.
必要なドライバをセットアップする
ビルド環境を構築
まずビルドに必要なパッケージをインストールします。
$ sudo apt-get install alsa-base alsa-utils build-essential
ファームウェアをビルド
次にALSA projectのページからファームウェアのソースコードを入手してビルドします。
- Advanced Linux Sound Architecture (ALSA) project homepage
http://www.alsa-project.org/main/index.php/Main_Page
wget ftp://ftp.alsa-project.org/pub/firmware/alsa-firmware-1.0.29.tar.bz2 tar jxvf alsa-firmware-1.0.29.tar.bz2 cd alsa-firmware-1.0.29 ./configure cd ymfpci make $ ls -l *.fw -rw-r--r-- 1 kiri kiri 12288 Oct 2 13:40 ds1_ctrl.fw -rw-r--r-- 1 kiri kiri 128 Oct 2 13:40 ds1_dsp.fw -rw-r--r-- 1 kiri kiri 12288 Oct 2 13:40 ds1e_ctrl.fw
ファームウェアを配置してからモジュールを再ロードする
ビルドが完了すると拡張子fwのファイルが3つ出来ていると思います。これを以下のディレクトリにコピーしてから、"snd-ymfpci"モジュールをunload/loadしてやります(再起動でもいいと思います)。
- ファームウェアコピー先ディレクトリ:/lib/firmware/yamaha
$ sudo mkdir /lib/firmware/yamaha $ sudo cp *fw /lib/firmware/yamaha/ $ sudo modprobe -r snd-ymfpci $ sudo modprobe snd-ymfpci
これで音が鳴るようになりました。何か曲を鳴らして確認してみてください。
(ちなみに、Debianに初めから入っているサンプルの音データはすごいノイズ混じり(?)で音源が壊れているのかと勘違いしそうになります。ちゃんとした曲をYoutubeなりで拾ってきて再生してやれば安心出来ます)
所感
普通に考えるとオンボロPCを復活するのにかける時間があれば新品か、さもなくばもうちょっとマシな中古品を購入するのが正しいでしょう。かかった時間を考えるとOSインストールして動かないところを調査して~というので安いPCが買えそうです。しかし何故か楽しいからやってしまいます。この記事が、そんなご同類な方の参考になれば幸いです(そんな人いるかな?)。
参考
このページは以下のサイトを参考に記載させて頂きました。
- Debian - Yamaha YMF-724/740/744/754 (DS-1) devices
https://wiki.debian.org/snd-ymfpci - Advanced Linux Sound Architecture (ALSA) project homepage
http://www.alsa-project.org/main/index.php/Main_Page - maidphere - Linuxで音が出ないときに確認するポイント
http://www.maidsphere.jp/archive/Linux%E3%81%A7%E9%9F%B3%E3%81%8C%E5%87%BA%E3%81%AA%E3%81%84%E3%81%A8%E3%81%8D%E3%81%AB%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88
私も物を捨てられない人間です。(^^;)
とても参考になりました。ありがとうございます!
こんにちは。
こんな記事ですが、お役に立てれば嬉しいです。