Public bug reported:

IEC61937 S/PDIF passthrough fails on a Creative Sound Blaster X-Fi
Titanium HD SB1270 (CA20K2) using the snd_ctxfi driver when the driver
operates with:

reference_rate=48000
multiple=2

The same hardware and S/PDIF output work when using multiple=1.

Affected Ubuntu kernel:

linux-image-7.0.0-30-generic 7.0.0-30.30

The Apport report confirms that this kernel package has origin: Ubuntu.

S/PDIF PCM device used for testing:

hw:0,4

## Steps to reproduce

1. Load the stock snd_ctxfi driver with:

reference_rate=48000
multiple=2

2. Send an IEC61937 AC3/DTS encoded stream through the X-Fi S/PDIF PCM
device hw:0,4.

3. Encoded S/PDIF passthrough fails.

4. Change the driver configuration to:

reference_rate=48000
multiple=1

5. Repeat exactly the same IEC61937 test.

Result: passthrough works.

## Expected result

IEC61937 AC3/DTS passthrough should work with:

reference_rate=48000
multiple=2

## Actual result

With the stock snd_ctxfi driver:

multiple=2 -> FAIL
multiple=1 -> PASS

## Root cause analysis

The problem was isolated to the CA20K2 DAIO transmitter configuration.

In:

sound/pci/ctxfi/ctdaio.c

the configuration is generated as:

conf = (desc->msr & 0x7) | (desc->passthru << 3);

For the failing passthrough configuration, this produces:

conf == 0x9

The CA20K2 implementation in:

sound/pci/ctxfi/cthw20k2.c

uses:

switch (conf & 0xf)

to configure ATXCTL_NUC.

The existing switch handles cases 1, 2, 4 and 8, but does not handle
case 9.

A minimal test modification was made so that configuration 9 is handled
together with configuration 1:

case 1:
case 9:
set_field(&ctl->txctl[idx], ATXCTL_NUC, 0);
break;

A replacement snd-ctxfi.ko was rebuilt from the source corresponding to
the running Ubuntu kernel. No unrelated driver logic was changed.

The rebuilt module has matching vermagic:

7.0.0-30-generic

The patched driver was then tested again using the original
configuration:

reference_rate=48000
multiple=2

Results:

IEC61937 AC3 passthrough: PASS
IEC61937 DTS passthrough: PASS
5.1 decoding/output: PASS

Additional regression tests of the audio driver passed.

This demonstrates that multiple=1 is only a workaround. The CA20K2
hardware is capable of correct IEC61937 passthrough with multiple=2 once
configuration 0x9 is explicitly handled.

The same missing case 9 is also present in the current upstream Linux
snd_ctxfi CA20K2 implementation, so this does not appear to be an
Ubuntu-specific source modification.

I can provide the exact minimal source diff/patch and additional test
details if required.

ProblemType: Bug
DistroRelease: AnduinOS 2.0.2
Package: linux-image-7.0.0-30-generic 7.0.0-30.30 [origin: Ubuntu]
ProcVersionSignature: Ubuntu 7.0.0-30.30-generic 7.0.12
Uname: Linux 7.0.0-30-generic x86_64
ApportVersion: 2.34.1-0ubuntu0.1
Architecture: amd64
AudioDevicesInUse:
 USER        PID ACCESS COMMAND
 /dev/snd/controlC0:  zorgan     3141 F.... wireplumber
 /dev/snd/controlC1:  zorgan     3141 F.... wireplumber
 /dev/snd/seq:        zorgan     3133 F.... pipewire
CasperMD5CheckResult: unknown
CurrentDesktop: GNOME
Date: Sun Aug 30 21:38:19 2026
MachineType: Gigabyte Technology Co., Ltd. Z590 D
ProcFB: 0 nvidia-drmdrmfb
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-7.0.0-30-generic 
root=UUID=8506df91-3e89-4e62-8c8b-165299db5989 ro quiet splash preempt=full
PulseList: Error: command ['pacmd', 'list'] failed with exit code 1: No 
PulseAudio daemon running, or not running as session daemon.
RfKill: Error: [Errno 2] No such file or directory: 'rfkill'
SourcePackage: linux
UpgradeStatus: No upgrade log present (probably fresh install)
WifiSyslog:
 
dmi.bios.date: 06/10/2025
dmi.bios.release: 5.19
dmi.bios.vendor: American Megatrends International, LLC.
dmi.bios.version: F11b
dmi.board.asset.tag: Default string
dmi.board.name: Z590 D
dmi.board.vendor: Gigabyte Technology Co., Ltd.
dmi.board.version: Default string
dmi.chassis.asset.tag: Default string
dmi.chassis.type: 3
dmi.chassis.vendor: Default string
dmi.chassis.version: Default string
dmi.modalias: 
dmi:bvnAmericanMegatrendsInternational,LLC.:bvrF11b:bd06/10/2025:br5.19:svnGigabyteTechnologyCo.,Ltd.:pnZ590D:pvrDefaultstring:rvnGigabyteTechnologyCo.,Ltd.:rnZ590D:rvrDefaultstring:cvnDefaultstring:ct3:cvrDefaultstring:skuDefaultstring:pfaZ590MB:
dmi.product.family: Z590 MB
dmi.product.name: Z590 D
dmi.product.sku: Default string
dmi.product.version: Default string
dmi.sys.vendor: Gigabyte Technology Co., Ltd.

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: amd64 apport-bug resolute third-party-packages wayland-session

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2165857

Title:
  snd_ctxfi: CA20K2 SB1270 S/PDIF IEC61937 passthrough fails with
  multiple=2 due to unhandled DAIO conf 0x9

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2165857/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to