Skip to content

Surface chipset-specific driver hint when a USB adapter fails to bind - #101

Merged
zalexdev merged 2 commits into
zalexdev:mainfrom
VV-B0Y:fix/rtl8812au-driver-hint
Sep 22, 2026
Merged

zalexdev merged 2 commits into
zalexdev:mainfrom
VV-B0Y:fix/rtl8812au-driver-hint

Conversation

@VV-B0Y

@VV-B0Y VV-B0Y commented Sep 15, 2026

Copy link
Copy Markdown

Problem

When a USB Wi-Fi adapter is passed through to the guest VM but no driver binds
(iw dev returns no interface), the app logs a generic message that doesn't
tell the user which chipset failed or what driver/firmware to install:

USB adapter: DRIVER MISSING — ... Install the driver or firmware for this
chipset from the Terminal, then retry.

The chipset database (ChipsetDb) already holds the exact driver and install
notes for each supported VID:PID — it just isn't surfaced on this failure path.

Fix

On the DRIVER MISSING path, look up the passed-through device's VID:PID in
ChipsetDb and append a hint with the chipset name, driver, and the database
notes. Unknown VID:PIDs are left unchanged.

Example for a Realtek RTL8812AU (0bda:8812) on a pre-6.14 guest kernel:

USB adapter: DRIVER MISSING — ... Detected: Realtek RTL8812AU
(driver rtw88_8812au) — Mainline since 6.14. On older kernels needs
aircrack-ng/rtl8812au DKMS. Install the driver or firmware for this chipset
from the Terminal, then retry.

Test plan

  • Unknown chipset: message unchanged (no hint appended).
  • RTL8812AU (or any ChipsetDb entry) with its driver absent: the
    DRIVER MISSING line now names the chipset + driver + notes.

Log-only change; no functional behavior is altered.

When 'iw dev' shows no interface after USB passthrough, look up the passed-through device's VID:PID in ChipsetDb and include the chipset name, driver, and notes in the DRIVER MISSING message instead of a generic hint.
Copilot AI lite review requested due to automatic review settings September 15, 2026 03:20

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Correct device attachment and Wi-Fi filtering, and avoid duplicate punctuation in generated hints.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

This PR adds chipset-specific driver hints to the USB Wi-Fi DRIVER MISSING log.

Changes:

  • Looks up recognized devices in ChipsetDb.
  • Appends chipset, driver, and installation notes.
  • Preserves the existing message for unknown devices.
File summaries
File Summary
app/src/main/java/com/zalexdev/stryker/engine/RootlessEngine.java Adds chipset-aware hints to the missing-driver log.
Review details

Suppressed comments (1)

app/src/main/java/com/zalexdev/stryker/engine/RootlessEngine.java:829

  • pickWifiDevices() treats any vendor-specific USB interface as a Wi-Fi candidate, while ChipsetDb also contains Ethernet entries such as RTL8152/RTL8153. Without checking info.kind, a vendor-specific Ethernet dongle can be described in a Wi-Fi DRIVER MISSING message with the wrong remediation; only append entries whose kind is WIFI.
            if (info == null) continue;
  • Files reviewed: 1/1 changed files
  • Comments generated: 2
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread app/src/main/java/com/zalexdev/stryker/engine/RootlessEngine.java
Comment thread app/src/main/java/com/zalexdev/stryker/engine/RootlessEngine.java Outdated
- Only describe devices actually passed through (usb.isAttached).
- Only append entries whose ChipsetInfo kind is WIFI (don't describe Ethernet/broadband dongles in a Wi-Fi error).
- Add the trailing period only when the hint doesn't already end with one.
@zalexdev
zalexdev merged commit 3bd04cf into zalexdev:main Sep 22, 2026
1 check passed
zalexdev added a commit that referenced this pull request Oct 3, 2026
Two files needed hands; the rest merged as-is.

RootlessEngine: #101 added chipsetDriverHint() in the same place the
dialogs refactor put the javadoc and @OverRide on usb(). Both kept.

WiFIAdapter, handshake attack: took our side, which no longer declares
the `clients` list the refactor removed, plus #92's !isInternalDeauthEnabled()
guard.

WiFIAdapter, type 7: #92 patched the old outputtext version of this block,
which our side had already rewritten against AttackMonitor. Reapplied the
intent -- the internal radio is refused only while the toggle is off, and
the refusal now names the setting instead of claiming the hardware cannot
inject.
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

Successfully merging this pull request may close these issues.

3 participants