Link here

USB Wildcard Users Guide
You may connect your embedded controller as a USB peripheral to a PC or laptop

The USB Wildcard implements a standard USB (Universal Serial Bus) virtual serial port that allows a PC to communicate with Mosaic's embedded computers. This tiny 2" by 2.5" board is a member of the Wildcard™ series that connects to Mosaic controllers.

This document describes the capabilities of the USB Wildcard, tells how to configure the hardware and choose between self powered and bus powered modes, describes how to install device drivers on your PC, and presents an overview of the USB driver software that runs on the Mosaic controller. A glossary of the Mosaic software device driver functions, demonstration program, source code, and hardware schematics are presented. The USB Wildcard™ is ideal for instrumentation projects. It makes it easy to implement remote USB data loggers, data acquisition systems, and instrument control functions. This tiny 2" by 2.5" board is a member of the Wildcard series of mezzanine boards that connect to Mosaic embedded controllers.

USB Wildcard Specifications
Description: The USB Wildcard implements a full-duplex USB serial port client enabling communications with a PC or other USB host device.
Protocols: Compliant with USB 1.1 and USB 2.0 full speed protocol.
Data Rates: Transfer rates exceed 2.4 Megabits/second; actual throughput is limited by the Mosaic Controller's data processing speed.
Buffers: 384-byte FIFO (first-in/first-out) transmit buffer, 128 byte FIFO receive buffer.
Hardware Implementation: The USB Wildcard uses the industry standard FT245BM chip from FTDI to implement the USB port.
Data Integrity: Loss-less communications (no dropped characters) guaranteed by the USB protocol and its hardware implementation on the USB Wildcard.
Powering Options: A 3-post 2-position jumper allows selection of "Self-Powered" or "Bus-Powered" mode; the latter powers the Wildcard and its connected controller stack from the +5V nominal power source delivered by the USB host.
Connectors: A standard USB 5-pin "Mini-B" receptacle is mounted on the USB Wildcard, and a 5-pin 0.1" spacing header enables remote mounting of a standard USB Type B panel-mount receptacle.
Drivers: Pre-coded communications software runs on the Mosaic Controller, and industry-standard PC drivers from FTDI run on the PC host.
Current: FIXME mA from 5V
Weight: 17 gram
Size : 2" x 2.5" x 0.365"1) (50.8mm x 63.5mm x 9.3mm)

USB overview

Universal Serial Bus (USB) is a serial port standard that enables reliable communication between electronic devices. It is implemented on a variety of electronic products including personal computers (PCs), digital cameras, printers, keyboards and mice. A USB system comprises a host controller (typically a PC) and one or more USB peripheral devices. USB hubs allow a single host controller to communicate with multiple USB devices. The use of hubs allows configuration of a star network topology or a branching tree network structure, subject to a limit of 5 levels of branching and no more than 127 devices per USB host controller.

The USB standard as of the time of this writing is USB 2.0. USB 2.0 devices are backwardly compatible with the earlier USB 1.1 standard.

USB signals are transmitted on a twisted pair of data cables labeled D+ and D-. These use differential signaling to minimize the effects of electromagnetic noise on longer lines. Transmitted signal levels are 0.0 to 0.3 volts for a logical low, and 2.8 to 3.6 volts for a logical high. A VBUS power line (nominally +5V when connected to the USB Wildcard) and a GND (ground) wire complete the 4-wire USB cable. A metallic shield protects the data from electromagnetic interference; the shield is typically grounded only at the host controller (not at the USB peripheral device). Table 1-1 summarizes the USB cable wiring.

For experts interested in the low level signaling scheme on the USB cable, the USB standard uses NRZI (non-return to zero, inverted) modulation to encode the serial data. The NRZI encoding method does not change the signal for transmission of a 0 data bit, and it inverts the signal level for transmission of each 1 in the data stream. The USB protocol uses bit stuffing: the protocol inserts a logic 0 after each five bits of logic 1, and the USB receiver ignores a 0 following five logic 1s. Fortunately, the USB hardware handles the signaling, so you don't have to worry about these low-level details.

USB Cable Specification
Color Pin Function
Red 1 VBUS
White 2 D-
Green 3 D+
Black 4 GND
Grey Shell Shield

Data rates

