USB devices have OpenVMS device names assigned to them when
they are configured; however, if you plug in multiple devices of the
same type, in a different order or in different places, they all might
have different names. Worse still, the USB bus discovery is asynchronous,
and between each boot, the order of device discovery might be different.
It is not advisable for two printers, for example, to change
names randomly when the system is booted.
The UCM tries to ensure that names are persistent (permanent)
across boots and across hot-plugs. UCM uses two strategies to do this:
Serial Number—If a device has a serial number,
the vendor/product code part must be unique.
Path—The USB bus is a hierarchical topology.
Each device can be described by the level (HUB level) and port within
the HUB. A path is a six- digit value similar to 1.2.0.0.0.0.
When a device is configured, UCM looks in a database of PERMANENT
devices to determine if this device has been seen before. If it has
not, the device is configured (as described previously), and the complete
information about the device is stored in the permanent database,
including the OpenVMS name that was used for it.
In general, the matching of devices in the permanent database
is not a heuristic; it is, rather, an exact match.
The exception to this is TEMPLATE devices. Currently, only two—the
Mouse and Keyboard—exist. These devices have preallocated entries
in the permanent database. A flag tells UCM that if a Mouse or Keyboard
is plugged in always to create MOU0 and KBD0, no matter where they
are plugged in. Mice and keyboards do not have serial numbers, and
it would not be user-friendly to create MOU1 instead of MOU0 simply
because someone plugged the connectors into a different USB slot.
However, this dates from when making devices permanent and configuring
and loading the OpenVMS device was a manual process.
Controlling Device Permanence and Loading
You can use the UCM commands SET AUTO and SHOW AUTO to restrict
the automatic recognition of new devices. This can be useful when
debugging your USB device or debugging its configuration. For example:
$ UCM SET AUTO/ENABLE=(LOAD)/DISABLE=(PERM)
This command allows the device to be loaded but does not save
it in the permanent (on disk) database.
$UCM SET AUTO/DISABLE
This command disables automatic loading of the device. Instead,
the device is made “Tentative” – that is, UCM
knows that the device is there and what driver to load but requires
the UCM command ADD DEVICE to cause it to be made permanent. In addition,
the device must then be hot-swapped (unplugged and plugged back in
again).
The default is SET AUTO/ENABLE, which enables auto-load and
auto-perm. The SHOW AUTO command displays the current settings.
In addition, you can set EXCLUDE and INCLUDE lists. For more
information, see the UCM section of the HP
OpenVMS System Management Utilities Manual.