CS4207のSPDIF入力からオーディオをキャプチャするには、ALSAを有効にしてください。

CS4207のSPDIF入力からオーディオをキャプチャするには、ALSAを有効にしてください。

Congatecを活用したカスタムプラットフォームSA5モジュ​​ールそして追加CS4207 HDAコーデックコーデックデジタルSPDIF入出力を使用しようとしています。 CongatecのHDAデザインをコピーしました。コンガ - セバル試用版。

SPDIF出力(アンプに接続)はデフォルトで機能します。ここでは問題ありません。
ただし、信号を録音するために必要なSPDIF入力は少し頭痛を与えます。

テスト中にXubuntu 20.04を使用していました。

Linux Test-01 5.4.0-48-generic #52-Ubuntu SMP Thu Sep 10 10:58:49 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

後でbuildrootでこれらの機能を実装します。

今まで何をしたのか

使用してhda_analyser.pySPDIF入力ウィジェットがデフォルトで無効になっていることがわかります。手動で有効にしても結果に影響はありません。

# Node 0x07 SPDIF Reciver Input Converter - Enable
hda-verb /dev/snd/hwC0D0 0x07 0x70d 0x01
# Node 0x0f SPDIF Reciver Input Pin - Enable
hda-verb /dev/snd/hwC0D0 0x0f 0x707 0x20

SPDIF 入力に信号を提供すると、hda_analyticr は信号の有効なフラグと制御ワードの内容を表示します。だからソースが良いと思います。 hda_analyticr にシグナルがなく、有効なシグナルがあります。

CS4207の「SPDIF RX to TX1ループスルー」機能を手動で有効にすると:

# Enable Rx to Tx1 Loopthru
hda-verb /dev/snd/hwC0D0 0x11 0x0500 0x01 && hda-verb /dev/snd/hwC0D0 0x11 0x0400 0x402a

SPDIF出力に接続されているスピーカーからSPDIF入力に入る信号も聞くことができます。

-> だから私の結論はハードウェア部分は大丈夫だろうということだ。

ALSA側では、IEC958デジタルキャプチャデバイスがリストにないため、設定上の問題があると思います。しかし、これは理解できない部分だ。構成パス()が多すぎて/usr/share/pulseaudio/alsa-mixer/ /etc/alsa/conf.d/ /usr/share/alsa/他の項目で埋められているように見えるプレースホルダーを持つ構成テンプレートもあります。しかし、どの構成を効果的に使用するかを知る方法が見つかりませんでした。
ALSA ドキュメントでもヒントが見つかりません。

出力aplay -l

