十二月の日記/メモ

 

2000.12.07(木) 08:59:56
ALSAの続き。

2000.12.07(木) 11:08:06
alsaplayer などの場合は、/proc/asound の下のエントリを直接開くようなので、原理的に自動的にモジュールを読み込むようにすることはできない(と思う)ので、/etc/init.d/alsasound で読み込むことになっている。これはまた後まわしにして、mpg123 や、gmix などの oss の仕組みを使ったものの場合に自動的に読み込むようにするのをやってみた。
たとえば、/etc/modules.conf に、以下のようにするらしい。

alias char-major-14 soundcore
alias snd-card-0 snd-card-intel8x0
alias sound-slot-0 snd-card-0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
#alias sound-service-0-12 snd-pcm-oss
options snd snd_major=116 snd_cards_limit=5 snd_device_mode=0660 snd_device_gid=29 snd_device_uid=0
sound-slot-0 -> snd-card-0 -&g;t snd-card-intel8x0 となってるところは、 alias sound-slot-0 snd-card-intel8x0 としてしまってもここでは問題ないが、alsasound スクリプトが snd-card-[[:digit:]] を認識しているので、このようにしている。
snd_device_gid=29 の 29 は、/etc/group の audio:x:29: で、root 以外で使うにはグループに属する必要がある。OSS の /dev/dsp 等も グループは audio になっている。
で、上のようにしておくと、gtk のミキサーである、gmix を alsamixer の代用にできるようになり、mpg123 などを 動かすだけで、自動的にモジュールがロードされるようになる。しかし、モジュールをロードした時のデフォルトでは消音状態のため、毎回消音を解除しないといけない。gmix には、起動時に前回の状態に戻すというオプションがあり ある程度役に立つが、gnome の タスクバー(panel) に常駐する mixer_applet はそれをやってくれないので、結局この方法ではログインすれば音が出るという状態にはなってくれない。
modules.conf を書く上でのもう一つの課題は、複数のサウンドカードの割り当てを制御することだ。たとえば認識される順番と逆にしたい場合、次のような行を追加することで可能となっている。
options snd-card-ymfpci snd_index=2,1,0
これは snd-card-ymfpci を使う場合の例で、このようにすると、3枚目の YMF7x4 カードがデフォルト(0) になり、1枚目が 2、2枚目が 1 になる。すなわち、
1枚目: /dev/dsp2 , /dev/mixer2 、alsaplayer -c 2,0
2枚目: /dev/dsp1 , /dev/mixer1 、alsaplayer -c 1,0
3枚目: /dev/dsp  , /dev/mixer  、alsaplayer -c 0,0
となる。
options snd-card-ymfpci snd_id=ymf724,ymf744,ymf754 snd_index=2,1,0
とするとわかりやすくなると思うが、名前そのものに意味はないので、順番を間違えると余計に混乱するかもしれない。この設定は /proc/asound のエントリに反映されていて、上のようにすると、ls -l /proc/asound で、 0 -> ymf754 , 1 -> ymd744 , 2 -> ymd724 , ymf724/ , ymd744/ , ymf754/ となっているのが確認できる。ちなみに認識はPCIスロットの番号順で、AGPスロットに近い側からになっている。
あと、modinfo -p snd-card-ymfpci とすれば、モジュールに指定できるオプション、簡単な説明、配列かどうか、など表示してくれるってのは知らなかった。
で、YMF7x4 3枚刺しの時の設定はこう。
alias char-major-14 soundcore
alias snd-card-0 snd-card-ymfpci
alias snd-card-1 snd-card-ymfpci
alias snd-card-2 snd-card-ymfpci
alias sound-slot-0 snd-card-0
alias sound-slot-1 snd-card-1
alias sound-slot-2 snd-card-2
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-1-0 snd-mixer-oss
alias sound-service-1-1 snd-seq-oss
alias sound-service-1-3 snd-pcm-oss
alias sound-service-2-0 snd-mixer-oss
alias sound-service-2-1 snd-seq-oss
alias sound-service-2-3 snd-pcm-oss
options snd snd_major=116 snd_cards_limit=5 snd_device_mode=0660 snd_device_gid=29 snd_device_uid=0
options snd-card-ymfpci snd_id=ymf724,ymf744,ymf754 snd_index=2,1,0
続きはまた。

