iam-etienne-lm / usbip

A Rust library to run a USB/IP server

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

usbip

Coverage Status crates.io

A Rust library to run a USB/IP server to simulate USB devices.

It also enables sharing devices from an OS supporting libusb(libusb claims that it supports Linux, macOS, Windows, OpenBSD/NetBSD, Haiku and Solaris) to another OS supporting USB/IP(Linux, Windows). Sharing an CCID SmartCard from macOS to Linux is tested by running gpg --card-status.

How to use

See examples directory. Three examples are provided:

  1. hid_keyboard: Simulate a hid keyboard that types something every second.
  2. cdc_acm_serial: Simulate a serial that gets a character every second.
  3. host: Act like original usb/ip sharing server, sharing one device from one machine to another. Also supports sharing from macOS to Linux!

To run example, run:

$ env RUST_LOG=info cargo run --example hid_keyboard

Then, in a USB/IP client environment:

$ usbip list -r $remote_ip
$ usbip attach -r $remote_ip -b $bus_id

Then, you can inspect the simulated USB device behavior in both sides.

API

See code comments. Not finalized yet, so get prepared for api breaking changes.

Documentation

rust usbip

easier win usbip client (wdm)

usbip-win forled from cezanne

About

A Rust library to run a USB/IP server

License:MIT License


Languages

Language:Rust 100.0%