Device.Net 3.0 has been released. Device.Net is a framework for communicating with connected devices. Along with Device.Net Usb.Net, and Hid.Net 3.0 were also released. These libraries share infrastructure with Device.Net so that code can be shared for Usb, and Hid devices on Android, UWP, Windows, Linux, and OSX. Device.Net puts a layer across these platforms to handle things like connection events and so on. See the Quick Start guide.

Join the conversation on the Device.Net Discord Server

Device.Net – Not Just Another USB/Hid Library

There are dozens of C# USB and Hid libraries floating around. Most of them will do the job, but few of them handle both USB, and Hid, and fewer still work across platforms. If you’re trying to build an application that crosses devices types, or platforms, you’re going to have to build infrastructure and dependency injection so that the behavior between the platforms isn’t different. With each release Device.Net has gotten progressively closer to achieving this goal for you, so you can be concerned with communicating with the device, not building framework.

Fixes / Enhancements

If you’ve used earlier versions of the framework and found issues, you might find that they have been fixed in the latest version. Here are some of the fixes and features. The framework is under active development and you can expect more fixes and features in future.

More Hid Devices Show Up in Enumeration (#97)

Some Hid devices were not showing up because there was a failure to get things like the serial number. This issue was fixed. The devices show up whether the properties can be obtained or not.

Reads Return Read Byte Count (#85)

Reads now return a struct that contains the number of actual bytes read. This means that it is now possible to tell where the data ends in a large array of data

USB Interfaces and Endpoint Selection (#19, #77)

This was one of the biggest issues with previous versions. USB devices expected to use Interrupt endpoints (pipes) but this was not the normal use case. The UsbDevice class now allows switching between different Interfaces on the USB device, and different endpoints on the interfaces. There is a distinction made between bulk transfer and interrupt transfer. Bulk transfer will be the default, and the library will fall back on interrupt transfer by default for oddball devices that use interrupt transfer instead of bulk.

Logging and Tracing (#7)

Tracing supports dependency injection so that devices can write out that the data that is read from or written to the device. This will help with diagnosing issues with data transfer.

USB Buffer Size Can Be Specified (#63)

Another issue with previous versions was that read/write buffer sizes could not be specified. They can now be specified in the constructor of the device.


Hid.Net for Android, UWP, Windows apps, and

Usb.Net for Android, UWP, Windows apps

The Device.Net dependency will be automatically added. Contributions and feedback are always welcome on the GitHub page.


  1. Dear Christian,
    first thanks for you job !
    i expect to replace my old dll library that i use on some of my applications, which was designed for W7 32bits !
    but i’m a VB.NET user and have a lot of trouble to try your samples 😦
    after some hours i succesfull test your “enumerating” sample and i can see my HID device.
    but now i stuck
    please do you know if some VB.NET samples are available somewhere ?
    thanks for any help, best regards

  2. Is it possible to connect and read data from HID Device without getting vendor ID or product id? or is there anyway we can get vendor id and product id at runtime using c# code?
    In my case HID device means a Barcode Scanner(works in HID mode), Platform UWP

  3. I wrote a simple app (WPF, .net 4.5) to communicate with a device. It works well reading/writing data, but only when the app runs as administrator. When not running as administrator, the device is not found. Im using (also tried with hidsharp, same result). This happens with the last windows 10, in previous versions there are no problems in the communication with the device, even if the app is not running in administrator mode.
    Please help.

    1. Hello Carlos,

      well i’m not sure if i right understand your issue :
      “This happens with the last windows 10, in previous versions there are no problems in the communication with the device, even if the app is not running in administrator mode.” ..

      but FIY, i’m using mcHID.DLL since several years. it worked like a charme (from windows 7 to 10 32 & 64bits) until a recent W10 update ! now the same app doesn’t work anymore on my W10 :((

      after several research on GG, i found that the problem may come from a recent update from Microsoft : September 10, 2019-KB4515384
      ( )

      if anyone have advice or tips .. please !


  4. I don’t understand C #, I’m a VB.NET user!

    would someone be nice enough to provide examples of uses of this framework, in VB.NET ?
    being able to use it on different platforms (UWP and Android) is a real plus to its use.

    Thanks for any help and Happy new year for sure :

Leave a Reply