Skip to content

Add NVIDIA SHIELD Controller (2017) USB and Bluetooth battery support - #250

Open
pierreski wants to merge 4 commits into
HeyOkay:mainfrom
pierreski:codex/shield-controller
Open

pierreski wants to merge 4 commits into
HeyOkay:mainfrom
pierreski:codex/shield-controller

Conversation

@pierreski

@pierreski pierreski commented Oct 9, 2026 •

Copy link
Copy Markdown

Adds battery percentage and charging-status support for the NVIDIA SHIELD Controller (2017) family over USB and Bluetooth HID.

Uses the documented battery, charger, and board-info queries from the [Linux NVIDIA SHIELD driver](https://github.com/torvalds/linux/blob/master/drivers/hid/hid-nvidia-shield.c). No firmware or device settings are changed.

Integrates with HaloBattery’s existing tray icons, preferences, and notifications. The board serial identifies the same controller across USB and Bluetooth; when both connections respond, USB takes priority and only one icon appears. If charging status is unavailable, the percentage remains visible with an “unknown” label, and alerts wait for a confirmed state.

Validation

Tested NVIDIA Controller v01.04 on Windows 11:

  • Battery readings over USB and Bluetooth.
  • Active charging over USB.
  • Bluetooth disconnect/reconnect tray behavior.
  • USB ↔ Bluetooth handoffs with a consistent controller identity.
  • Simultaneous USB/Bluetooth deduplication, showing one icon with USB taking priority.

All 623 automated tests pass, including coverage for invalid replies, timeouts, unknown charging status, multiple-controller identities, connection deduplication, and notification behavior.

Scope and limitations

Supports the 2017 controller family (0955:7214). The older 2015 controller is outside this contribution’s scope.

Low-battery alerts, full-charge detection, and multiple physical SHIELD controllers have automated coverage but have not been verified on hardware.

Related work

This does not close an existing issue. No existing SHIELD-specific issue or pull request was found.

Several open device-support PRs touch the same shared documentation and application registration files. Notable overlaps include #202 and #188, which also modify providers/base.py, and #167, which concerns battery notifications.

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.

1 participant