============
Diamonds Rio
============

Copyright (C) 1999, 2000 Bruce Tenison

Portions Copyright (C) 1999, 2000 David Nelson

Thanks to David Nelson for guidance and the usage of the scanner.txt
and scanner.c files to model our driver and this informative file.

Mar. 2, 2000

Changes
=======

- Initial Revision


Overview
========

This README will address issues regarding how to configure the kernel
to access a RIO 500 mp3 player.
Before I explain how to use this to access the Rio500 please be warned:

.. warning::

   Please note that this software is still under development.  The authors
   are in no way responsible for any damage that may occur, no matter how
   inconsequential.

It seems that the Rio has a problem when sending .mp3 with low batteries.
I suggest when the batteries are low and you want to transfer stuff that you
replace it with a fresh one. In my case, what happened is I lost two 16kb
blocks (they are no longer usable to store information to it). But I don't
know if that's normal or not; it could simply be a problem with the flash
memory.

In an extreme case, I left my Rio playing overnight and the batteries wore
down to nothing and appear to have corrupted the flash memory. My RIO
needed to be replaced as a result.  Diamond tech support is aware of the
problem.  Do NOT allow your batteries to wear down to nothing before
changing them.  It appears RIO 500 firmware does not handle low battery
power well at all.

On systems with OHCI controllers, the kernel OHCI code appears to have
power on problems with some chipsets.  If you are having problems
connecting to your RIO 500, try turning it on first and then plugging it
into the USB cable.

Contact Information
-------------------

   The main page for the project is hosted at sourceforge.net in the following
   URL: <http://rio500.sourceforge.net>. You can also go to the project's
   sourceforge home page at: <http://sourceforge.net/projects/rio500/>.
   There is also a mailing list: rio500-users@lists.sourceforge.net

Authors
-------

Most of the code was written by Cesar Miquel <miquel@df.uba.ar>. Keith
Clayton <kclayton@jps.net> is incharge of the PPC port and making sure
things work there. Bruce Tenison <btenison@dibbs.net> is adding support
for .fon files and also does testing. The program will mostly sure be
re-written and Pete Ikusz along with the rest will re-design it. I would
also like to thank Tri Nguyen <tmn_3022000@hotmail.com> who provided use
with some important information regarding the communication with the Rio.

Additional Information and userspace tools

	http://rio500.sourceforge.net/


Requirements
============

A host with a USB port.  Ideally, either a UHCI (Intel) or OHCI
(Compaq and others) hardware port should work.

A Linux development kernel (2.3.x) with USB support enabled or a
backported version to linux-2.2.x.  See http://www.linux-usb.org for
more information on accomplishing this.

A Linux kernel with RIO 500 support enabled.

'lspci' which is only needed to determine the type of USB hardware
available in your machine.

Configuration

Using `lspci -v`, determine the type of USB hardware available.

  If you see something like::

    USB Controller: ......
    Flags: .....
    I/O ports at ....

  Then you have a UHCI based controller.

  If you see something like::

     USB Controller: .....
     Flags: ....
     Memory at .....

  Then you have a OHCI based controller.

Using `make menuconfig` or your preferred method for configuring the
kernel, select 'Support for USB', 'OHCI/UHCI' depending on your
hardware (determined from the steps above), 'USB Diamond Rio500 support', and
'Preliminary USB device filesystem'.  Compile and install the modules
(you may need to execute `depmod -a` to update the module
dependencies).

Add a device for the USB rio500::

  mknod /dev/usb/rio500 c 180 64

Set appropriate permissions for /dev/usb/rio500 (don't forget about
group and world permissions).  Both read and write permissions are
required for proper operation.

Load the appropriate modules (if compiled as modules):

  OHCI::

    modprobe usbcore
    modprobe usb-ohci
    modprobe rio500

  UHCI::

    modprobe usbcore
    modprobe usb-uhci  (or uhci)
    modprobe rio500

That's it.  The Rio500 Utils at: http://rio500.sourceforge.net should
be able to access the rio500.

Bugs
====

If you encounter any problems feel free to drop me an email.

Bruce Tenison
btenison@dibbs.net
