JReceiver: Rio Install


This is a tutorial describing how to install and configure support for a Rio Receiver MP3 player hosted by the JReceiver Server.

Prerequisite Installation

This is the SECOND part of a two-part install. You must first install the JReceiver Server if you have not done so already and be successfully streaming MP3s to a desktop player. The Server installation is described here: server-install.

Technical Capability

Following the procedures described in this tutorial should be within the capabilities of a 'technical' computer user -- i.e., anyone who has successfully installed and configured their operating system. (If you are a non-technical computer user, you'll probably want to use the Windows-based 'Audio Server' software on the CD-ROM provided with the Rio Receiver.)


Hosting a Rio Receiver relies on both system and application services:
Rio Receiver - Rio Driver - JRec Server Diagram

The Rio Receiver relies on three system services: DHCP for IP-address assignment; NFS for net-booting; and a webserver to obtain menus and mpeg audio.

Web application services are implemented as servlets, packaged in .war files and run in a servlet container such as Jetty. There are two webapps that the Rio relies upon: the Rio Driver (jrec_rio.war) and the JReceiver Server (jrec_serv.war).

The Rio Driver (jrec_rio.war) provides several services to the Rio:

As with the server-install tutorial, the emphasis is presently on Linux installation. Procedures for other operating systems will be included in a future release. (Please contribute if you can. Thanks.)

NEW! Windows Users take note: Dave Brand has created a Java-only Windows boot package for the Rio. It can be found here and may be incorporated into this Rio driver distribution at some point.

Note that this document describes setting up the Rio for a standard ethernet connection. I'm not sure it's possible to support the PNA phone-cable network from a Linux host, as Linux drivers for the PNA adapter are probably not available. (It may be possible to do so on a Windows host.)


If you have a question, it may already be answered here: rio faq

There is also a troubleshooting help file located here: rio trouble

You can find support for installation and usage at: http://groups.yahoo.com/group/jreceiver_user. No registration required to browse the message archives.

If you have a question or experience a problem, please post to this list (req. free registration) rather than contacting the author directly. The author will be monitoring it along with other users who can probably answer your question more promptly.


Follow these instructions ENTIRELY AT YOUR OWN RISK. While a good faith effort has been made to ensure that these instructions are accurate, you must nevertheless take full responsibility should you damage your system or your network. As a precautionary measure with any installation, you should first back up all your critical data and configuration files.

Platform-specific Requirements


Kernel Support for NFS

You may need kernel support for NFS and must specify so during installation from a packaged Linux distribution or when recompiling the kernel.

For example, installing Debian 2.2R3 (Potato), I chose a 'Simple' install with the following kernel module specified:

 [x] NFS Server Support (NFSD)

Note that it may be possible to install an NFS server that runs entirely in user-space, thus avoiding any kernel support.

IP Address

This document describes the assignment of a fixed and predetermined IP address to the Rio Receiver for reasons stated in rio faq. In this document the following IP address is used
If this IP (or subnet) won't work with your network configuration, you must select another. Of course, you must adapt the remainder of this document accordingly.

DHCP Server Install

The Rio Receiver requires a DHCP server to assign it an IP address. If you already have a DHCP server installed, you can skip this step.


The Debian distribution provides a DHCP server package. It can be installed using the Debian package manager:
    apt-get install dhcp


The SuSE distribution provides a DHCP server package. It can be installed by editing /etc/rc.config (case may be significant)
Add a reference to your network interface:
with eth0 being defined as the first active interface. Be aware that interface numbers are allocated first to the kernel and then to the modules. After editing rc.config run SuSEconfig to update all relevant files and services.


Redhat provides a package, dhcp-XXXX.i386.rpm.

More details on Redhat DHCP installation can be found in the message archives at the jreceiver_user Yahoo Group.


Note: You may have to rebuild your kernel with the common CONFIG_FILTER and CONFIG_PACKET options. The daemon will likely complain if you don't.
    emerge dhcp

[Windows NT/XP]

Still waiting on a volunteer to write up docs for Rio installation.


Still waiting on a volunteer to write up Mac OS X docs for Rio installation.

One user has pointed out that the Fink UNIX tools were useful to installation.

DHCP Configuration (Part I)

The Rio Receiver requires a DHCP server to assign it an IP address. If you already have a DHCP server configured, you can skip this step.
The provided configuration file /etc/dhcpd.conf may have examples and settings that don't apply to your network configuration. If so, simply rename the file to something else to get it out of the way.
    mv /etc/dhcpd.conf /etc/original_dhcpd.conf
Create a /etc/dhcpd.conf containing a typical allocation of IPs for your subnet (you can restrict this later if you wish)
    subnet netmask {
        range;    # original (115-160)


You will have to enable the DHCP init script. To do so, edit /etc/init.d/dhcp and change
Start the DHCP server to test it
    /etc/init.d/dhcp start


Use SuSEconfig to update the boot time init scripts for DHCP.


    rc-update add dhcp default
    /etc/init.d/dhcp start

Find Rio's MAC


If you already know your Rio's MAC address, you can skip this step.

To find the Rio's MAC (aka ethernet) address, first unplug the Rio's power cord and connect its ethernet cable to your network hub.
The easiest way to see the MAC seems to be to run the DHCP daemon in 'debug' mode, as in
    dhcpd -d
Power on your Rio and watch for a message like this
    DHCPDISCOVER from 00:90:00:11:5f:cc () via eth0



is the MAC address. Yours will be similar. Hit Ctrl-C to stop dhcpd.

Alternatively you can check the system log for the message.

TIP: once you know your Rio's MAC, write it in permanent marker on the base of the unit.

DHCP Configuration (Part II)

Here you'll assign the Rio's MAC to the fixed IP address.
Update your /etc/dhcpd.conf and add
    host rio_receiver {
        hardware ethernet 00:90:00:11:5f:cc;     # MAC
        fixed-address;           # Rio's assigned IP
        max-lease-time 0;
        default-lease-time 0;

replacing the sample MAC address with your own. Restart the dhcp daemon

    /etc/init.d/dhcp restart

And you're set.

Additional DHCP Configuration

You may need to adjust the DHCP configuration further to get it working with your network.

The full documentation can be read with:

    man dhcpd.conf

In my (Reed's) situation, the parameters shown below were added by an admin friend to get things working optimally:

    ddns-update-style ad-hoc;
    option subnet-mask;
    option domain-name-servers;
    option routers;

Note that these settings may or may not apply to your particular situation but could help troubleshoot a problem -- for example, if attached systems suddenly cannot resolve names.

Obtaining the ARF

There's a tar file by the name of 'receiver.arf' hidden within the Rio's Windows distribution.

Unfortuately there is no known way to extract the file from the .cab apart from temporarily installing the Windows host and grabbing the receiver.arf.

<MILD_RANT>Perhaps Sonic Blue/Empeg will see fit to support alternative hosts as JRec and provide this file outside a Windows-only archive in a future release.</MILD_RANT>

Note that receiver.arf contains the display app, which is presumably copyrighted by Sonic Blue, thus we cannot post it at the JReceiver site.

NFS Server Install

The Rio requires an NFS share from which to boot.

Begin by making the following directory:


with the commands

    mkdir /tftpboot
    mkdir /tftpboot/

and extract the 'receiver.arf' tar into the directory

    cd /tftpboot/
    tar fvx receiver.arf

broaden the read permissions

    chmod -R u+r,o+r /tftpboot

Add the following line to your /etc/exports

    /tftpboot/       *(ro,sync,insecure,all_squash)


Install the NFS server package, if not installed

    apt-get install nfs-server

It should start the nfsd daemon automatically.


Activate the NFS server package, if not done so yet in /etc/rc.config
And run SuSEconfig to activate the server.


An NFS daemon is provided a package, nfs-utils-XXXX.i386.rpm.


NFS server and client can be installed with
    emerge nfs-utils
    rc-update add nfs default
    /etc/init.d/nfs start

NFS Server Test

Test out your NFS installation by attempting to mount, preferably from another system.
    mkdir /rio_temp
    mount -t nfs HOSTNAME:/tftpboot/ /rio_temp
    ls /rio_temp

where HOSTNAME is your server IP and you should see

    bin  dev  empeg  etc  il-binary.o  proc  sbin  tmp  zImage

un-mount with

    umount /rio_temp
    rmdir /rio_temp

Extract Distribution

Download jreceiver-rio-0.2.5.tar.gz and extract
    cd /usr/local
    tar fvxz /download/jreceiver-rio-0.2.5

Enable Web Application

and UN-comment the Rio configuration:
<!-- *** jrec_rio.war - RIO DRIVER ***
Fix up the leading and trailing lines so that you have
<!-- *** jrec_rio.war - RIO DRIVER *** --&rt;

Restart Jetty to enable the driver.


Some tests to ensure a working configuration.
Open a second terminal window to monitor Jetty's log as we restart it
    tail -f $JETTY_HOME/logs/*
And then restart Jetty (using the JRec startu script)
    $JREC_HOME/bin/jrec_jetty.sh restart
Try testing the forwarding from the root context
where HOSTNAME is your server name or IP. You should see a list of strings: fid, title, artist, etc.

Next try booting your Rio. It should eventually say "Found Music Server" followed by the main display. Try playing some tunes. If so, congrats, you've made it.

As mentioned earlier, if you have problems, check out rio trouble.

Optional Feature: Control the Rio

With release 0.2.0, you can now control the Rio via the Status Panel window. There are two (2) different ways of doing this.

via DisplayServer Patch

Once you get everything mentioned above working for your Rio, you may want to consider installing Frank van Gestel's DisplayServer patch. See here to download the patch and a README for instructions on installing it.

To enable JReceiver support for this patch, click on the checkbox in Rio Settings and save. You should see control buttons for each Rio in the Status Panel.

A cautionary note: this is still a bit flakey as the DisplayServer host seems to drop the connection with the Rio driver and refuse a reconnect. This forces the user to reboot the Rio to get control working again.

Recommended procedure for rebooting the Rio: three(3) rapid presses of the power button on the front of the unit should suffice.

If anyone can diagnose this further and provide a fix, you'd be a hero!

via an IR Emitter

A driver is available to control the Rio (and other devices) with the Redrat2 IR Emitter.

For details on installation and configuration, see here.


With thanks to Rob van der Valk for his SuSE tips! Also thanks to Tyson Kam, Victor Brilon, James Dunn and anybody else who I may have inadvertently robbed of credit.

Copyright © 2001-2002, Reed Esau & the JReceiver Project (http://jreceiver.sourceforge.net), All Rights Reserved