{
  "added_at": "2026-11-09",
  "category": "reconstruction-cases",
  "class": "hardware",
  "description_en": "pd-usb implements Playdate USB communication in a JavaScript WebSerial library using commands recovered through packet sniffing. It reads device status, controls and screen data, sends bitmaps, and exposes command and compiled-Lua payload operations.",
  "description_zh": "pd-usb 根据逆向分析和抓包获得的 Playdate USB 命令，用 JavaScript WebSerial 库与设备通信。它读取设备状态、按键与摇柄输入以及屏幕数据，发送位图，并提供发送命令和已编译 Lua 载荷的操作。",
  "entry_url": "https://awesomerea.org/resources/pd-usb-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/pd-usb-case/",
  "evidence_url": "https://github.com/cranksters/pd-usb/blob/a200e8a139ebc104e415c2856354f57b3aedcf17/readme.md",
  "group": "cases",
  "id": "pd-usb-case",
  "json_url": "https://awesomerea.org/resources/pd-usb-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/pd-usb-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/pd-usb-case/index.md",
  "name": "pd-usb: reconstructing Playdate USB commands",
  "name_zh": "pd-usb：重建 Playdate USB 命令",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirement_facets": [
    "prerequisites",
    "license"
  ],
  "requirements": [
    "A Playdate connected over USB and a browser with WebSerial support in a secure context.",
    "MIT License."
  ],
  "requirements_zh": [
    "需要通过 USB 连接的 Playdate，以及在安全上下文中支持 WebSerial 的浏览器。",
    "采用 MIT 许可证。"
  ],
  "targets": [
    "protocol"
  ],
  "url": "https://github.com/cranksters/pd-usb",
  "verification": "source-reviewed",
  "verified_at": "2026-11-08"
}
