/DX150-firmware

Modified firmware binaries for iBasso DX150 DAP

iBasso DX150 firmware modified by Lurker

DISCLAIMER: No changes were made to the basic player functionality and behavior! Expect the same bugs and misbehavior found in the base stock firmware! No warranty at all: use the modified firmware at your own risk and responsibility!

  1. Changes made
  2. Flash DX150 firmware using FactoryTool (Windows)
  3. Flash DX150 firmware using rkflashtool (Mac/Linux)
  4. Recommended settings for Neutron Music Player
  5. Recommended settings for USB Audio Player Pro

To download the latest releases, please go to the Releases section.

To check the current version in Android mode, go to Settings, About DX150, Build number at the bottom. In Mango mode, open Settings, Advanced, System Info, and look to Firmware version and suffix (e.g. L0) in Model number.

To flash the firmware, you need

Flashing this firmware will not clean the user data. To return to the official firmware, just flash it per its instruction. You may only need to do a factory reset to get rid of icons of software, pre-installed in my firmware builds, but sometimes it's enough to delete them a usual way.

Changes made

  • When the screen is turned off, CPU and RAM are running at reduced speed, to reduce power consumption. It adds more than a hour of typical continuous playback, compared to the official firmware.
  • Power consumption in Android's deep sleep mode significantly reduced in 2.10.275-L2.

Mango mode

  • Pure Mango OS mode added, exactly as in DX200. Please consult DX200 User Manual for how to use it.

Note: This is exactly the same Mango player as in DX200! In particular, it lists and names Digital Filter settings according to DX200 hardware. In DX150, only first 5 of them have sense.

Android mode

  • Added Google Play Market. It is not the latest version available, but it corresponds to the pre-installed Google Play Services. Can be disabled and enabled back via System settings of USB Audio app, along with Google Services.
  • USB Mass Storage to direct access of your microSD card when you connect DX150 to a computer. It replaces MIDI choice in the pull-down menu of USB connections. When selected, SD card is unmounted internally, and is not visible if you return back to MTP. It is mounted back right after disconnect from the computer.
  • Embedded USB Audio application with advanced features, possible only for a built-in app. In its System settings you can disable Google services and Media scanner, and turn Android's Battery saver permanently on, to reduce background activity almost to zero level.
  • Embedded a special build of HibyMusic, compatible with USB Audio. All the required changes made by me, with kind permission of HiBy Music. This build may co-exist with official releases installed from Google PlayMarket.
  • Added SuperSU for those who need root access.
  • Music detector: it keeps Android in active state while music is playing, and prevents deep sleep for some minutes after the music has been stopped, to allow to resume playback by only pushing play/pause button. The default period is 5 minutes. You can change this value in the Settings, Idle Timeout. You don't need to keep USB Audio running for this feature.
  • Added support to mount exFAT and NTFS file systems by UUID, not as default. This allows to use microSD and a USB OTG disk at the same time, without problems.
  • A custom build of libtinyalsa.so to workaround a bug in Android, that caused mediaserver to crash. This problem was not visible for most users, because crashes and restarts happened on the background, between audio playbacks.
    It allows Neutron Music to play DSD in DoP, and PCM up to 32/384kHz, transparently, without additional efforts. Native DSD playback up to DSD256 is supported for Neutron version 1.98.1 and higher.
  • Removed rild service and disabled any telephony and SMS services.
  • Battery level percentage indicator is back, and volume level indicator is visible at the lock screen.
  • Custom builds of Android Power, Lights and Vibrator HALs.
  • Workaround for confusing and annoying "Choose app for the USB device" (or similar) Android prompt when Mango plays DSD, or USB Audio turns the interface on.
  • Turned off system logs, to decrease unwanted CPU load and background activity. Can be turned back on via System settings.
    Note: by default, logs are disabled only for 32-bit applications, because disabling them for 64-bit apps creates problems for SuperSU user interface (only user interface, not for its basic functionality!). They can be completely turned off via System settings, and turned on, if required.
  • Modified Android's DeviceIdleController: with the official firmware, Android never goes into Doze mode! This is because the original DeviceIdleController has turned off normal execution of device idling for devices without significant motion sensor. The modified version has removed any motion detectors, and the default DeviceIdleController constants are tuned for DAP use. See also System settings of USB Audio app to improve energy saving even more.

