{"adoption": {"forks": 147, "observed_at": "2026-08-28T04:03:42.498867+00:00", "stars": 1131}, "canonical_url": "https://ross.abutalabs.com/products/bluepad32", "card": {"archived": false, "artifact_type": "library", "description": "Bluetooth gamepad, mouse and keyboard support for ESP32 and PicoW", "domain": ["embedded-systems", "gaming-tools", "hardware", "cross-platform"], "enriched": true, "function": ["embedded", "sdk", "game"], "health_score": 68, "homepage": "https://bluepad32.readthedocs.io/", "language": "C", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["ricardoquesada/bluepad32"], "name": "ricardoquesada/bluepad32", "platform": ["embedded", "iot", "cpp", "c"], "pushed_at": "2026-01-22T17:04:03+00:00", "repo": "ricardoquesada/bluepad32", "stars": 1131, "tags": ["bluetooth-host", "gamepad", "esp32", "raspberry-pi-pico-w", "arduino", "esp-idf", "pico-sdk", "dualsense", "input-devices", "linux", "macos"], "topics": ["bluetooth", "esp32", "gamepad", "esp-idf", "arduino", "keyboard", "mouse", "pico-w", "pico-sdk"], "urls": [], "use_cases": ["control a robot with a DualSense bluetooth controller", "add bluetooth gamepad support to an esp32 project", "connect a wireless keyboard and mouse to a pico w", "build a retro console with bluetooth controllers", "read gamepad input in arduino or esp-idf", "use a ps5 controller with circuitpython via airlift coprocessor"], "what_it_is": "Bluepad32 is a Bluetooth controller host library that adds gamepad, mouse, and keyboard support to embedded projects on ESP32 variants, Raspberry Pi Pico W, and Posix systems. It lets devices like robots or retro consoles be controlled wirelessly with standard Bluetooth controllers such as the DualSense.", "when_to_avoid": ["your project runs on desktop or mobile platforms with native Bluetooth HID support", "you need Bluetooth audio or other non-HID profiles", "your microcontroller is not an ESP32 variant or Pico W/2 W"], "when_to_choose": ["you need bluetooth HID input (gamepads, mice, keyboards) on ESP32 or Pico W hardware", "you want a mature, well-documented library with Arduino, ESP-IDF, and Pico SDK integrations", "you're building robots, drones, or embedded consoles controlled by standard controllers"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/bluepad32", "repo": "ricardoquesada/bluepad32", "role": "main", "score": 51}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:42.498867+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:38:04.024353+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e7bb512a21ace8c5f9d8f94bde1a3fb820fd295d674cfa151dd7bc93008b938", "fetched_at": "2026-08-28T04:03:42.498867+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ricardoquesada/bluepad32"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:42.498867+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:38:04.024353+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e7bb512a21ace8c5f9d8f94bde1a3fb820fd295d674cfa151dd7bc93008b938", "fetched_at": "2026-08-28T04:03:42.498867+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ricardoquesada/bluepad32"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:38:04.024353+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e7bb512a21ace8c5f9d8f94bde1a3fb820fd295d674cfa151dd7bc93008b938", "fetched_at": "2026-08-28T04:03:42.498867+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ricardoquesada/bluepad32"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:42.498867+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:42.498867+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:42.498867+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:38:04.024353+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e7bb512a21ace8c5f9d8f94bde1a3fb820fd295d674cfa151dd7bc93008b938", "fetched_at": "2026-08-28T04:03:42.498867+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ricardoquesada/bluepad32"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:42.498867+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:42.498867+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:38:04.024353+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e7bb512a21ace8c5f9d8f94bde1a3fb820fd295d674cfa151dd7bc93008b938", "fetched_at": "2026-08-28T04:03:42.498867+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ricardoquesada/bluepad32"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:42.498867+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:42.498867+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:42.498867+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:38:04.024353+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e7bb512a21ace8c5f9d8f94bde1a3fb820fd295d674cfa151dd7bc93008b938", "fetched_at": "2026-08-28T04:03:42.498867+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ricardoquesada/bluepad32"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:42.498867+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:42.498867+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:38:04.024353+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e7bb512a21ace8c5f9d8f94bde1a3fb820fd295d674cfa151dd7bc93008b938", "fetched_at": "2026-08-28T04:03:42.498867+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ricardoquesada/bluepad32"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:38:04.024353+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e7bb512a21ace8c5f9d8f94bde1a3fb820fd295d674cfa151dd7bc93008b938", "fetched_at": "2026-08-28T04:03:42.498867+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ricardoquesada/bluepad32"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:38:04.024353+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e7bb512a21ace8c5f9d8f94bde1a3fb820fd295d674cfa151dd7bc93008b938", "fetched_at": "2026-08-28T04:03:42.498867+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ricardoquesada/bluepad32"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:38:04.024353+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e7bb512a21ace8c5f9d8f94bde1a3fb820fd295d674cfa151dd7bc93008b938", "fetched_at": "2026-08-28T04:03:42.498867+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ricardoquesada/bluepad32"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 63, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2123, "days_push": 223, "days_rel": 607, "gap_med": null, "n_releases_24m": 1}, "score": 51, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}