Hipster Handbook - Using RDX Quikstor media

Originally contributed by Bryan Iotti on the OpenIndiana Wiki.

What is RDX?

RDX is essentially a 2.5" SATA disk enclosed in a shockproof, electrostatically shielded container. It is a popular and affordable type of backup media that by design allows random access, not possible on tape drives. For more information, visit RDX Technology.

Usage with OpenIndiana

SATA RDX readers work fine with OpenIndiana 151a8 (USB not tested, please add information if available). The system will recognize a reader out of the box and ZFS works fine with the inserted disks. The Hardware Abstraction Layer (hal) however doesn't know that this cartridge is removable.

Modifications to the system

To allow it to be ejected, add a file (named along the lines of 10-rdx.fdi) to /etc/hal/fdi/preprobe/30user with content like the following:

<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
 <device>
   <match key="info.udi" string="/org/freedesktop/Hal/devices/pci_0_0/pci_ide_1f_2/ide_0_2/sd20/sd20">
   <merge key="storage.removable" type="bool">true</merge>
   <merge key="storage.hotpluggable" type="bool">true</merge>
   <merge key="storage.requires_eject" type="bool">true</merge>
  </match>
 </device>
</deviceinfo>

The "match" key is the only system-specific item. You could alternatively use the info.product key and match an 'RDX' string.

Now, restart the hal service:

pfexec svcadm disable hal
pfexec svcadm enable hal

When you need to eject the RDX, use pfexec eject /dev/dsk/cXtXdX where cXtXdX is your specific drive address.

What if I can't/don't want to modify my system?

You can either:

Debugging issues with eject and hal

The Hardware Abstraction Layer can be troublesome to get working properly. Here are some tidbits that are useful for debugging purposes: The lshal command that dumps "what HAL thinks about a device". Its output can be lengthy, but it's invaluable when finding out what keys one should match and merge. The hal daemon can be run from the command line in debug mode, showing what happens when you plug in a new device:

svcadm disable hal
pfexec /usr/lib/hal/hald --daemon=no --verbose=yes

Suggested reading

What works

What doesn't work