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


  • Initial Revision


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:


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 in the following URL: <>. You can also go to the project's sourceforge home page at: <>. There is also a mailing list:


Most of the code was written by Cesar Miquel <>. Keith Clayton <> is incharge of the PPC port and making sure things work there. Bruce Tenison <> 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 <> who provided use with some important information regarding the communication with the Rio.

Additional Information and userspace tools


A host with a USB port running a Linux kernel with RIO 500 support enabled.

The driver is a module called rio500, which should be automatically loaded as you plug in your device. If that fails you can manually load it with

modprobe rio500

Udev should automatically create a device node as soon as plug in your device. If that fails, you can manually add a device for the USB rio500:

mknod /dev/usb/rio500 c 180 64

In that case, 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.

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


You can use only a single rio500 device at a time with your computer.


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

Bruce Tenison