iBasso DX320 DAP - Roon Remote and ARC upsample everything to 768/24

Roon Core Machine

Roon Rock on Gen 11 NUC

Connected Audio Devices

iBasso DX320 DAP

Description of Issue

I have an iBasso DX320 DAP - this is their flagship, current generation DAP. It runs on Android 11.

I’ve installed Roon Remote and Roon ARC clients from the Google Play Store.

After starting the device, both Roon Remote and ARC upsample all tracks to 768/24 despite the device supporting all of the common frequencies at 16 and 24 bits per sample.

In the case of Roon Remote, this makes the device essentially unusable because it can’t maintain the data rate. ARC works because upsampling happens on the device, but it should be getting native rates.

The Qobuz, Tidal, and built-in Mango player apps all do the right thing. If I reboot the device, play something in one of these apps, it will basically set the DAC to that frequency. If I then launch Roon Remote or ARC and play something, it will play at whatever frequency Qobuz, Tidal, or ARC just played at.

It appears that Roon Remote and ARC are taking a single reading, at launch, of the DAC frequency.

I hope you can fix this - it’s a pretty serious issue for users of this product and, I assume, it impacts users of products from other manufacturers.

Here’s an image of this occurring.

Thank you!

1 Like

Interesting – until now I thought the DX320 was just suffering from the Android Audio auto resample/downsample, but it does appear that Roon is somehow piggybacking on the device’s audio, which, in the case of the DAP which can do other bit depths/sample rates because of its purpose-built nature, can ‘disrupt’ the device’s Android Audio. Though I’m not a programmer, it seems like it might then be easy for a Roon Remote/ARC update to just tell the device to output at whatever the source sample rate is.

…[quote=“Dajokr, post:2, topic:228298”]
it does appear that Roon is somehow piggybacking on the device’s audio, which, in the case of the DAP which can do other bit depths/sample rates because of its purpose-built nature…

This is correct.

As a workaround, I created a set of 1-second long, silent FLAC files at various frequencies. I copied them into iBasso’s internal Music directory so that Mango can see them. By playing one of these, I can get Mango to set the DAC to a specific frequency. I can then quit/re-launch Roon or ARC and it will then play everything at that frequency. So, for example, if I play my 96kHz file in Mango, and then quit/re-launch Roon, the core will up/down sample to 96 and then stream that to the DAP.

This is the difference between Roon being able to maintain a connection or not maintain a connection on my WiFi network.

If you’re interested in this workaround, let me know and I’ll DM you a link to a zip file with the flac files I made.

As I mentioned in the other thread Roon will always resample on Android to what it gets back from the OS as the native rate of the internal DAC. It never has been able to do bit perfect as Roon assumes it’s using Android Audio path to output and this by its nature resamples to a set frequency. They feel Roons own resampling is better and thus it auto performs this task. All this was designed for mobiles not DAPs where they have circumvented the limitation of Androids resampling nature each with their own modified operating system. Roon does what it does to be compatible across all android devices. It does seem that some of the daps are changing the base rate based on what was last played and Roon picks this up. My hiby dap doesn’t do this it sees the DAC as being 44.1/24 and resamples to this regardless of what was played by other native music players. It would be a major change to the main app to alter this behaviour and this has been flagged many times before. They seem to be focused on getting bit perfect and freq changing only via ARC currently via usb DACs and they are also working on it for inbuilt DAC’s like those in DAPs. But don’t expect the main app to change any time soon.

Respectfully - this is a bug (or desperately needed missing feature) plain and simple. The capability clearly exists for Roon to do the correct thing given that Qobuz and Tidal do it. They also, as we both know, do the right thing when playing to external DACs on both Android and iPhone. There is no case to be made for Roon to upsample a 44.1kHz track to 768kHz and to then attempt to send that to an Android device over RAAT - Roon simply cannot work reliably at that rate.

