起動中に発生するUSB​​オーディオイベントをどのようにデバッグしますか?

起動中に発生するUSB​​オーディオイベントをどのようにデバッグしますか?

最高のD30Pro USB DACログインすると(ほとんど)うまく機能しますが、起動中に「ターゲットサウンドカードに到達」した瞬間、連続した鋸歯状波が出力され始めます。回避策は、ノイズがかなり大きいため、ログインするまでデバイスをミュートすることでした。とにかくログインプロセスを使用して問題を解決できます。

私は1年以上前にデバイスを購入して以来、この問題を抱えて生きてきました。最近、根本的な原因を特定する動機が生まれました。

その周辺で発生し、dmesg以下を出力します。

usb 1-8: 1:3 : unsupported format bits 0x100000000

この行を担当するコードは次のとおりです。カーネルから。私が理解する限り、形式は最初のインターフェイスの3番目の代替設定つまり、DSDを認識できません。

$ cat /proc/asound/card0/stream0
Topping D30 Pro at usb-0000:00:14.0-8, high speed : USB Audio

Playback:
  Status: Running
    Interface = 1
    Altset = 1
    Packet Size = 72
    Momentary freq = 44099 Hz (0x5.8328)
    Feedback Format = 16.16
  Interface 1
    Altset 1
    Format: S32_LE
    Channels: 2
  ...
  Interface 1
    Altset 3
    Format: SPECIAL DSD_U32_BE
    Channels: 2
    Endpoint: 0x01 (1 OUT) (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
    Data packet interval: 125 us
    Bits: 32
    DSD raw: DOP=0, bitrev=0
    Channel map: FL FR
    Sync Endpoint: 0x81 (1 IN)
    Sync EP Interface: 1
    Sync EP Altset: 3
    Implicit Feedback Mode: No

問題は、PipeWireを使用するとDSDファイルを正しく再生できることです。

$ pw-dsdplay DSD128.dsf -v
dsffile: opened file "DSD128.dsf" channels:2 rate:5644800 samples:7098793984 bitorder:lsb
...

現時点で私の推測は次のとおりです。この珍しい点は私のデバイスで動作します起動中は動作しません。なぜ起動中にのみ発生するのかわかりません。

価格と比較して良い値。 FreeBSDまたはWindowsの起動/使用にはまったく問題はありません。 LiveCD(Debian、Fedora、Arch、Ubuntu、...)を使用して起動しようとしているLinuxディストリビューションに関係なく、この問題が発生するため、ディストリビューションとは関係のないようですが、現在6.4.12-arch1-1

次のステップとして、私は新しいカーネルをコンパイルし、関数で使用されている構造の印刷ステートメントを追加しようとしましたが、それが見つかりました。Kprobeベースのイベント追跡、これはデバッグするより良い方法のようですが、追跡したいイベントがサポートされていないようで、とにかくコンパイルする必要があります。

私が知らないこの問題をデバッグするより簡単な方法はありますか?たぶん私が見落としている旗ではないだろうか?理想的には、無限の再起動とコンパイルは必要ありませんか?しかし、他の場所ではこの問題は発生しなかったので、これがどのように可能かわかりません。

ありがとうございます!

ベストアンサー1

おすすめ記事