Skip to content

Share a Mac-connected USB FIDO security key with the guest #392

Open

Description

@deaddeadbeef

What would you like to improve?

I'd like to use a Mac-connected USB security key for FIDO authentication in Try Omarchy's Linux guest.

With the existing experimental USB passthrough, my YubiKey appeared in Linux as 1050:0406 (YubiKey FIDO+CCID), but the kernel reported can't set config #1, error -32 and no usable HID device appeared. This matches the privilege limitation documented in #236.

Before taking this further, is anyone already working on FIDO-specific forwarding, or would the USB entitlement work cover this soon?

Suggested change

An opt-in bridge for the key's FIDO HID interface:

Mac IOHID -> VM transport -> Linux UHID -> guest browser

We tried this in a running VM and got it working:

  • A small Mac helper opened the physical YubiKey through IOHID as a normal user, without root or whole-device USB capture.
  • The Linux helper created a temporary UHID device and dropped root privileges before handling the connection.
  • The guest received a complete 408-byte authenticatorGetInfo response from the physical key: firmware 5.7.4, capabilities 0x0d.
  • I successfully signed in to Windows App in the guest's Chromium browser using the key.
  • Seven synthetic transport tests cover framing, report-ID handling, pairing, continuation-frame reassembly, and disconnect behavior.

The prototype uses a paired loopback TCP connection. For integration, a dedicated virtio-serial channel alongside the existing host integrations seems worth discussing.

I'd keep the initial scope to one explicitly selected USB FIDO security key, browser authentication, and an enable/disable control. The experiment currently selects exactly one Yubico FIDO interface and assumes 64-byte reports. Only my key and Windows App sign-in have been verified; other keys, registration, reconnection, sleep/wake, and host/guest contention still need testing. This is a feasibility result, not a production-ready implementation.

@themartiano @vcanuel — would this be useful alongside #236, and is there overlapping work we should coordinate with before developing it further?

Related: #191 covers phone/QR passkeys; #133 covers Touch ID/Keychain passkeys. This proposal is specifically for forwarding a physical USB FIDO key.

Activity

  1. vcanuel commented on Oct 20, 2026

    @vcanuel
    Contributor

    Thanks, nice work! No overlap with #236: your bridge works at the HID level, so it sidesteps the libusb privilege issue instead of depending on it, and the key stays usable on the Mac.
    I think it's a sound approach as long as it stays opt-in. If you take it further, matching any FIDO key rather than Yubico only, and moving to virtio-serial as you suggested, seem like the right next steps.

  2. deaddeadbeef commented on Oct 25, 2026

    @deaddeadbeef
    Author

    @vcanuel, thanks for your suggestions! PR #406 adds opt-in, vendor-independent FIDO forwarding over virtio-serial. The selected FIDO interface is unavailable on Mac while forwarded. Would you mind taking a look? Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions