LG V30
Feb 9, 2019 at 12:04 PM Post #4,966 of 6,140
I was also surprised. They are 116dB/1V and this is a lot lower then 110dB/1mW for Beyer Xelento or 106dB/1mW for JVC FX850. I am listening now with volume set to 60 on low impedance mode. Background volume for me.
N5005 have detachable cable, but I would not use it for that. This connectors are so small and fragile.
Oh, I love V30. What a sound. My home speaker rig is so lonely.
 
Feb 9, 2019 at 1:11 PM Post #4,968 of 6,140
SR15 was more clean sounding with more front-back stage then V30. And it has more control on low notes. But it was in shop with not run-in player.
I am very interested in your long turn comparison between two (V30, SR15).

For me I prefer the SR15 but there's not much in it.

Slightly better sound stage and separation. Mids for me are better too.

Trying to remove my basshead tendencies, I play a lot of funk. But I prefer the V30 bass, no doubt.

Not mad on V30 treble, bit shouty. From previous experience I think that's a Sabre thing.

What I love about the N5005 is that you can throw any good source stuff at them and they do a great job.

TL;dr - both great. Probably don't need both:)
 
Last edited:
Feb 9, 2019 at 1:34 PM Post #4,969 of 6,140
The cable is detachable. Ships with 3 cables (3.5 with mic, 2.5 balanced and BT).

I was also surprised. They are 116dB/1V and this is a lot lower then 110dB/1mW for Beyer Xelento or 106dB/1mW for JVC FX850. I am listening now with volume set to 60 on low impedance mode. Background volume for me.
N5005 have detachable cable, but I would not use it for that. This connectors are so small and fragile.
Oh, I love V30. What a sound. My home speaker rig is so lonely.

From looking at the pics I thought the cable wasn't detachable. So yes, you could use that to achieve Aux mode and quite a bit more volume. But I can certainly see how detaching a fragile connector every time is cumbersome and risky.
 
Feb 9, 2019 at 2:01 PM Post #4,971 of 6,140
From looking at the pics I thought the cable wasn't detachable. So yes, you could use that to achieve Aux mode and quite a bit more volume. But I can certainly see how detaching a fragile connector every time is cumbersome and risky.
Got to be a little careful with them, especially the filters. Some have reported stripped threads

I baby these MFs - too expensive not to.Still worth it.
 
Feb 9, 2019 at 4:06 PM Post #4,973 of 6,140
I do find a far-ranging improvement using UAPP vs the native (resampled) Tidal app, apart from any background hiss. How much is owed to the player itself and how much to 44.1kHz playback, I don’t know. But it sounds more “correct” - more musical, more natural.

I believe it has to be from the upsampling only. We know that UAPP does bit-perfect (if setup correctly). And I cannot imagine that the Tidal app does anything further to mess up the stream, beyond failing to avoid the Android mixer for 16/44 tracks (again, if setup correctly). For Master/MQA tracks you shouldn't be hearing any difference.

In the case of Spotify, I can imagine further deterioration, as it is first compressed/decompressed, and then upsampled. Assuming, of course, that Spotify doesn't magically avoid the mixer.

I've listened to lots of Spotify on my V30, and liked it. But once I got used to Tidal there is no going back to compressed formats for me. I'll be checking Qobuz later this month.
 
Last edited:
Feb 9, 2019 at 10:31 PM Post #4,974 of 6,140
Like everybody, I too would love to believe in this, and I would root my phone in a heartbeat if I though it possible. But like you guys, I am skeptical. Not just because "it's too good to be true", but for technical reasons:

According to @csglinux' opening post in the Music Apps thread, LG's implementation of the ESS DAC does not natively support 16/44, only 24/44 or 16/48 (and of course higher). Dumb music apps (i.e. most) will always play through the Android Mixer, so they will always upsample to the default resolution of 16/48. But even better music apps, such as LG Music and the Tidal app, which do support HiRes DACs and send HiRes music unmolested through the Direct route (bypassing the Mixer and thus avoiding upsampling) will come up short when they query the driver for supported audio formats and see that 16/44 is not supported. Then they have to send it through the Mixer, which knows of no other solution than upsampling to 16/48. Even UAPP did this originally, the first few months after V30 came out.