USB supports three data rates: a Low Speed rate of up to 1.5 Megabits per second (MBit/s); a Full Speed rate of up to 12 Mbit/s; and a Hi-Speed rate of up to 480 Mbit/s. A device can have a data transfer rate lower than these values and still comply with the standard. Mosaic's USB Wildcard is implemented using the industry standard FT245BM chip made by FTDI, which can transfer data at rates to 2.4 Mbit/s and complies with the USB 2.0 full speed standard. The end-to-end data throughput is set by the speed with which the Mosaic controller can process the serial data. For controllers based on the HCS12 processor (PDQ Board, PDQScreen, etc.) the throughput is on the order of 320 kilobits per second while the processor is dedicated to USB communications. For controllers based on the older HC11 processor (QCard, QScreen, etc.) throughput is typically on the order of 40 kilobits per second while the processor is dedicated to USB communications.


USB cables and receptacles

USB connectors are designed to be simple and robust so they can safely be handled, inserted, and removed without risk of damage. Connectors cannot be plugged-in upside down, and it is clear when the plug and socket are correctly mated. The connectors from incompatible USB devices are themselves incompatible. USB cables are conveniently held in place by the gripping force from the receptacle without the need for the fasteners. A cable length of up to 5 meters per node is supported by the USB standard.

USB connectors are designed such that hot plugging will not cause any component damage. The connector construction ensures that the external sheath on the plug makes contact with its counterpart in the receptacle before the four connectors within are connected. This sheath is typically connected via the shield wire to the system ground at the host, allowing otherwise damaging static charges to be safely discharged by this route (rather than via delicate electronic components). After the shield makes contact, the power and ground connections are made, followed by the data connections. This sequence assures trouble-free hot plugging.


Type A and Type B plugs and receptacles

Full size Type A and Type B USB receptacles; pin numbers are shown looking into each receptacle.

The USB standard specifies that each host is equipped with a type "A" receptacle. Each peripheral device is typically equipped with a type "B" receptacle. A standard USB detachable cable is configured with a type "A" plug on one end and a type "B" plug on the other. The original USB standard specifies 4-wire cables terminated by plugs containing 4 pins (sometimes referred to as 4 positions) as summarized in Table 1-1. The full size Type A (host) and Type B (peripheral) receptacles and their pin numbers are illustrated in the figure to the left. Pin numbers are shown looking into each receptacle.

The USB 2.0 standard adds the use of 5-pin "Mini-B" receptacles and plugs on the peripheral device, and the 5-pin "Mini-A" receptacles and plugs for host devices. The extra pin is for the USB On The Go feature that enables a peripheral to optionally act as a host (for example, a digital camera could act as a host when connected to a printer, removing the need for a PC when printing pictures). If the On The Go feature is not needed, the extra position is left unconnected on the peripheral device. The following table summarizes the 5-pin Mini-B connector pinout, and the following figure illustrates the Mini-A and Mini-B plugs.

5-position Mini-B USB Connector Pinout
Pin Name Description
1 VBUS +5V nominal supply voltage
2 D- Data line, negative
3 D+ Data line, positive
4 ID Not connected
5 GND Ground/Common/Power return

Five position USB Mini-A (left) and Mini-B (right) plugs showing pin numbers (not to scale)

The USB Wildcard includes a 5-pin Mini-B receptacle, and does not implement the USB On The Go capability. Most PC hosts use the full size Type A receptacle. Thus, the most common cable to use with the USB Wildcard has a type A plug that connects to the host PC, and a 5-position type Mini-B plug that connects to the USB Wildcard. This cable is known as a "Type A to 5-pin Type Mini-B USB cable". Mosaic Industries sells this cable, and it is also available from USB cable vendors. The pin positions of the five position USB Mini-A (left) and Mini-B (right) plugs are shown in the figure to the left.

Note that the USB standard also provides for a 4-pin Mini-B receptacle and plug; these have a different shape and are not compatible with the 5-pin receptacle on the USB Wildcard.

The Series "A" plug which attaches to the PC is approximately 4 by 12 mm, the Series "B" approximately 7 by 8 mm, and the Mini-B plugs approximately 3 by 7 mm.

A comparison of the two pinouts shows that most of the pins of a Mini-USB connector are the same as those in a standard USB connector. The exception is the addition of the ID pin on the Mini-B connector at position 4. This pin is not connected in a slave only device such as the USB Wildcard.

