お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2011-09-14 22:43:43

ryun
メンバ
登録日: 2010-06-10

11.04で/dev/dspを使用したい

自作のプログラムでサウンドカードを制御するために/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は作成されませんでした.
このやりかたは間違っているのでしょうか,それとも他に必要な作業が存在するのでしょうか?

オフライン

 

#2 2011-09-14 23:08:09

Mocchi
管理者
登録日: 2009-05-17

Re: 11.04で/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 (オプション。開発用ファイルをインストールするためのパッケージ)

かなりややこしい話になっていますので、疑問点があったら遠慮なく返信していただければと思います。

オフライン

 

#3 2011-09-15 10:45:57

ryun
メンバ
登録日: 2010-06-10

Re: 11.04で/dev/dspを使用したい

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が見つけていないということなのでしょうか?

引き続きよろしくお願いします.

オフライン

 

#4 2011-09-15 12:06:42

Mocchi
管理者
登録日: 2009-05-17

Re: 11.04で/dev/dspを使用したい

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が適用候補に上がっていて、実際にそれが使われていることがわかります。

オフライン

 

#5 2011-09-15 12:23:04

ryun
メンバ
登録日: 2010-06-10

Re: 11.04で/dev/dspを使用したい

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の項目が見当たりません.

オフライン

 

#6 2011-09-15 12:36:09

Mocchi
管理者
登録日: 2009-05-17

Re: 11.04で/dev/dspを使用したい

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

オフライン

 

#7 2011-09-15 12:54:32

ryun
メンバ
登録日: 2010-06-10

Re: 11.04で/dev/dspを使用したい

$ 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

オフライン

 

#8 2011-09-15 15:45:14

Mocchi
管理者
登録日: 2009-05-17

Re: 11.04で/dev/dspを使用したい

やはり候補に現れませんね。。。

modinfoでカーネルモジュールの情報を見てみましょうか。以下のコマンドの出力を教えて下さい。

コード:

$ modinfo oss_hdaudio;

※oss_hdaudioはoss4-dkmsパッケージでインストールされるOpen Sound System由来のカーネルモジュールのうち、Intel社のHigh Definition Audioに対するドライバーです

オフライン

 

#9 2011-09-15 15:53:02

ryun
メンバ
登録日: 2010-06-10

Re: 11.04で/dev/dspを使用したい

コード:

 $ 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)

となりました.

# コードボックスの書き方をやっと把握しました.

オフライン

 

#10 2011-09-15 16:04:30

Mocchi
管理者
登録日: 2009-05-17

Re: 11.04で/dev/dspを使用したい

では次に、カーネルモジュールのロード状況を調べたいと思います。以下のコマンドを実行した結果を教えて下さい。

コード:

$ lsmod | egrep 'soundcore|oss_*';

オフライン

 

#11 2011-09-15 16:06:53

ryun
メンバ
登録日: 2010-06-10

Re: 11.04で/dev/dspを使用したい

コード:

$ lsmod | egrep 'soundcore|oss_*';
oss_usb               100098  0 
osscore               545291  1 oss_usb
soundcore              12600  1 snd

となりました.

オフライン

 

#12 2011-09-15 16:13:49

Mocchi
管理者
登録日: 2009-05-17

Re: 11.04で/dev/dspを使用したい

modinfoの出力から、対応するデバイスのIDがわかるかなと期待していたのですが、どうやら作法が少々違うようですね。

lsmodの出力からもわかるとおり、現在はお使いのサウンドデバイスに対応するカーネルモジュールがロードされていない状況ですので、強制的にロードしてみましょうか。以下のコマンドを実行してみて下さい。

コード:

$ sudo modprobe oss_hdaudio;

実行したら、先のコマンド「lsmod」で本当にロードされたかどうか確認してみて下さい。
その後、osstestやossinfo、lspciの出力内容に変化がないかどうか確かめてみて下さい。

オフライン

 

#13 2011-09-15 16:24:40

ryun
メンバ
登録日: 2010-06-10

Re: 11.04で/dev/dspを使用したい

ご指示のとおり

コード:

$ 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に関しては先ほどと出力結果は変わりませんでした.

オフライン

 

#14 2011-09-15 16:46:29

Mocchi
管理者
登録日: 2009-05-17

Re: 11.04で/dev/dspを使用したい

うーん。残念ながらUbuntuのリポジトリで提供されているOpen Sound Systemバージョン4のカーネルモジュールは、お使いのサウンドデバイスに対応していないようです。カーネルモジュールを入れ替えて、お使いのサウンドデバイスに対応するキャラクターデバイス「/dev/dsp」を設けるのは諦めたほうがいいかもしれません。

なお、UbuntuではOpen Sound Systemをエミュレートする仕組みがいくつか提供されていますので、そちらの利用も検討して下さい。力になれずすみません。

オフライン

 

#15 2011-09-15 16:51:04

ryun
メンバ
登録日: 2010-06-10

Re: 11.04で/dev/dspを使用したい

わかりました.

では,質問を変えて,USB接続のサウンドデバイスを接続したらどうなるのでしょうか?
手元にEDIROLのUA-4FXというデバイスがあり,こちらを使えればよいと考えているのですが……

オフライン

 

#16 2011-09-15 16:56:44

ryun
メンバ
登録日: 2010-06-10

Re: 11.04で/dev/dspを使用したい

今,UA-4FXを接続して再起動をしたところ,/dev/dspが作成されました.

しかし,「サウンドの設定」の「ハードウェア」タブを見てみると
なんのデバイスも表示されない,という状態です.

オフライン

 

#17 2011-09-15 17:02:32

Mocchi
管理者
登録日: 2009-05-17

Re: 11.04で/dev/dspを使用したい

そこらへんはUbuntu Weely Recipe 第144回 UbuntuでOpen Sound Systemを使うにすっかり書いてありますので、そちらを参照してみて下さい。

オフライン

 

Board footer

Powered by FluxBB