But as also described in csglinux' post, UAPP and Neutron since became smarter and now perform their own conversion of 16/44 to 24/44. That conversion is fast and harmless, simply padding each 16-bit sample with 8 bits of zeroes, and it allows them to play Redbook through the Direct route in 24/44 format -- which is natively supported by the ESS DAC.

So, the reason I don't think the the fix on Reddit can work, is because changing Android's default sample rate to 44.1kHz will do nothing to solve the problem that 16/44 isn't natively supported by the ESS DAC (or at least not by LG's driver for the DAC). The Android Mixer will still have to convert to a sample rate supported by the DAC, which is 16/48.

The Reddit solution is described in the context of an external USB DAC, which we might presume DOES support 16/44, in which case changing Android's default sample rate should work for ALL music apps. But unfortunately that is not how our Quad DAC works.

I am sorry to be a party spoiler. I dearly hope that one of the rooted users in here will try this and prove me wrong. (I highly recommend making a backup in TWRP first.)

TL;DR I doubt the Reddit trick can work with our V30 Quad DAC, which doesn't support 44.1kHz except at 24 bits (24/44). Changing the default Android sample rate to 44.1kHz would not in itself convert 16/44 to 24/44 (like UAPP and Neutron do).

The only solution I believe will work is the one described here, namely to modify the Android Mixer to convert 16/44 to 24/44 (bit-padding like UAPP and Neutron) instead of upsampling to 16/48. Both formats are natively supported by the ESS DAC, but converting to 24/44 has no effect on the sound quality. An even better solution would be to modify LG's driver to perform the conversion (bit-padding) but I assume we don't have the source code for that driver (a so-called binary blob).

I've been thinking of starting a Development Bounty on XDA for this. If enough people committed $10-20 (or whatever), we might be able to attract developers who can crack it. My own development experience goes back to the 1980s-90s (and presently to proprietary languages), so while I have some basic understanding, I am far from being an Android Dev.

It may work for people who don't have any 48kHz/16b content. My understanding is any 16bit content goes through the qualcomm ASRC if not 48kHz, which is not regarded as good enough for critical listening. This is likely as it is probably focused on low battery drain rather than fidelity.

I guess LG designed the system to only use the high res DAC in a different sample rate when more than 16bit is present, so that phone calls, alerts, and games didn't overtly drain the the battery.

I solved this by converting my flac files to 24bit, with no added dither. This leaves the files the same size, and forces the music player into 44.1kHz. It seemed better, but I only bothered with sited tests so usre bias may have crept in.

(ASRC=Asynchrounous Sample Rate Converter. A DSP that converts sample rate by calculating the new values for a different sample rate. It is never bit-perfect, so the quality depends on the calculations)
 
Feb 10, 2019 at 10:01 AM Post #4,975 of 6,140
It may work for people who don't have any 48kHz/16b content. My understanding is any 16bit content goes through the qualcomm ASRC if not 48kHz, which is not regarded as good enough for critical listening. This is likely as it is probably focused on low battery drain rather than fidelity.

I guess LG designed the system to only use the high res DAC in a different sample rate when more than 16bit is present, so that phone calls, alerts, and games didn't overtly drain the the battery.

I solved this by converting my flac files to 24bit, with no added dither. This leaves the files the same size, and forces the music player into 44.1kHz. It seemed better, but I only bothered with sited tests so usre bias may have crept in.

(ASRC=Asynchrounous Sample Rate Converter. A DSP that converts sample rate by calculating the new values for a different sample rate. It is never bit-perfect, so the quality depends on the calculations)

I too converted my CD FLACs to 24/44 when I first got started with V30. As you say, it is a harmless process, no dithering, nor interpolation (as when re-sampling), the files take up no more space than their 16-bit originals (because the added 8 bits are just zeroes), and it allows the LG Music app to route them unspoiled to the Quad DAC.

So I understand what you say: If people ONLY play local files AND convert their 16/44 files to 24/44, the Reddit fix may be enough. But in that case, they don't even need the Reddit fix since LG Music already plays local 24/44 files correctly. (Come to think of it, I may not have verified that by inspecting audio_flinger dumps. I should do that some time.)