Custom build of Android Power HAL module has implemented the following strategies for 8 CPU cores:

  • Screen on: 8 in normal, 4 in Battery Saving modes.
  • Screen off: 4 when music is playing (by any application!), 1 when idle (including USB DAC mode).

Custom build of Android Lights HAL module has implemented fast control of backlight, and removed control of LEDs, which are missing in DX200 anyway.
Custom build of Android Vibrator HAL module just does nothing, because there is no corresponding hardware in DX150.

Flash DX150 firmware using FactoryTool (Windows)

FactoryTool is the official RockChip Windows application to flash firmware into RockChip-based devices.

You need to download and unzip the firmware image file: the only file in the archive with .img extension. Then:

  1. Download zip-archive.
  2. Unzip it.
  3. Read and follow the instruction ("DX200-DX150 FactoryTool instruction.pdf") inside the archive.

Flash DX150 firmware using rkflashtool (Mac/Linux)

You need to have installed rkflashtool version 6.1 or later. For Lunux, you have to build it from the source code. For MacOS, you can build it yourself as well, but there are pre-built binaries, also in Homebrew.

Then, you need to download a zip archive with "-rkflashtool" suffix, which contains two files: boot.img and system.img, and unzip it. If you have downloaded and unzipped it into your Download folder, the path is /Users/username/Downloads with your actual user name.

Install Homebrew and rkflashtool

These steps you need to perform only once, to set up the required environment. Open Terminal from your Mac Utility folder. Copy and paste the following line into the command prompt and hit Enter:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null

When you have Homebrew installed, copy and paste the following command and hit Enter:

brew install rkflashtool

Prepare DX150 for firmware loading

  1. Turn DX150 off.
  2. Press and hold Pause/Play button.
  3. Connect DX150 to your computer via USB.
  4. In a five to ten seconds, release Play/Pause.

Now DX150 should be in factory flash mode. Then type the following commands (possibly with or in su):

rkflashtool v
rkflashtool n

to check if rkflashtool sees and recognizes your device.

Flash the firmware

Change the current working directory in Terminal to one where you have unzipped firmware files, e.g.

cd /Users/username/Downloads

with your actual user name and the path. Then type in the directory where you have unzipped firmware files:

rkflashtool w boot < boot.img
rkflashtool w system < system.img

At the end of the each process you'll see a message premature end-of-file reached: it is normal, because files are smaller than flash partition sizes. Now you can issue

rkflashtool b

to reboot the device, or do it manually.

The Mac specific steps above were derived from a forum post by Likeimthere.

Recommended settings for Neutron Music Player

Neutron Music Player automatically detects DX150 and is able to play PCM up to 32/384KHz and DSD up to DSD256 bit perfect, without a need to use USB Audio application. The following settings are recommended for the version 2.10.0-AMD64:

Replay Gain: off
64-bit Processing: on
Automatic Gain Protection: off
Service: off
Audio Hardware:

  • DSP Effect (Device): set Filter and Output Gain for your taste.
  • Mono: off
  • Dither: off
  • Phase Inversion: off
  • Subsonic Filter: off
  • Ultrasonic Filter: off
  • Reverse Stereo: off
  • Hardware Gain: on
  • Audio Focus: on
  • Direct USB Access: off
  • DSD, DSD over PCM (DoP): on; tap on this item, and Native DSD: on, Volume Control: off
  • Oversampling: off
  • Follow Source Frequency: on

Recommended settings for USB Audio Player Pro

Starting from version 4.1, UAPP on DX150 can play PCM up to 32/192KHz bit perfect via its HiRes Direct Driver, without a need of USB Audio application. The following settings are recommended for the version 4.2.5:

Internal audio driver: HiRes Direct Driver

HiRes audio:

  • HiRes driver flags: Direct PCM
  • HiRes driver audio format: 32-bit
  • Bit perfect: On

Android audio:

  • Play through Android: unchecked
  • Android sample rate: Variable rate
  • Force 16-bit: unchecked