Heijastin

CA0132 の IEC958 出力が可能に!

念願叶い Recon3D Fatal1ty の S/PDIF 出力が可能になった!

昨夜 Compile した gentoo-sources-3.12.21-r1 にて遂に悲願達成。ただし、完全に運任せ。Boot して 3/10 程度の確立で使える。Chipset が Bug を抱えている可能性も否定できない。基本的に Linux user はこの Card を選ぶべきじゃない。

【2014年11月09日】Kernel 3.16 での CA0132 の IEC958 出力設定

2014年07月13日 Kernel 3.12 利用時に初めて SB Recon3D Digital Stereo (IEC958) の出力に成功したが、出力可能な時、不可能な時がランダムで存在し、安定しなかった。Kernel 3.16 になり HD-Audio 項目が強化され、なおかつ sys-firmware/alsa-firmware が更新されたことで、若干は安定。十数回に渡る再設定を試行した結果、確定状況を以下とする。

sys-firmware/alsa-firmware へ alsa_cards_ca0132 を追加

equery uses alsa-firmware で該当 Flag を確認し /etc/make.conf に alsa_cards_ca0132 を追記して emerge -uDN world する。遂に Alsa が対応してくれた。代替となる chromeos-base/ca0132-dsp-firmware も試したのだが、こちらは、僕の環境では何の効果もなかった。

不要となった設定

以下を用意しなくても SB Recon3D Digital Stereo (IEC958) から出力可能となった。

  • 【不要】Devices 順番入れ替え Script
  • 【不要】~/.asoundrc の設定、配置

Kernel 3.16 の設定

Sound Card では HD Audio PCI の Module 化が必須。これは変わりない。Allow dynamic codec reconfiguration の項目が消えているので「Devices の切り替えを行うなら Module 化する」という方針が確立されたのだろう。Built-in した場合、稀に SB Recon3D Analog Stereo からは出力するが、原因不明の猛烈な Noise が約10秒おきに挿入されるため実用不能。

<*> Sound card support --->
	<*> Advanced Linux Sound Architecture --->
		HD-Audio --->
		 <M> HD Audio PCI
		(2048) Pre-allocated buffer size for HD-audio driver
		[*] Build hwdep interface for HD-audio driver
		-*- Allow dynamic codec reconfiguration
		[ ] Support digital beep via input layer
		[*] Support jack plugging notification via input layer
		[*] Support initialization patch loading for HD-audio
		<M> Build Realtek HD-audio codec support
		<M> Build Analog Device HD-audio codec support
		< > Build IDT/Sigmatel HD-audio codec support
		< > Build VIA HD-audio codec support
		<M> Build HDMI/DisplayPort HD-audio codec support
		< > Build Cirrus Logic codec support
		< > Build Conexant HD-audio codec support
		< > Build Creative CA0110-IBG codec support
		<M> Build Creative CA0132 codec support
		[*]Support new DSP code for CA0132 codec
		< > Build C-Media HD-audio codec support
		< > Build Silicon Labs 3054 HD-modem codec support
		-M- Enable generic HD-audio codec parser
		(0) Default time-out for HD-audio power-save mode

Multimedia 項目では Web Camera の音声設定が気になる。これは Module 化すべきか?それとも Bult-in しても良いのか?僕は Module 化している。これで SB Recon3D Digital Stereo (IEC958) が使用出来ているので、取り立てて関係のある設定箇所ではないのかも知れない。

<*> Multimedia support --->
	[*] Media USB Adapters --->
		--- Media USB Adapters
		*** Webcam devices ***
		<M> USB Video Class (UVC)
		[*] UVC input events device support
		<M> GSPCA based webcams --->

/etc/conf.d/modules への記載を確実に行う

find /lib/modules/3.16.5-gentoo/ -type f -iname '*.o' -or -iname '*.ko' | less

/etc/conf.d/modules に記載をしていなくても、各 Modules は動作することが多い。しかし VirtualBox 関連が記載必須であるように ca0132 関連も記載必須であった。/etc/conf.d/modules は、やっぱり重要。

【2014年07月13日】最重要は Allow dynamic codec reconfiguration の有効化

KDE 4 Audio and Video Settings
KDE 4 Audio and Video Settings

あくまで僕の実体験に依るが、最重要項目は Allow dynamic codec reconfiguration の有効化。これを有効化する以前は IEC958 からの出力は不可能だった。確かに、名称を見る限り、この項目が無効だと Pavucontrol などを用いた動的な出力切り替えには対応出来なくなるはずなのだ。sys-kernel/gentoo-sources-3.12.21-r1 では Allow dynamic codec reconfiguration が Experimental ではなくなっている。つまり「CA0132 の不具合対応済みである」という前提の基に Intel HD Audio の項目内を「諦めることなく」見直したことが功を奏した。

Kernel 設定の順路と必要設定項目

Intel HD Audio は Module 化が必須。Bult-in だと CA0132 搭載の Device からは Noise しか出力されない。Boot 後には modprobe によって Devices の順番入れ替えを行う必要がある。

  1. Device Drivers
  2. <*> Sound card support
  3. <*> Advanced Linux Sound Architecture
  4. [*] PCI sound devices
  5. <M> Intel HD Audio
(2048) Pre-allocated buffer size for HD-audio driver
[*]Build hwdep interface for HD-audio driver
[*]Allow dynamic codec reconfiguration
[ ]Support digital beep via input layer
[*]Support jack plugging notification via input layer
[ ]Support initialization patch loading for HD-audio
[*]Build Realtek HD-audio codec support
[*]Build Analog Device HD-audio codec support
[ ]Build IDT/Sigmatel HD-audio codec support
[*]Build VIA HD-audio codec support
[*]Build HDMI/DisplayPort HD-audio codec support
[ ]Build Cirrus Logic codec support
[*]Build Conexant HD-audio codec support
[*]Build Creative CA0110-IBG codec support
[*]Build Creative CA0132 codec support
[*]Support new DSP code for CA0132 codec

起動後に modprobe 内容を修正

現状では、この Devices 順番入れ替え設定も、未だ必須となる。Gentoo では、以下の内容の .sh を /etc/local.d に配置しておく。

rmmod snd_hda_intel
modprobe snd_hda_intel position_fix=1

Pulseaudio の利用は必須

Phonon 単独では出力先 Devices の「動的な切り替え」に対応していない。Kmix も Pulseaudio 未導入では、制御可能な項目が Alsamixer と大差ない。そもそも Pulseaudio との連携が前提のツールである。どう足掻いても「Pulseaudio は必須」という結論を出した。そこで Pre-allocated buffer size for HD-audio driver の初期値 64 から、推奨値の 2048 まで増加させた。PulseAudio – Gentoo Wiki の参考例もこの数値だ。

Tags