This was broken when ISO endpoint support was added.
- HasLibUsbDriver()()()() property
This property will always return true.
32bit applications not running on 64bit operating systems. (Windows)
If LibUsbDotNet is compiled as Win32 instead of Any CPU it would not work on 64bit operating systems with libusb-win32.
InfWizard with embedded libusb-win32 v1.2.1 driver resource package.
default UsbEndpointBase.MaxReadWrite changed back to 65536. This is the limit at which libusbdotnet begins splitting transfers.
libusb-win32 (ludn) source branch.
The LUDN edition of libusb-win32 has been discontinued as it is no longer needed.
LibUsbDotNet v2.2.6 and above are packaged with the official
libusb-win32 signed drivers. (http://sourceforge.net/projects/libusb-win32)
Isochronous endpoint support.
Additional support for asynchronous I/O. See the UsbTransferQueue class and
the Read.Isochronous example.
InfWizard to include an embedded libusb-win32 driver resource package.
Previous version of the InfWizard required the user to download driver resource package(s) before it could be used.
InfWizard will continue to support these downloadable driver packages but now comes with a libusb-win32 driver resource package
embedded into InfWizard.exe.
- AddedDataReceivedEnabledChanged event
This event is fired on the DataReceivedEnabled property changes state.
The LibUsbDotNet InfWizard has been re-worked and includes many new features.
InfWizard no longer uses the 'Find Drivers' option. Instead, it uses
driver resource packages that contain the drivers/coinstallers, inf/cat file
templates, and all other files that may be required by the installation.
Driver resource packages can be downloaded automatically by InfWizard
or from http://sites.google.com/site/libusbdotnet/driver_resources.
As of v2.2.5 Winusb 1.9 and libusb-win32 0.1.12.2 packages are available.
InfWiard has an install now feature, thanks to Peter Batard and the Libusb-1.0 team.
After a driver package is created, it can be automatically installed.
InfWizard remove device function enhancements. The remove device function can remove usb
devices by the device instance id or all devices matching the hardware id. It now calls
SetupDiUnintallOEMInf as well as SetupDIRemoveDevice.
Detailed logging added. Most of the InfWizard pages have a log status rtf box which indicates
the current progress of an operation. All log status boxes can be saved, copied and cleared via
the context menu.
- UpdatedWinUsbRegistry class
Improved support for composite devices. Added DeviceID and InterfaceID property
- AddedEndpointType parameter to OpenEndpointReader and OpenEndpointWriter methods.
The endpoint type must be specified for linux Libusb-1.0 compatibility.
Benchmark Console application.
Thank Xiaofan (http://mcuee.blogspot.com) for helping debug this application and getting it ready for release.
Usb devices runnning benchmark firmware do not work correctly if plugged in while booting under linux.
Benchmark firmware for Microchip PIC USB devices updated to MCHPFSUSB Framework v2.6a. Added support for no ping pong buffering benchmark tests.
- FixedBug ID: 2969931
- Linux xbuild issue.
The xbuild utility failed to build the LibUsbDotNet.sln. This was caused
by an invalid resource in the InfWizard application and a casting issue for
function that take a Predicate<> as a parameter.
- FixedBug ID: 2956665
- UsbDeviceFinder fails to find VID and PIDs > 0x7FFF.
USB devices that have VID or PIDs greater than 0x7FFF are not found by the
Asynchronous transfer functions to UsbEndpointBase.
For more details see the NewAsyncTransfer()()()() and SubmitAsyncTransfer()()()() functions in the UsbEndpointBase class.
Low-level .NET MonoLibUsb API for Libusb-1.0.
The low-level MonoLibUsb API (Libusb-1.0) is supported on many platforms including windows via the Libusb-1.0 windows-backend port.
Unlike the LibUsbDotNet API, MonoLibUsb has full support for all Libusb-1.0 functions.
This option forces LibUsbDotNet to gather extra device information via the windows setup api for devices using drivers that do not support the setupapi.
This option forces LibUsbDotNet to use only the Libusb-1.0 windows backend driver.
- GetConfiguration call in UsbDevice.Open method.
The UsbDevice.Open()()()() method requests
the usb devices current configuration upon opening. This causes problems in some situations.
- AddedIUsbDevice.ResetDevice()()()() method.
- FixedBug ID: 2937372
- Read Failed:WaitHandle.WaitOne missing member exception.
If .NET 3.5 is not installed, a System.Threading.WaitHandle.WaitOne missing
member exception is thrown. LibUsbDotNet should not require the 3.5
runtime. It should work with 2.0 and greater.
- FixedBug ID: 2935627
- Stack overflow when reading an ep that does not exists.
If an attempt is made to open and transmit to a non-existent endpoint a
stack overflow occurs. Expected behavior is to throw an exception.
- FixedBug ID: 2935456
- UsbDevice.KernelType property not set correcty.
If the UsbDevice.KernelType is accessed when no device are connected it
does not update properly when a device is connected.
- FixedBug ID: 2934547
- DeviceNotifier not working.
On Linux like OSes the DeviceNotifier never fires events. On Windows, a DllNotFound exception is thrown.
- FixedBug ID: 2933530
- Composite WinUSB not found.
WinUSB interfaces that are part of a composite device do not appear in the WinUsbRegistry.DeviceList.
- FixedBug ID: 2930836
- [OSX PPC] GetDescriptor request fails.
On big-endian platforms, the descriptor type and index bytes are reversed.
- FixedBug ID: 2927179
- Wrong versioning. LibUsbDotNet 2.2.0 all AssemblyInfo.cs contains [assembly:AssemblyVersion("220.127.116.11")]
Benchmark application: Removed all calls to Control.Invoke.
The benchmark application now uses a timer control to periodically update the display instead of "Invoking"
an update everytime data is transferred. This provides a more accurate benchmark reading as well as a
work-a-round for Mono .NET runtimes on platforms that do not properly implement the Control.Invoke method.
LINUX compiler option.
The LINUX compiler option is no longer used. LibUsbDotNet (v2.2.1 and above) is fully platform independent.
LibUsbDotNet supports linux via the linux libusb v1.x driver.
UsbDevice.OpenEndpointReader and UsbDevice.OpenEndpointWriter members
to first lookup the endpoint descriptor for the current configuration.
If an attempt is made to open an endpoint on a unconfigured device
(GetConfiguration = 0) an exception is thrown.
If an attempt is made to open a non-existent or invalid endpoint an exception is thrown.
endpoint descriptor information to UsbEndpointBase class.
A New property, 'EndpointInfo' is available from the UsbEndpointBase class.
Depricated UsbGlobals class.
The UsbGlobals class has been rendered obsolete and will be removed in future release.
Update your code you use the UsbDevice class instead.
- FixedBug ID: 2886021
- Problem with several instances of the same device (WinUsb)
When connecting 2 (or more) identical USB devices, the library has problems
opening each device instance.
- FixedBug ID: 2873320Bug ID: 2874172
- Error getting Key "SymbolicName"
Some devices having no SymbolicName. In this case, the main application or
.NET framework crashes.
- FixedBug ID: 2853283
- Infwizard exception thrown on load
The InfWizard throws an exception when loaded.
support for the genuine libusb-win32 kernel driver.
If the LibUsbDotNet native kernel driver is not detected it falls back to the original libusb-win32 kernel driver.
Using the native driver is recommended.
static open method to the LibUsbDevice class.
Opens a libUsb device from a user suppiled device filename.
public static bool Open(string deviceFilename, out LibUsbDevice usbDevice)
static open method to the WinUsbDevice class.
Opens a WinUSB device from a user suppiled device path (symbolic link).
public static bool Open(string devicePath, out WinUsbDevice usbDevice)
DeviceInterfaceGuid property from WinUsbDevice class.
A DeviceInterfaceGuid is not required for a WinUsbDevice.
UsbRegistryInfo property from UsbDevice classes.
A UsbRegistry instance is not required for the UsbDevice classes.
device and endpoint level locking features.
The device and endpoint level locking features had specfic requirements pertaining to the usb symbolic name that could not always be met.
- FixedBug ID: 2845680
- LibUsbDotNet-libusb-win32 v18.104.22.168 GET_INTERFACE request fails in XP SP3
The GET_INTERFACE request in the libusb kernel driver fails on Windows XP SP3 but works under windows Vista.
- FixedBug ID: 2845679
- InfWizard Spawn driver function problems.
The InfWizard spawn driver function fails to locate WinUSB support drivers from the DDK install directory.
UsbException on non-existent endpoint.
If an an attempt is made to open an endpoint that does not exists, a UsbException is thrown.
LibUsbDotNet-libusb-win32 kernel driver.
Applied LibUsbDotNet kernel driver patches to libusb-win32 v0.1.12.2.
LibUsbDotNet-libusb-win32 v22.214.171.124 kernel created.
Removed all references to benchmark device. The Test_Bulk apllication is more universal and easier to tailor to specific devices.
- FixedBug ID: 2833695
- USB rev. code treated as hex instead of bcd.
The USBSymbolicName class is converting the bcd revision number to a hex number.
- FixedBug ID: 2833701
- InfWizard never populates the "Driver Information" property.
On the final wizard page of the InfWizard the "Driver Information" property under the "Info" category is never populated.
InfWizard remove device options form.
Benchmark PIC device firmware for MCP 2.5 USB stack.
- FixedBug ID: 2816121
- UsbGlobals.OpenDevice(UsbDeviceFinder) Null reference exception
Calling UsbGlobals.OpenDevice(UsbDeviceFinder) generates an exception if
the device is not found.
- FixedBug ID: 2818621
- DeviceNotifier Invalid Marshal fieldName Exception
Field passed in is not a marshaled member of the type
Parameter name: fieldName.
3 example projects.
- AddedSupport for Microsofts generic user-mode usb driver, WinUsb.
- AddedAdded kernel level support for libusb-win32.
- AddedAdded a new and improved InfWizard.
- AddedAdded advanced USB locking strategies for process/thread level usb device sharing.
- AddedAdded Additional read/write functions added to the endpoint reader/writer classes.
- UpdatedUpdated documentation with SandCastle (SHFB). Documentation is now available in html and Microsoft Help .chm format.
- UpdatedUpdated LibUsbDotNet type and member names; they now adhere to strict naming conventions.
Added additional members and types for more easily locating and opening usb devices by:
- Revision Code
- Serial Number
- Device Interface GUID
- UpdatedPorted to C#2.0! Many API changes. See documentation.
- AddedAdded Test_DeviceNotify sample project.
- FixedFixed mising data issue with the DataReceived event.
- UpdatedRebuilt libusb core components with WINDDK 2003 (SP1).
- AddedAdded Itanium 64bit support.
- FixedFixed x64 installation error.
- RemovedDebug runtimes removed from the distributions to avoid confusion.
New Class Added. The DeviceNotify class is used for receiving device insertion/removal events. See documentation for full details.
- AddedAdded lock routines to internal read/write functions to increase multi-threading stability.
- RemovedRemoved dependencies on msvcmrt.lib.
- UpdatedProject defaults changed to compiled with /clr:pure syntax.
- AddedAdded 64bit support.
- FixedFixed function ClibUsb.Open(InfoDevice). It will now open different devices with the same vendor and product id.
- AddedAdded remove functions to the CLibUsb.ActiveEndPoints property (CEndPonts class)