Any cable with a receptacle or with two "A" or two "B" connectors is, by definition, not USB. However, many cable manufacturers make and sell USB-compatible (yet not strictly conforming) extension cables with a Standard-A plug on one end and Standard-A receptacle on one end.


Panel-mount receptacles

The 5-pin Mini-B receptacle on the USB Wildcard may not meet the needs of some instrument designers who need a panel-mounted USB receptacle. For these cases the 5-pin 0.1" in-line header H4 provides an interface for connecting a Type B panel-mount receptacle.

The following parts may prove useful. Note that these panel mount receptacles are full sized Type B receptacles, not Mini-B receptacles. part number P1122-012 is a USB Type B panel mount receptacle with a 1-foot cable terminated by a 5-position header that mates directly to H4 on the USB Wildcard. Related parts from include versions with 1.5 foot and 2.5 foot cables. The 5-position connector is not keyed, so be sure to check the orientation before plugging it in. The signal names of the H4 connector are clearly visible on the legend of the USB Wildcard. part number ECJ504B-UB is a Type B panel-mount jack with 10" wire leads. This part is slightly less convenient because it does not include the female 5-pin 0.1" in-line header that mates directly with H4 on the USB Wildcard.


Powering options

USB peripherals can be self powered or bus powered. Self powered devices supply their own power, while bus powered devices draw power from the USB VBUS wire. The USB standard makes provision for bus powered devices drawing up to 500 mA (milliamps), provided that at startup they draw no more than 100 mA until the peripheral device announces itself to the host on the USB bus. The FTDI chip on the USB Wildcard handles this sequence properly, powering only the USB circuitry until the Wildcard has announced itself, and then gating power from the USB VBUS wire to the +5V bus on the Wildcard and controller stack.

The voltage on the USB VBUS wire may vary from 4.35 to 5.25 volts with respect to the GND line on the USB cable, although most hosts and hubs offer much better voltage regulation than this. In particular, a USB host supplying the lower 4.35V limit may result in processor resets or poor reliability, so make sure to check the voltage levels supplied by the host before relying on the USB bus to power your controller stack.

When shipped from Mosaic, each USB Wildcard is configured to announce itself as a 500mA bus powered USB 2.0 device. This configuration supports either powering mode, as it is permissable to announce the peripheral as a bus powered device and then not draw the current from the USB bus.

Note that up to 500mA of current is available from a host port or a self-powered hub, but not from a bus-powered hub. A bus-powered hub can draw up to 500mA from its upstream host, and can supply at most 100mA to each of four downstream USB peripherals. Please keep this in mind if you are counting on bus power to supply the current needs of the Mosaic controller circuitry.

See the self-powerbus-power-jumper section below for more information about the powering modes.


USB Wildcard hardware

The USB Wildcard comprises a Wildcard bus header, USB 5-pin "mini-B" receptacle, 5-pin alternate USB header to enable a remote panel-mounted USB receptacle, digital logic circuitry, a USB chip, and a USB configuration EEPROM. Jumpers enable module address selection and selection of either Self Powered or Bus Powered mode. The Wildcard bus header interfaces to the host processor (QCard, QScreen, Handheld, or PDQ series controller). The following picture illustrates the hardware. If the default location of the mini-B connector is not convenient for your volume application, the connector can be mounted on the opposite side of the board (above the Module address selection jumpers). Contact Mosaic Industries for information about custom configurations for volume production runs.

The USB Wildcard


Connecting to the Wildcard bus

To connect the USB Wildcard to the Wildcard bus on the controller board:

With the power off, connect the female 24-pin side of the stacking go-through Wildcard bus header on the bottom of the USB Wildcard to Wildcard Port 0 or Wildcard Port 1 on the controller or its mating Docking Panel (formerly the PowerDock). The corner mounting holes on the Wildcard should line up with the standoffs on the controller board. The Wildcard ports are labeled on the silkscreen of the controller board. Note that the USB Wildcard headers are configured to allow direct stacking onto the controller board, even if other Wildcards are also installed. Do not use ribbon cables to connect the USB Wildcard to the Wildcard bus.

Caution: Unkeyed connectors
The Wildcard bus does not have keyed connectors. Be sure to insert the Wildcard so that all pins are connected. The Wildcard bus and the USB Wildcard can be permanently damaged if the connection is done incorrectly.

