RPI 4B streamer + Topping E30 or Allo Boss 2 player

Have you tried real time kernel?
If you use mpd, you don't really require a RT kernel. mpd can play music in real-time mode. All you need is to use any of the standard mpd client. They all have option to tag your music in the mpd library to play with realtime priority.

NOTE1: To do this you have to use any standard mpd client and not any of the distributions like moode, dietpi, volumio. These distributions are good for vast majority of the users who need an interface to configuring things without knowing linux. But If you use these distributions you are limited to a tiny fraction of the features that the Music Player Daemon comes with. I use cantata player on my macbook, fedora laptop, mac mini and have marked many of my high quality files to play in real-time mode.

NOTE2:There is a rumor that real-time scheduling improves audio quality. That is not true. All it does is reduce the probability of skipping (audio buffer xruns) when the computer is under heavy load.
1649956227879.png
 
Last edited:
The cpu load of moode on Pi4 is less than 10% (all cores) and it uses less than 120 MB of memory. This is with no resampler/dsp/equalizers enabled
 
If you use mpd, you don't really require a RT kernel. mpd can play music in real-time mode. All you need is to use any of the standard mpd client. They all have option to tag your music in the mpd library to play with realtime priority.

NOTE1: To do this you have to use any standard mpd client and not any of the distributions like moode, dietpi, volumio. These distributions are good for vast majority of the users who need an interface to configuring things without knowing linux. But If you use these distributions you are limited to a tiny fraction of the features that the Music Player Daemon comes with. I use cantata player on my macbook, fedora laptop, mac mini and have marked many of my high quality files to play in real-time mode.

NOTE2:There is a rumor that real-time scheduling improves audio quality. That is not true. All it does is reduce the probability of skipping (audio buffer xruns) when the computer is under heavy load.
View attachment 68705
Thanks this is very informative, I use Raspios bullseye which is debian 11 with mpd and management via MALP. While going through Audiophile linux (ap-linux) it uses preempt rt and says it has benifits
 
Thanks this is very informative, I use Raspios bullseye which is debian 11 with mpd and management via MALP.
Cool. That will allow you to tweak the mpd configuration to anything you want. If you use any of the so called distributions (volumio, moode, etc), they keep on overwriting the mpd.conf and obilerating your changes. I too use MALP when my laptop is not around and have my android mobile with me.

While going through Audiophile linux (ap-linux) it uses preempt rt and says it has benifits
You can try it. It is a paid distribution IIRC but comes with support. There was someone from this forum who had required help in installing ap-linux on his macbook pro and we had quite a few conversations through IM. He was able to set it up after few hits and misses.
 
You can try it. It is a paid distribution IIRC but comes with support. There was someone from this forum who had required help in installing ap-linux on his macbook pro and we had quite a few conversations through IM. He was able to set it up after few hits and misses.

The stopper for me is they don't have one for arm nor the dalphine. I am happy with how mpd works, compared to LMS mpd needs update for repo when new files are added and which is a time consuming process.

I use usb output from USBridge signature and I find it lacks compare to my laptop with spdif output
 
Thanks this is very informative, I use Raspios bullseye which is debian 11 with mpd and management via MALP.
Since you are using bullseye and the os supplied mpd, you can do the following to see if it improves your audio