OTOH since UAPP and Neutron do the same conversion on the fly, I really find that much more convenient than converting my entire library of ripped CDs. To me UAPP is the easiest $8 to justify that any V30 owner could spend.

In short, I consider the upsampling to be a non-issue as far as local files go.

The problem is with streaming services, where we rely on less enlightened 3rd party apps: For Tidal, Qobuz and Google Music, UAPP can perform the streaming, and thus avoid the Android Mixer. But offline playing from those services, as well as other services not supported through UAPP, are going to rely on those less enlightened apps, which are subject to upsampling of 16/44 content. And again, I don't believe the Reddit fix will solve that -- but I would love to be proven wrong.

To your first point, I think it is entirely plausible that notification sounds are played through the Qualcomm DAC, even when the Quad DAC is enabled. This would save battery (as you say) and would also explain how notification sounds manage to come through even when playing HiRes music through the Quad DAC -- in formats which clearly are beyond the ability of the Mixer to blend with notification sounds.
 
Last edited:
Feb 11, 2019 at 7:32 PM Post #4,977 of 6,140
If people ONLY play local files AND convert their 16/44 files to 24/44, the Reddit fix may be enough. But in that case, they don't even need the Reddit fix since LG Music already plays local 24/44 files correctly. (Come to think of it, I may not have verified that by inspecting audio_flinger dumps. I should do that some time.)