Selecting the Wildcard address

Once you have connected the USB Wildcard to the Wildcard bus, you must set the address of the module using jumper shunts across J1 and J2.

The Wildcard Select Jumpers, labeled J1 and J2, select a 2-bit code that sets a unique address on the Wildcard port of the controller board. Each Wildcard port on the controller accommodates up to 4 Wildcards. Wildcard Port 0 provides access to Wildcards 0-3 while Wildcard Port 1 provides access to Wildcards 4-7. Two Wildcards on the same port cannot have the same address (jumper settings). The following table shows the possible jumper settings and the corresponding addresses.

Address Jumper Settings
Wildcard Port Wildcard Address Installed Jumper Shunts
0 0 None
0 1 J1
0 2 J2
0 3 J1 and J2
1 4 None
1 5 J1
1 6 J2
1 7 J1 and J2
Note:<block indent>Address 0 is not available on the QScreen or Handheld. Use addresses 1 through 7 instead.</block>

Self power/bus power jumper

A 3-post 2-position jumper on the USB Wildcard enables selection of either self power or bus power mode. This powering option refers to the entire controller stack, including all Wildcards and the embedded computer. The default option is self powered mode, meaning that the controller and its Wildcards do not draw power from the USB bus. In this mode, the controller and Wildcards are powered by a PowerDock, Docking Panel, or a built-in or external power supply.

In some applications it may be convenient to take advantage of the 5 volt (nominal) power that the USB host can deliver. Moving the Self/Bus power jumper to the "Bus Power" position taps the USB power supply to drive the +5V power node on the Wildcard bus to power the entire controller stack.

If the Self/Bus power jumper is in the "Bus Power" position, do not connect an external power supply to the controller (PDQ Board, PDQScreen, QScreen, QCard, PowerDock, Docking Panel, etc.).

This USB bus supply can deliver up to 500 mA (milliamps) at +5V, unless an unpowered USB hub is upstream of the USB Wildcard, in which case only 100 mA can be supplied. Note that Mosaic graphics/touchscreen controllers require input voltages greater than +5V, and certain Wildcards such as the 24/7 and the Analog I/O Wildcards require a "V+Raw" supply that is greater than +5V. The USB bus power mode cannot supply these higher voltages. Make sure that the hardware can run on a single +5V supply before selecting the USB bus powered mode.

Please read the Powering Options section above for additional details about USB bus powered mode.


PC driver software

There are two distinct software drivers needed for USB communications: the driver that runs on the host PC, and the driver that runs on the Mosaic controller. This section describes the PC driver.

USB drivers for the PC are available at no charge from FTDI, the company that makes the core FT245BM chip that implements the USB hardware protocol on the Wildcard. At the time of this writing, these drivers are available at the FTDI web site at

There are two types of drivers available from FTDI: Virtual Com Port (VCP) and direct (D2XX/DLL) drivers. The VCP driver emulates a standard PC serial port such that the USB device may be communicated with as a standard RS232 device. The D2XX driver allows direct access to a USB device via a DLL (dynamic link library) interface. The VCP drivers are required if you want to use the Mosaic Terminal to interactively communicate with the USB Wildcard (see the USB Demo code as discussed in Mosaic Software Driver section). For all Windows operating systems released after Windows ME, both the VCP and DLL drivers are included in a single driver installation package from FTDI. For Windows 98 and Windows ME, you can choose either VCP or DLL and install the corresponding driver package.


These Windows FTDI drivers are also available in the Mosaic folder. Look in the directory:
Wildcard Drivers\USB\Windows_FTDI_Drivers

Mosaic IDE Plus:

The Windows FTDI drivers are available inside your project folder. The default location is:

There are named folders for the various Windows platforms (Windows XP, etc.) containing the driver installation files for that operating system.

The easiest way to install the drivers is to plug in the USB Wildcard via the appropriate USB cable to your PC. The PC should recognize the FTDI USB device. If the FTDI USB drivers are not already present, Windows will start a "wizard" to guide you through the driver installation. When the wizard asks you to specify a directory that contains the drivers, you can browse to the directory containing the FTDI USB drivers, and the wizard will choose the correct driver and install it.


Customizing the EEPROM on the USB Wildcard

