HIDSharp is a multiplatform C# library for USB HID devices, COM enabled to additionally allow use by VB6 and MS Access programs (the .NET Framework will of course need to be installed). It has received seven years of continual use with a Dymo Scale in MS Access, and five years with a wide variety of USB HID devices I've developed, so I know it to be reliable.

HIDSharp supports Windows, MacOS, and Linux (hidraw).

HIDSharp uses the ISC license.


Version 2.0 alpha (December 9, 2017) (includes C# sample)
Version 1.5 (May 18, 2013) (includes C# sample)
Version (April 21, 2013) (includes C# sample)
Version 1.3 (February 23, 2013) (includes C# sample)
Version 1.1 (July 28, 2012) (includes C# and VB6 samples)
Version 1.0 (August 28, 2010) (includes C# and VB6 samples)
NuGet Package "HidSharp"
Online Documentation

Version History

2.0 alpha (December 9, 2017):
Added a NativeImplementation property to Device.
Added exclusivity layer, with the ability to request interruption. This is useful for interprocess cooperation, but must be enabled manually.
Added support for serial ports. This is still somewhat buggy on Linux, but on MacOS it works better than the Mono native implementation.
Added support for Linux libudev.so.1.
Fixed Linux support on recent Mono versions.
GetFeature() and SetFeature() now work on Linux.
Exposed GetFileSystemName(). This can be used on Linux to check hidraw permissions.
Feedback on the new features is appreciated. Some code modifications will be needed to use this new version.

1.5 (May 18, 2013):
Added the DevicePath property to HidDevice.
This is useful for differentiating devices with the same VID, PID, etc. (April 21, 2013):
Added missing XML documentation file to the archive.

1.4 (April 20, 2013):
Documented the most important classes.
Fixed a problem with output reports on 64-bit Windows.
Fixed a timeout bug on Windows.
Parallelized device enumeration.
Reordered platform detection to prevent binary planting on Windows.

1.3 (February 23, 2013):
Fixed Linux libudev reference to not require developer package symlinks.

1.2 (October 16, 2012):
Fixed MacOS support.

1.1 (July 28, 2012):
Added experimental MacOS and Linux support.
Added experimental report descriptor parsing.

1.0 (August 28, 2010):
Initial release.