(Yes, I'm one of those narcissists who quote their own posts :sunglasses: )

As a follow-up to the above, I converted a few 16/44 files to 24/44 (harmless bit-padding, no dither) and inspected the audio_flinger dumps when playing them from LG Music (see spoiler). And indeed, it does play them through the Direct path (i.e. bypassing the Android Mixer) and with no re-sampling. As we expected. I remember concluding that from back originally, but didn't remember if I had properly verified it. Done!

Code:
Output thread 0xeea5a000, name AudioOut_65, tid 32245, type 1 (DIRECT):
  I/O handle: 101
  Standby: no
  Sample rate: 44100 Hz
  HAL frame count: 1792
  HAL format: 0x6 (AUDIO_FORMAT_PCM_24_BIT_PACKED)
  HAL buffer size: 10752 bytes
  Channel count: 2
  Channel mask: 0x00000003 (front-left, front-right)
  Processing format: 0x6 (AUDIO_FORMAT_PCM_24_BIT_PACKED)
  Processing frame size: 6 bytes
  Pending config events: none
  Output device: 0x8 (AUDIO_DEVICE_OUT_WIRED_HEADPHONE)
  Input device: 0 (AUDIO_DEVICE_NONE)
  Audio source: 0 (default)
  Normal frame count: 1792
  Last write occurred (msecs): 21
  Total writes: 55
  Delayed writes: 0
  Blocked in write: yes
  Suspend count: 0
  Sink buffer : 0xef56c000
  Mixer buffer: 0xee2b6000
  Effect buffer: 0xef9e1000
  Fast track availMask=0xfe
  Standby delay ns=1000000000
  AudioStreamOut: 0xeff8e9a0 flags 0x1 (AUDIO_OUTPUT_FLAG_DIRECT)
  Frames written: 98560
  Suspended frames: 0
  Hal stream dump:
  Stream volumes in dB: 0:-10, 1:-20, 2:-23, 3:-14, 4:-23, 5:-23, 6:0, 7:-18, 8:-22, 9:-96, 10:-21, 11:0, 12:0
  Normal mixer raw underrun counters: partial=0 empty=0
  1 Tracks of which 1 are active
    Name Active Client Type      Fmt Chn mask Session fCount S F SRate  L dB  R dB  VS dB    Server Main buf  Aux buf Flags UndFrmCnt  Flushed
    none    yes  31685    3 00000006 00000003      73  22932 A 3 44100     0     0     0   00018800 EF9E1000 00000000 0x000         0        0
  1 Effect Chains
    5 effects for session 73
    In buffer               Out buffer                 Active tracks:
    0xef9e1000 -> 0xf30b2000   0xf30b2000 -> 0xef9e1000   1
    Effect ID 67:
        Session Status State Engine:
        00073   000    000   0xeffbd6f0
        Descriptor:
        - UUID: F3E178D2-EBCB-408E-8357-0002A5D5C51B
        - TYPE: 47382D60-DDD8-11DB-BF3A-0002A5D5C51B
        - apiVersion: EE500C3C
        - flags: 00400048 (conn. mode: insert, insert pref: first, volume mgmt: implements control, input mode: not set, output mode: not set, offloadable)
        - name: Insert Preset Reverb
        - implementor: NXP Software Ltd.
        - Input configuration:
            Frames  Smp rate Channels Format Buffer
            01792   44100    00000003      1 (AUDIO_FORMAT_PCM_16_BIT) 0xf30b2000
        - Output configuration:
            Buffer     Frames  Smp rate Channels Format
            0xf30b2000 01792   44100    00000003 1 (AUDIO_FORMAT_PCM_16_BIT)
        1 Clients:
              Pid Priority Ctrl Locked client server
            31685        0  yes    yes      0      0
    Effect ID 75:
        Session Status State Engine:
        00073   000    000   0xf17203b0
        Descriptor:
        - UUID: C8E70ECD-48CA-456E-8A4F-0002A5D5C51B
        - TYPE: 0BED4300-DDD6-11DB-8F34-0002A5D5C51B
        - apiVersion: F24F8D6C
        - flags: 00400048 (conn. mode: insert, insert pref: first, volume mgmt: implements control, input mode: not set, output mode: not set, offloadable)
        - name: Equalizer
        - implementor: NXP Software Ltd.
        - Input configuration:
            Frames  Smp rate Channels Format Buffer
            01792   44100    00000003      1 (AUDIO_FORMAT_PCM_16_BIT) 0xf30b2000
        - Output configuration:
            Buffer     Frames  Smp rate Channels Format
            0xf30b2000 01792   44100    00000003 1 (AUDIO_FORMAT_PCM_16_BIT)
        1 Clients:
              Pid Priority Ctrl Locked client server
            31685        0  yes    yes      0      0
    Effect ID 91:
        Session Status State Engine:
        00073   000    003   0xeffbd0c0
        Descriptor:
        - UUID: 08B8B058-0590-11E5-AC71-0025B32654A0
        - TYPE: 08B8B058-0590-11E5-AC71-0025B32654A0
        - apiVersion: CA21D098
        - flags: 00C00280 (conn. mode: insert, insert pref: any, volume mgmt: requires indication, device indication: requires updates, input mode: not set, output mode: not set, offloadable)
        - name: Volume listener for Music
        - implementor: Qualcomm Technologies Inc.
        - Input configuration:
            Frames  Smp rate Channels Format Buffer
            01792   44100    00000003      1 (AUDIO_FORMAT_PCM_16_BIT) 0xf30b2000
        - Output configuration:
            Buffer     Frames  Smp rate Channels Format
            0xf30b2000 01792   44100    00000003 1 (AUDIO_FORMAT_PCM_16_BIT)
        1 Clients:
              Pid Priority Ctrl Locked client server
            1235        0  yes    yes      0      0
    Effect ID 51:
        Session Status State Engine:
        00073   000    000   0xeffbd5a0
        Descriptor:
        - UUID: 14804144-A5EE-4D24-AA88-0002A5D5C51B
        - TYPE: 0634F220-DDD4-11DB-A0FC-0002A5D5C51B
        - apiVersion: EE500C3C
        - flags: 00400290 (conn. mode: insert, insert pref: last, volume mgmt: requires indication, device indication: requires updates, input mode: not set, output mode: not set, offloadable)
        - name: Qualcomm Technologies Bass Boost
        - implementor: Qualcomm Technologies, Inc.
        - Input configuration:
            Frames  Smp rate Channels Format Buffer
            01792   44100    00000003      1 (AUDIO_FORMAT_PCM_16_BIT) 0xf30b2000
        - Output configuration:
            Buffer     Frames  Smp rate Channels Format
            0xf30b2000 01792   44100    00000003 1 (AUDIO_FORMAT_PCM_16_BIT)
        1 Clients:
              Pid Priority Ctrl Locked client server
            31685        0  yes    yes      0      0
    Effect ID 59:
        Session Status State Engine:
        00073   000    000   0xeffbd660
        Descriptor:
        - UUID: D3467FAA-ACC7-4D34-ACAF-0002A5D5C51B
        - TYPE: 37CC2C00-DDDD-11DB-8577-0002A5D5C51B
        - apiVersion: EE500C3C
        - flags: 00400290 (conn. mode: insert, insert pref: last, volume mgmt: requires indication, device indication: requires updates, input mode: not set, output mode: not set, offloadable)
        - name: Qualcomm Technologies Virtualizer
        - implementor: Qualcomm Technologies, Inc.
        - Input configuration:
            Frames  Smp rate Channels Format Buffer
            01792   44100    00000003      1 (AUDIO_FORMAT_PCM_16_BIT) 0xf30b2000
        - Output configuration:
            Buffer     Frames  Smp rate Channels Format
            0xf30b2000 01792   44100    00000003 1 (AUDIO_FORMAT_PCM_16_BIT)
        1 Clients:
              Pid Priority Ctrl Locked client server
            31685        0  yes    yes      0      0
  Local log:
   02-10 13:43:19.128 CFG_EVENT_CREATE_AUDIO_PATCH: old device 0x8 (AUDIO_DEVICE_OUT_WIRED_HEADPHONE) new device 0x8 (AUDIO_DEVICE_OUT_WIRED_HEADPHONE)
   02-10 13:43:19.135 addTrack_l    (0xeea28f00) none     no  31685    3 00000006 00000003      73  22932 A 1 44100     0     0     0   00000000 EF9E1000 00000000 0x000         0        0

USB audio module:
  No output streams.

  No input streams.

Reroute submix audio module:
 route[0] rate in=0 out=0, addr=[]
 route[1] rate in=0 out=0, addr=[]
 route[2] rate in=0 out=0, addr=[]
 route[3] rate in=0 out=0, addr=[]
 route[4] rate in=0 out=0, addr=[]
 route[5] rate in=0 out=0, addr=[]
 route[6] rate in=0 out=0, addr=[]
 route[7] rate in=0 out=0, addr=[]
 route[8] rate in=0 out=0, addr=[]
 route[9] rate in=48000 out=48000, addr=[]

However, the interesting part came when I played the same files in Google Play Music, which I assume has no knowledge whatsoever about our Quad DAC. And it, too, played them through the Direct path, with no re-sampling (see spoiler). In other words, as previously speculated, apps seem to simply query the audio driver for supported formats, then play through the Direct path if the format is supported. I really, really, wish we had a way to modify that LG driver to add support for 16/44 by bit-padding to 24/44 (like UAPP and Neutron). It seems that would completely eliminate all upsampling, both from local files and streaming, and even from dumb apps.

Code:
Output thread 0xed9ad000, name AudioOut_6D, tid 4751, type 1 (DIRECT):
  I/O handle: 109
  Standby: no
  Sample rate: 44100 Hz
  HAL frame count: 1792
  HAL format: 0x6 (AUDIO_FORMAT_PCM_24_BIT_PACKED)
  HAL buffer size: 10752 bytes
  Channel count: 2
  Channel mask: 0x00000003 (front-left, front-right)
  Processing format: 0x6 (AUDIO_FORMAT_PCM_24_BIT_PACKED)
  Processing frame size: 6 bytes
  Pending config events: none
  Output device: 0x8 (AUDIO_DEVICE_OUT_WIRED_HEADPHONE)
  Input device: 0 (AUDIO_DEVICE_NONE)
  Audio source: 0 (default)
  Normal frame count: 1792
  Last write occurred (msecs): 37
  Total writes: 1026
  Delayed writes: 0
  Blocked in write: yes
  Suspend count: 0
  Sink buffer : 0xed9c1000
  Mixer buffer: 0xed9df000
  Effect buffer: 0xed916000
  Fast track availMask=0xfe
  Standby delay ns=1000000000
  AudioStreamOut: 0xeff8e000 flags 0x1 (AUDIO_OUTPUT_FLAG_DIRECT)
  Frames written: 1838592
  Suspended frames: 0
  Hal stream dump:
  Stream volumes in dB: 0:-10, 1:-20, 2:-23, 3:-14, 4:-23, 5:-23, 6:0, 7:-18, 8:-22, 9:-96, 10:-21, 11:0, 12:0
  Normal mixer raw underrun counters: partial=0 empty=0
  1 Tracks of which 1 are active
    Name Active Client Type      Fmt Chn mask Session fCount S F SRate  L dB  R dB  VS dB    Server Main buf  Aux buf Flags UndFrmCnt  Flushed
    none    yes   4305    3 00000006 00000003     129  22932 A 3 44100     0     0     0   001C1500 ED916000 00000000 0x000         0        0
  1 Effect Chains
    1 effects for session 129
    In buffer               Out buffer                 Active tracks:
    0xed916000 -> 0xf30b2000   0xf30b2000 -> 0xed916000   1
    Effect ID 147:
        Session Status State Engine:
        00129   000    003   0xf17203e0
        Descriptor:
        - UUID: 08B8B058-0590-11E5-AC71-0025B32654A0
        - TYPE: 08B8B058-0590-11E5-AC71-0025B32654A0
        - apiVersion: EF503600
        - flags: 00C00280 (conn. mode: insert, insert pref: any, volume mgmt: requires indication, device indication: requires updates, input mode: not set, output mode: not set, offloadable)
        - name: Volume listener for Music
        - implementor: Qualcomm Technologies Inc.
        - Input configuration:
            Frames  Smp rate Channels Format Buffer
            01792   44100    00000003      1 (AUDIO_FORMAT_PCM_16_BIT) 0xf30b2000
        - Output configuration:
            Buffer     Frames  Smp rate Channels Format
            0xf30b2000 01792   44100    00000003 1 (AUDIO_FORMAT_PCM_16_BIT)
        1 Clients:
              Pid Priority Ctrl Locked client server
            1235        0  yes    yes      0      0
  Local log:
   02-10 13:58:52.567 CFG_EVENT_CREATE_AUDIO_PATCH: old device 0x8 (AUDIO_DEVICE_OUT_WIRED_HEADPHONE) new device 0x8 (AUDIO_DEVICE_OUT_WIRED_HEADPHONE)
   02-10 13:58:52.576 addTrack_l    (0xeea28d80) none     no   4305    3 00000006 00000003     129  22932 A 1 44100     0     0     0   00000000 ED916000 00000000 0x000         0        0

USB audio module:
  No output streams.

  No input streams.

Reroute submix audio module:
 route[0] rate in=0 out=0, addr=[]
 route[1] rate in=0 out=0, addr=[]
 route[2] rate in=0 out=0, addr=[]
 route[3] rate in=0 out=0, addr=[]
 route[4] rate in=0 out=0, addr=[]
 route[5] rate in=0 out=0, addr=[]
 route[6] rate in=0 out=0, addr=[]
 route[7] rate in=0 out=0, addr=[]
 route[8] rate in=0 out=0, addr=[]
 route[9] rate in=48000 out=48000, addr=[]
 
Last edited:
Feb 14, 2019 at 6:24 PM Post #4,979 of 6,140
If I buy a V30+ I should look for one that isn't For T-Mobile?

I would avoid the T-Mobile models (H932). They are both harder to root and harder to carrier unlock. Other models can all run on T-Mobile's network if that's your preferred carrier. If you're using a CDMA carrier (Sprint or Verizon) T-Mobile models are a complete no-go. Their only benefit is that they support T-Mobile's 600 MHz LTE Band (71) which they're rolling out across the country.

My wife and I bought T-Mobile models because they had a BOGO deal combined with a $400 LG cashback deal, which made them very economical when new. If I were to buy a V30 now, I would look for LS998 (Sprint) models on eBay. They are easily converted to US998 (US Open Market model) which will carrier unlock them and make them rootable (if you choose to root, it's not required).

Many V30s sold as US998 on eBay now are already converted carrier models. I would ask the seller about this as there are still a few differences: E.g. converted AT&T models (H931) have some limitations on which custom ROMs they accept (so do T-Mobile models).
 
Last edited:
Feb 15, 2019 at 4:59 AM Post #4,980 of 6,140
Apparently this thread isn't much of a safe space to outside influences (if you catch my drift).
 

Users who are viewing this thread

Back
Top