Orbit Electronic Port Devices Driver



  • Download the serial driver required for your scanner (Save it to your desktop) BC75XLT Driver. BCD325P2 Driver. BCD996P2 Driver. Go to your start menu and search 'Device Manager' Step 3. Connect the Uniden USB Programming cable to your computer and scanner. Note your scanner should be powered on.
  • Our Bulletin 1485 Auxiliary Power Media connection devices are based on a 4–pin connector system and is used to provide 24V DC power to I/O modules and other devices separately from network power. Running separate power to these devices is typically used for I/O devices with output connections to prevent power supply interruption due to.

The update may have impacted the ability of the virtual serial port drivers for certain devices to load by default. This poses a significant issue when you are trying to use these devices. First, we will investigate the use of Eltima Software’s Virtual Serial Port Driver to add Windows 10 virtual serial ports. The driver package includes a 'Release Note' containing all supported devices and Operating Systems, as well a 'Read Me' showing all installation and un-installation procedures! Go to the location where the file was downloaded and unzip the contents inside to a new location on the PC (preferably the Desktop).

About Driver Booster

Driver Booster is a powerful and easy-to-use driver updater. With the best 1-click solution and a large database, Driver Booster can help you rapidly & securely update outdated drivers, install missing drivers, and fix incorrect drivers. By solving these driver issues, it keeps your PC away from system crash, BSOD, no audio, bad resolution, network failure, etc. to increase your system compatibility and stability while saves you plenty of time and effort. With its new tool Offline Driver Updater, you can easily solve the 'no internet access' problem and also get all drivers ready before you reinstall/upgrade your system.

Besides, the feature Boost in Driver Booster offers very easy solutions for ultimate gaming experience and top system performance.

System Requirements

  • Windows XP/Vista/7/8/8.1/10
  • 1 GB of free disk space mainly for driver download and installation
  • 1024*768 screen resolution and above

Install Driver Booster

  • Click here to download the latest Driver Booster.
  • Double-click the downloaded driver_booster_setup.exe to start the installation.

Uninstall Driver Booster

  • Windows 10:
  • Open Start > Click Settings > Click System or Apps on the Settings menu > Select Programs & features or Apps & features from the left panel > Find Driver Booster and click Uninstall > Follow the on-screen prompts.

  • Windows 8.1 & 8:
  • Open Start > Select Control Panel > Select Programs & Features > Find Driver Booster and click Uninstall > Click the Yes button when prompted to uninstall the program > Follow the on-screen prompts.

  • Windows 7 and Windows Vista:
  • Open Start > Select Control Panel > Under Programs (Windows 7) or Programs & Features (Windows Vista) > Click Uninstall a program > Find Driver Booster and click Uninstall at the top of the program list > Follow the on-screen prompts.

  • Windows XP:
  • Open Start > Select Settings > Click Control Panel > Click Add or Remove Programs > Find Driver Booster and click Change/Uninstall > Follow the on-screen prompts to uninstall it.

Activate Driver Booster PRO

Note: A valid license key is required to activate the PRO version. You can click here to purchase one. Already have one but forgot? Go here to get it back.

Click the icon at the bottom right of Driver Booster interface, COPY & PASTE your license code into the box, and click the icon at the right side. Or visit here for step-by-step activation guidance with screenshots.

Update Driver Booster

PRO users can always enjoy the latest version automatically with the Update automatically checkbox ticked by default in the Settings. FREE users can manually update Driver Booster with either of the options below:

  • Click the icon on the top left and select Check for Updates.
  • Right-click the icon in the system tray, and select Check for Updates.

Glance at Main Interface

When opening Driver Booster, you will see Driver Status of the last scan and an eye-catching SCAN button.

Driver Booster supports updating the followings:

  • Device Drivers: Graphics Driver, Audio Driver, Network Driver, Chipset Driver, Printer Driver, etc.
  • Game Components: PhysX, DirectX, VCRuntime, Unity Web Player, Adobe Flash Player, Java SE Runtime Environment, OpenAL, etc., which provide games with necessary support, effect enhancement, and performance tuning.

Note: Game Component update is only available in the PRO edition. So if you are a PRO user, you may see Game Components outdated and can update them to the latest versions.

Scan / Update

Driver Booster can assist you to update the outdated drivers effortlessly. Read the following introduction of Scan for Drivers Updates, Scan Result, and Update Driver to know how it works.

