RDP-FIRST  •  QEMU VALIDATED  •  OBSERVABLE

Make remote USB failures explainable.

USBCore traces USB redirection across Linux, FreeRDP URBDRC, Windows PnP and virtualized Windows guests - then shows exactly where the device lifecycle breaks or materializes.

Validated on QEMU + Windows Server 2025
ADB & MIDI materialization proven
Plan
Deterministic attach planning
Explain
Cross-layer observability
Rebind
Survive re-enumeration
Prove
Evidence & materialization
From CHANNEL_RC_BAD_INIT_HANDLE
to ADB Device started.
Lifecycles explained. Not guessed.
★★★★★
Real-world
validation
Secure by designNo extra daemonsUses existing transports
End-to-end data path
Android
Device
04E8:686C
Linux
USB Stack
libusb
URBDRC
Channel
Dynamic DVC
RDP
Virtual Channel
Encrypted
Windows
PnP
Materialization
QEMU Guest
Windows Server
2025
Observability & Correlation
Linux USB FreeRDP URBDRC RDP DVC Terminal Services Windows PnP SetupAPI QEMU Guest
Live session log (xfreerdp + URBDRC)
session: 2025-11-15T12:44:03Z
BEFORE: CHANNEL_RC_BAD_INIT_HANDLE
AFTER: ADB DEVICE STARTED
12:44:02.123[urbdrc]URBDRC channel opened (id=0x13)
12:44:02.341[urbdrc]TS_URB_GET_OS_FEATURE_DESCRIPTOR_REQUEST[42]
12:44:02.563[libusb]Samsung composite re-enumerated on same path
12:44:02.564[urbdrc]DEVICE_LEFT received
12:44:02.564[urbdrc]Same-path rebind: keeping UDEVICE, rebinding to new dev=6
12:44:02.565[urbdrc]Reopening libusb handle
12:44:02.573[urbdrc]Control transfer retry across re-enumeration window
12:44:03.104[windows]Remote Desktop USB Hub enumerated
12:44:03.122[windows]USB Composite Device enumerated
12:44:03.189[windows]ADB Device started
12:44:03.422[windows]Samsung MI_00 (MIDI) started via wdma_usb.inf
Events Captured
128
cross-layer events
Evidence Files
12
exported artifacts
Session Duration
1m 42s
full lifecycle
Result
Materialized
ADB + MIDI online
Why existing tools fail
Traditional USB-over-IP
Opaque failures
Extra daemons & ports
Weak or no debugging
No virtualization awareness
No lifecycle understanding
One-size-fits-all
USBCore
Explainable failures
Existing secure transports
Evidence bundles & logs
Virtualization-aware
Re-enumeration aware
Device & stack aware
Cross-layer observability stack
Linux USB
sysfs, udev topology
libusb
hotplug transfers
URBDRC
device lifecycle
RDPDR
virtual channel
Terminal Services
RDP stack policy
Windows PnP
drivers enumeration
QEMU Virtualization
virtual hw environment
Device Interfaces
MTP, ADB, MIDI, etc.

Correlated events, state transitions, and evidence across the entire path.

Validation timeline (Samsung A56 example)
12:44:02
URBDRC channel opened
12:44:02
GET_OS_FEATURE_DESCRIPTOR_REQUEST[42]
12:44:02
Samsung composite re-enumerated
12:44:02
DEVICE_LEFT received
12:44:02
Same-path rebind initiated
12:44:02
Control transfer retry
12:44:03
Windows PnP materialization
12:44:03
ADB Device online
12:44:03
MIDI interface started
FreeRDP ClientWindows Guest
URBDRC Open
Device Announce
Control Transfer (OS Feature 42)
LIBUSB_ERROR_PIPE
DEVICE_LEFT
Same-Path Rebind
Reopen Handles
Retry Control Transfer
Device Ready
Interfaces Started
Known working stacks
QEMU (Q35 + ICH9)WORKING
Windows Server 2025WORKING
RDS-RD-Server roleWORKING
FreeRDP 3.5.1 + rebind patchWORKING
URBDRC (RDP USB Redirection)WORKING
Samsung Android (04E8:686C)WORKING
MIDI via wdma_usb.infWORKING
View Full Validation Notes
Built for engineers

Attach Planning

Deterministic plans with identity, compatibility, and risk assessment.

Evidence Bundles

One-command exports for Windows, RDP, PnP, and URBDRC data.

Session Journaling

Every run captured, correlated, and ready for post-mortem.

Winprobe Collector

Structured Windows data without manual digging.

Protocol-Aware

Understands URBDRC, re-enumeration, and composite devices.

Extensible

Clean transport interface for future backends.

CLI preview
$ usbcore attach --device android --target winbox --user dev --dry-run --explain
{
  "schema_version": "usbcore/v1alpha1",
  "plan": {
    "device": "Samsung A56 (04e8:686c)",
    "backend": "rdp",
    "command": "xfreerdp /v:winbox /u:dev /usb:id:04e8:686c ...",
    "identity": "strong",
    "compatibility": "high",
    "warnings": [],
    "next_action": "execute or generate profile"
  }
}
Latest session (2025-11-15 12:44)
Targetwinbox:3389
Userdev
DeviceSamsung A56
Backendrdp (xfreerdp)
StatusCompleted
Duration00:01:42
Artifacts12 files
Inspect Session
Technology
Go
FreeRDP
libusb
Remmina
Windows PnP
QEMU
Linux
ADB
USBCore - Observable Remote USB Orchestration