2000.12.09(土) 12:00:22
続き続き。
Debian がどうやっているかをちょっと確認してみる。

dpkg -e alsa-base_0.4.1i-5.deb /tmp/alsa-base/
とかやって、出てきた /tmp/alsa-base/postinst を見ると、update-rc.d alsa defaults >/dev/null などとしているのでそれに習って、
update-rc.d alsasound defaults
などとすることにする。alsasound は、alsa-driver-0.5.9d によって、/etc/init.d にインストール済み。すると、
/etc/rc0.d/K20alsasound -> ../init.d/alsasound
/etc/rc1.d/K20alsasound -> ../init.d/alsasound
/etc/rc6.d/K20alsasound -> ../init.d/alsasound
/etc/rc2.d/S20alsasound -> ../init.d/alsasound
/etc/rc3.d/S20alsasound -> ../init.d/alsasound
/etc/rc4.d/S20alsasound -> ../init.d/alsasound
/etc/rc5.d/S20alsasound -> ../init.d/alsasound
というようにリンクができる。(別に全部手でやってもかまわない。) alsasound スクリプトは、alsactl store してから、snd-* の各モジュールを rmmod しようとするが、K20alsasound だと、S20sendsigs より先に呼ばれるはずなので、だれかがオープンしていた場合 rmmod できないことになると思われる。なんら害はないと思うが。これで、再起動してもミキサーの設定が保存され、起動すればサウンドが使えるようになる。

さて、これで最後になるが、alsactl store してできる、/etc/asound.conf を見てみたところ、このようになっていた。

