Skip to content

Add Switch Pro Controller NFC support#3

Draft
pathawks wants to merge 1 commit intomainfrom
procon-nfc
Draft

Add Switch Pro Controller NFC support#3
pathawks wants to merge 1 commit intomainfrom
procon-nfc

Conversation

@pathawks
Copy link
Copy Markdown
Owner

Summary

  • WebHID driver for Switch Pro Controller and Joy-Con (R) NFC reading
  • USB handshake (0x80 reports) with MCU initialized to NFC mode via subcommands
  • NTAG215 read delivered in two fragments (245 + 295 bytes) with CRC-8-CCITT checksums
  • Reuses existing AmiiboScanner UI — no new components needed

Known limitation

Linux HID descriptor omits report 0x31, blocking MCU/NFC access. Works on macOS and Windows.

Sources

Test plan

  • Connect Pro Controller via USB, verify initialization handshake
  • Place Amiibo on right stick, confirm NFC read and character lookup
  • Remove Amiibo, verify tag removal detection and scanner reset
  • Test Joy-Con (R) via USB
  • Verify Linux shows a clear error or graceful failure
  • Confirm no regressions on PowerSaves Amiibo scanner

WebHID driver for the Nintendo Switch Pro Controller and Joy-Con (R)
that reads NTAG215 tags (Amiibo) via the controller's built-in NFC
reader. Reuses the existing AmiiboScanner UI.

Protocol overview:
- USB handshake (0x80 reports) with Bluetooth fallback
- MCU initialized to NFC mode via subcommands and config packets
- NTAG215 read delivered in two fragments (245 + 295 bytes)
- CRC-8-CCITT checksums on all MCU/NFC command payloads
- Continuous NFC polling with tag detect/remove tracking

Known limitation: Linux HID descriptor omits report 0x31, blocking
MCU/NFC access. Works on macOS and Windows.

References:
  github.com/aka256/joycon-webhid (MIT)
  github.com/CTCaer/jc_toolkit (MIT)
  github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering
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