live

USB-C car audio / QMI helper

On the Pixel GKI 6.1.124 kernel the phone does see the car USB-C DAC, route audio to it and set volume 15 — but Samsung’s snd-usb-audio-qmi helper never loads. That is why the car stays silent. This is the shim fix, and the V4A + USB combo that works with it.

Tested on SM-F956B (q6q), F956BXXU2BYD9 / Android 15 / One UI 7, kernel 6.1.124-android14-11-g33edfcbe5f65, KernelSU-Next 12851. The car DAC is a TTGK Technology USB-C Audio device.

SM-F956B · BYD9 Android 15 / One UI 7 Pixel GKI 6.1.124 KernelSU-Next 12851 V4A + USB verified
If you only do one thing: check lsmod | grep snd_usb_audio_qmi. If it is missing, the DAC can enumerate and AudioFlinger can create a USB patch while the car stays silent. The fix is below.

at a glance

1. the DAC is not the problem

The car cable is a TTGK Technology USB-C Audio DAC. Before the fix, the phone looked correct at every layer above the vendor QMI service:

CheckObserved
ALSA cardcard 1: USB-Audio - USB-C Audio (TTGK, full speed)
Audio policyUSB Headset Out, port 423, card=1;device=0, 48 kHz stereo
Active routeDevices: usb_headset(4000000)
Volumeusb_headset: 15\150 — not muted
USB rolephone is host to the DAC (host_connected=true)
Outcomesilent

Disabling ViPER4Android and AML and restoring stock audio_effects*.xml did not fix the USB silence. V4A was a red herring for this symptom.

2. root cause — the Samsung QMI helper won’t load

snd-usb-audio-qmi.ko is listed in /vendor/lib/modules/modules.load, but on the Pixel GKI kernel it fails:

snd_usb_audio_qmi: Unknown symbol __tracepoint_android_vh_xhci_suspend (err -2)
snd_usb_audio_qmi: Unknown symbol __tracepoint_android_vh_xhci_resume (err -2)

Those two vendor hooks exist in the Samsung kernel but are not exported by the Pixel GKI kernel. Without the QMI helper, the vendor USB audio path never completes: the DAC is enumerated, AudioFlinger creates a USB patch, then the route falls back to the speaker.

The earlier V4A/AML investigation did find a real, separate bug (V4A 8.0 rewrites all audio_effects*.xml and leaves AudioFlinger partially loaded), but it was not the cause of the USB-C silence.

3. the fix — 15 KB shim + stock helper

The module ships xhci_tp_shim.ko, a GPL shim that exports the two missing tracepoints. Its exported CRCs match the Samsung helper’s __versions:

__tracepoint_android_vh_xhci_suspend = 0xbc052dab
__tracepoint_android_vh_xhci_resume  = 0x62ed3550

post-fs-data.sh loads the shim first, then the stock /vendor/lib/modules/snd-usb-audio-qmi.ko, before audioserver starts. The vendor modules.load attempt still fails early; the retry after the shim succeeds.

After a reboot, the expected state is:

su -c 'lsmod | grep -E "xhci_tp_shim|snd_usb_audio_qmi"'
# snd_usb_audio_qmi      53248  0
# xhci_tp_shim           20480  1 snd_usb_audio_qmi

su -c 'ls /sys/bus/platform/drivers/uaudio-qmi'
# bind  module  soc:usb_audio_qmi_dev  uevent  unbind

su -c 'dmesg | grep uaudio'
# uaudio-qmi soc:usb_audio_qmi_dev: Adding to iommu group 51

4. install

  1. Download f956b-usb-qmi-fix-v1.0.zip below.
  2. KernelSU Next / Magisk → Modules → Install from storage.
  3. Select the ZIP and install it.
  4. Reboot.
  5. Verify the three commands above, then plug in the car cable.

Install through the manager — not TWRP. The module is for SM-F956B / q6q on kernel 6.1.124-*; the installer aborts on anything else. It does not modify /vendor and does not replace the kernel.

5. V4A + USB audio together

This is the combo that was verified after the QMI fix:

The sec XML is the important one on this Samsung firmware: patching only the primary config leaves the effect unregistered, the app says “No driver found”, and AudioFlinger logs could not create effect … / 90380da3-….

su -c 'dumpsys media.audio_flinger | grep -A8 "Library v4a_re"'
# Library v4a_re
#  path: /vendor/lib64/soundfx/libv4a_re.so
#  ViPER4Android / viper.WYF, Martmists, Iscle
#    UUID: 90380da3-8536-4744-a6a3-5731970e640f
#    TYPE: ec7178ec-e5e1-4432-a3f4-4657e6795210

The app then shows the full UI with Enabled on and no “No driver found” dialog. If the V4A module is updated, re-apply the two XML overlays and the narrowed post-fs-data.sh patch.

6. still silent?

If the QMI helper is loaded and the DAC still produces no sound, capture the state with the cable connected:

su -c 'cat /proc/asound/cards'
su -c 'dumpsys usb' > usb.txt
su -c 'dumpsys media.audio_policy' > policy.txt
su -c 'dumpsys media.audio_flinger' > flinger.txt
su -c 'dmesg' > dmesg.txt
su -c 'logcat -d -v threadtime' > logcat.txt

Also check the DAC is fully seated, the car is set to AUX, and the phone’s media volume is up. The QMI fix only solves the missing-helper case.

7. download

Download QMI fix v1.0 Technical report (PDF) All root tips

SHA-256: fd98df0cfc9f9e65462187a7ec0695ca1e154c645bb3ba753b2e4b2706a4d54f · 7.7 KB · SM-F956B / Pixel GKI 6.1.124 only.

more

Related: Fold 6 device page, downloads, and the main Root Tips field guide.