Mosaic ships the USB Wildcard with a default set of properties stored in the EEPROM (Electrically Erasable Programmable Read Only Memory) on the USB Wildcard. These properties are communicated to the PC during the USB enumeration process. The pre-programmed properties are detailed in the following table:

Pre-programmed properties in the USB Wildcard EEPROM
Property Value
Device Type: FT245BM
USB Version#: USB 2.0
Disable USB Serial#: No
Pull Down I/O Pins in
USB Suspend Mode:
(Note: this is required for bus powered mode to work)
Manufacturer: FTDI
Product Description: Mosaic USB Wildcard
USB Power Options: Bus Powered
Max Bus Power: 500 milliAmps
Serial# Prefix: FT
Use Fixed Serial#: No
Enable USB Remote Wakeup: Yes

As discussed in an earlier section, the specification of the Bus Powered option drawing the maximum allowable 500 mA current gives you the greatest latitude in using the USB Wildcard. It allows you to operate the Wildcard in either bus powered or self powered mode, and requests the maximum amount of current for the Mosaic stack (there is no penalty for this request). See the "Powering Options" discussion above for more details.

If for some reason you want to change the EEPROM settings, you can download the "MProg" application from the FTDI website. This utility lets you specify your custom settings to replace those shown in Table 1-4. Use caution with this tool, as it is possible to render devices inoperable by programming them with the wrong parameters.


Using the Windows Device Manager to view USB properties

USB is a plug and play protocol: when a USB device is plugged into a PC running Windows, the operating system automatically detects it and, if the proper PC drivers are available, establishes communications with the USB peripheral device. The Windows Device Manager lets you view the status and properties of all USB devices known by the operating system.

On a Windows XP machine, you can get to the Windows Device Manager by right clicking on the My Computer icon on your Windows desktop, selecting Properties from the drop-down box, selecting the Hardware tab in the System Properties dialog box, and choosing the Device Manager button. The Device Manager dialog box displays a list of devices. Expand the item labeled Ports (COM and LPT) to view the virtual communications ports including any installed USB Wildcards. The USB Wildcard will appear as an entry such as USB Serial Port (COM4). In this example, the COM4 describes the communications port assigned to the USB Wildcard. This COM port information is used to configure the Mosaic Terminal as described in the next section.


Using the Mosaic Terminal with the USB Wildcard

The USB Wildcard can provide an interactive link between a Mosaic controller and a PC. A convenient interface for this link is the Mosaic Terminal, available on the distribution CD and on Mosaic's website ( When you first start the Mosaic Terminal, if more than one terminal window is open you may get a warning such as "Port already open"; you can ignore this warning.

To use the Mosaic Terminal, you'll need to specify the COM port number. To find the currently assigned COM port number, follow the instructions in the prior section (Using the Windows Device Manager to View USB Properties). Open the Mosaic Terminal, and in the Settings>Comm menu item, activate the drop-down box labeled Port and choose the correct COM port number (COM1 through COM9 are available).

To test this capability, use the USB_Demo program as described in the next section.

Once the Mosaic Terminal program establishes communications with the USB Wildcard, unplugging or powering down the Wildcard will display a Mosaic Terminal message such as "Internal error retrieving device control block for the port". Acknowledging this error exits the Terminal program.


Mosaic USB driver software

A package of pre-coded device driver functions is provided to make it easy to control the USB Wildcard. This code is available as a pre-compiled "kernel extension" library to C and Forth programmers. Both C source code and Forth source code versions of a demonstration program are provided. The demo program illustrates how to initialize and use the USB Wildcard in a multitasking application.


Overview of the Mosaic USB software device driver functions

