Hires direct driver in USB Audio Player PRO

 

What is it?

Many recent high-end Android phones come equipped with a high quality audio chip. However, this chip is usually not available to third-party apps and can only be accessed by the media player that comes with the phone, or when it works, it works only at a fixed rate of 44100 or 48000Hz. The HiRes direct driver in USB Audio Player PRO tries to work around that problem by accessing a so-called 'direct' audio path of the Android audio system. Using this direct path, audio can be passed to the chip in 24-bit at all the sample rates that the chip supports, without resampling or other audio degrading 'features' of Android.

Note that this direct driver is used with the internal audio of the phone in combination with headphones connected to the phone directly and is completely unrelated to the situation where you would use our USB audio driver in combination with a USB DAC.

 

How do I use it?

Since UAPP v4, you can choose which driver to use: the standard Android audio driver or the HiRes direct driver. For 'known' devices you will be asked on start-up if you want to use the HiRes driver (this is asked only once of course and your selection is remembered). If your device is not recognized as having a HiRes audio chip, pull out the navigation bar from the left and select Settings. Choose the 'Internal audio driver' option and select the HiRes driver. For many phones, this is enough. If your phone is not in the compatibility list below, but you are certain that your phone contains a high quality audio chip, you could just try it out, but it may not some tweaking. Please see the 'Hires driver flags and format options' below if you have technical knowledge on things like adb and know how to look at system files.

Note: selecting the HiRes direct driver and the display of 'Direct' in the player is no guarantee that the app actually plays through the direct audio path! The app (or any app for that matter) cannot know or query the system if the request to play in direct mode is honoured or if Android choses another non-direct path. In some occassions, the player will give a failure at playback, but often this is not the case. Only inspection of system logs, listening tests and frequency analysis of the output will prove it. However, if your device is listed below as compatible, you can be reasonably sure that the direct path is used.

 

cOMPATIBILITY LIST

Devices that are verified by frequency analysis are 100% known to work. The other devices that are listed are suspected to work after analysis of adb logs and inspection of AudioFlinger debug output. Devices that are NOT listed, may work if they are known to have a HiRes audio chip. Note that if the app plays after selecting the HiRes audio driver and your device is not listed here, it does NOT automatically mean that your device is playing in HiRes, even if the current song display says 'Direct'. Some devices just fall back to a non-HiRes audio path instead of giving an error message.  Please note that this list is not continuously updated, so it's likely that more models are supported.

ManufacturerModelVerified by
frequency analysis
Notes
Aquaris X Pro    
Asus Rog 5    
  Rog 5s    
  Zenfone Max Pro M1    
  Zenfone 6    
Bphone B1114    
BQ Aquaris X2    
Cayin N6MK2    
  N8ii    
FiiO M11    DSD64 and DSD128
  M11 PRO    DSD64 and DSD128
  M15    DSD64 and DSD128
  X5viii Yes  
  X7    
  X7ii    
Fujitsu F-02H    
Gigaset ME Yes  
Hiby R5   MQA
  R6   MQA
  R6 PRO   MQA
  RS6   MQA
  R8   MQA
Honor 8 PRO   Only 48, 96 and 192 kHz
  9   Only 48, 96 and 192 kHz
  10   Only 48, 96 and 192 kHz
  Play    
HTC 10    
  One A9    
Huawei Nova    
  P30    
iBasso DX150   Probably requires Lurker00 firmware
  DX160    
  DX200    
  DX220    
  DX240   MQA
  DX300   MQA
LeEco Max2    
Lenovo Legion Pro    
  P2    
  Z2 Plus    
  Z5 PRO    
Letv X900   16-bit only
LG G2 Yes  
  G6    
  G7   Including DoP and MQA decoding. DoP does not work on Android 10.
  G7 Fit    
  G7 One    
  G8   Including DoP and MQA decoding. DoP does not work on Android 10.
  G8X   Does not have MQA!
  K20    
  Q7+    
  Q9    
  Q9 One    
  Stylo 4 (Q7)    
  V10 Yes  
  V20 Yes  
  V30 Yes Including DoP and MQA decoding.DoP does not work on Android 10.
  V35   Including DoP and MQA decoding.DoP does not work on Android 10.
  V40   Including DoP and MQA decoding.DoP does not work on Android 10.
  V50   Including MQA decoding. The V50 does not feature DoP. The LG Music app will convert DSD to 88200Hz PCM, whereas UAPP converts to 352800Hz PCM.
  V60   V60 does not feature MQA or DoP
Motorola E5    
  G5 Plus    
  G6   16-bit, up to 192000Hz
  One    
  Z2 Play    
Nokia 7 Plus    
  X7    
  6    
  6.1    
  7    
  8    
  8.1    
Nubia Red Magic 5G    
  Z11   16-bit, up to 192000Hz
OnePlus 3T and newer    
Onkyo Granbeat   16-bit, up to 192000Hz
  DP-X1    
Oppo      Any recent Oppo can be supported probably. Contact us when yours isn't recognized.
Pioneer XDP-100R Yes No MQA decoding or DoP
  XDP-300R   No MQA decoding or DoP