1. login to your RPI.
2. Run the following command to get the pid of mpd
ps -ef | grep mpd
3. You will get an output like this (e.g. in this case 4176 is the pid of mpd
mbhangui 4176 1 1 09:34 ? 00:00:00 /usr/bin/mpd --systemd
4. Now change the scheduling priorit of mpd to realtime by executing the chrt command
chrt -p 99 4176
That will change mpd to run with rtprio. You can confirm by running the folloowing ps command. It will show 99 (which is realtime priority)
/bin/ps ax -eo pid,pri,rtprio,args|grep mpd
e.g.
4176 139 99 /usr/bin/mpd --systemd
 
The stopper for me is they don't have one for arm nor the dalphine. I am happy with how mpd works, compared to LMS mpd needs update for repo when new files are added and which is a time consuming process.
Which update are you talking about. Are you talking about adding new music files. mpd takes just few milliseconds to update it and it happens automatically if you have the following in your /etc/mpd.conf.
#
# This setting enables automatic update of MPD's database when files in
# music_directory are changed.
#
auto_update "yes"
#
# Limit the depth of the directories being watched, 0 means only watch
# the music directory itself. There is no limit by default.
#
#auto_update_depth "3"

You can see this for yourself. Just run tail -f /var/log/mpd.log on one terminal and watch what happens if you add any music to your mpd folder
 
Which update are you talking about. Are you talking about adding new music files. mpd takes just few milliseconds to update it and it happens automatically if you have the following in your /etc/mpd.conf.


You can see this for yourself. Just run tail -f /var/log/mpd.log on one terminal and watch what happens if you add any music to your mpd folder
I have this and even the depth, could be my files are coming over network mount via nfs makes it slow
 
Since you are using bullseye and the os supplied mpd, you can do the following to see if it improves your audio

1. login to your RPI.
2. Run the following command to get the pid of mpd

3. You will get an output like this (e.g. in this case 4176 is the pid of mpd

4. Now change the scheduling priorit of mpd to realtime by executing the chrt command

That will change mpd to run with rtprio. You can confirm by running the folloowing ps command. It will show 99 (which is realtime priority)

e.g.
let me try this
 
I have this and even the depth, could be my files are coming over network mount via nfs makes it slow
If this is there in mpd.conf, you don't have to click anything anywhere to update the Music Repo (unless you are clicking some option somehwhere which issues the rescan command to mpd.

NFS is fast. I use it. Have a 4 Tb hard disk connected to a RPI4 which acts as my NFS server.
Your nfs, is it the UNIX NFS? I mean the NFS protocol made originally by Sun Microsystem. To which machine is the hard disk mounted. Is it Linux? If it is Linux and still slow, it is probably your /etc/fstab on the server where the disk is mounted or probably your client mount option on your raspberry pi.

If it is windows, then you are probably using Samba to mount a NTFS file system. It will be slow. But even if it is NTFS, there are mount options that can be used to make it fast. The following command on your raspberry pi will show all the mounted disks and the mount options used
 
If this is there in mpd.conf, you don't have to click anything anywhere to update the Music Repo (unless you are clicking some option somehwhere which issues the rescan command to mpd.

NFS is fast. I use it. Have a 4 Tb hard disk connected to a RPI4 which acts as my NFS server.
Your nfs, is it the UNIX NFS? I mean the NFS protocol made originally by Sun Microsystem. To which machine is the hard disk mounted. Is it Linux? If it is Linux and still slow, it is probably your /etc/fstab on the server where the disk is mounted or probably your client mount option on your raspberry pi.

If it is windows, then you are probably using Samba to mount a NTFS file system. It will be slow. But even if it is NTFS, there are mount options that can be used to make it fast. The following command on your raspberry pi will show all the mounted disks and the mount options used
I have a raspberry pi 3b+ with ubuntu server with NFS server, wifi hotspot and ethernet(IP forwarding) going to usbridge has nfs client. let me try appending some options for nfs client, i have kept just default 0 0
 
I have a raspberry pi 3b+ with ubuntu server with NFS server, wifi hotspot and ethernet(IP forwarding) going to usbridge has nfs client. let me try appending some options for nfs client, i have kept just default 0 0

RPI3B+ doesn't have a USB 3.0. So your hard disk transfer rate would be slow, but still should be good enough for music playback. That should be good enough. But 0 0 is dangerous. It means when you boot, there is no fsck that is happening on the disk. This is what I have on my RPI4 /etc/fstab. I have exactly the same scenario like you. My usbridge is the client and my RPI4 is the NFS server. UUID is what you get from the command blkid disk_dev_name
UUID=20bcc800-9dce-4734-947d-6d760b36a4de /home/pi/MDrive ext4 defaults,noatime,noauto,x-systemd.automount 0 2

EDIT: Sorry, I forgot to add explanations
1. The fstab entries have 6 field. The 4th field are the options. Multiple options can be provided as comma separated list. The most important option is the noatime option. This skips file system update of access time of files whenever a file is listed. This happens all the time and you really don't need access times unless you are runnng a top secret server where you need to know when was the file last accessed. The sixth field affects filesystem check of the disk during boot. 0 disables it. 1 is used for the root filesystem. 2 should be used for non-root filesystems. This field is the fsck pass number. The file system check can be done in 2 passes so that the machine boots up fast.

Since you have never done a filesystem check, you should do it manually once.
.e.g

fsck -y /dev/xxxx

where /dev/xxx refers to your hard disk. The df command will show you that.
 
Last edited:
RPI3B+ doesn't have a USB 3.0. So your hard disk transfer rate would be slow, but still should be good enough for music playback. That should be good enough. But 0 0 is dangerous. It means when you boot, there is no fsck that is happening on the disk. This is what I have on my RPI4 /etc/fstab. I have exactly the same scenario like you. My usbridge is the client and my RPI4 is the NFS server. UUID is what you get from the command blkid disk_dev_name


EDIT: Sorry, I forgot to add explanations
1. The fstab entries have 6 field. The 4th field are the options. Multiple options can be provided as comma separated list. The most important option is the noatime option. This skips file system update of access time of files whenever a file is listed. This happens all the time and you really don't need access times unless you are runnng a top secret server where you need to know when was the file last accessed. The sixth field affects filesystem check of the disk during boot. 0 disables it. 1 is used for the root filesystem. 2 should be used for non-root filesystems. This field is the fsck pass number. The file system check can be done in 2 passes so that the machine boots up fast.

Since you have never done a filesystem check, you should do it manually once.
.e.g

fsck -y /dev/xxxx

where /dev/xxx refers to your hard disk. The df command will show you that.
My FS are NTFS. I have tweaked at server side mount, let me try with client side mount now.
 
My FS are NTFS. I have tweaked at server side mount, let me try with client side mount now.
Some day in the future see if you can move to ext4. NTFS is really not the good FS to be used on Linux. Even the linux NTFS driver is an experimental driver from ages ago.

But you can do this to make the database update fast.

  1. Install mpd on the RPI 3b+ which has the hard disk connect. This mpd will not be used for playing database, but will be used only to provide the mpd database on the network to all mpd clients that you install (e.g. usbridge). When music files are added this mpd will update the database locally. It will not use NFS since the hard disk is local to this mpd instance. To do this you have to do the following
    • install mpd using apt-get
    • configure /etc/mpd.conf for what is known as 'simple database plugin'. Look at this file on line 189. Don't forget to have the usual music_directory in /etc/mpd.conf. This file is my actual RPI4 server which acts as the NFS server. This RPI4 has the allo piano and kali cards connected to the RPI board. But I don't use this RPI for playing music.
  2. On the usbridge you already have mpd installed with configuration in /etc/mpd.conf. You need to configure the proxy database plugin so that usbridge will not update mpd database locally but will fetch it from your RPI3b+ server. Look at this file on line 187. This is my usbridge mpd.conf. You will still need to mount the NTFS disk on NFS though.
  3. On any other client (laptop, other RPI, etc) just do the same thing that was done in point 2 above.
If you do the above, database will be updated only one one location which is your RPI3b+ NFS server. Rest all mpd client will use the proxy database of the mpd to show you your music metadata.

All my config is available here. You can take help by looking at them. In case of any doubt, ping me.
 
Some day in the future see if you can move to ext4. NTFS is really not the good FS to be used on Linux. Even the linux NTFS driver is an experimental driver from ages ago.

But you can do this to make the database update fast.

  1. Install mpd on the RPI 3b+ which has the hard disk connect. This mpd will not be used for playing database, but will be used only to provide the mpd database on the network to all mpd clients that you install (e.g. usbridge). When music files are added this mpd will update the database locally. It will not use NFS since the hard disk is local to this mpd instance. To do this you have to do the following
    • install mpd using apt-get
    • configure /etc/mpd.conf for what is known as 'simple database plugin'. Look at this file on line 189. Don't forget to have the usual music_directory in /etc/mpd.conf. This file is my actual RPI4 server which acts as the NFS server. This RPI4 has the allo piano and kali cards connected to the RPI board. But I don't use this RPI for playing music.
  2. On the usbridge you already have mpd installed with configuration in /etc/mpd.conf. You need to configure the proxy database plugin so that usbridge will not update mpd database locally but will fetch it from your RPI3b+ server. Look at this file on line 187. This is my usbridge mpd.conf. You will still need to mount the NTFS disk on NFS though.
  3. On any other client (laptop, other RPI, etc) just do the same thing that was done in point 2 above.
If you do the above, database will be updated only one one location which is your RPI3b+ NFS server. Rest all mpd client will use the proxy database of the mpd to show you your music metadata.

All my config is available here. You can take help by looking at them. In case of any doubt, ping me.
Made the changes.. now need to figure out a connector for I2S output to dac. any pointer for it?
 
Nice to hear it worked for you.. please describe your listening impression compared to mpd player.
Thank you for guiding me through. I don’t have golden ears. I think, the sound is more musical with slightly rounded highs. The bass is a bit less comparatively. Also, I feel that the sound is a little bit veiled. Moode had slightly more rich presentation, I think.
The issue is that the player stops or skips to next track after playing about 90% of the song.
 
Thank you for guiding me through. I don’t have golden ears. I think, the sound is more musical with slightly rounded highs. The bass is a bit less comparatively. Also, I feel that the sound is a little bit veiled. Moode had slightly more rich presentation, I think.
The issue is that the player stops or skips to next track after playing about 90% of the song.
Thanks for sharing your impressions. Yes I too felt like what you have mentioned, need to pair with right components though. When I tried with NAD c320 bee, the amp itself is on the warmer side and LMS/Squeezlite made it even warmer and the total presentation became kind of "muted". So I have moved back to Moode, and thats what I use now. But it was nice to have with my Yamaha amp, which is slightly on the sharper side.

The issue you have mentioned is new to me, so can't say a fix for that. But a google search resulted the following link, some people able to fix by updating LMS or even going back to older version. But some one able to fix it by disabling some format conversion mentioned there.. have a try it may work for you.
 
Thanks for sharing your impressions. Yes I too felt like what you have mentioned, need to pair with right components though. When I tried with NAD c320 bee, the amp itself is on the warmer side and LMS/Squeezlite made it even warmer and the total presentation became kind of "muted". So I have moved back to Moode, and thats what I use now. But it was nice to have with my Yamaha amp, which is slightly on the sharper side.

The issue you have mentioned is new to me, so can't say a fix for that. But a google search resulted the following link, some people able to fix by updating LMS or even going back to older version. But some one able to fix it by disabling some format conversion mentioned there.. have a try it may work for you.
Yes, I too believe moode and NAD goes hand in hand.
Will check the link you've posted. Thank you :)
 
For excellent sound that won't break the bank, the 5 Star Award Winning Wharfedale Diamond 12.1 Bookshelf Speakers is the one to consider!
Back
Top