soundcard("ymf744") {
  mixer("SigmaTel STAC9708/11") {
    ; The type is 'bool'.
    switch("AC97 PCM Output Path", false)
    ; The type is 'bool'.
    switch("Simulated Stereo Enhancement", false)
    ; The type is 'bool'.
    switch("Loudness (bass boost)", false)
    ; The type is 'bool'.
    switch("AC97 Mono Output Select", false)
    ; The type is 'bool'.
    switch("AC97 Second MIC", false)
    ; The type is 'bool'.
    switch("ADC/DAC Loopback", false)
    ; The type is 'bool'.
    switch("S/PDIF output", false)
    ; Voice 0 : Min 0 Max 16383
    ; Voice 1 : Min 0 Max 16383
    element("SPDIF Record",0,200,Volume1(0,0))
〜中略〜
  }
}
ここには、amixer contents では表示されない S/PDIF output という項目があることに気づく。これを true にしてみたところ、ちゃんと S/PDIF 出力が有効になった。すばらしい。ひとまずこれでふつうに使えるようになった。ふつうに使えるというのは使うたびになんでS/PDIF出力は使えないのかなぁと考えなくてもすむということ。(^^; で、そうこう言っているうちに、0.5.10 が出ている。終わり。

2000.12.16(土) 15:15:43
12/10 が NetworkWalkman の新製品 NW-MS9 の発売日だったので、12/9 に秋葉で探したら簡単に買うことが出来た。なんといってもきれいに小さくまとまっているところが決め手。その点では他の製品は全く比較対照にならないと思う。
付属ソフトの OpenMG Jukebox が思いの外よくできていて感心した。(もちろんバグもあるようで完璧ではないが。) 一つのソフトで、CDからエンコード、MP3のコンバート、チェックアウト/チェックイン、Webアクセス を行う様になっていて、それぞれようのタブがある。で、エンコードのタブを選んで CDをエンコードを動かしておいて、その作業中にチェックアウト/インのタブを選らんで、NW本体に入っている曲を別の物と入れ替える操作をするといったことができるようになっている。という、実に全うなマルチスレッドな作りをしているのが偉い。もちろんエンコードとダウンロードを同時に行うこともできる。ダウンロードはトラック(曲)単位なので、合計の時間は、エンコード時間+最後の曲のダウンロード時間という計算になる。速度的にはどうかというのは、きっちり計っていないのでよくないが、CDからのエンコードが 1分間に10分分のエンコード(P3-800/133)ができるくらいで、NW本体へのチェックアウト(ダウンロード)が、500〜800KBytes/sec くらい。速いとも遅いとも言えない感じで、CDからMDよりは圧倒的に速いが、出かける前にエンコードから始めようとするのはつらい。
いったんエンコードしたものは、3回までPCからNW本体にチェックアウト(ダウンロード)でき、またチェックインすればチェックアウトの回数は回復する。チェックインはチェックアウトしたパソコンに対してしかできないが他のPCで(Jukeboxの操作によって)曲を削除しても、履歴情報が残るようになっているので、元のPCに繋いだ時点で自動的にチェックアウト回数が回復するようになっている。これも詳しくは調べていないが履歴情報が意外と容量を必要とするので、適当にやっていると、「なんか前よりダウンロードできる曲数が少ないなぁ。」ということになる。再フォーマットすればいいが、とうぜん履歴情報は失われる。音楽のオンライン販売をしようというわけだから、これくらいするのは当然か。PCのハードディスクの障害に備える為のバックアップツールまでついている(試していない)。 しかしこれなら満足オンライン販売も利用できるか? というのはさっぱりわからない。自分なら買わないような気がする。
USB接続については規格上出るだろう十分な速度が出ているので速度については文句ないが、安定性はまだ問題があるようだ。FW-K7VM(AMD751+VIA686A)では転送途中にOSのUSBスタック(?)がこける。MSI 815E-PRO(i815E) と、MSI 694D-PRO(VIA694X+VIA686A)では問題ない。PC Watch の記事ではUSB機器はIntelチップセットでも動く場合と動かない場合とあるとか。もっと安心して使えればいいんだが、現状ではPCを1台しか持ってない人には勧められる物じゃないかもしれない。
あと面白いのは、NWを接続すると、OpenMG対応のメモリースティックドライブと認識されるので、普通のメモリースティックの読み書きにも使えるということ。他の製品にはこの愉快さはないはず。てことで。

2000.12.23(土) 10:47:05
RICOHのCD-R/RW/DVD-ROMドライブのファームが出ているようなのでアップデートした。

><Ver.1.20での変更点>
>ディスク排出時にディスクが回転しながら出てこないよう修正した。
>DAOで小容量の書き込みができるよう修正した。
>CD-Rの特性変更
>マルチセッションのCD-RWディスクMinimally Blank後、DAOで記録してもエラーに>ならないよう修正した。
><Ver.1.10での変更点>
>Ultra DMAモードでDVDを再生するとハングアップしない様修正した。
>HDDのLEDが点灯した状態になってしまう事が有ったが正しく動作するよう修正した&。
>稀にドライブがPCで正しく認識されない事が有ったが正しく認識出来る様修正した。

2000.12.24(日) 14:25:00
Linuxカーネル 2.2.17以降 のUSB機能を試している。簡単に動いていいかんじ。USBマウスはどうやって実際に使えるようにするのかなぁと思っていたんだが、(開発版は追いかけていないので全然くわしくない。) 結局カーネルで、IntelliMouse に見えるデバイスを作ってしまうという、僕や私が喜んで思いつきそうなことをやっているところに好感が持てる。
ただもちろん先のことは考えていてマウスやキーボードを統合したeventデバイスというのも作られている。eventデバイスはまだ実用になってる気がしないのでなにも調べていないが、Xサーバが対応すれば、SMPを考慮したコードを特に用意しなくてもいいようなことが書いてあるのはどういう意味なんだろう。まぁ、ほっておく。
マウスについてだけ書いてみる。まず、カーネルはこんなかんじ、CONFIG_USB=m, CONFIG_USB_DEBUG=y, CONFIG_USB_UHCI=m ,CONFIG_USB_OHCI=m ,CONFIG_USB_HID=m, CONFIG_INPUT_MOUSEDEV=m に設定し、makeして、カーネルとモジュールを更新する。 で、/usr/src/linux/Documentation/usb/input.txt に 2. Simple Usage という気の短い人のためのすばらしい説明があるので引用しよう。他の部分も一通り読むといいらしい。

2. Simple Usage
~~~~~~~~~~~~~~~
  For the most usual configuration, with one USB mouse and one USB keyboard,
you'll have to load the following modules (or have them built in to the
kernel):

	input.o
	mousedev.o
	keybdev.o
	usbcore.o
	usb-[uo]hci.o
	hid.o

  After this, the USB keyboard will work straight away, and the USB mouse