The USB Wildcard driver code makes it easy to direct serial input and output via the USB port. A demonstration program shows how to use the functions, and how to revector the serial primitives so that standard I/O print routines (such as printf in C and ." in Forth) will automatically use the USB Wildcard port.

The following table summarizes all available functions. You can see a popup definition for a function by clicking on the function name, or you can view descriptions of all functions in the USB Wildcard Glossary.

Serial I/O Functions
int USB_Ask_Key ( void )
int USB_Ask_Key_Module ( int module_num )
void USB_Emit ( uchar character )
void USB_Emit_Module ( uchar character, int module_num )
void USB_Flush (int module_num )
uchar USB_Key ( void )
uchar USB_Key_Module (int module_num )
void USB_Revector ( void )
void USB_Send_Immediate_Wakeup (int module_num )
Module Selection Variable
Demonstration Program
void USB_Demo ( void )

The USB Wildcard™ implements a standard USB (Universal Serial Bus) interface that enables a PC host to communicate with Mosaic's microcontroller-based embedded computers to implement remote data loggers, data acquisition systems, and instrumentation. This tiny 2" by 2.5" board is a member of the Wildcard series of mezzanine boards that connect to Mosaic embedded instrument controllers.

Most of the Mosaic USB driver functions accept as an input parameter the USB Wildcard number (0 through 7). The remaining functions take the contents of the usb_module variable to specify the wildcard module number.

The Wildcard number passed to the software functions, and the contents of the usb_module variable (as set by the USB_MODULE_NUM constant in the demo program) must correspond to the hardware jumper settings as described in the table above.

The fundamental serial I/O routines are called USB_Emit_Module, USB_Ask_Key_Module, and USB_Key_Module. Each accepts a Wildcard module number as an input parameter. The corresponding routines that access the module number in the usb_module variable are called USB_Emit, USB_Ask_Key, and USB_Key. These routines have the correct parameter list to enable revectoring of serial I/O functions as illustrated in the demonstration program.

USB_Emit_Module and USB_Emit each accept a character which is queued in the output buffer for transmission on the USB port. USB_Ask_Key_Module and USB_Ask_Key test whether an input character is pending in the receive buffer; if so, a true (-1) flag is returned, and if not, a false (0) flag is returned. USB_Key_Module and USB_Key each return the next pending character in the input buffer; if the buffer is empty, the function waits for a character and returns it.

The SB_Revector function installs the USB serial primitives in the current task so that the task's serial I/O routines use the USB port. For example, after executing USB_Revector, a printf statement in a given task would print via the USB Wildcard port.

The USB_Send_Immediate_Wakeup function causes any characters in the output buffer to be sent immediately if the USB port is active. If the USB port is suspended, executing this function requests a wakeup from the PC host.

For detailed specifications regarding control of the communications port, refer to the FTDI USB data sheet (FTDI Part# FT245BM).


Demo illustrates revectoring of serial I/O

The demonstration program presents an example of how to use the USB port. The multitasking operating system on the Mosaic Controller allows each task to access its own distinct serial I/O channel by pointing the three primitives Emit, Ask_Key (called ?KEY in Forth), and Key to the desired serial I/O handler functions. The advantage of revectoring is that higher level serial management functions that accept and print characters and strings will then use the designated serial channel. The USB_Monitor function in the demonstration performs the revectoring, and then calls functions that perform interactive echoing via the specified serial channel on the USB Wildcard. The Run_Demo function (or the main function in C) starts and runs the multitasking demonstration using the USB Wildcard. The demonstration program source code is presented in a later section.


Installing the Mosaic USB Wildcard driver software

Using USB Wildcard with the Mosaic IDE Plus and the PDQ Board or PDQ Screen

Using USB Wildcard with the Mosaic IDE and the QCard, QScreen or Handheld Controllers


Using the Mosaic USB driver code with C

The c demo is located in your installation directory. It is also provided here for reference.

Using USB Wildcard with the Mosaic IDE Plus and the PDQ Board or PDQ Screen

Using USB Wildcard with the Mosaic IDE and the QCard, QScreen or Handheld Controllers


Using the Mosaic USB driver code with Forth

The Forth demo is located in your installation directory. It is also provided here for reference.

Using USB Wildcard with the Mosaic IDE Plus and the PDQ Board or PDQ Screen

Using USB Wildcard with the Mosaic IDE and the QCard, QScreen or Handheld Controllers


Glossary of USB functions

For further information

There are good online descriptions of the USB physical layer and software protocols, for example:


Hardware Schematics

Height is from the bottom of the PCB to the top of the tallest component on the top side of the PCB.
This page is about: Full-duplex USB Serial Port Client, Compliant with USB 1.1 and USB 2.0 Full Speed Protocol, Transfer Rates Exceed 2.4 Megabits/second, Industry Standard FTDI FT245BM Chip – This document describes the capabilities of the USB Wildcard, tells how to configure the hardware and choose between self powered and bus powered modes, describes how to install device drivers on your PC, and presents an overview of the USB driver software that runs on the Mosaic controller.