{"adoption": {"forks": 654, "observed_at": "2026-08-28T04:06:56.780238+00:00", "stars": 2498}, "canonical_url": "https://ross.abutalabs.com/products/gp2040-ce", "card": {"archived": false, "artifact_type": "application", "description": "Multi-Platform Gamepad Firmware for Raspberry Pi Pico and other RP2040 boards", "domain": ["gaming-tools", "hardware", "embedded-systems", "cross-platform"], "enriched": true, "function": ["embedded", "gui", "configuration-management"], "health_score": 95, "homepage": "https://gp2040-ce.info", "language": "C++", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["OpenStickCommunity/GP2040-CE"], "name": "OpenStickCommunity/GP2040-CE", "platform": ["embedded", "iot", "cross-platform"], "pushed_at": "2026-08-18T02:44:20+00:00", "repo": "OpenStickCommunity/GP2040-CE", "stars": 2498, "tags": ["gamepad-firmware", "rp2040", "raspberry-pi-pico", "arcade-stick", "fightstick", "input-latency", "socd-cleaning", "web-configurator", "usb-hid", "xinput", "web-server"], "topics": ["arcade", "controller", "firmware", "gamepad", "joystick", "raspberry-pi-pico", "rp2040"], "urls": [], "use_cases": ["build a custom arcade stick for fighting games", "convert a Raspberry Pi Pico into a low-latency gamepad", "make a controller that works on PC, PS5, Switch, and Xbox", "build a fightstick with SOCD cleaning for tournaments", "flash custom firmware with RGB LEDs and OLED display on a controller", "use a DIY controller on Steam Deck or MiSTer", "emulate keyboard inputs for MAME cabinets and rhythm games"], "what_it_is": "GP2040-CE is a multi-platform gamepad firmware for the Raspberry Pi Pico and other RP2040-based microcontroller boards, offering extremely low input latency and 14 input modes including XInput, Switch, PS4/PS5, and Xbox One. It includes a built-in embedded web configurator, RGB LED support, display support, and extensive customization features for building custom controllers and arcade sticks.", "when_to_avoid": ["your controller board does not use an RP2040 microcontroller", "you need native (non-passthrough) PS5 or Xbox One/Series authentication", "you want a plug-and-play commercial controller rather than a DIY build"], "when_to_choose": ["you are building a custom controller or arcade stick around an RP2040 board", "you need multi-console compatibility from a single device", "you want sub-1ms input latency for competitive play", "you want web-based configuration without installing software"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/gp2040-ce", "repo": "OpenStickCommunity/GP2040-CE", "role": "main", "score": 72}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.780238+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:27:02.323988+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "33971d7508eaf9fe2d9c487b908a4614b8491d6401512825dd33170c6cff5ea0", "fetched_at": "2026-08-28T04:06:56.780238+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenStickCommunity/GP2040-CE"}, {"content_hash": "ecc4e4ee7ef41ccd6cb3b6c42f69871c535339b6286d4a831c4a4ce9ea9e48f7", "fetched_at": "2026-08-29T10:09:16.155790+00:00", "kind": "homepage", "missing": false, "url": "https://gp2040-ce.info"}, {"content_hash": "be73553995bb0c4d08849d7c9b2ecd51e296a43f761d94c0ab5ec5e5a50e4046", "fetched_at": "2026-08-29T10:09:16.167409+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/installation"}, {"content_hash": "c8f0190f54529132e9292191b6494a58f1e10b30e761b7c7bdec88a34fd38b28", "fetched_at": "2026-08-29T10:09:16.165519+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/introduction"}, {"content_hash": "f91ecc042688941bbc4ae76fd43c19963cc108ee84f9f924e0010c9705aafc66", "fetched_at": "2026-08-29T10:09:16.169118+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/faq/faq-general"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.780238+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:27:02.323988+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "33971d7508eaf9fe2d9c487b908a4614b8491d6401512825dd33170c6cff5ea0", "fetched_at": "2026-08-28T04:06:56.780238+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenStickCommunity/GP2040-CE"}, {"content_hash": "ecc4e4ee7ef41ccd6cb3b6c42f69871c535339b6286d4a831c4a4ce9ea9e48f7", "fetched_at": "2026-08-29T10:09:16.155790+00:00", "kind": "homepage", "missing": false, "url": "https://gp2040-ce.info"}, {"content_hash": "be73553995bb0c4d08849d7c9b2ecd51e296a43f761d94c0ab5ec5e5a50e4046", "fetched_at": "2026-08-29T10:09:16.167409+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/installation"}, {"content_hash": "c8f0190f54529132e9292191b6494a58f1e10b30e761b7c7bdec88a34fd38b28", "fetched_at": "2026-08-29T10:09:16.165519+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/introduction"}, {"content_hash": "f91ecc042688941bbc4ae76fd43c19963cc108ee84f9f924e0010c9705aafc66", "fetched_at": "2026-08-29T10:09:16.169118+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/faq/faq-general"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:27:02.323988+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "33971d7508eaf9fe2d9c487b908a4614b8491d6401512825dd33170c6cff5ea0", "fetched_at": "2026-08-28T04:06:56.780238+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenStickCommunity/GP2040-CE"}, {"content_hash": "ecc4e4ee7ef41ccd6cb3b6c42f69871c535339b6286d4a831c4a4ce9ea9e48f7", "fetched_at": "2026-08-29T10:09:16.155790+00:00", "kind": "homepage", "missing": false, "url": "https://gp2040-ce.info"}, {"content_hash": "be73553995bb0c4d08849d7c9b2ecd51e296a43f761d94c0ab5ec5e5a50e4046", "fetched_at": "2026-08-29T10:09:16.167409+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/installation"}, {"content_hash": "c8f0190f54529132e9292191b6494a58f1e10b30e761b7c7bdec88a34fd38b28", "fetched_at": "2026-08-29T10:09:16.165519+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/introduction"}, {"content_hash": "f91ecc042688941bbc4ae76fd43c19963cc108ee84f9f924e0010c9705aafc66", "fetched_at": "2026-08-29T10:09:16.169118+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/faq/faq-general"}], "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:06:56.780238+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.780238+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.780238+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:27:02.323988+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "33971d7508eaf9fe2d9c487b908a4614b8491d6401512825dd33170c6cff5ea0", "fetched_at": "2026-08-28T04:06:56.780238+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenStickCommunity/GP2040-CE"}, {"content_hash": "ecc4e4ee7ef41ccd6cb3b6c42f69871c535339b6286d4a831c4a4ce9ea9e48f7", "fetched_at": "2026-08-29T10:09:16.155790+00:00", "kind": "homepage", "missing": false, "url": "https://gp2040-ce.info"}, {"content_hash": "be73553995bb0c4d08849d7c9b2ecd51e296a43f761d94c0ab5ec5e5a50e4046", "fetched_at": "2026-08-29T10:09:16.167409+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/installation"}, {"content_hash": "c8f0190f54529132e9292191b6494a58f1e10b30e761b7c7bdec88a34fd38b28", "fetched_at": "2026-08-29T10:09:16.165519+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/introduction"}, {"content_hash": "f91ecc042688941bbc4ae76fd43c19963cc108ee84f9f924e0010c9705aafc66", "fetched_at": "2026-08-29T10:09:16.169118+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/faq/faq-general"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.780238+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.780238+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:27:02.323988+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "33971d7508eaf9fe2d9c487b908a4614b8491d6401512825dd33170c6cff5ea0", "fetched_at": "2026-08-28T04:06:56.780238+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenStickCommunity/GP2040-CE"}, {"content_hash": "ecc4e4ee7ef41ccd6cb3b6c42f69871c535339b6286d4a831c4a4ce9ea9e48f7", "fetched_at": "2026-08-29T10:09:16.155790+00:00", "kind": "homepage", "missing": false, "url": "https://gp2040-ce.info"}, {"content_hash": "be73553995bb0c4d08849d7c9b2ecd51e296a43f761d94c0ab5ec5e5a50e4046", "fetched_at": "2026-08-29T10:09:16.167409+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/installation"}, {"content_hash": "c8f0190f54529132e9292191b6494a58f1e10b30e761b7c7bdec88a34fd38b28", "fetched_at": "2026-08-29T10:09:16.165519+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/introduction"}, {"content_hash": "f91ecc042688941bbc4ae76fd43c19963cc108ee84f9f924e0010c9705aafc66", "fetched_at": "2026-08-29T10:09:16.169118+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/faq/faq-general"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.780238+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.780238+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.780238+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:27:02.323988+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "33971d7508eaf9fe2d9c487b908a4614b8491d6401512825dd33170c6cff5ea0", "fetched_at": "2026-08-28T04:06:56.780238+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenStickCommunity/GP2040-CE"}, {"content_hash": "ecc4e4ee7ef41ccd6cb3b6c42f69871c535339b6286d4a831c4a4ce9ea9e48f7", "fetched_at": "2026-08-29T10:09:16.155790+00:00", "kind": "homepage", "missing": false, "url": "https://gp2040-ce.info"}, {"content_hash": "be73553995bb0c4d08849d7c9b2ecd51e296a43f761d94c0ab5ec5e5a50e4046", "fetched_at": "2026-08-29T10:09:16.167409+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/installation"}, {"content_hash": "c8f0190f54529132e9292191b6494a58f1e10b30e761b7c7bdec88a34fd38b28", "fetched_at": "2026-08-29T10:09:16.165519+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/introduction"}, {"content_hash": "f91ecc042688941bbc4ae76fd43c19963cc108ee84f9f924e0010c9705aafc66", "fetched_at": "2026-08-29T10:09:16.169118+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/faq/faq-general"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.780238+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:56.780238+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:27:02.323988+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "33971d7508eaf9fe2d9c487b908a4614b8491d6401512825dd33170c6cff5ea0", "fetched_at": "2026-08-28T04:06:56.780238+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenStickCommunity/GP2040-CE"}, {"content_hash": "ecc4e4ee7ef41ccd6cb3b6c42f69871c535339b6286d4a831c4a4ce9ea9e48f7", "fetched_at": "2026-08-29T10:09:16.155790+00:00", "kind": "homepage", "missing": false, "url": "https://gp2040-ce.info"}, {"content_hash": "be73553995bb0c4d08849d7c9b2ecd51e296a43f761d94c0ab5ec5e5a50e4046", "fetched_at": "2026-08-29T10:09:16.167409+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/installation"}, {"content_hash": "c8f0190f54529132e9292191b6494a58f1e10b30e761b7c7bdec88a34fd38b28", "fetched_at": "2026-08-29T10:09:16.165519+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/introduction"}, {"content_hash": "f91ecc042688941bbc4ae76fd43c19963cc108ee84f9f924e0010c9705aafc66", "fetched_at": "2026-08-29T10:09:16.169118+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/faq/faq-general"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:27:02.323988+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "33971d7508eaf9fe2d9c487b908a4614b8491d6401512825dd33170c6cff5ea0", "fetched_at": "2026-08-28T04:06:56.780238+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenStickCommunity/GP2040-CE"}, {"content_hash": "ecc4e4ee7ef41ccd6cb3b6c42f69871c535339b6286d4a831c4a4ce9ea9e48f7", "fetched_at": "2026-08-29T10:09:16.155790+00:00", "kind": "homepage", "missing": false, "url": "https://gp2040-ce.info"}, {"content_hash": "be73553995bb0c4d08849d7c9b2ecd51e296a43f761d94c0ab5ec5e5a50e4046", "fetched_at": "2026-08-29T10:09:16.167409+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/installation"}, {"content_hash": "c8f0190f54529132e9292191b6494a58f1e10b30e761b7c7bdec88a34fd38b28", "fetched_at": "2026-08-29T10:09:16.165519+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/introduction"}, {"content_hash": "f91ecc042688941bbc4ae76fd43c19963cc108ee84f9f924e0010c9705aafc66", "fetched_at": "2026-08-29T10:09:16.169118+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/faq/faq-general"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:27:02.323988+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "33971d7508eaf9fe2d9c487b908a4614b8491d6401512825dd33170c6cff5ea0", "fetched_at": "2026-08-28T04:06:56.780238+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenStickCommunity/GP2040-CE"}, {"content_hash": "ecc4e4ee7ef41ccd6cb3b6c42f69871c535339b6286d4a831c4a4ce9ea9e48f7", "fetched_at": "2026-08-29T10:09:16.155790+00:00", "kind": "homepage", "missing": false, "url": "https://gp2040-ce.info"}, {"content_hash": "be73553995bb0c4d08849d7c9b2ecd51e296a43f761d94c0ab5ec5e5a50e4046", "fetched_at": "2026-08-29T10:09:16.167409+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/installation"}, {"content_hash": "c8f0190f54529132e9292191b6494a58f1e10b30e761b7c7bdec88a34fd38b28", "fetched_at": "2026-08-29T10:09:16.165519+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/introduction"}, {"content_hash": "f91ecc042688941bbc4ae76fd43c19963cc108ee84f9f924e0010c9705aafc66", "fetched_at": "2026-08-29T10:09:16.169118+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/faq/faq-general"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:27:02.323988+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "33971d7508eaf9fe2d9c487b908a4614b8491d6401512825dd33170c6cff5ea0", "fetched_at": "2026-08-28T04:06:56.780238+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenStickCommunity/GP2040-CE"}, {"content_hash": "ecc4e4ee7ef41ccd6cb3b6c42f69871c535339b6286d4a831c4a4ce9ea9e48f7", "fetched_at": "2026-08-29T10:09:16.155790+00:00", "kind": "homepage", "missing": false, "url": "https://gp2040-ce.info"}, {"content_hash": "be73553995bb0c4d08849d7c9b2ecd51e296a43f761d94c0ab5ec5e5a50e4046", "fetched_at": "2026-08-29T10:09:16.167409+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/installation"}, {"content_hash": "c8f0190f54529132e9292191b6494a58f1e10b30e761b7c7bdec88a34fd38b28", "fetched_at": "2026-08-29T10:09:16.165519+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/introduction"}, {"content_hash": "f91ecc042688941bbc4ae76fd43c19963cc108ee84f9f924e0010c9705aafc66", "fetched_at": "2026-08-29T10:09:16.169118+00:00", "kind": "site_page", "missing": false, "url": "https://gp2040-ce.info/faq/faq-general"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 97, "rhythm": 24}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1367, "days_push": 15, "days_rel": 297, "gap_med": 200.5, "n_releases_24m": 3}, "score": 72, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}