Prerequisites
Description
I'm using the ViPER4Android-RE-AIDL fork (https://github.com/likelikeslike/ViPER4Android) on my Xiaomi 13 Ultra (2304FPN6DG) with HyperOS 3.0.302.0 (Android 16, API 36). The driver installation completes successfully (both arm32/arm64 libs are placed, audio configs are patched, audioserver restarts). However, the app always shows "Driver not found" regardless of which driver version I try.
After extensive debugging, I've identified the root cause: my custom kernel includes SusFS (SUSFS — a KernelSU extension that hides root/module traces from detection). SusFS appears to be masking or blocking the audio driver's shared memory (SHM) or the V4A AIDL service communication, preventing the app from detecting the active driver.
The kernel is built for SukiSU Ultra (40839) with KernelSU (40387), SusFS, BBR, Baseband-guard, and the SukiSU patch. SusFS is the only new component that changed before the issue started. Disabling SusFS fixes the problem, but that exposes root detection in banking apps, so it's not an acceptable workaround for me.
I'm reporting this because I believe the V4A driver detection mechanism might need an alternative fallback or a way to work around SusFS's process/fs hiding. I'm happy to provide any additional logs or test builds if needed.
Steps to reproduce
- Flash a custom kernel with SusFS enabled (any version that hides root/module paths).
- Install ViPER4Android-RE-AIDL via Magisk/KernelSU module.
- Open the V4A app → it shows "Driver not found".
- Reboot, reinstall driver, restart audioserver — no change.
- Remove SusFS from the kernel or disable its hiding features → driver is detected immediately after a reboot.
App logs
Attached: viper_install.log
The log shows that installation succeeds, all mounts and patches apply correctly, and the audioserver is restarted. The SHM files are created in /data/local/tmp/v4a/ with correct permissions. However, the app still reports no driver.
Effect settings
No effect settings are applied because the driver isn't detected. The app remains in "Disabled" state.
Diagnostic steps
- Checked SELinux (Enforcing) – policy rules are applied via ksud (rc=0).
- Verified library presence: /vendor/lib(64)/soundfx/libv4a_aidl.so both exist and have correct context.
- Verified audio config patches: both /system/etc/audio_effects.xml and /vendor/etc/audio/sku_kalama/audio_effects.xml contain v4a_aidl entries (2 each).
- Confirmed audioserver restarts after mount.
- Manually checked SHM files: /data/local/tmp/v4a/shm_*.bin exist, permissions 666, context shell_data_file.
- Tested with SusFS disabled (by rebuilding kernel without SusFS) → driver works flawlessly.
- Tested with SusFS enabled but with all hiding features turned off → also works. The problem only occurs when SusFS actively hides paths or processes (likely /data/adb/modules or the V4A service itself).
- No errors in logcat related to V4A or audio effects.
Additional context
- Device: Xiaomi 2304FPN6DG (Xiaomi 13 Ultra, 16/512 GB)
- ROM: HyperOS 3.0.302.0 (BP2A.250605.031.A3)
- Android version: 16 (API 36)
- Kernel: 5.15.178 with SusFS patch (custom build)
- Root: KernelSU 4.1.3-43-gb7437fb8 (ksud)
- V4A version: latest AIDL build from the RE fork
I suspect SusFS might be intercepting access to /proc/self/maps, /sys/module, or the SHM file handles that V4A uses to verify the driver is loaded. If there's any debug build or a flag to bypass path checks, I'd be glad to test it.
Thank you for maintaining this great project!
Prerequisites
I have searched existing issues (both open and closed) and found no duplicate.
I am using the latest release of the App and driver.
Description
I'm using the ViPER4Android-RE-AIDL fork (https://github.com/likelikeslike/ViPER4Android) on my Xiaomi 13 Ultra (2304FPN6DG) with HyperOS 3.0.302.0 (Android 16, API 36). The driver installation completes successfully (both arm32/arm64 libs are placed, audio configs are patched, audioserver restarts). However, the app always shows "Driver not found" regardless of which driver version I try.
After extensive debugging, I've identified the root cause: my custom kernel includes SusFS (SUSFS — a KernelSU extension that hides root/module traces from detection). SusFS appears to be masking or blocking the audio driver's shared memory (SHM) or the V4A AIDL service communication, preventing the app from detecting the active driver.
The kernel is built for SukiSU Ultra (40839) with KernelSU (40387), SusFS, BBR, Baseband-guard, and the SukiSU patch. SusFS is the only new component that changed before the issue started. Disabling SusFS fixes the problem, but that exposes root detection in banking apps, so it's not an acceptable workaround for me.
I'm reporting this because I believe the V4A driver detection mechanism might need an alternative fallback or a way to work around SusFS's process/fs hiding. I'm happy to provide any additional logs or test builds if needed.
Steps to reproduce
App logs
Attached: viper_install.log
The log shows that installation succeeds, all mounts and patches apply correctly, and the audioserver is restarted. The SHM files are created in
/data/local/tmp/v4a/with correct permissions. However, the app still reports no driver.Effect settings
No effect settings are applied because the driver isn't detected. The app remains in "Disabled" state.
Diagnostic steps
Additional context
I suspect SusFS might be intercepting access to
/proc/self/maps,/sys/module, or the SHM file handles that V4A uses to verify the driver is loaded. If there's any debug build or a flag to bypass path checks, I'd be glad to test it.Thank you for maintaining this great project!