Most modern Android smartphones have dropped the 3.5mm headphone jack, requiring you to use a USB-C to 3.5mm headphone adapter or DAC. However, when you connect popular DACs like the Apple USB-C Headphone Adapter, your music often sounds surprisingly quiet and underpowered—even with your Android volume slider maxed out at 100%.
This happens because the DAC initializes its internal hardware volume chip to an aggressive low default (usually around -20 dB to -40 dB, or roughly 15% to 25% of potential output). While Windows, macOS, and iOS automatically set the DAC's internal hardware volume to full (0 dB unity gain), Android does not adjust the DAC's hardware volume registers. The Android volume slider only scales the digital audio before sending it out, leaving the physical hardware amplifier starved of power.
DacVolumeFix solves this automatically. Whenever your DAC is connected, DacVolumeFix sends standard USB Audio Class commands to set the hardware volume register to full 0 dB output—giving you the full volume, dynamic range, and driving power your headphones were designed for.
| DAC / Headphone Adapter | Chipset / Model | Status | Output Level |
|---|---|---|---|
| Apple USB-C Adapter (US) | Model A2049 (VID: 0x05AC, PID: 0x110A) |
Confirmed Working | 1.0 Vrms (Full Output) |
| Apple USB-C Adapter (EU) | Model A2155 (VID: 0x05AC, PID: 0x110B) |
Confirmed Working | 0.5 Vrms (Full Output) |
| Conexant / Synaptics | CX31993 (JCALLY JA04, Abigail, etc.) | Expected Compatible | Needs Community Test |
| Realtek | ALC5686 / ALC4042 / ALC4050 | Expected Compatible | Needs Community Test |
| Cirrus Logic | CS43131 / CS43198 (Moondrop, Tanchjim) | Expected Compatible | Needs Community Test |
| FiiO | KA11, KA13, JA11 | Expected Compatible | Needs Community Test |
| ESS Sabre | ES9280AC / ES9281AC / ES9038Q2M | Expected Compatible | Needs Community Test |
| Generic USB Audio Class 1/2 | Any compliant UAC1 / UAC2 DAC with Feature Units | Expected Compatible | Needs Community Test |
Have a DAC that is not confirmed yet? Report your test results here!
- Pure Kotlin — zero C++ native libraries, zero NDK, runs natively on any Android CPU
- 2.2 MB — no native binary overhead from cross-compiled
.sofiles - Invisible — windowless background operation, never interrupts what you're doing
- One-time permission —
device_filter.xmlpre-grants USB access, andRECORD_AUDIOpermission suppresses Android's repeated USB audio capture warning dialog - Zero idle battery — completely dormant when no DAC is connected, event-driven only
- Universal — unlocks volume system-wide for every app, not tied to any specific music player
- Open source — GPL-3.0, full source code available, no telemetry, no internet permission
Download the signed release APK from GitHub Releases.
- Install and launch DacVolumeFix.
- Grant requested permissions:
- Microphone / Audio: Required to suppress Android's repeated USB audio capture warning dialog on DAC connection (many DACs expose an ADC/microphone interface). DacVolumeFix never records or stores audio.
- Notifications (Android 13+): Displays the background volume unlock status.
- Connect your USB DAC or 3.5mm adapter.
- The app automatically detects your DAC and unlocks the hardware volume.
- If "Auto-apply on connect" is enabled, future connections will automatically unlock in the background without needing to open the app.
- Background Trampoline: When your DAC is inserted, Android triggers an invisible, windowless dispatcher that launches without interrupting whatever you are doing.
- Pure Framework Control Transfers: DacVolumeFix is written entirely in pure Kotlin using Android's native
UsbDeviceConnection.controlTransfer(), avoiding native C++ dependencies. - Automated Hardware Programming: DacVolumeFix communicates with the DAC's AudioControl interface and Feature Unit, setting the digital attenuation register to 0 dB (or your custom target level).
- Self-Terminating Service: The unlock completes quickly, displays a confirmation notification in your status bar, and shuts down immediately. It consumes 0.0% battery while idle.
📖 Want the deep technical breakdown?
Read our full Technical Documentation & Architecture Specification covering kerneldeviointernals, UAC 8.8 fixed-point decibel conversion, descriptor parsing, andUSBDEVFS_RESET.
Compatible with Android 9.0 through Android 15 (API 28+):
- Android 15 (Vanilla Ice Cream — API 35)
- Android 14 (Upside Down Cake — API 34)
- Android 13 (Tiramisu — API 33)
- Android 12 / 12L (Snow Cone — API 31 / 32)
- Android 11 (Red Velvet Cake — API 30)
- Android 10 (Quince Tart — API 29)
- Android 9.0 (Pie — API 28)
- Android Studio Ladybug (or newer)
- JDK 17 or higher (tested with JDK 17, 21, and 25)
- Android SDK (compileSdk 36, minSdk 28, targetSdk 35)
- Clone the repository:
git clone https://github.com/DeveshTone/DacVolumeFix.git cd DacVolumeFix - Build the signed release APK using Gradle:
./gradlew assembleRelease
- The compiled APK will be generated at:
app/build/outputs/apk/release/app-release.apk
| Permission | Type | Reason |
|---|---|---|
android.permission.RECORD_AUDIO |
Runtime | Required to suppress Android's repeated USB audio capture warning dialog on DAC connection (caused by DACs exposing an ADC/microphone interface). DacVolumeFix never records or stores audio. |
android.permission.POST_NOTIFICATIONS |
Runtime | Displays a non-intrusive status bar notification when your DAC is unlocked on Android 13+. |
android.permission.FOREGROUND_SERVICE |
Normal | Allows the transient unlock service to run reliably across Android versions. |
android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE |
Normal | Required on Android 14+ for foreground services interacting with external USB hardware. |
DacVolumeFix is 100% offline — zero internet permission (android.permission.INTERNET), zero telemetry, and zero tracking.
Pull requests and hardware test reports are welcome!
- Report a new DAC: If you have tested a DAC or adapter, please submit a DAC Compatibility Report with your device's USB Vendor ID (VID) and Product ID (PID).
- Bug Reports & Feature Requests: Please open an issue using the Issue Templates.
- Built with the assistance of Antigravity AI for code generation, architecture design, and debugging.
- Technical research inspired by the prior work of ibaiGorordo, guyman624, and polhdez.
This project is licensed under the GNU General Public License v3.0 — see the LICENSE file for details.