Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Any possibility of attaching usbip devices to Windows? #65

Closed
yiays opened this issue Nov 5, 2021 · 4 comments
Closed

Any possibility of attaching usbip devices to Windows? #65

yiays opened this issue Nov 5, 2021 · 4 comments

Comments

@yiays
Copy link

yiays commented Nov 5, 2021

This project is great, but I'm hoping to use it backwards - connecting a USB device from a physical linux computer to a Windows Machine. There have been other implementations of USBIP for Windows that enabled this, however none of them are very well maintained or work without test signing.
I'm sure it's a long shot, but is this at all possible?

@dorssel
Copy link
Owner

dorssel commented Nov 6, 2021

Short answer: hate to disappoint you, but not with usbipd-win.

Long answer:

Apart from the actual USBIP protocol, server and client are completely dissimilar. If I would ever go for a Windows client, it would be a separate project. But the problem (as always) is: drivers. It cannot be done without a kernel mode driver, which requires either WHQL or Microsoft attestation signatures. For the server side, I just leveraged the VirtualBox drivers, which are already properly signed. But I do not know of any open-source signed client drivers. There are some commercial solution available.

On the up-side, writing the driver is somewhat easier these days now that Microsoft has a USB simulation framework: https://docs.microsoft.com/en-us/windows-hardware/drivers/usbcon/usb-emulated-device--ude--architecture. But that still requires kernel mode coding, and therefore hardware Authenticode signatures.

@e-t-l
Copy link

e-t-l commented Mar 4, 2022

@dorssel Thanks for this explanation, as I had a similar question. If I can ask one follow-up: Is USBIPD-win only for connecting a Windows-attached USB device virtually to a WSL instance, or can it be used to connect to any other USBIP client? (Specifically, I'm hoping to connect to the client from https://github.com/cezanne/usbip-win, which is supposedly an effective Windows USBIP client.)

Do you think I can use your USBIPD for my server for this case, or should I resort to the (much more complicated) USBIP Windows server setup described in the cezanne repo?

EDIT: I just saw #79 (comment) so I'm guessing the answer to my question is Yes, your server will work with cezanne's client.

@dorssel
Copy link
Owner

dorssel commented Mar 4, 2022

Yes, it should work with any USBIP client, although I myself have tested it only with the default Linux client. Other people have reported success with Windows clients as well.

@luc-git
Copy link

luc-git commented Feb 9, 2024

Short answer: hate to disappoint you, but not with usbipd-win.

Long answer:

Apart from the actual USBIP protocol, server and client are completely dissimilar. If I would ever go for a Windows client, it would be a separate project. But the problem (as always) is: drivers. It cannot be done without a kernel mode driver, which requires either WHQL or Microsoft attestation signatures. For the server side, I just leveraged the VirtualBox drivers, which are already properly signed. But I do not know of any open-source signed client drivers. There are some commercial solution available.

On the up-side, writing the driver is somewhat easier these days now that Microsoft has a USB simulation framework: https://docs.microsoft.com/en-us/windows-hardware/drivers/usbcon/usb-emulated-device--ude--architecture. But that still requires kernel mode coding, and therefore hardware Authenticode signatures.

Couldn't be doable with libusb instead of a driver?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants