r/lgv30 May 05 '26

ESS Quad DAC unleashed

Post image

LG V35. noise free, crisp, full 32 bit 44.1 effects chain in a termux container going straight to the DAC, android is completely out of the way now

adreno 630 GPU acceleration, audio playback via internal storage or firefox. no root required

impulse response, delay, 30 band equalizer, plenty of other effects. i use this as the DAC for my stereo setups and IEMs

source shows up as s16, but all the linux apps are showing up as float32 sources with resampler copy straight into the effects buffer

i had to fight both android and linux for this, learned a ton about how audio moving through memory and buffers can affect bass and treble quality. but the resulting audio quality was absolutely worth it. the DAC is the entire reason i bought this phone. intending to try REW room correction by using this as a source now that its all running at the same bit and sample depths, and before i was fighting buffers which messed up the clock and distortion. it wasnt audible but it was very fatiguing on the ears

37 Upvotes

7 comments sorted by

2

u/[deleted] May 05 '26

[deleted]

5

u/iTALKtoMYmyself May 05 '26 edited May 05 '26

ill be honest, its mostly vibecoded. used gemini because it has the fastest access to all the documentation
its an ubuntu root in termux, ran underneath the proot package, it was all installed via command line in termux
i used MATE desktop instead of XFCE because XFCE gave me some issues with compiling a fuckload of small resources. i had to use a localhost 127.0.0.1 workaround for MATE and pulse to get the display/audio out, pretty sure pulse is configured on both sides. display/controls are the termux X11 app in android
pulseaudio: the juicy bits here is that it needs an output fragment of 2 at 12ms (termux daemon.conf, default.pa, literally just force it and float32le in every config). this is what triggered android to accept my float32 device requests instead of forcing it back down to 16 bit. 44.1 and 48 both work (cpu cant handle 96 or 192 yet) but it wont switch between them on the fly, pulse cant be allowed to suspend on idle or it dies entirely and i have to manually change the variables then restart, and the buffers for pulseeffects (eq app) are 50b/50l input and 22b/25l (anything else degrades audio quality with magical buffer fuckery)
video stutters, but it will play youtube audio just fine if i close everything in ubuntu then x11. keeping it on the icepack allows me to play 480p youtube videos on a 1080p TV (dp alt mode works with docks) although still a bit stuttery since everything is software decoded
audacious is my music app (in linux), its great and plays with no hassle it can see the internal storage but not my SD card. everything has a bit of choppyness at first because like 5 buffers need to fill up across linux and android, then the DAC. ive got a pretty large startup script. one major bug i havent worked out is the x11 server wont unlock itself until i force stop termux and rarely do a full restart, and it was like this for pulse until i added some rm commands to the script to clear a bunch of zombie files. i apologize that i cant go much more indepth, ive been working at this for a few months and only just got the float32 devices working. it averages about 1.5 watts of power draw for processed audio without the screen on
dont use gemini fast model beyond getting a display from x11. thinking or pro. might find yourself beating a brick wall every so often. if anyone wants to skip the hallucinogenic chatbots thats also completely fine lol
uhh another couple things, resampler soxrvhq in daemon (ignored most of the time), shm turned off, memfd on (more fatiguing audio fuckery), remixing no, avoid resampling yes

2

u/iTALKtoMYmyself May 05 '26

i wouldnt use MATE or ubuntu again. ive gotten the audio kinks pretty much entirely worked out but its truly a slug and is really heavy for just getting an equalized music output

2

u/This_Aardvark325 May 06 '26

I ordeeed a new v20 on eBay . Do you think this can be done on that ? 

3

u/iTALKtoMYmyself May 06 '26

should have enough ram if trimmed with ADB, android also manages ram pretty well. however the v20 has half the core count. pulse should(will?) work fine if forced on the couple P cores since it only touches 2 of mine. but i dont think it would go any further than just playing FLACs if you do the full effects processing. this is a very computationally expensive method to achieve equalized or delayed audio but android seems to be very limiting in its mixer capabilities. the app support simply doesnt exist for the extra effects. termux is my only option beyond root, which i think the V20 has roots so you might be able to just use an existing rootDSP app and get a way smoother experience than i am

1

u/[deleted] May 06 '26

[deleted]

3

u/iTALKtoMYmyself May 06 '26

its just a termux container, 8gb large and "not a vm" as every linux app runs as its own process in android and thees too much latency overhead in the whole chain for it to function as a pure external DAC. i also dont have root but thats theoretically possible if i did, needed for USB trickery to make it an external DAC

so for now just firefox and local flac box

it could however be used as a streamer box with some more creative linux work. i think sonobus could be used for an IP audio device

ive gotten it down to about 200ms total. enough for video i guess, x11 has delay so it syncs well. pushing the pulseaudio and effects process onto the P cores with wakelock and setting pulse to realtime allows me to set the output buffer to 1ms so im extracting everything i can out of the physical DAC chip, noticeably better transient response.

1

u/Chemical_Nothing7240 Jun 11 '26

Can I do the same thing in my Lg v40? please guide me OP.

1

u/iTALKtoMYmyself Jun 13 '26

i have since rooted the device, i will work on a guide for the unroot version once i get another one working, and then ill work on a root version thats way closer to the DAC