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.
at a glance
Card 1 exists, USB Headset Out is routed, volume is 15 — still silent.
snd_usb_audio_qmi fails on two xHCI vendor tracepoints the GKI kernel doesn’t export.
15 KB shim exports the two tracepoints; post-fs-data loads the stock QMI helper.
V4A enabled, AML off; patch the primary and Samsung sec effects XMLs.
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:
| Check | Observed |
|---|---|
| ALSA card | card 1: USB-Audio - USB-C Audio (TTGK, full speed) |
| Audio policy | USB Headset Out, port 423, card=1;device=0, 48 kHz stereo |
| Active route | Devices: usb_headset(4000000) |
| Volume | usb_headset: 15\150 — not muted |
| USB role | phone is host to the DAC (host_connected=true) |
| Outcome | silent |
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
- Download
f956b-usb-qmi-fix-v1.0.zipbelow. - KernelSU Next / Magisk → Modules → Install from storage.
- Select the ZIP and install it.
- Reboot.
- 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:
- QMI fix active.
- ViPER4Android FX (WSTxda app + WSTxda ViPERFX_RE driver module v8.0).
- AML off — it is not needed for V4A alone and adds extra policy patches.
- V4A effect added to both
/vendor/etc/audio_effects.xmland/vendor/etc/audio_effects_sec.xml. audio_effects_spatializer.xmlandaudio_effects_haptic.xmlleft stock; AudioFlinger stays at the stockskipped 4.
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.