39 stable releases

2.6.4 Dec 20, 2025
2.6.3 Aug 7, 2024
2.6.1 Mar 2, 2024
2.4.1 Jul 21, 2023
0.2.0 Mar 12, 2016

#14 in Hardware support

Download history 57255/week @ 2025-09-11 45745/week @ 2025-09-18 47614/week @ 2025-09-25 43587/week @ 2025-10-02 48110/week @ 2025-10-09 48010/week @ 2025-10-16 52579/week @ 2025-10-23 51625/week @ 2025-10-30 59399/week @ 2025-11-06 49725/week @ 2025-11-13 53819/week @ 2025-11-20 39073/week @ 2025-11-27 40201/week @ 2025-12-04 23999/week @ 2025-12-11

72,981 downloads per month
Used in 343 crates (154 directly)

MIT license

430KB
9K SLoC

C 5.5K SLoC // 0.2% comments Rust 4K SLoC // 0.1% comments Automake 28 SLoC Snakemake 2 SLoC // 0.9% comments

hidapi Version License: MIT Documentation Chat

This crate provides a rust abstraction over the features of the C library hidapi. Based off of hidapi-rs by Osspial.

Usage

This crate is on crates.io and can be used by adding hidapi to the dependencies in your project's Cargo.toml.

In case you are downloading / checking out this repository directly via git, make sure to initialize the git submodules after cloning!

git submodule update --init

Example

extern crate hidapi;

let api = hidapi::HidApi::new().unwrap();
// Print out information about all connected devices
for device in api.device_list() {
    println!("{:#?}", device);
}

// Connect to device using its VID and PID
let (VID, PID) = (0x0123, 0x3456);
let device = api.open(VID, PID).unwrap();

// Read data from device
let mut buf = [0u8; 8];
let res = device.read(&mut buf[..]).unwrap();
println!("Read: {:?}", &buf[..res]);

// Write data to device
let buf = [0u8, 1, 2, 3, 4];
let res = device.write(&buf).unwrap();
println!("Wrote: {:?} byte(s)", res);

Documentation

Available at docs.rs.

Dependencies

~0–13MB
~98K SLoC