The Fiio K5 Pro Audio DAC+AMP On Linux

From LinuxReviews
Jump to navigationJump to search
Audacity.png

The Japanese have examined the K5 Pro Audio DAC+AMP technology in combination with B&W P7 headphones and Sony SRS-D5 speakers and found it to be a great audio solution for GNU/Linux machines. They tweaked the PulseAudio settings to send the K5 Pro "high resolution" audio quality, but they did not find any audible difference between the defaults and the "tweaked" settings.

Original story by ひよこインフラてっく! (In Japanese). Translated by Chaekyung.
Published 2021-04-01, Originally published 2020-03-31.

Fiio K5 box.jpg
The Fiio K5 box.

The on-board audio on my main PC with Fedora 33, an Intel Hades NUC (NUC8i7HVK), does not work very well with Fedora. The audio device is recognized and it works most of the time, but it occasionally refuses to produce any sound at all.

I have tried various ways to solve the Hades NUC audio issues, but I have found no permanent fix. I therefore decided to buy the Fiio K5 external USB DAC/AMP adapter.

Fiio K5 Pro body.jpg
The Fiio K5

The Fiio K5 DAC/AMP is USB Audio Class 2.0 compliant, so it works on GNU/Linux machines as soon as you connect it without the need for proprietary drivers. When I connected it and turned the volume knob it turned blue and sound output was produced.

Fiio K5 Pro connected to a PC.jpg
Lights blue when K5 Pro is connected to a PC.

I use Sony SRS-D5 speakers and B&W P7 headphones. When I plugged the headphones into the K5 Pro the sound quality was immediately noticably better than it was when I plugged them directly into my PC. My impression is that the resolution is higher and sound separation is clearer. The "thin film" audio distortion on my on-board audio that I hadn't even noticed was there until I tried something better was gone, and I now became more immersed in my music.

If anything, it makes my B&W P7 headphones sound warmer and more like what they should sound like. The P7 has an impedance of just 22Ω, they are not hard-to-drive headphones like the 300Ω Sennheiser HD800, so there was no problems turning the volume up. Turning the volume knob more than half-way up if pointless with the "Gain" switch set at the lowest setting. More than that would either make your eardrums to explode or destroy your headphones.

I tried playing Apex Legends with this DAC+AMP/headphone combination, and it was surprisingly easier to locate enemy footsteps. I did not think it was that difficult with the headphones plugged directly into my PC, but it was definitively easier easier with the headphones plugged into the DAC/AMP.

I have always been a bit of a fan of headphones with solid localization. I tried a few "gaming" headsets with 7.1 channel sound when I was seriously playing FPS games. I used the SHURE headphones for a long time. I have also used the Sannheiser GAME ZERO and I really liked their excellent localization and sound separation.

The B&H P7 are American headphones. I bought mine in a mosquito shipping center where I was able to purchase them 5000 yen (about $45) below the typical sales-price. I think they provide great value for the price when they are combined with the K5 Pro DAC/AMP.

Enabling High Resolution Audio[edit]

The sticker on the K5 DAC+AMP claims it support high resolution up to 32bit output up to 768 kHz(!?).

"Main features

  • Asahi Kasei Electronics made DAC "AK4493EQ" loading. Both low noise, low distortion and high output
  • XMOS "XUF208" USB controller. Supports 768kHz / 32bit PCM and DSD512 (22MHz DSD )
  • 4-block analog amplifier section, carefully designed by advanced audio architecture
  • ADC volume Con allows fine volume adjustment
  • External power supply system with DC filter for safety, reliability and robustness
  • Gain adjustment function, coaxial digital / optical digital input terminal, RCA line output terminal installed"
K5 DAC+AMP marketing material

Personally, I do not feel the need for "high resolution" audio at all since I am satisfied with out Spotify sound with its highest sound quality setting. I decided to configure it anyway since "if I can set it to high resolution output then I should".

Step 1: Edit /etc/pulse/daemon.conf[edit]

You need to change the PulseAudio settings if you want it to output higher audio quality. Doing so is a good idea even if you are just using on-board audio since most on-board chips have, at minimum, supported 24-bit 48 kHz for more than a decade.

Look for the following lines in /etc/pulse/daemon.conf:

File: /etc/pulse/daemon.conf
;; default-sample-format = s16le
;; default-sample-rate = 44100

If you look at the above, you will see that the default (used unless otherwise configured even though they are commented) audio output is 16-bit 44 kHz audio. The color on the K5 Pro's LED changes depending on the sample rate of the sound source it is connected to. It was blue the first time I connected it to my PC.

I changed the commended lines in /etc/pulse/daemon.conf and uncommented them so they read:

File: /etc/pulse/daemon.conf
default-sample-format = s32le
default-sample-rate = 192000

I decided to go with 192 kHz / 32-bit for the time being. I do not think any high-resolution audio files are recorded with higher sampling-rates, so it seems pointless to specify anything higher.

Lovelyz Kei ProTip.jpg
TIP: You can see what your sound devices support with
grep -H 'rates' /proc/asound/card?/codec#0

and

grep -H 'bits' /proc/asound/card?/codec#0

You can use default-sample-format = float32le instead of s32le if your sound device supports 32-bit audio, but do keep in mind that PulseAudio may convert float32le to s32le before sending the audio to the sound device if you use that setting. Do not enable 32-bit audio unless you are sure your audio devices supports it, stick to s24le if 24-bit is your devices maximum. The freedesktop website has a list valid sample rate values.

