
Ubuntu日本語フォーラム

ログインしていません。
自作のプログラムでサウンドカードを制御するために/dev/dspを使っているのですが,
(例えば, http://homepage3.nifty.com/rio_i/lab/oss/004mic.htm の様に)
10.10以降のリリースでは/dev/dspが無くなってしまい,プログラムが使用できずに困っています.
11.04(10.10以降のリリース)で/dev/dspを使用するためにはどのようにすればよいのでしょうか?
自分が行ったこととして,
Ubuntu Weely Recipe 144回 UbuntuでOpen Sound Systemを使う( http://gihyo.jp/admin/serial/01/ubuntu-recipe/0144 )
を読んで,サウンドサブシステムをALSAからOSSへ変更すれば良いのではないのかと考え,
$ sudo dpkg-reconfigure linux-sound-base
を実行してOSSへ切り替えたのですが,/dev/dspは作成されませんでした.
このやりかたは間違っているのでしょうか,それとも他に必要な作業が存在するのでしょうか?
オフライン
/dev/dspはかつてのサウンドサブシステムであるOpen Sound Systemが設けるキャラクターデバイスです(現在はALSA)。ここらへんの歴史的経緯に関しては、Ubuntu Weekly Recipeを参照して下さい。ここではちょっと、Open Sound Systemの現況について説明したいと思います。
Open Sound Systemには、3と4の2つのバージョンがあります。3はかつて、Linuxカーネルと一緒に開発され、リリースされてきました。その後紆余曲折を経た結果、カーネルと一緒に開発されなくなりました。UbuntuであればちょうどMaverickに採用されたLinuxカーネルから、リリースに同梱(?)されなくなったと記憶しています。
実は、実行していただいた「dpkg-reconfigure」で切り替えることのできるOpen Sound Systemは、バージョン3になります。これは内部的には、サウンドドライバーとしてのカーネルモジュールを、Linuxカーネルのイメージに「入っているはず」のOpen Sound Systemバージョン3由来のモジュールに切り替えるという働きをしています。
しかし先述の通り、Nattyにはバージョン3のモジュールは「入っていません」ので、カーネルモジュール周りが正しく処理されない結果、「/dev/dsp」が出現しないということになっているのだと思います。
そのため選択肢としては、パッケージの形で提供されているバージョン4を使う他ありません。バージョン4の導入の仕方は、先のUbuntu Weekly Recipeを参照していただければと思いますが、注意点としては、この場合「dpkg-reconfigure」は不要となります。すなわち、以下のパッケージをインストールするだけでOKです。
・oss4-dkms (カーネルモジュールを自動コンパイルしてインストールするためのパッケージ)
・oss4-base (ライブラリや設定ファイルをインストールするためのパッケージ)
・oss4-gtk (画面操作できるハードウェアミキサーを提供するためのパッケージ)
・oss4-dev (オプション。開発用ファイルをインストールするためのパッケージ)
かなりややこしい話になっていますので、疑問点があったら遠慮なく返信していただければと思います。
オフライン
Mocciさん,
ご回答ありがとうございます.
ご指示のとおりに
$ sudo apt-get install oss4-dkms oss4-base oss4-gtk oss4-dev
を行い,再起動をしましたが,/dev/dspは現れませんでした.
osstestを行ったところ,
$ osstest
Sound subsystem and version: OSS 4.2 (b 2003/201106181017) (0x00040100)
Platform: Linux/i686 2.6.38-11-generic-pae #48-Ubuntu SMP Fri Jul 29 20:51:21 UTC 2011
NOTICE! You don't have any audio devices available.
It looks like your audio hardware was not recognized
by OSS.
If you have installed OSS just a moment ago then it may be necessary to.
to rebot the system before trying to use the device(s).
という結果が出力され,
また,ossinfoを行ったところ,
$ ossinfo
Version info: OSS 4.2 (b 2003/201106181017) (0x00040100) GPL
Platform: Linux/i686 2.6.38-11-generic-pae #48-Ubuntu SMP Fri Jul 29 20:51:21 UTC 2011 (ubuntu)
Number of audio devices: 0
Number of audio engines: 0
Number of MIDI devices: 0
Number of mixer devices: 0
Device objects
0: osscore0 OSS core services
1: oss_usb0 USB audio core services
MIDI devices (/dev/midi*)
Mixer devices
Audio devices
Nodes
という結果が出力されました.
これは,サウンドカードをカーネルなりOSSが見つけていないということなのでしょうか?
引き続きよろしくお願いします.
オフライン
ryun による投稿:
これは,サウンドカードをカーネルなりOSSが見つけていないということなのでしょうか?
サウンドデバイスは見つけてるけど、Open Sound System由来のカーネルモジュールとの対応が取れてない感じかと思います。
サウンドデバイスに関する情報を調べてみましょう。コマンド「$ sudo lspci -v;」の出力から、お使いのサウンドデバイスに対応する情報を見つけて教えて下さい。
例えば私が現在使っているものであればこんな感じです。
$ sudo lspci -v;
(中略)
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 03)
Subsystem: Lenovo ThinkPad T61
Flags: bus master, fast devsel, latency 0, IRQ 45
Memory at fe020000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 2
Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
Capabilities: [100] Virtual Channel
Capabilities: [130] Root Complex Link
Kernel driver in use: HDA Intel
Kernel modules: snd-hda-intel
(中略)このサウンドデバイスだと、カーネルモジュールとしてsnd-hda-intelが適用候補に上がっていて、実際にそれが使われていることがわかります。
オフライン
Mocchiさん,早速ありがとうございます.
# 先程の投稿ではHNを打ち間違えてしまいました. ごめんなさい.
$ sudo lspci -v;
を行い,サウンドデバイスらしき項目を探ってみたところ,
(中略)
00:1b.0 Audio device: Intel Corporation 6 Series Chipset Family High Definition Audio Controller (rev 04)
Subsystem: Lenovo Device 21e2
Flags: bus master, fast devsel, latency 0, IRQ 7
Memory at d2600000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 2
Capabilities: [60] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
Capabilities: [100] Virtual Channel
Capabilities: [130] Root Complex Link
Kernel modules: snd-hda-intel
(中略)
でした.
Mocchiさんの出力結果と比べると,
Mocchiさんと同様にカーネルモジュールではsnd-hda-intelが適用候補に入ってはいますが,
Kernel driver in useの項目が見当たりません.
オフライン
ryun による投稿:
Mocchiさんの出力結果と比べると,Mocchiさんと同様にカーネルモジュールではsnd-hda-intelが適用候補に入ってはいますが,Kernel driver in useの項目が見当たりません.
はい。これはALSAカーネルモジュールのロードを無効化する設定ファイルをパッケージ「oss4-base」がインストールするために起こります。候補はALSA由来のカーネルモジュール「snd-hda-intel」ひとつですので自動でロードされると思いきや、それがブロックされるため、ドライバーが何も適用されていないという状況のようです。
Kernel modules: snd-hda-intel
候補にOpen Sound System由来のカーネルモジュールが表示されていないので、先行き不安な感じですね。。。そこで一度、デバイスとカーネルモジュールの対応マップを更新してみたいと思います。以下のコマンドを実行してみて下さい。
$ sudo depmod -a;
これで再起動してみて、以下のコマンドの出力結果を教えていただければと思います。
$ sudo lspci -vnns 00:1b.0;
# Mocciってイタリア人っぽいかも :D
オフライン
$ sudo depmod -a;
$ sudo reboot;
を行った後,
$ sudo lspci -vnns 00:1b.0
を実行したところ,以下が出力されました.
00:1b.0 Audio device [0403]: Intel Corporation 6 Series Chipset Family High Definition Audio Controller [8086:1c20] (rev 04)
Subsystem: Lenovo Device [17aa:21e2]
Flags: bus master, fast devsel, latency 0, IRQ 7
Memory at d2600000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 2
Capabilities: [60] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
Capabilities: [100] Virtual Channel
Capabilities: [130] Root Complex Link
Kernel modules: snd-hda-intel
オフライン
やはり候補に現れませんね。。。
modinfoでカーネルモジュールの情報を見てみましょうか。以下のコマンドの出力を教えて下さい。
$ modinfo oss_hdaudio;
※oss_hdaudioはoss4-dkmsパッケージでインストールされるOpen Sound System由来のカーネルモジュールのうち、Intel社のHigh Definition Audioに対するドライバーです
オフライン
$ modinfo oss_hdaudio
を実行したところ,
$ modinfo oss_hdaudio filename: /lib/modules/2.6.38-11-generic-pae/updates/dkms/oss_hdaudio.ko author: 4Front Technologies ([email protected]) description: Open Sound System 'High Definition Audio (Azalia)' driver module license: GPL v2 srcversion: C94AF3AD864947C7FA9BBFD depends: osscore vermagic: 2.6.38-11-generic-pae SMP mod_unload modversions 686 parm: hdaudio_snoopy: hdaudio_snopy is reserved for diagnostic purposes and it must be 0 in all situations. Other values may make the driver vulnerable to DoS attacks. For security reasons only root can use this diagnostic interface. (int) parm: hdaudio_jacksense: Setting hdaudio_jacksense=1 enables jack sensing mode when the hdaudio driver is loaded. In this mode all I/O pin's that are not in use will be disabled as well as the mixer controls that are related with them. In this way the mixer/control panel will become more intuitive. However OSS will need to be restarted with soundoff;soundon every time new inputs or outputs are attached to the audio jacks. NOTE! hdaudio_jacksense=1 works only in some systems. Many laptops and motherboards don't support jack sensing. (int) parm: hdaudio_noskip: Disable checks to skip unconnected jack. Values: 0-7, where value is a bitmask - every bit disables another check. Can override hdaudio_jacksense. (int)
となりました.
# コードボックスの書き方をやっと把握しました.
オフライン
では次に、カーネルモジュールのロード状況を調べたいと思います。以下のコマンドを実行した結果を教えて下さい。
$ lsmod | egrep 'soundcore|oss_*';
オフライン
$ lsmod | egrep 'soundcore|oss_*'; oss_usb 100098 0 osscore 545291 1 oss_usb soundcore 12600 1 snd
となりました.
オフライン
modinfoの出力から、対応するデバイスのIDがわかるかなと期待していたのですが、どうやら作法が少々違うようですね。
lsmodの出力からもわかるとおり、現在はお使いのサウンドデバイスに対応するカーネルモジュールがロードされていない状況ですので、強制的にロードしてみましょうか。以下のコマンドを実行してみて下さい。
$ sudo modprobe oss_hdaudio;
実行したら、先のコマンド「lsmod」で本当にロードされたかどうか確認してみて下さい。
その後、osstestやossinfo、lspciの出力内容に変化がないかどうか確かめてみて下さい。
オフライン
ご指示のとおり
$ sudo modprobe oss_hdaudio;
を実行した後,
$ lsmod;
を実行すると,
$ lsmod Module Size Used by oss_hdaudio 144250 0 oss_usb 100098 0 osscore 545291 2 oss_hdaudio,oss_usb (省略)
となり,oss_hdaudioがロードされているようです.
osstestとossinfo,lspciに関しては先ほどと出力結果は変わりませんでした.
オフライン
うーん。残念ながらUbuntuのリポジトリで提供されているOpen Sound Systemバージョン4のカーネルモジュールは、お使いのサウンドデバイスに対応していないようです。カーネルモジュールを入れ替えて、お使いのサウンドデバイスに対応するキャラクターデバイス「/dev/dsp」を設けるのは諦めたほうがいいかもしれません。
なお、UbuntuではOpen Sound Systemをエミュレートする仕組みがいくつか提供されていますので、そちらの利用も検討して下さい。力になれずすみません。
オフライン
わかりました.
では,質問を変えて,USB接続のサウンドデバイスを接続したらどうなるのでしょうか?
手元にEDIROLのUA-4FXというデバイスがあり,こちらを使えればよいと考えているのですが……
オフライン
今,UA-4FXを接続して再起動をしたところ,/dev/dspが作成されました.
しかし,「サウンドの設定」の「ハードウェア」タブを見てみると
なんのデバイスも表示されない,という状態です.
オフライン
そこらへんはUbuntu Weely Recipe 第144回 UbuntuでOpen Sound Systemを使うにすっかり書いてありますので、そちらを参照してみて下さい。
オフライン