Rio Receiver/Dell Audio Receiver kernel "tweaks"

What is it ?

The Rio Receiver is a wonderful device for playing audio files over the network. It suffers from one problem however that all similar products also suffer from, in that different audio files from different sources play back at different volume levels.

If you find yourself reaching for the volume button for each song, then this kernel patch is what you need. The extra code in this kernel monitors the volume of upcoming music and attempts to adjust the current volume to level out the changes in volume. Most of the time it does a pretty good job, but there are tracks where you can spot artifacts (usually evident by the volume "pumping") caused by the algorithm used.

The original VolAdj code was by Richard Lovejoy for the empeg/RioCar. I haven't done anything clever to Richard's code, I just tweaked it to work against the Receiver kernel. Any complaints concerning this kernel should go to me, any praise should go to Richard...

Installing the new kernel

Unfortunately installing a new kernel for the Receiver is not quite as easy as installing the kernel for the empeg/RioCar.

This is because the guys at empeg have made it clear that because of SonicBlue policy third parties are not allowed to distribute copies of the receiver.arf file that contains the Receiver's file system and kernel. I am however allowed to distribute custom versions of the kernel image itself, which you can use to patch your own copy of your receiver.arf file.

The receiver.arf file contains all the software that the Receiver runs, the Receiver reads the contents of the file across the network when it boots. The receiver.arf file lives in the Audio Receiver Manager program folder, which if you accepted the defaults during install will be "C:\Program Files\Audio Receiver".

Installing the new kernel using Windows

The easiest way of installing the new kernel on a Windows machine is using a tool called Receiver Tweaker which I have written specifically for this purpose.

Here is what you need to do:

That's it, when the Receiver boots it will be using the new kernel with the VolAdj software. The default settings that I have used for the VolAdj parameters are a little agressive at the moment, I hope to add a way of configuring them in future.

Installing the new kernel using a Linux/Unix machine

Here is how you do it using a separate Unix/Linux machine:

That's it, when the Receiver boots it will be using the new kernel with the VolAdj software. The default settings that I have used for the VolAdj parameters are a little agressive at the moment, I hope to add a way of configuring them in future.

Downloads

You only need the kernel zImage file, the patch file is for anyone who wants to build their own custom kernel.

File nameFile description
receiver-tweak-v1.zImageThe new kernel image
receiver-tweak-v1.patchA patch file for the new kernel against the Receiver kernel 1.03

Known issues

I suspect that my new kernel may have some instabilities. I have seen my Receiver reboot a few times since I started running the new kernel, mainly when hitting pause or changing the volume while the unit is coming out of standby. I haven't used my Receiver enough without the patched kernel to know whether this is caused by my changes or just existing bugs. If you see an increase in instability using my kernel then please let me know.

There is currently no way of turning the VolAdj code off or adjusting the settings used, I intend to add some way of doing this via the remote control in a future version.

Thanks to...

Well first of all thanks must go to Richard for producing the VolAdj patch in the first place. Thanks also to Jeff Mock for providing a pre-built copy of the tool chain needed to build the Receiver kernel (without which I would have given up at the first hurdle, compiling a whole cross-compiler tool chain is not fun). Finally, thanks to Tony Fabris for testing the first version of this patch to make sure I wasn't imagining that the whole thing was working properly...

Home