Step 2: Restart PulseAudio[edit]

PulseAudio needs to be restarted for the new settings to take effect:

pulseaudio -k; pactl list short sinks

The output shown after restarting PulseAudio with that particular command will list the relevant audio quality settings so you can verify that your new settings are in effect.

$ pulseaudio -k; pactl list short sinks
0 alsa_output.usb-Razer_Inc_Razer_Seiren_X_UC1846L01202109-00.iec958-stereo module-alsa-card.c s16le 2ch 48000Hz IDLE
1 alsa_output.usb-GuangZhou_FiiO_Electronics_Co._ Ltd_FiiO_K5_Pro-00.analog-stereo module-alsa-card.c s32le 2ch 192000Hz IDLE

Additionally, you will see the LED light on the K5 Pro change to yellow when high resolution audio is enabled.

Fiio K5 with-yellow-led-light.jpg
K5 Pro LED lights yellow

Listening to a high resolution sound source[edit]

I bought the high resolution version of Yorushika's new album "Creation" from mora to test my new high resolution sound source. I listened to a few of the songs...

High quality flac source.png
96KHz FLAC sound source

...and I couldn't tell any difference between the "high resolution" PulseAudio configuration and the default PulseAudio configuration. This may have to do with the supported playback frequency on the B&W P7 headphones, they list "10Hz to 20 kHz" as the supported range so it kind of makes sense that the sound on them isn't improved when "high resolution" audio is enabled.

I had the same experience with music on Spotify, there does not seem to be any difference between the standard 320 Kbps Spotify sound files and the lossless FLAC versions. I had the same experience when I tried to compare a few other sound sources. Perhaps "high resolution" audio isn't really necessary for great-sounding audio?

I will perhaps be able to verify if there is any difference between "regular" audio and "high resolution" audio if I buy new headphones with "high resolution" support.

Postscript[edit]

If you did deep into the PulseAudio settings, you will find that there are some (possibly) useful parameters that can help improve audio quality. For example, it is possible to use float32le as default-sample-format according to some website called LinuxReviews.

However, the K5 Pro does not seem to work with float32le, it seems to only support s32le,

$ pacmd list-sinks | grep sample
        sample spec: s16le 2ch 48000Hz
        sample spec: s32le 2ch 192000Hz

Other websites have mentioned that setting avoid-resampling and resample-method is a good idea. However, those options are said to be "historically buggy and problematic" so there could be negative effects from changing them, so I left them with the default setting.

Setting resample-method to soxr-vhq is said to produce higher audio quality at the cost of higher CPU usage. I could not tell the difference between that setting and the default.

Colonel Chick ( id: hiyokotaisa )

Lovelyz Kei ProTip.jpg
TIP: The Japanese have seemingly failed to realize that resample-method only matters if there is a sample rate mismatch in the audio chain.

Consider this chain:

48 kHz audio source ▸ PulseAudio working at 48 kHz internally ▸ Audio device running at 48 kHz

There is no reason to convert the sample-rate anywhere in that chain, so the resample-method setting does not apply. However, if you play 44.1 kHz audio in the same chain, you get:

44.1 kHz audio source ▸ Sample rate conversion ▸ PulseAudio working at 48 kHz internally ▸ Audio device running at 48 kHz

It does, in theory, matter if you set resample-method to soxr-vhq (best) or speex-float-10 or speex-float-3 (horrible) when sample rate conversion actually takes place somewhere in the chain.


You can find the original article in Japanese at https://hiyoko-infratech.hateblo.jp/entry/2021/03/31/094213.

5.00
(2 votes)


avatar

Anonymous (7068558e)

12 months ago
Score 0
Would really have liked to see it used with Jack and latency measurements.
avatar

Anonymous (9936764bc1)

2 months ago
Score 0

I actually hear the difference on DT990 Pro 250 ohm with FIIO K5 Pro. I compare with ALC1220 and Tygr 300R which are descent combo. Youtube music is much better than Spotify. Definintely a great improvement in games. I just started and DAC is problematic in Windows and the same in Linux. It easily could switch to incompatible mode and won't work with Viber for example. Looks like it's better to set the highest settings you want statically and upscale/doswnscale

If you want to be sure everyhting works fine - connect DAC to android phone.
avatar

Anonymous (6eb63a9fcb)

one day 12 minutes ago
Score 0

Tried following the method suggested, but my sink stays at 48kHz for some reason:

$ grep default-sample /etc/pulse/daemon.conf

default-sample-format = s32le

default-sample-rate = 192000

$ pulseaudio -k; pactl list short sinks | grep FiiO

1 alsa_output.usb-GuangZhou_FiiO_Electronics_Co._Ltd_FiiO_K5_Pro-00.iec958-stereo module-alsa-card.c s32le 2ch 48000Hz IDLE

Also tried switching between analog and digital output in pulsemixer, but no change. Any ideas?
avatar

Anonymous (6eb63a9fcb)

21 hours 40 minutes ago
Score 0
Answering myself: after some searching, I found a suggestion to delete everything in ~/.config/pulse before running "pulseaudio -k", and that fixed it!
Add your comment
LinuxReviews welcomes all comments. If you do not want to be anonymous, register or log in. It is free.