Name
fxload - Firmware download to EZ-USB devicesThe driver is loaded based on a compatible ID match similar to other USB device class drivers included in Windows. If you want to load Usbser.sys automatically, set the class code to 02 and subclass code to 02 in the Device Descriptor. For more information, see USB communications device class. The Cypress driver fails to load with “This device cannot start. (Code 10)” when connected to a USB 3.0 port. I am using x64 Win7 Ultimate SP1 with a ASMedia XHCI Controller for USB 3.0 (ASUS P8Z68-VPRO motherboard) and the FX3 DVK rev3. Vendor driver along with Cypress USB-Serial application library is used to communicate with peripheral devices such as SPI, I2C, Vendor UART, JTAG, GPIO, User Flash Access etc. This user guide describes the steps to install the Cypress drivers for USB-Serial devices in Windows. Download drivers for Cypress GV-Series USB Protector TV-tuners (Windows XP x86), or install DriverPack Solution software for automatic driver download and update Are you tired of looking for the drivers for your devices? DriverPack Online will find and installthe drivers you need automatically Download DriverPack Onlinefor free.
Synopsis
Cypress Auto Flash Utility (AutoFlashUtil) is a flexible, cross-platform, integrated application to allow programming Cypress devices. It can perform Program, Erase, Verify, and Read operations on the flash of the target device. It can target an entire device, a specific region, a sector, and even a byte of a device.
fxload [ -v ] [ -Ddevpath] [ -Ihexfile] [ -ttype] [ -cconfig] [ -sloader]fxload [ -Ddevpath] [ -Llink] [ -mmode]
fxload [ -V ]
Description
fxload is a program which downloads firmware to USB devices based on AnchorChips EZ-USB,Cypress EZ-USB FX, or Cypress EZ-USB FX2 microcontrollers. These have 8-bit 8051 cores with special extensions for USB I/O. The FX2 supports high speed USB 2.0transfers (480 Mbit/sec) as well as full speed USB 1.1 transfers (12 Mbit/sec), while the earlier parts supports only full speed transfers. These controllershave several package options, and can be set up with external memory (on-chip memory is usually about 8K), EEPROMs, and ROMs when device costs allow.This uses 'usbfs' (older name: 'usbdevfs') to access devices, and issues vendor specific control requests to download and reset the EZ-USB devices.Normally, firmware will then 'renumerate' by disconnecting from USB and then reconnecting as a new device. It then appears with new device descriptors andfunctionality, as provided by the firmware which has been downloaded.
To support some non-firmware applications, this can also set up symbolic links for those usbfs names. It can also change their access modes. Both of thesecan help simplify software applications that need to talk to USB devices using user mode drivers, don't want to run with privileges or to examine all of theexisting USB devices, and which don't need more kernel drivers.
See the Linux-Hotplug web site for information about how to use fxload to download device firmware when hotplugging USB devices, usingdriver-specific scripts stored in the /etc/hotplug/usb directory.
Function Letters
At least one of the following options must be specified. Note that as usual with UNIX andLinux commands, the order of command option flags does not matter. You may use these in any order.Cypress Usb Serial Driver
- devmode=0666 are also available.
- -V
- Identifies the version of fxload being invoked, and exits without performing other actions.
Note that when downloading firmware that renumerates, there's no point in changing the device permissions or creating a symbolic link.
Options
By default, fxload assumes the device uses an EZ-USB or EZ-USB FX. It also assumes that thedevice in question has been specified by USB kernel hotplugging conventions, using the DEVICE environment variable to name a 'usbfs' file that can beused to talk to the device.- -sloader
- This identifies the hex file holding a second stage loader (in the same hex file format as the firmware itself), which is loaded into internal memory. Thisloader understands additional vendor control requests, beyond the one built into all EZ-USB hardware, which are needed to write external RAM or EEPROM. As alast step when loading firmware, fxload normally overwrites this second stage loader with parts of the firmware residing on-chip.
- -ttype
- Indicates which type of microcontroller is used in the device; type may be one of an21 (the original AnchorChips devices), fx (Cypress'updated version, the EZ-USB FX), or fx2 (the Cypress EZ-USB FX2, supporting high speed transfers). Except when writing to EEPROM, all that normallymatters when downloading firmware is whether or not the device uses an FX2.
- -v
- Prints some diagnostics, such as download addresses and sizes, to standard error. Repeat the flag (-vv, -vvv) to get more diagnostics.
- -Ddevpath
- Specifies the 'usbfs' path name for the device in question, such as /proc/bus/usb/004/080. This takes precedence over any DEVICE environmentvariable that may be set.
Notes
This program implements one extension to the standard 'hex file' format. Lines beginning with a '#' character are ignored, and may be used to hold copyrightstatements and other information. Other tools may not handle hexfiles using this extension.
At this writing, 'usbfs' is a kernel configuration option. That means that device drivers relying on user mode firmware downloading may need to depend onthat kernel configuration option. A less preferable alternative involves compiling the firmware into the kernel and managing downloads and renumeration there.This is less preferable in part because much device firmware is provided with GPL-incompatible licensing, and in part because storing such firmware firmwarewastes kernel memory.
Cypress Usb Driver Windows 10
For EZ-USB family devices, the hardware's first stage loader (supporting the 0xA0 vendor request) can't write into external memory. Configurations that putfirmware into external memory thus need a second stage loader. For typical 'flat' memory architectures, a loader supporting the 0xA3 vendor request is used towrite into that memory. Similarly, a second stage loader that supports the 0xA2 vendor request is needed when writing boot firmware into an I2C EEPROM. These0xA2 and 0xA3 vendor commands are conventions defined by Cypress. Devices that use bank switching or similar mechanisms to stretch the 64KByte address spacemay need different approach to loading firmware.
Not all devices support EEPROM updates. Some EZ-USB based devices don't have an I2C EEPROM; many such EEPROMs are too small to store firmware; and somefirmware can't be placed in bootable I2C EEPROMs.
Environment Variables
Files
- Cypress USB Devices Driver Download
- Device manufacturers of CDC Control devices
- Improved PnP and power management by the driver (such as, handling surprise removal).
- Added power management features such as USB Selective Suspend.
- If you want to load Usbser.sys automatically, set the class code to 02 and subclass code to 02 in the Device Descriptor. For more information, see USB communications device class. With this approach, you are not required to distribute INF files for your device because the system uses Usbser.inf.
- If your device specifies class code 02 but a subclass code value other than 02, Usbser.sys does not load automatically. Pnp Manager tries to find a driver. If a suitable driver is not found, the device might not have a driver loaded. In this case, you might have to load your own driver or write an INF that references another in-box driver.
- If your device specifies class and subclass codes to 02, and you want to load another driver instead of Usbser.sys, you have to write an INF that specifies the hardware ID of the device and the driver to install. For examples, look through the INF files included with sample drivers and find devices similar to your device. For information about INF sections, see Overview of INF Files.
'0x00000001': Enters selective suspend when idle, that is, when there are no active data transfers to or from the device.
'0x00000000': Enters selective suspend only when there are no open handles to the device.
Write an INF that references the install INF and add the registry entry in the HW.AddReg section.
Describe the registry entry in an extended properties OS feature descriptor. Add a custom property section that sets the bPropertyName field to a Unicode string, 'IdleUsbSelectiveSuspendPolicy' and wPropertyNameLength to 62 bytes. Set the bPropertyData field to '0x00000001' or '0x00000000'. The property values are stored as little-endian 32-bit integers.
For more information, see Microsoft OS Descriptors.
Starting in Windows 10, a Windows app can send requests to Usbser.sys by using the Windows.Devices.SerialCommunication namespace. It defines Windows Runtime classes that can use to communicate with a USB CDC device through a serial port or some abstraction of a serial port. The classes provide functionality to discover such serial device, read and write data, and control serial-specific properties for flow control, such as setting baud rate, signal states.
In Windows 8.1 and earlier versions, you can write a Windows desktop application that opens a virtual COM port and communicates with the device. For more information, see:
Win32 programming model:
.NET framework programming model:
Applies to
Microsoft-provided in-box driver (Usbser.sys) for your Communications and CDC Control device.
In Windows 10, the driver has been rewritten by using the Kernel-Mode Driver Framework that improves the overall stability of the driver.
In addition, UWP applications can now use the APIs provided by the new Windows.Devices.SerialCommunication namespace that allow apps to talk to these devices.
Usbser.sys installation
Load the Microsoft-provided in-box driver (Usbser.sys) for your Communications and CDC Control device.
Note
If you trying to install a USB device class driver included in Windows, you do not need to download the driver. They are installed automatically. If they are not installed automatically, contact the device manufacturer. For the list of USB device class driver included in Windows, see USB device class drivers included in Windows.
Windows 10
In Windows 10, a new INF, Usbser.inf, has been added to %Systemroot%Inf that loads Usbser.sys as the function device object (FDO) in the device stack. If your device belongs to the Communications and CDC Control device class, Usbser.sys is loaded automatically.You do not need to write your own INF to reference the driver. The driver is loaded based on a compatible ID match similar to other USB device class drivers included in Windows.
USBClass_02
USBClass_02&SubClass_02
Note
Microsoft encourages you to use in-box drivers whenever possible. On mobile editions of Windows, such as Windows 10 Mobile, only drivers that are part of the operating system are loaded. Unlike desktop editions, it is not possible to load a driver through an external driver package. With the new in-box INF, Usbser.sys is automatically loaded if a USB-to-serial device is detected on the mobile device.
Windows 8.1 and earlier versions
In Windows 8.1 and earlier versions of the operating system, Usbser.sys is not automatically loaded when a USB-to-serial device is attached to a computer. To load the driver, you need to write an INF that references the modem INF (mdmcpq.inf) by using the Include directive. The directive is required for instantiating the service, copying inbox binaries, and registering a device interface GUID that applications require to find the device and talk to it. That INF specifies 'Usbser' as a lower filter driver in a device stack.
The INF also needs to specify the device setup class as Modem to use mdmcpq.inf. Under the [Version] section of the INF, specify the Modem and the device class GUID. for details, see System-Supplied Device Setup Classes.
For more information, see this KB article.
Configure selective suspend for Usbser.sys
Starting in Windows 10, Usbser.sys supports USB Selective Suspend. It allows the attached USB-to-serial device to enter a low power state when not in use, while the system remains in the S0 state. When communication with the device resumes, the device can leave the Suspend state and resume Working state. The feature is disabled by default and can be enabled and configured by setting the IdleUsbSelectiveSuspendPolicy entry under this registry key:
To configure power management features of Usbser.sys, you can set IdleUsbSelectiveSuspendPolicy to:
That entry can be added in one of two ways:
Develop Windows applications for a USB CDC device
If you install Usbser.sys for the USB CDC device, here are the application programming model options: