USB

Plug it into your computer. RISC OS finds it.

An emulated OHCI controller on its own expansion card, with four ports. Hand it a device attached to your own machine and RISC OS enumerates the real thing, reading its descriptors, its strings and its serial number over the emulated bus, and naming it as itself.

In the current release, and verified on Linux.

What you get

Real hardware, on the other side of the bus

USB the moment the card is fitted

The card's ROM carries RISC OS Open's own USB stack, so there is nothing to install in the guest, nothing to load and nothing to configure. Fit the card, start the machine, and the bus is there.

Keyboards and mice, straight away

HID is built into the stack, so a keyboard or a mouse works from the moment you attach it. Your own keyboard, through the emulated bus, driven by RISC OS's own driver.

Memory sticks that mount and open

The ROM carries the SCSI modules and MultiFS too, so a stick appears on the icon bar under its own volume name and opens in the Filer. The files on it are the files that were on it: no reformatting, no copying through the host first.

Cameras genuinely stream

Isochronous transfers are implemented with four in flight, so a webcam's packets arrive in the guest a frame at a time, at the rate the device sends them. The hard part, the transport an application would otherwise have to invent, is done.

Devices come and go

Attach or detach something, physically or from the settings dialogue, and the guest is told rather than left to find out. A stick's icon appears and disappears within about a second, as it would on real hardware.

Descriptors, not approximations

Nothing is faked or substituted. What RISC OS reads is what the device says about itself, which is why it shows up under its real name with its real serial number, and why a driver written for the hardware behaves as it would on the hardware.

Read more

Verified on Linux; not yet tested on Windows or macOS. The controller is full speed, and hubs are not passed through. On Linux a device belongs to root until a udev rule says otherwise, and the documentation gives the rule.