Scan for Driver Updates

Click SCAN to start. You can STOP the scan and re-scan at any time you want.

Note:

  • By default, Driver Booster scans automatically when it's launched. Go to Settings to disable the automatic scan if you dislike it.
  • You can also set your own driver-scan priority in Settings: the latest driver or the stable driver.
  • Scan Result

    You can see the total quantity of outdated device drivers and outdated game components at the top of the scan results screen. The scan result depends on your PC condition. And Driver Booster scans for 4 issues:

    • Outdated drivers, dates of both the current version and available version are provided.
    • Missing drivers, the current status is 'Missing Driver'.
    • Faulty drivers, the current status is 'Faulty '.
    • Not-installed game components, the current status is 'Not Installed'.

    Update Drivers

    You can follow either of the methods below to start the update:

    • Click Update Now at the top right to update all selected drivers.
    • Click Update at the right side of each driver line to update drivers one by one.

    Generally, there are 3 stages for driver update:

    1. Download drivers. With breakpoint resume technology, you are allowed to stop anytime and Driver Booster will continue the download next time instead of starting over again.
    2. Create a restore point. If you disable the option 'Automatically create a system restore point before a driver is installed' in Settings, this stage will be skipped.
    3. Install the downloaded drivers.

    Note: For PRO users, there may be one more stage – automatically back up a driver before it is installed. Check it in Settings:

    The time needed for the update depends on driver size and download speed. You can choose Automatically reboot PC or Automatically shut down PC on the updating screen, and click the icon at the top right to minimize the whole window, then leave it and forget it. After it's completed, you will get a countdown message to reboot PC or shut down PC accordingly.

    Boost

    Boost module in Driver Booster offers two features: Game Boost and System Optimize.

    Game Boost

    Game Boost stops unnecessary apps/services to help you get a better gaming experience. It has two modes: Super Boost and Basic Boost.

    Super Boost requires installing IObit partnered program Smart Game Booster which can overclock hardware to improve game performance up to 130%. If it hasn't been installed yet, you can click Install in the pop-up window after clicking Super Boost to install it.

    For Basic Boost, some unnecessary services/processes are already selected by default, so you can just click Turn On to boost. Or you can click the Configure text link and select the items you want to stop to boost your game performance.

    After the boost, you can click the Details text link to view all the stopped processes/services/apps. And you can click the Turn Off button to turn off Game Boost at any time.

    System Optimize

    System Optimize helps clean up junk files, privacy traces and redundant registry entries, optimize your internet speed and system with the all-in-one product Advanced SystemCare.

    If you haven't installed Advanced SystemCare yet, clicking the Check Now button will guide you to install Advanced SystemCare for further optimization.

    If you've already installed Advanced SystemCare, you can click the Run Now button to optimize your system with Advanced SystemCare.

    Tools

    Driver Booster provides you with 5 tools to Fix Common Problems and 4 Other Useful Tools. They are Backup & Restore, Fix Device Error, Fix No Sound, Fix Network Failure, Fix Bad Resolution, Offline Driver Updater, Clean Unplugged Device Data, System Information, and Software Updater.

    These tools can help detect and fix some common problems like no sound, network failure, wrong resolution, update drivers offline, clean unplugged device data, check the system & hardware information, and update programs to the latest versions. Besides that, the tool Backup & Restore can back up drivers, restore your drivers and restore your system to a previous good status. You can use these tools anytime by clicking the icon on the left side of the main interface and clicking the tool you need.

    Note:

  • The tool Fix Device Error is only available for PRO users.
  • For how the tool Offline Driver Updater works, click here for details.
  • Unplugged devices are those devices flagged with the icon in the driver list, which means they are not plugged into your PC at this moment. It is not a 'problem' and needs no 'fix'. But, if you are sure you won't use them anymore, click the button, and select Uninstall to uninstall them one by one.
  • If there are too many good-for-nothing unplugged devices, you can click the tool Clean Unplugged Device Data to remove the unplugged devices' data in bulk. You can also click the Ignore text link to keep the device data and clean the rest by clicking the Clean button.
  • Note: Clean Unplugged Device Data will remove the unplugged device data only. The unplugged devices' drivers are still installed on your computer. When you plug them again, you can use them without any problems.

    Action Center

    Click the icon to open Action Center and learn more about how the other recommended well-known IObit products can help you with your computer. If you haven't installed them yet, it's strongly recommended that you click the Install now button to install them.

    If you are using Driver Booster Pro, you can also find an exclusive offer for Driver Booster Premium users only to purchase other IObit programs and IObit trusted Partners' products at a very considerable discount here.

    Note: Clicking Hide at the top can keep the recommended programs out of sight if you are not interested in them.

    Auto Driver Update

    Note: Auto Driver Update is a PRO exclusive feature. You can set it in the Settings.

    If the 'Automatically update drivers while the system is idle' option is ticked, Driver Booster will automatically 'download' the updates or 'download and install' the updates in the background when your system is idle.

    If you tick the 'Download and install driver & game component updates' option, you can also select the types of drivers which you want to update automatically.

    Orbit Electronic Port Devices Driver

    Restore Driver Updates

    To minimize the bad effect of any unexpected issues caused by driver updates, Driver Booster provides 3 strategies for easy repair: Driver Roll Back, Driver Restore, and System Restore.

    Driver Roll Back

    In the scan result window of Driver Booster, you can click the button at the end of every listed outdated driver, and select Roll Back, if it is available, to roll back the driver to its previous version.

    And you can also click the version link (Available or Current) to open Drivers Details window to check whether you can roll back the driver to its previous version.

    Driver Restore

    To restore a driver, there has to be a driver backup first. Driver backup feature included in Driver Booster can help you back up drivers so that you can restore drivers when you need to. For how it works, please see the following information.

    Note: Driver Backup works for PRO users only.

    Click the icon on the left side of the main interface and open Backup & Restore. If there is any driver version available for backup, it will be listed under the Driver Backup tab. To back them up, just tick the checkbox before them and click the Back Up button. Backup Version indicates the version you backed up for that driver while Current Version means the driver version you install at present. If you find Current Version is newer than Backup Version, you can back up that driver again to its latest installed version.

    In the Driver Restore tab, you can select the driver you want to restore and click the Restore button to re-install the backed up (the previous) version.

    System Restore

    Note: Restoring system will undo all changes made after that restore point. Driver Booster supports manually creating or removing restore points.

    Driver Booster creates a restore point before updating the driver by default. Choose a restore point according to Date and Time or Description to restore the system to the previous good state.

    Ignore Unwanted Updates

    If there is any driver you don't want to update, you can click the button at the right side of a driver line, and select Ignore to ignore either this driver update or all updates of this device.

    The ignored drivers won't be scanned for the corresponding updates until you recover them from the Ignored list in Settings:

    Driver Update History

    Click the icon at the top left of the main interface and select Driver Update History to check what operation you did about your drivers and components with Driver Booster.

    Silent Mode

    Silent Mode can help you a lot when you want to focus on what you are doing. Once you select the option Silent Mode in Settings, Driver Booster will automatically turn to silent mode when your full-screen task or specified program/game is running, which means you will not receive any notification from Driver Booster.

    If any program or game you want to stay focused on, just add it to My Specified Programs/Games list. You can also delete any program or game from the list as per your own needs.

    Configure UI

    Click the icon, you will see the Skin options at the bottom left of the popup window.

    And you can click Settings to quickly change Language, and Transparency under General.

    Configure the Program

    Click the icon, select Settings…, configure each function as per your needs, and never forget to click OK to save the changes. Clicking Recommended can restore to default settings.

    Technical Support

    Every feedback from you is valued. To ensure you can reach us in time, we provide several feedback channels:

  • FAQs
  • It's recommended to read our FAQs before looking in the other sections for help. Because sometimes, the questions have already been answered before you ask them!

  • Program Built-in Feedback
  • Click the icon at the top right of the main interface of Driver Booster to open the Feedback window. Make sure your Email Address is correct, choose a proper Request Type, and specify your feedback in Description. Besides, it will be very helpful if you can click Add Picture to send us screenshots of the related error messages if any.

    Driver

    Note: In Feedback, it will intelligently provide you with a proper solution as per the Request Type you select. The following picture is an example.

  • IObit Forums
  • Post your questions and concerns to IObit Forums and discuss them with many other experienced and enthusiastic users and our technical staff.

    Orbit Electronic Port Devices Driver
  • Online Feedback
  • Besides the above feedback channels, you can also give Online Feedback for email support. We will reply to you ASAP.

    Thank You

    Thanks to all Driver Booster users, who motivate us to make this product better and better.

    Thanks to IObit Forum Administrators, Super Moderators, and Moderators, who dedicate their time to assisting our forum visitors and keeping the forums running smoothly.

    Thanks to the following volunteer translators, who greatly help improve Driver Booster user experience and introduce it to more users worldwide:

    Enis Özsaruhan, x-agon Co.Ltd, JaeHyung Lee, Ernie Wong, Igor Rückert, Fernando Santos, Ilija Komljenović, dedko58, Marjan Mirai, Sarakael Fallen, Hans-Chr. Kaller, Rob Stienen, Christ van Wijck, John K, Jan Szotkowski, Daniele Carraro, Claudio Birello, Roland LALIS, JeuMeu, Egon Jäkel, H.-Peter Haberhausen, Anthony Borg, George Vardakis, Eli Ben David, Gátser József, Bálint Csertán, alan@tw, MiH Litvin, Павел Беливаков, Arnau Barrabeig, Jordi Rigol Ripoll, Kristijan Belina, Annelie Pernheden, Jan Ågren, Thor Stange, Oddgeir Holen, Roberto Paiva, miquel costa, Cosmin Barna, Андрей Кравцов, иван войтенко, Dmitry Fedorenko, Wiesław Jurgielewicz, Łukasz Kuchta, Przemysław Siekiera, Marcin, Đào Đức Bảo Huy, jihye, Андрій Мисак, Yutthaphon Inchaiya, Thanapon Namjittrong, Mashxal Ibrahym, Normunds Jakuss, Abi Arbjas, MFM Dawdeh, ShaJaraH, Emir, taha1 kurd, Deng Tingjuan, Veikko Muurikainen, Mahdi KamaliPour, Saba Khmaladze, Nacho Lomidze, Khairul Agasta, P.R.JAYA KUMAR, Нямжав Ганболд, Markflynn, and Gabriel M. Ngwiri.

    The Universal Serial Bus (USB) standard has been with us for many years, but making USB devices is still a daunting task. The USB specification comprises thousands of pages spread over dozens of documents, and although good books have been written on the subject, they are rarely shorter. In addition, the application programming interface (API) offered for programming USB devices is often complex and intricate. This article describes how to program your own software-based USB devices. It is not limited to standard class devices, but also presents a way to implement any device, whether it complies with a standard class or not.

    Table of Contents

    The USB Way Of Thinking

    To understand USB, one has to understand a dozen terms that form the foundation of the USB world. USB separates the host from the device: there is one host, connected to multiple devices. The host initiates all traffic and schedules it on the USB bus.

    A device is a physical box at the end of the USB cable that identifies itself to the host by passing it a device descriptor and a configuration descriptor. These descriptors are binary data that describe the capabilities of the USB device. In particular, the configuration descriptor describes one or more interfaces, where each interface is a specific function of the device. A device may have multiple interfaces. For example, a USB device that comprises a keyboard with a built-in speaker will offer an interface for playing audio and an interface for key presses.

    Each interface comprises a series of endpoints that are the communication channels between the host and the device. Endpoints are numbered between 0 and 15 and may be IN endpoints or OUT endpoints. These terms are relative to the host: OUT endpoints transport data to the device, and IN endpoints transport data to the host (Fig. 1). The are four types of endpoints:

    • Bulk endpoints reliably transport data whenever it is required. Bulk data is acknowledged and therefore fault-tolerant.
    • Isochronous endpoints are for transporting real-time data. A fixed bandwidth is allocated to them. The host allocates this bandwidth and will not allow an isochronous endpoint to be created if no bandwidth is available. In contrast, bulk endpoints have no guaranteed bandwidth.
    • Interrupt endpoints are polled occasionally by the host and enable a device to report status changes.
    • The control endpoint (endpoint 0) is used to perform general operations, such as obtaining descriptors, or performing a control-operation such as “change the volume” or “set the baud rate” on any of the interfaces.


    1. Traffic over the USB bus is bidirectional.

    USB traffic is organized in frames. Frames are marked by the host sending a start of frame (SOF) every 125 µs (for high-speed USB) or every 1 ms (for Full Speed USB). Isochronous endpoints are allocated a transfer in every frame. Interrupt endpoints are polled once every so many frames, and bulk transfers may happen anytime when the bus is not in use.

    As an example, the aforementioned keyboard with built-in speaker has at least two endpoints: an isochronous OUT endpoint to transfer audio data to the speaker, and an interrupt IN endpoint to poll the keyboard. Suppose the speaker is a mono-speaker with a 48-kHz sample rate. The host then will send six samples of data every 125 µs (six samples/0.000125 seconds = 48,000 samples/second). If a sample occupies 16 bits, the host will reserve enough bandwidth to send a 96-bit OUT packet in every 125-µs frame. This consumes around 0.5% of the USB bandwidth. The remaining 99.5% is free for other interfaces or other USB devices on the same bus.

    Specifying And Discovering Device Capabilities

    The host initiates all USB traffic. When a device is plugged in, the host first requests the device-descriptor. This descriptor comprises two sets of information that inform the host of the basic capabilities of the device: the device class and the vendor ID/product ID (VID/PID).

    The class and subclass can be used to specify a device with generic capabilities. A USB speaker advertises itself as class Audio-2.0. A keyboard advertises itself as a HID-class (human interface device) device. The previous example of a device with both a speaker and a keyboard advertises itself as a Composite device class.

    USB devices that comply with a specific USB class enable cross-vendor and cross-platform compatible USB devices. The USB specification specifies hundreds of device classes that enable the generic implementation of, for example, Ethernet dongles, mixing desks, or flash disks and enable operating systems to provide generic drivers for these classes.

    There are cases where the USB device does not fit a specific class or where the class specification is too constrained for a particular device. In that case, the class of the device must be described as vendor-specific. The operating system (OS) shall then use the VID and PID to find a vendor-specific driver.

    When the device descriptor has been dealt with, the OS assigns the USB device a number, informs the USB device of the number (it is being enumerated), and requests the configuration descriptor that specifies each interface in detail. In the earlier example, the configuration descriptor will specify two interfaces: one interface of class USB-Audio-2.0 with a single channel output endpoint running at 48 kHz only, the other interface of class HID that specifies a single keyboard with a specific keymap.

    There are cases where the USB device does not have any OS support and it should interact with a user program directly. In that case, a generic driver such as the open-source libusb driver that allows an application program to communicate with any USB device can be used. Typically, the device will be advertised as vendor-specific. Through the libusb interface the user program can detect a device with a VID and PID that it wants to interact with, claim an interface, open an endpoint, and send IN and OUT requests to that endpoint.

    What To Do With Your Data

    The enumeration of the device typically requires static descriptors to be sent to the host. The difficult bit is creating the descriptors. Serving them is simple, as that is the only task required of the device at the time. After enumeration, data may arrive or be requested on all endpoints in quick succession. This requires an interface between the software that deals with the function of the USB device (e.g., playing audio or monitoring keystrokes on the keyboard) and the low-level USB protocol. Prior to designing this interface, let’s look at how to handle data on various types of endpoints.

    Bulk endpoints are the easiest to deal with. Since each data transfer is acknowledged, it is possible to send a negative acknowledge (NAK) stating that the device is not yet ready to deal with the endpoint. For example, if software is dealing with some other part of the device, or if data is simply not yet available (for example, a read from flash memory is not yet completed), the low-level USB driver can send a NAK.

    However, sending NAKs has a downside. The only sensible option for the host is to retry the request, potentially creating a long series of requests that are aborted by NAKs. This wastes USB bandwidth that could have been used by other endpoints or devices. In addition, the host software is blocked until the device answers. Hence, NAKs should be a last resort. It may be more appropriate to send partial data than to NAK an IN request. In the case of an OUT request, little can be done. If there is no room to accept the data, then a NAK is the only answer. However, it may be more appropriate to introduce a high-level protocol that will not allow an OUT request until there is space.

    Isochronous endpoints are more difficult to deal with because they are not acknowledged. The transmitter (in either direction) assumes that the data arrives. Since there is no acknowledgement on an isochronous endpoint, there is no possibility to send a NAK. Hence, if the device is not ready, the only course of action is to drop the data from an OUT packet or to send no data for an IN packet.

    Although this may seem harsh at first, remember that the purpose of an isochronous endpoint is to transmit real-time data in a guaranteed time slice of the USB bus. If the device does not have room to store the OUT data, data is probably not dealt with in real-time. Dropping is a sensible course of action. If no data is available to answer an IN request, then the device has not collected enough data. A sensible course of action is to transmit whatever data is present, or possibly no data at all.

    Assuming that the data can be processed or produced in real time, it is easy to compute the buffer requirements for an isochronous endpoint:

    Orbit Electronic Port Devices Drivers

    • For an OUT endpoint, the worst possible case is that the host posts one OUT request right at the end of a USB frame, and then immediately after the start of frame (SOF) it posts a second OUT request. This means that two OUT requests, carrying 250 µs of data, are received in quick succession. Hence, the buffering scheme must be able to buffer at least 250 µs worth of data. As long as the program does not consume data from this buffer until the SOF following the first packet, the buffer will never empty, providing a continuous data stream from host to device.
    • For an IN endpoint, the worst case is similar. The host could perform two IN transfers in short succession just before and immediately after a SOF. This means the IN buffer needs to be at least 250 µs too, and the buffer should contain125 µs at the start of each frame.

    It is worth comparing bulk and isochronous transfers from a perspective of coping with errors. In bulk transfers, the data itself is critical. The host and device can retry and slow down, as long as the data is transferred correctly, and this transfer must be acknowledged. For an isochronous transfer, the timing is critical. Either side can throw data away, as long as the real-time characteristics of data further along in the stream are adhered to. (Of course, the decision to drop data should not be taken lightly as it will have an impact on the fidelity of, for example, a video or audio stream.)

    The>
    2. The USB software architecture is designed for handling multiple endpoints.

    Note that one thread per endpoint may not be required and may not be the most elegant method. Given that only one transaction happens at a time (the third point), we can create a version of the system that relies on fewer threads in the system. Suppose that we want to implement a synchronous protocol over two endpoints where the host will always transmit data over a bulk OUT endpoint, prior to receiving data on an associated IN endpoint. This protocol requires only a single thread that handles OUT and IN transactions in order on that endpoint.

    This optimization is not without risk. Using a single thread per endpoint naturally caters to the situation where the host program was aborted and restarted between the OUT and IN transaction. In this case, the sequence of transactions seen on the device will be ..., OUT, IN, OUT, IN, OUT, OUT, IN, ..., and the thread dealing with OUT transactions must swallow the extra OUT. When optimized away to a program that sequentially consumes OUT and IN in order, this program must be written so that at any time it may expect the protocol to reset.

    The third point enables a further optimization. A single thread can deal with all bulk traffic on all interfaces, optimizing multiple endpoints into a single thread (Fig. 3). The single thread receives a request (IN or OUT) on any endpoint, dealing with that request, whereupon it moves on to the next request, possibly on a different endpoint. If the next request arrives before the last request has been dealt with completely, the USB device library sends NAKs, temporarily holding up the host. This optimization has one disadvantage, which is that the single thread must keep state for each endpoint and is effectively context switching on each request. We will show an example of this later.


    3. Multiple endpoints can be optimized into a single thread.

    The same optimization cannot be applied to isochronous endpoints. If we had a single thread dealing with all isochronous data, it would involve FIFOs for each endpoint from which the thread will read data or post data. These FIFOs will increase latency, which is often undesirable.

    The rest of this article discusses two examples of the software architecture and optimizations. One example uses vendor-specific drivers and mostly bulk endpoints (JTAG over USB), and the other shows a standard USB class with mostly isochronous endpoints (Audio over USB).

    JTAG Over USB

    For debugging programs on embedded processors, it is common to use a protocol such as JTAG for accessing the internal state of the processor and to use a program such as gdb to run on a PC to interpret and modify state, set breakpoints, single step, and so on. USB can be used to provide a cross-platform portable transport layer between the PC and JTAG wires.

    These devices are often called JTAG keys. In addition to JTAG, they often contain a UART for text I/O from the embedded program. JTAG keys do not follow any standard USB class. Hence, the descriptor labels them as vendor-specific, and it is up to us to define an endpoint structure that is fit for purpose. One endpoint structure would use six endpoints:

    • Two endpoints that control the USB device itself (endpoint 0 IN and OUT, required by USB)
    • An IN and OUT endpoint for JTAG traffic
    • An IN and OUT endpoint for UART traffic

    Orbit Electronic Port Devices Driver

    Since there is no USB standard, we can define the protocol for the JTAG traffic and choose a set of commands such as “send a clock with TMS high” or “read the program counter.” On the host side, our program can use libusb (an open-source USB driver library) to search for a device with our VID and PID, claim the interface, and then use the libusb interface to send IN and OUT transactions to both the JTAG and UART endpoints.

    Figure 4 shows a suitable software architecture for the device-end. Given that all endpoints are for bulk traffic, they can all be mapped onto a single thread and have two separate threads to deal with the state machines for JTAG traffic and UART traffic. Figure 5 shows a sample implementation.


    4. JTAG over USB employs multiple endpoints.


    5. A JTAG interface can be implemented using USB hardware and a standard 20-pin JTAG connector.

    Audio Over USB

    As an example of a standard USB device, let’s discuss Audio over USB. The Audio-2.0 Class standard allows interoperability of devices on platforms: a consumer can buy a USB microphone or USB speakers and plug it into any computer that supports Audio over USB. The number of channels, sampling rate, and sample depth can be varied to support anything from low-channel-count consumer devices to high-quality, high-channel-count professional audio.

    Devices that are more complex also are supported. The descriptor has a syntax for describing mixers, volume controls, equalizers, clocks, resampling, MIDI, and many other functions, although not all of those functions are recognized by all operating systems.

    On the host side, all USB traffic carrying audio samples is directed to the USB-Audio driver, which interacts through some general kernel sound interface with the program using audio, such as Skype. Other data, such as MIDI, can be handled through a separate interface by a separate driver.

    The device is designed to use USB Audio Class 2.0, and the standard specifies the endpoints that we need to use. If the application has to support MIDI, stereo in, and stereo out with a clock controlled by the device, then the standard dictates that there shall be seven endpoints:

    • Two endpoints that control the USB device itself (endpoint 0 IN and OUT, required by USB)
    • An isochronous IN endpoint for the I2S analog-to-digital converter (ADC)
    • An isochronous OUT endpoint for the I2S digital-to-analog converter (DAC)
    • An isochronous IN endpoint for feedback on the clock speed
    • A bulk IN endpoint and bulk OUT endpoint for MIDI

    The endpoints for the ADC and DAC have one IN and OUT transaction every microframe, every 125 µs. Assuming that the DAC and ADC operate with a 96-kHz sample rate, 12 samples are sent in each direction every 125 µs. Note that there are two independent oscillators: the device controls the 96-kHz sample rate, and the host controls the 125-µs microframe rate.

    As these clocks are independent, they will drift relative to each other, and there won’t always be 12 samples in each transfer. The vast majority of the transfers will have 12 samples, but sometimes there will be 13 or 11 samples.

    The device uses the third isochronous endpoint to inform the host of the current speed. It is sampled once every few milliseconds and reports the current sample rate in terms of samples per microframe. The MIDI endpoints carry MIDI data as and when available. The standard provides flexibility, allowing us to easily add more audio channels or audio processing.

    Figure 6 shows the software architecture for this device. Unlike the previous example, there is little that can be optimized. The class specification dictates the endpoint structure. With three isochronous endpoints, it is advisable to have three processes ready to accept and provide data on these endpoints. The only optimization that is feasible is for a single thread to handle Endpoint 0 and the MIDI endpoints (Fig. 7).

    Orbit Electronic Port Devices Driver Download


    6. Audio over USB software employs multiple endpoints.


    7. Audio over USB hardware can be implemented with XMOS hardware.

    Orbit Electronic Port Devices Driver Windows 7

    Summary

    USB devices comprise many interfaces that run concurrently and endpoints that are either bulk or isochronous. Bulk endpoints are for reliable data transport between host and device, whereas isochronous endpoints are for real-time data transport.

    When programming USB device endpoints, it is easiest to see those endpoints as individual software threads. Some of those can be mapped onto a single thread, but the programmer has to understand the consequences. In particular, mapping multiple isochronous endpoints onto a single software thread will introduce an (unpredictable) latency in the real-time stream.

    References

    1. Audio class specification: http://www.usb.org/developers/devclass_docs/Audio2.0_final.zip
    2. Libusb documentation: http://libusb.sourceforge.net/api-1.0/