Hi Just to let you know that I started a usbredir binding to Rust: https://gitlab.freedesktop.org/elmarco/usbredir-rs
Atm, it compiles with a custom rusb. I have some MR there ( https://github.com/a1ien/rusb/pull/97 & https://github.com/a1ien/rusb/pull/101) See the example: https://gitlab.freedesktop.org/elmarco/usbredir-rs/-/blob/main/usbredirhost/examples/usbredir.rs Atm, I pass an open fd with bash for testing, ex: exec 3<>/dev/tcp/localhost/7777 target/debug/examples/usbredir '1050:0407' --fd 3 Next, it could be extended this with [--tcp host:port], [--unix path], [-l|--listen]. Then I suppose it will be close to https://gitlab.freedesktop.org/spice/usbredir/-/blob/master/tools/usbredirect.c (Note that the Rust code doesn't use poll(), since it isn't portable. See https://libusb.sourceforge.io/api-1.0/group__libusb__poll.html#libusb_pollmain. The libusb/usbredir APIs don't make it easy to handle events..) -- Marc-André Lureau