All I’m asking for here is for Roon to treat my internal DAC the same way it would treat my external DAC. If someone from Roon wants to chime in and express the opinion that internal and external DACs should be treated differently, then I’m open to that. I wouldn’t expect that, though, since it’s hard to make the case for that behavior.

For what it’s worth, I don’t understand why it’s a “major change”. Given what I see with external DACs, there’s probably a piece of code that runs near app launch that assess DAC rates. When a track is played, the logic runs to determine what rate to play at. I have no idea if the app needs to explicitly set the DAC to a sample frequency or if it AAudio figures it out. Maybe the latter. Either way, the existing code for external DACs is already there and is probably pretty darn close to functional for internal DACs. There’s obviously guesswork on my part here but just running the apps gives us a pretty good sense of the internals.

Can we let this sit as a bug/feature request so that it hopefully gets a response from someone at Roon?

It’s not a bug per se but it’s shortcomings are being shown up with some of the design choices of these newer DAPs.

The reason the other apps don’t do it is they leave the resampling up to the OS and do not perform it themselves so on a DAP that bypasses system resampling you get what your given. PlexAmp also isn’t bit perfect and resamples on Android including DAPs.

Prior to how it works now Roon left it to Android to do it but it caused more issues than you would believe. It seems their engine did not play ball at all and it resulted in dropouts loss of sound all sorts of anamolies. It was dire to be honest and at that time they needed something that was stable across what ever android device it ran on. There decision at the time was sound and was take control of much of the processing as they could and doing this side of things jt did massively improve the sq of the output and it was very stable. At this time there really wasn’t many DAPS around that bypassed system resampling and only specialised apps like Neutron or UAPP. It may not seem like a big change but the main app is fragile and complex and it’s playback engine on android has been designed to perform resampling so to change it is a bi change to its architecture. It can be done but one they are reluctant to currently pursue. Arc has been developed differently from the start with being ably it do all this stuff from the off and it’s easier to implement at this stage of its lifecycle as I feature wise it’s so much more basic than the main app.

Semantics, perhaps?

You’re correct that PlexAmp, on an iBasso DX320, plays everything at 768.

I just tried Apple Music. It seems to default to 44.1 but I enabled “Hi-Res Lossless” and played a “lossless” track and it played it at 48. So Apple Music is doing the “right” thing.

You have more context and history and what you’re saying is intellectually interesting. Maybe you actually have direct experience with the codebase. It’s possible that it’s a big dig to get it to work. Regardless, though, Roon did a big push to get bit perfect with iOS and Android when USB-connected DACs are in use. I get the implementation difference between USB drivers and native APIs. I even buy that I’m potentially massively oversimplifying the complexity of getting this to work correctly. But if DAPs (or even just phones with decent DACs in them) are an interesting market, then hopefully they can invest in getting this to work. As it sits, I have a hack and imperfect workaround. Or, I can just run the Qobuz app which is what I’m finding myself doing. And that’s lousy because I consider myself a Roon user whose content comes from Qobuz and Tidal. Not a Qobuz user or a Tidal user. I’d like to keep it that way :slight_smile:

1 Like

I do agree with you just providing some context as to why it is what it is and it’s short comings I have been pushing for Android bit perfect for as along as I remember. They did say they are just focusing on ARC though at the moment for Androids bit perfect playback hopefully it trickles back to the main app and i might be able to use my DAP as it runs a too old Android for ARC to run.

1 Like


I’m surprised by how much I’m enjoying this device. There are just a few issues standing in the way of it being truly outstanding. Let’s keep (gently) pushing … I’m very optimistic and I do think Roon has clarity and intent about where they’re going. It’s fun to go along for the ride.

1 Like

Im using the DX320 DAP and facing same issue.
The signal path shows that the Default Output AUdio to be lossy.

Were you able to fix this issue?


There is no user fix for this behavior. There are workarounds with caveats which I described in the first post.

I sold the DX320 and bought a FiiO M11 Plus, which is “Roon Ready”. I liked the bells and whistles of the DX320 but I prefer the rock-solid reliability of the M11 Plus.