will be available as a character device on major 13, minor 63:

	crw-r--r--   1 root     root      13,  63 Mar 28 22:45 mice

  This device, has to be created, unless you use devfs, in which case it's
created automatically. The commands to do that are:

	cd /dev
	mkdir input
	mknod input/mice c 13 63

  After that you have to point GPM (the textmode mouse cut&paste tool) and
XFree to this device to use it - GPM should be called like:

	gpm -t ps2 -m /dev/input/mice

  And in X:

	Section "Pointer"
	    Protocol    "ImPS/2"
	    Device      "/dev/input/mice"
	    ZAxisMapping 4 5
	EndSection

  When you do all of the above, you can use your USB mouse and keyboard.
モジュールは下のような依存関係になっている。
>lsmod
Module                  Size  Used by
mousedev                3788   0  (unused)
hid                    11644   0  (unused)
input                   2876   0  [mousedev hid]
usb-uhci               19044   0  (unused)
usbcore                46824   0  [hid usb-uhci]
モジュールにするとこういう風につながりがはっきり見えるのでおもしろい。完璧にしらべたわけではないが、USBマウスの接続と、各モジュール hid、mousedev、usb-uhci の読み込むをどの順序で行っても正しく動くようになっている様子。
んな感じで、2.2 カーネルでもUSBがふつうに使えるようになってるんだなというのを確認。つづく。

2000.12.24(日) 15:01:41
昨日買った、MP9120A パッケージ版は、OAシステムプラザで、¥29,800 。

2000.12.28(木) 11:21:24
やっと、DVIケーブル (NANAO DD200 @¥7500) を手に入れて GeForce2 GTS なカードと FlexScan L671 を繋いで見たが、結果としては使い物にならない事がわかった。(^^; まず、Detonator2 だと、DVI接続で 1280x1024 を有効にしてくれるが、Detonator3 では 1024x768 までに制限されている。Detonator2 を使って、1280x1024 に設定した場合、最初は正しく表示されて、画質も DVI の力を正しく発揮したものになるが、どこからともなく短い水平な線状のノイズがわいてきて、みるみるうちに画面全体に広がっていく。だいたい2分くらいで同期がとれなくなって画面が表示されなくなるという。GeForce の DVI はおもいっきりバグ入りだったのか... Detonator2 では他の解像度にしても同様の症状で正しく機能しない。Detonator3 にすると、1024x768 までの範囲で正しく機能するようになる。GeForce は、Zoom機能とやらをチップが持っているので、1024x768 を選んでもデフォルトだと液晶モニタの大きさ(1280x1024)に合わせて、画像が拡大されるので、液晶モニタ側では、1280x1024 の信号が来ているように見える。設定によって、ドット対応するようにすることもできる。で、不思議なのは、DVIの伝送部分では、1280x1024 が出来ているのに、1280x1024 の画面を出すことは何故出来ないのかってこと。GeForce2 MX も同様。nVidia、ASUS、HERCULES あたりを探すも、KnowledgeBase 一つ見つからない。むかむか。GeForce は、バグ入りってことをちゃんと載せとけ。
つーわけで、G450 DVI を早急に入手せねば。書かなかったが、L671 は、G200 とかをアナログで繋いでも DVI と変わらないくらいきれいに出る。ケーブルの品質さえ良ければ。

十一月の日記/メモ