GUACAMOLE-522: USB Device Redirection. #1103
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds Web USB API integration to the Guacamole client, enabling users to redirect local USB devices from their browser to remote desktop sessions through the Guacamole protocol. This complements the server-side PR
Each USB device connection creates a
ManagedUSB
instance that manages the entire lifecycle of that specific device. This handles opening, claiming interfaces, polling endpoints for data, and disconnecting. These are registered with theManagedClient
.Data Flow
ManagedUSB
instance is created and added toManagedClient.usbDevices
usbdata
messagesNew proposed protocol messages
client → server
usbconnect
: Sent when a USB device is connected, includes device ID, vendor/product IDs, device metadata, and flattened interface/endpoint descriptorsusbdata
: Streams data from USB device endpoints to the server with endpoint number and transfer typeusbdisconnect
: Notifies server when a USB device is disconnected locallyserver → client
usbdata
: Receives data from the server to write to specific USB device endpointsusbdisconnect
: Server-initiated disconnection requests for specific devices