**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: CS4207 Analog [CS4207 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: CS4207 Digital [CS4207 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

出力arecord -l(ここにリストされていない数値入力):

**** List of CAPTURE Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: CS4207 Analog [CS4207 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

出力pacmd list-cards

1 card(s) available.
    index: 0
        name: <alsa_card.pci-0000_00_0e.0>
        driver: <module-alsa-card.c>
        owner module: 7
        properties:
                alsa.card = "0"
                alsa.card_name = "HDA Intel PCH"
                alsa.long_card_name = "HDA Intel PCH at 0x91410000 irq 143"
                alsa.driver_name = "snd_hda_intel"
                device.bus_path = "pci-0000:00:0e.0"
                sysfs.path = "/devices/pci0000:00/0000:00:0e.0/sound/card0"
                device.bus = "pci"
                device.vendor.id = "8086"
                device.vendor.name = "Intel Corporation"
                device.product.id = "5a98"
                device.product.name = "Celeron N3350/Pentium N4200/Atom E3900 Series Audio Cluster"
                device.form_factor = "internal"
                device.string = "0"
                device.description = "Built-in Audio"
                module-udev-detect.discovered = "1"
                device.icon_name = "audio-card-pci"
        profiles:
                input:analog-stereo: Analog Stereo Input (priority 65, available: unknown)
                output:analog-stereo: Analog Stereo Output (priority 6500, available: unknown)
                output:analog-stereo+input:analog-stereo: Analog Stereo Duplex (priority 6565, available: unknown)
                output:iec958-stereo: Digital Stereo (IEC958) Output (priority 5500, available: unknown)
                output:iec958-stereo+input:analog-stereo: Digital Stereo (IEC958) Output + Analog Stereo Input (priority 5565, available: unknown)
                output:hdmi-stereo: Digital Stereo (HDMI) Output (priority 5900, available: no)
                output:hdmi-stereo+input:analog-stereo: Digital Stereo (HDMI) Output + Analog Stereo Input (priority 5965, available: no)
                output:hdmi-surround: Digital Surround 5.1 (HDMI) Output (priority 800, available: no)
                output:hdmi-surround+input:analog-stereo: Digital Surround 5.1 (HDMI) Output + Analog Stereo Input (priority 865, available: no)
                output:hdmi-surround71: Digital Surround 7.1 (HDMI) Output (priority 800, available: no)
                output:hdmi-surround71+input:analog-stereo: Digital Surround 7.1 (HDMI) Output + Analog Stereo Input (priority 865, available: no)
                output:hdmi-stereo-extra1: Digital Stereo (HDMI 2) Output (priority 5700, available: no)
                output:hdmi-stereo-extra1+input:analog-stereo: Digital Stereo (HDMI 2) Output + Analog Stereo Input (priority 5765, available: no)
                output:hdmi-surround-extra1: Digital Surround 5.1 (HDMI 2) Output (priority 600, available: no)
                output:hdmi-surround-extra1+input:analog-stereo: Digital Surround 5.1 (HDMI 2) Output + Analog Stereo Input (priority 665, available: no)
                output:hdmi-surround71-extra1: Digital Surround 7.1 (HDMI 2) Output (priority 600, available: no)
                output:hdmi-surround71-extra1+input:analog-stereo: Digital Surround 7.1 (HDMI 2) Output + Analog Stereo Input (priority 665, available: no)
                output:hdmi-stereo-extra2: Digital Stereo (HDMI 3) Output (priority 5700, available: no)
                output:hdmi-stereo-extra2+input:analog-stereo: Digital Stereo (HDMI 3) Output + Analog Stereo Input (priority 5765, available: no)
                output:hdmi-surround-extra2: Digital Surround 5.1 (HDMI 3) Output (priority 600, available: no)
                output:hdmi-surround-extra2+input:analog-stereo: Digital Surround 5.1 (HDMI 3) Output + Analog Stereo Input (priority 665, available: no)
                output:hdmi-surround71-extra2: Digital Surround 7.1 (HDMI 3) Output (priority 600, available: no)
                output:hdmi-surround71-extra2+input:analog-stereo: Digital Surround 7.1 (HDMI 3) Output + Analog Stereo Input (priority 665, available: no)
                output:hdmi-stereo-extra3: Digital Stereo (HDMI 4) Output (priority 5700, available: no)
                output:hdmi-stereo-extra3+input:analog-stereo: Digital Stereo (HDMI 4) Output + Analog Stereo Input (priority 5765, available: no)
                output:hdmi-surround-extra3: Digital Surround 5.1 (HDMI 4) Output (priority 600, available: no)
                output:hdmi-surround-extra3+input:analog-stereo: Digital Surround 5.1 (HDMI 4) Output + Analog Stereo Input (priority 665, available: no)
                output:hdmi-surround71-extra3: Digital Surround 7.1 (HDMI 4) Output (priority 600, available: no)
                output:hdmi-surround71-extra3+input:analog-stereo: Digital Surround 7.1 (HDMI 4) Output + Analog Stereo Input (priority 665, available: no)
                output:hdmi-stereo-extra4: Digital Stereo (HDMI 5) Output (priority 5700, available: no)
                output:hdmi-stereo-extra4+input:analog-stereo: Digital Stereo (HDMI 5) Output + Analog Stereo Input (priority 5765, available: no)
                output:hdmi-surround-extra4: Digital Surround 5.1 (HDMI 5) Output (priority 600, available: no)
                output:hdmi-surround-extra4+input:analog-stereo: Digital Surround 5.1 (HDMI 5) Output + Analog Stereo Input (priority 665, available: no)
                output:hdmi-surround71-extra4: Digital Surround 7.1 (HDMI 5) Output (priority 600, available: no)
                output:hdmi-surround71-extra4+input:analog-stereo: Digital Surround 7.1 (HDMI 5) Output + Analog Stereo Input (priority 665, available: no)
                off: Off (priority 0, available: unknown)
        active profile: <output:analog-stereo+input:analog-stereo>
        sinks:
                alsa_output.pci-0000_00_0e.0.analog-stereo/#0: Built-in Audio Analog Stereo
        sources:
                alsa_output.pci-0000_00_0e.0.analog-stereo.monitor/#0: Monitor of Built-in Audio Analog Stereo
                alsa_input.pci-0000_00_0e.0.analog-stereo/#1: Built-in Audio Analog Stereo
        ports:
                analog-input-mic: Microphone (priority 8700, latency offset 0 usec, available: no)
                        properties:
                                device.icon_name = "audio-input-microphone"
                analog-input-linein: Line In (priority 8100, latency offset 0 usec, available: yes)
                        properties:

                analog-output-lineout: Line Out (priority 9000, latency offset 0 usec, available: no)
                        properties:

                analog-output-speaker: Speakers (priority 10000, latency offset 0 usec, available: unknown)
                        properties:
                                device.icon_name = "audio-speakers"
                analog-output-headphones: Headphones (priority 9900, latency offset 0 usec, available: no)
                        properties:
                                device.icon_name = "audio-headphones"
                iec958-stereo-output: Digital Output (S/PDIF) (priority 0, latency offset 0 usec, available: unknown)
                        properties:

                hdmi-output-0: HDMI / DisplayPort (priority 5900, latency offset 0 usec, available: no)
                        properties:
                                device.icon_name = "video-display"
                hdmi-output-1: HDMI / DisplayPort 2 (priority 5800, latency offset 0 usec, available: no)
                        properties:
                                device.icon_name = "video-display"
                hdmi-output-2: HDMI / DisplayPort 3 (priority 5700, latency offset 0 usec, available: no)
                        properties:
                                device.icon_name = "video-display"
                hdmi-output-3: HDMI / DisplayPort 4 (priority 5600, latency offset 0 usec, available: no)
                        properties:
                                device.icon_name = "video-display"
                hdmi-output-4: HDMI / DisplayPort 5 (priority 5500, latency offset 0 usec, available: no)
                        properties:
                                device.icon_name = "video-display"

また注目を集めたのはコメントだった。/usr/share/pulseaudio/alsa-mixer/paths/analog-input.conf.common

;  We explicitly don't want to wrap the following sources:
;
;       CD
[...]
;       Digital/SPDIF

私たちは今何をすべきか

それでは、IEC958キャプチャデバイスを簡単に有効にする簡単な方法はありますか?
修正のために現在有効なalsa設定をどこで、またはどのように取得できますか?
-->参照この回答

編集する

CS4207コーデックのSPDIF-In機能は、カーネル3.5と3.8の間で失われました。その間、かなりのリファクタリングが行われた。patch_cirrus.c発生する。

したがって、IEC958入力に対するALSA制御(カーネル3.5のデフォルト設定からコピーされたもの)を現在のカーネル設定に追加しても:

    control.67 {
        iface MIXER
        name 'IEC958 Capture Switch'
        value false
        comment {
            access 'read write'
            type BOOLEAN
            count 1
        }
    }
    control.68 {
        iface MIXER
        name 'IEC958 Capture Default'
        value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
        comment {
            access read
            type IEC958
            count 1
        }
    }

その代価として私が得るもの:

Found hardware: "HDA-Intel" "Cirrus Logic CS4207" "HDA:10134207,10134207,00100302 HDA:8086280a,80860101,00100000" "0x8086" "0x7270"
Hardware is initialized using a generic method
alsactl: set_control:1325: failed to obtain info for control #67 (No such file or directory)
alsactl: set_control:1325: failed to obtain info for control #68 (No such file or directory)

したがって、hdaドライバはシステムにSPDIF入力を提供しないようです。したがって、問題はALSAの設定とは関係なく、hdaドライバに関連しています。

ベストアンサー1

その他(ALSAに関連しない)質問については、元の投稿の編集をご覧ください。

ALSA構成に関する元の質問に対する回答:

alsa-infoやっぱりここが一番いいようです。
このスクリプトによれば、現在有効なALSA設定を保存することができます。

alsactl -f /tmp/alsa-config.txt store

その後、ファイル内の構成を変更し(この場合/tmp/alsa-config.txt)、次のように構成を復元できます。

alsactl -f /tmp/alsa-config.txt restore

現在有効なALSA設定は、デフォルトで次の場所に保存されます。

/var/lib/alsa/asound.state

おすすめ記事