Realme 5 PRO   Any recent Realme can be supported probably. Contact us when yours isn't recognized.
  6 PRO    
  7 PRO    
  8 PRO    
  GT master ed.    
  X2 PRO    
  X3 Super Zoom    
  X50 PRO    
  XT    
Samsung A01    
  A02S    
  A11    
  A20    
  M11    
  M51    
  Note 8 Yes Exynos variants all resample to 192000Hz
  Note 9    
  S6, S7, S8, S9, S10 and plus variants Yes Exynos variants all resample to 192000Hz. Even Samsung Music resamples DSD to 192000Hz.
Shanling M3/M3X   PCM only, MQA on M3X
  M6   MQA on 2021 version
  M6 PRO   PCM only, MQA on 2021 version
  M8   PCM only, MQA
  M9   PCM only, MQA
Sharp Aquos R    
  Aquos SHV34    
Sonim XP8800    
Sony 1    
  1 II    
  NW-A105    
  X Yes  Probably all X series
  X Compact    
  XA2    
  XZ Premium    
  XZ1    
  XZ1 Compact    
  XZ2    
  XZ3    
  Z5   16-bit up to 192000Hz
Vivo Xplay6 Yes   Uses the chipset DAC
  X20 Plus    Uses the chipset DAC
Vsmart Joy 3    
  Live    
Wiko WIM Lite    
Xiaomi MI 4 to 11   Any recent Xiaomi can be supported probably. Contact us when yours isn't recognized.
  MI A1/A2    
  MI CC9 PRO    
  MI Max 1/2    
  MI Note 3    
  MI PAD 4    
  MIX 1 to 3    
  Poco F2 PRO    
  Poco M3    
  Poco X2    
  Poco X3 NFC    
  Poco X3 PRO    
  Pocophone F1    
  RedMI K30 and PRO    
  RedMI Note 3 to 10    
  RedMI 4 to 8    
  RedMI S2    
  RedMI Y1    
ZTE Axon 7    
  Axon 7 mini    
  Axon 10 PRO    
  Blade Max Z    

 

MEIZU DEVICES

For certain devices from Meizu (MX4 Pro for instance), the package name of UAPP (com.extreamsd.usbaudioplayerpro) needs to be added to /system/etc/audio_hifi.conf and/or  /etc/audio_hifi.conf in order to utilize the HiFi DAC. You can add this package name if you have root access to your device.

Help us make this list grow!

We would appreciate it if you email us your feedback about non-listed devices at info AT extreamsd.com!

 

Warning: the next section is for technically skilled people!

HiRes driver flags AND FORMAT OPTIONS

For 'known' devices, UAPP sets the HiRes format and flags accordingly when these two settings are set to 'Auto'. For 'unknown' devices, UAPP parses the file /system/etc/audio_policy.conf on your device and tries to assess if your device has a direct (or offload) mode and, if found, sets the format and flags according to the appropriate section of that file when 'Auto' is selected. If that does not work, you can experiment with the other non-auto options.

Veriyfing the correct working of the driver

There are a couple of ways to inspect whether the HiRes driver is really playing without resampling and in 24-bit mode. If you want to try with ADB, it can be found in the Android platform tools: https://developer.android.com/studio/releases/platform-tools.html 

  • Frequency analysis: the best proof is when you playback a sine sweep on the Android device and analyze it on another device, for example with Rightmark Audio Analyzer. You'll need a sine sweep, like this: http://www.audio-evolution.com/downloads/SweepToneStereoFrom5000To96000Hz_192kHz.wav . Play this 192kHz WAV file containing a sine wave from  5000Hz up to 96kHz (half the nyquist frequency) and record it at 192kHz with a good audio interface (that can record up to 192kHz!). On a PC, preferably use a ASIO driver. There should be frequency content from the start to end.
  • AudioFlinger output: use ADB (Android debug bridge) on a desktop machine to log onto your Android device:
    Download SDK platform tools (for Windows). After unzipping the file, enter the platform-tools folder. Here you should see a number of files, including adb.exe or just adb. Hold the left SHIFT key on your keyboard and press the right mouse button somewhere in the directory and select 'Open Powershell here'. Now connect your Android device to your PC. Then open Android settings on your Android device, select About and then find an entry called 'Build number'. Tap it 7 times until it says that you are now a developer. Press back and in the settings find the new 'Developer options' entry. Tap on that and then enable the developer options at the top-right and also enable 'USB debugging'. It may ask you to allow connection from your PC, allow it.

    Now, in the shell, type
    ./adb shell
    Start playback in UAPP of a 192kHz file with the HiRes driver enabled.
    In the ADB shell, type:
    dumpsys media.audio_flinger
    Search for a section that has a DIRECT in it. This mostly happens at the end of the dumpsys output and see if it is playing at 24-bit at 192000Hz.
  • adb shell
    logcat or logcat > /mnt/sdcard/log.txt
    Search for 'rate' in the log and see if you can determine which sample rate was really used.