Authors: B.D.,V.S.

© 2003 Simtec Electronics

This release is primarily to merge the work that has been done on USB2.0 support for the embedded build. The merge brings the embedded and RISC OS builds into line with each other, and also removes old structure fields that where in the original releases that are no longer relevant.

All efforts have been made to keep backwards compatibility with the USB1.1 compliant releases, and old code should work as-is. It is important though that all driver code is compiled against the new library to check that old fields are not being accessed, as these have been removed and recycled in this release.

The new API code provides support for new drivers to run without the new capability on older cores, and therefore some care should be taken to ensure that any NULL returns, or errors from new calls or macros be taken to mean these features are not available, and that the original structures can be used as fallback.

USB2 compatibility

The API has been extended to allow the use of USB2 devices in the future. These changes have been designed to be backwards compatible, so that no USB1.1 device driver should need to be modified to work with either the old or new versions of the API.

The USB2 definitions are available in the new release are included in an separate include directory, and very few modifications have been made to the usb/* include files. These provide access to the extended information available to USB2 compliant devices.

32Bit RISC OS Build

The Modules are all now built with StubsG this fixes problems with loading USB and the use of the newer SharedCLibrary that some applications seem to need.

The 32bit release modules are NOT fully 32bit clean, and have not been tested on any 32bit only computer. Do not expect these to work fully in any 32bit only machine.

This release includes not only 26bit builds of the library files but also 32bit (APCS v3, 32bit) builds, include in !USBLib.lib32.

The 32bit library build is available for anyone building 32bit applications. The link files contain the same routines as their 26bit counterparts.

General Updates and bug fixes

The following updates are included in the release:

Development files changes



USB2 header files

The new USB2 header files are provided for applications that wish to take advantage of the extended information provided by the newer cores. This information may be present even if the device itself conforms to pre USB2.0 specifications, as the new system will try and use the new API calls in preference to the older USB1.1 calls.

The usb2/*.h header files can be used in preference to the older usb/*.h header files as they will include the older variants as needed. Care should be taken to ensure that the build system has the correct header dependency information.


This is the main header file for use when accessing the USB2 extensions. This should be included before usb2/structs.h.


Provides various definitions, including the new USB2 descriptor definitions. This is similar to usb/defs.h. The following items have been added:


Definitions of the new USB2 structures, including the extended device and endpoint structures, usb2_device_t and usb2_endpoint_t.


Support for using the extended usb2_device_t structure, including verification macros (usb_is_v2dev) and usb_dev_getver (return the USB revision number this device actually conforms to.

Since the two structures are compatible, it is possible to switch between an usb2_device_t and an usb_device_t, and macros are provided to do this. The usb_get_v2dev macro will convert a pointer to usb_device_t into an pointer to usb2_device_t, if it is an V2 structure (NULL will be returned if not.)

Note, it is possible to have an USB1.1 device registered with an USB2 structure, as these are backwards compatible, and that the newer hub driver will use the new registration functions in preference to the old interface.


Currently there are no extensions for usb2_endpoint_t. This header file provides the new registration definitions.


Definitions for the USB2 transaction translators found in USB2 hubs. Normal drivers should not need to know anything about these, these definitions are informational use at current time.

RISC OS specific changes

SWI USB_Version returns r0 = 200, to signify new interface. The new SWIs USB_EndpointRegister2 and USB_DeviceRegister2 have been added.

USB Library object changes

$Id: usb-201-relnotes.html 376 2003-12-10 13:03:30Z vince $