Wiznet makers

Benjamin

Published July 03, 2026 © Apache License 2.0 (Apache-2.0)

131 UCC

11 WCC

16 VAR

0 Contests

0 Followers

2 Following

Original Link

How Does Joypad OS Combine W5500 GameCube Ethernet and AI Controller Tools?

Joypad OS adds a W5500 GameCube-to-Ethernet bridge and MCP/VLM tools for AI-driven controller input in one firmware platform.

COMPONENTS Hardware components

WIZnet - W5500

x 1

Hardwired TCP/IP Ethernet controller used by the gc2eth_feather GameCube-to-Ethernet bridge over SPI


PROJECT DESCRIPTION

Overview

Joypad OS is an open-source firmware platform for game controller adapters, custom controllers, assistive input devices, and wireless controller bridges. It runs on microcontroller platforms such as RP2040, ESP32-S3, and nRF52840, then normalizes controller input and routes it to console or USB output protocols.

The WIZnet part of this repository is the gc2eth_feather target. It builds a GameCube/GBA-to-Ethernet bridge around an Adafruit Feather RP2040 USB Host board and a W5500 Ethernet FeatherWing. The same repository also contains AI-oriented control tooling: joypad-mcp lets Claude Code, Codex, Cursor, or another MCP client drive a Joypad OS adapter as a synthetic player, while joypad-bot shows a vision-language model loop that turns game frames into controller button decisions.

Those are separate paths inside the project, not one single combined firmware target. That separation is important. The W5500 path shows hardwired Ethernet in a latency-sensitive console bridge. The AI path shows how a controller adapter can become an endpoint for agent-driven input.

Generated technical diagram showing Joypad OS, W5500 Ethernet, Dolphin TCP, and AI/MCP control tooling Generated technical diagram: Joypad OS contains both a W5500 GameCube Ethernet bridge path and AI/MCP controller tooling.

System Configuration

The joypad_gc2eth_feather build target is defined for an Adafruit Feather RP2040 USB Host plus a W5500 Ethernet FeatherWing. In the source, the Joybus data line is mapped to GP4, while W5500 uses SPI1 with SCK on GP14, MOSI on GP15, MISO on GP8, and CS on GP10. The configuration also defines static local network settings and Dolphin TCP ports.

The bridge application starts the GameCube host and Joybus bridge, derives a locally administered MAC address from the RP2040 serial number, initializes the W5500, and opens TCP connections to the host running Dolphin. Socket 0 carries the GameCube/GBA TCP stream. Socket 1 is used for Dolphin's clock-sync connection.

On the AI side, joypad-mcp runs as a host-side MCP server. It exposes tools such as connect, tap, press, hold, axis, combo, read_state, screenshot, and screenshot_diff. These tool calls become UART input packets, and the firmware's UART host path submits them into the normal input router like controller events.

System Architecture and Data Flow

The W5500 bridge receives Dolphin command frames over TCP, translates each command into a Joybus transaction, reads the GameCube or GBA response, and sends the response back over Ethernet. The command set handled in the source includes RESET, STATUS, READ, WRITE, and a default one-byte command path.

Generated technical diagram of the W5500 GameCube-to-Ethernet data flow Generated technical diagram: Dolphin TCP traffic passes through W5500 socket handling, RP2040 firmware, and Joybus exchange logic.

The source also includes profiling and tuning hooks for this path. CDC commands expose W5500 diagnostics, TCP socket status, frame counters, trace capture, status-cache tuning, write-cache tuning, read-cache tuning, and speculative status pre-send controls. That makes the bridge more than a simple serial-to-Ethernet pipe. It is a firmware-level TCP and Joybus timing experiment built around W5500 hardware sockets.

For AI control, the data flow is different. An MCP client talks to joypad-mcp, the MCP server sends full desired controller states over UART or USB-CDC, and Joypad OS routes those states to whatever output mode the adapter is running. joypad-bot is a separate baseline that uses OpenAI vision and tool calling to decide button presses from emulator frames. Its README describes later paths where the same controller tool schema can drive a real adapter and, eventually, a real console.

Role of the WIZnet Chip

W5500 is used as the hardwired TCP/IP Ethernet controller in the gc2eth_feather bridge. The driver in src/apps/gc2eth_feather/w5500.c directly accesses W5500 common registers, socket registers, TX buffers, and RX buffers over SPI. It checks VERSIONR, writes gateway, subnet, MAC, and IP registers, opens TCP sockets, sets destination IP and port registers, sends by advancing socket TX write pointers, and receives by reading socket RX read pointers.

That is why this post marks TOE as Yes. The public source includes W5500 register and socket-level driver code, and the application uses W5500's TCP offload rather than treating Ethernet as a generic host feature.

The project-level hybrid network flag is marked No for this post because the W5500 target being described is a wired Ethernet bridge. Joypad OS also has Bluetooth, Wi-Fi, USB, and host-side AI tooling elsewhere in the repository, but the W5500 bridge itself is not a simultaneous wired and wireless hybrid design.

AI and MCP Angle

The AI value in Joypad OS is unusually direct for a hardware firmware project. joypad-mcp is not just documentation about AI. It is a working MCP server layer with controller actions exposed as tools. The README explicitly frames it as a way for Claude Code, Codex, Cursor, or another MCP client to drive a Joypad OS adapter as a synthetic player and see the result through screenshots.

Generated source-map diagram showing the W5500 bridge files and AI/MCP tooling files Generated technical diagram: the W5500 bridge and AI control paths are separate but source-visible parts of the same repository.

joypad-bot adds the vision-language model experiment. In its baseline loop, a model sees an emulator frame, decides which buttons to press through a tool call, and feeds those button decisions back into the game loop. The README describes OpenAI Chat Completions with vision and tool calling, then outlines future steps where the same tool schema can drive a Joypad OS adapter and later real console hardware through capture and adapter paths.

For WIZnet readers, this is useful because it shows a direction beyond ordinary connectivity. A wired Ethernet controller path can support deterministic console or device bridging, while an MCP server can make controller input addressable by an AI agent. Even when these are separate targets, the repository is a strong example of how embedded firmware, hardwired Ethernet, and AI-agent control tooling can coexist in one platform.

Public Artifact Scope

The repository is large and active. It includes firmware targets, platform support, documentation, build scripts, tool directories, controller compatibility documentation, and AI-related host tools. It is not just a short proof-of-concept.

The W5500 bridge source is public, but the repository does not provide a real photo of the specific W5500 Feather bridge hardware. The images in this Maker post are therefore generated technical diagrams, not hardware photos. They are intended to explain the data flow and source structure without implying an unreleased product image.

The project is licensed under Apache License 2.0. The inspected repository metadata showed ongoing activity, with the latest inspected commit dated 2026-06-25 and the repository updated on 2026-07-02.

Where It Fits

Joypad OS fits several Maker categories at once. It is a retro gaming and controller firmware platform. It is also a practical example of a W5500-based Ethernet bridge for a timing-sensitive device protocol. Finally, it is an AI tooling reference because it exposes physical controller input through MCP and experiments with VLM-driven game control.

The W5500 bridge is especially interesting for projects that need a microcontroller to terminate TCP locally while preserving timing-sensitive I/O on the other side. The AI tooling is interesting for projects where a real hardware device should be controllable by an LLM or vision agent through a clear tool interface.

The main limitation is scope. The W5500 path, MCP path, and VLM path are not a single finished appliance. They are source-visible capabilities inside one firmware ecosystem. That makes the project highly valuable as a reference, but readers should inspect the exact target they plan to build before assuming every tool path applies to every adapter.

Related WIZnet Maker Projects

libogc2 is related because it modernizes the GameCube/Wii homebrew SDK and includes WIZnet Ethernet adapter support. Joypad OS is different because it is controller and adapter firmware, with a W5500 bridge target and AI control tools in the same repository.

W5500 Ethernet Adapter for GameCube: ETH2SP1 is the closest hardware ecosystem comparison. That post is a reseller/product entry for a GameCube W5500 adapter, while Joypad OS is an open-source firmware platform that includes a W5500 GameCube-to-Ethernet bridge target.

utility for the Nintendo GameCube: Swiss and swiss-gc are related on the GameCube networking side. Joypad OS approaches the space from controller, Joybus, and adapter firmware rather than from a GameCube utility or launcher.

FAQ

Q. Is Joypad OS only a W5500 project? No. Joypad OS is a broad controller firmware platform. W5500 appears in the gc2eth_feather GameCube-to-Ethernet bridge target.

Q. Is W5500 used through a real driver? Yes. The repository includes W5500 SPI driver code that accesses common registers, socket registers, TX buffers, and RX buffers directly.

Q. Does joypad-mcp run over W5500? The public README describes joypad-mcp as a host-side MCP server that sends controller input packets to Joypad OS over UART or USB-CDC. The post does not claim MCP traffic itself runs through W5500.

Q. Why is this relevant to AI? The repository includes MCP tools for synthetic controller input and a VLM controller experiment using OpenAI vision and tool calling. That makes it a concrete AI-agent hardware-control reference, not just an AI-themed description.

Q. Can I build the W5500 bridge directly from the repository? The repository includes the joypad_gc2eth_feather target, W5500 driver source, pin mapping, and network configuration, but builders should still review the target-specific hardware assumptions before flashing.

Korean

개요

Joypad OS는 게임 컨트롤러 어댑터, 커스텀 컨트롤러, 보조 입력 장치, 무선 컨트롤러 브리지를 만들기 위한 오픈소스 펌웨어 플랫폼입니다. RP2040, ESP32-S3, nRF52840 같은 마이크로컨트롤러에서 동작하며, 컨트롤러 입력을 공통 형식으로 정규화한 뒤 콘솔 또는 USB 출력 프로토콜로 라우팅합니다.

이 저장소에서 WIZnet과 직접 연결되는 부분은 gc2eth_feather 타깃입니다. 이 타깃은 Adafruit Feather RP2040 USB Host 보드와 W5500 Ethernet FeatherWing을 사용해 GameCube/GBA-to-Ethernet 브리지를 구성합니다. 같은 저장소에는 AI 지향 제어 도구도 포함되어 있습니다. joypad-mcp는 Claude Code, Codex, Cursor 또는 다른 MCP 클라이언트가 Joypad OS 어댑터를 합성 플레이어처럼 조작하게 해주고, joypad-bot은 게임 화면을 보고 버튼 입력을 결정하는 VLM 루프를 보여줍니다.

다만 이 두 흐름은 하나의 단일 펌웨어 타깃에 모두 합쳐져 있는 구조가 아니라, 같은 프로젝트 안의 별도 경로입니다. 이 구분이 중요합니다. W5500 경로는 지연 시간에 민감한 콘솔 브리지에서 hardwired Ethernet을 사용하는 사례이고, AI 경로는 컨트롤러 어댑터가 AI 에이전트의 입력 엔드포인트가 될 수 있음을 보여줍니다.

Joypad OS, W5500 Ethernet, Dolphin TCP, AI/MCP 제어 도구를 보여주는 생성 기술 다이어그램 생성 기술 다이어그램: Joypad OS에는 W5500 GameCube Ethernet 브리지 경로와 AI/MCP 컨트롤러 도구가 함께 존재합니다.

시스템 구성

joypad_gc2eth_feather 빌드 타깃은 Adafruit Feather RP2040 USB Host와 W5500 Ethernet FeatherWing 조합을 대상으로 정의되어 있습니다. 소스에서 Joybus 데이터 라인은 GP4에 매핑되고, W5500은 SPI1을 사용합니다. SCK는 GP14, MOSI는 GP15, MISO는 GP8, CS는 GP10입니다. 설정 파일에는 정적 로컬 네트워크 설정과 Dolphin TCP 포트도 들어 있습니다.

브리지 애플리케이션은 GameCube host와 Joybus bridge를 시작하고, RP2040 시리얼 번호에서 로컬 MAC 주소를 만든 뒤 W5500을 초기화합니다. 이후 Dolphin이 실행 중인 호스트로 TCP 연결을 엽니다. socket 0은 GameCube/GBA TCP 스트림을 처리하고, socket 1은 Dolphin의 clock-sync 연결에 사용됩니다.

AI 쪽에서 joypad-mcp는 호스트 측 MCP 서버로 동작합니다. 이 서버는 connect, tap, press, hold, axis, combo, read_state, screenshot, screenshot_diff 같은 도구를 제공합니다. 이러한 도구 호출은 UART 입력 패킷이 되고, 펌웨어의 UART host 경로는 이를 일반 컨트롤러 이벤트처럼 입력 라우터에 전달합니다.

시스템 아키텍처와 데이터 흐름

W5500 브리지는 Dolphin 명령 프레임을 TCP로 받고, 각 명령을 Joybus 트랜잭션으로 변환한 뒤 GameCube 또는 GBA 응답을 읽어서 다시 Ethernet으로 보냅니다. 소스에서 처리되는 명령 경로에는 RESET, STATUS, READ, WRITE, 기본 1바이트 명령 경로가 포함됩니다.

W5500 GameCube-to-Ethernet 데이터 흐름 생성 기술 다이어그램 생성 기술 다이어그램: Dolphin TCP 트래픽은 W5500 socket 처리, RP2040 펌웨어, Joybus 교환 로직을 거칩니다.

이 경로에는 프로파일링과 튜닝을 위한 훅도 들어 있습니다. CDC 명령은 W5500 진단, TCP socket 상태, 프레임 카운터, trace capture, status-cache 튜닝, write-cache 튜닝, read-cache 튜닝, speculative status pre-send 제어를 제공합니다. 따라서 이 브리지는 단순한 serial-to-Ethernet 파이프가 아니라, W5500 hardware socket을 중심으로 한 펌웨어 수준의 TCP 및 Joybus 타이밍 실험입니다.

AI 제어의 데이터 흐름은 다릅니다. MCP 클라이언트가 joypad-mcp와 통신하고, MCP 서버는 원하는 컨트롤러 상태 전체를 UART 또는 USB-CDC로 전송합니다. Joypad OS는 그 상태를 현재 어댑터 출력 모드로 라우팅합니다. joypad-bot은 별도의 baseline으로, OpenAI vision과 tool calling을 사용해 에뮬레이터 프레임에서 버튼 입력을 결정합니다. README는 같은 컨트롤러 도구 스키마가 나중에 실제 어댑터와 실제 콘솔 경로까지 이어질 수 있다고 설명합니다.

WIZnet 칩의 역할

W5500은 gc2eth_feather 브리지에서 hardwired TCP/IP Ethernet 컨트롤러로 사용됩니다. src/apps/gc2eth_feather/w5500.c의 드라이버는 SPI를 통해 W5500 common register, socket register, TX buffer, RX buffer에 직접 접근합니다. VERSIONR을 확인하고, gateway, subnet, MAC, IP 레지스터를 설정하며, TCP socket을 열고, destination IP와 port를 설정하고, socket TX write pointer를 갱신해 데이터를 보내며, socket RX read pointer를 읽어 수신 데이터를 처리합니다.

그래서 이 글은 TOE를 Yes로 표시합니다. 공개 소스에는 W5500 register 및 socket 수준의 드라이버 코드가 있고, 애플리케이션은 Ethernet을 단순 호스트 기능으로 쓰는 것이 아니라 W5500의 TCP offload를 실제 경로에 사용합니다.

Hybrid Network는 이 글에서 No로 표시합니다. 설명 대상인 W5500 타깃은 유선 Ethernet 브리지입니다. Joypad OS 전체에는 Bluetooth, Wi-Fi, USB, 호스트 측 AI 도구가 따로 존재하지만, W5500 브리지 자체는 유무선 동시 하이브리드 설계가 아닙니다.

AI와 MCP 관점

Joypad OS의 AI 가치는 하드웨어 펌웨어 프로젝트 치고 매우 직접적입니다. joypad-mcp는 단순히 AI를 언급하는 문서가 아니라, 컨트롤러 동작을 MCP 도구로 노출하는 서버 계층입니다. README는 Claude Code, Codex, Cursor 또는 다른 MCP 클라이언트가 Joypad OS 어댑터를 합성 플레이어처럼 조작하고 스크린샷으로 결과를 볼 수 있다고 설명합니다.

W5500 브리지 파일과 AI/MCP 도구 파일을 보여주는 생성 소스맵 다이어그램 생성 기술 다이어그램: W5500 브리지와 AI 제어 경로는 같은 저장소 안에서 소스로 확인 가능한 별도 구성 요소입니다.

joypad-bot은 VLM 실험을 추가합니다. baseline 루프에서 모델은 에뮬레이터 프레임을 보고, tool call로 어떤 버튼을 누를지 결정하며, 그 버튼 결정을 게임 루프에 다시 넣습니다. README는 OpenAI Chat Completions의 vision과 tool calling을 설명하고, 이후 같은 tool schema가 Joypad OS 어댑터와 실제 콘솔 하드웨어를 구동하는 경로로 확장될 수 있음을 보여줍니다.

WIZnet 독자에게 이 프로젝트가 유용한 이유는 일반적인 연결성 이상의 방향을 보여주기 때문입니다. 유선 Ethernet 컨트롤러 경로는 결정적인 콘솔 또는 장치 브리징을 지원할 수 있고, MCP 서버는 컨트롤러 입력을 AI 에이전트가 사용할 수 있는 명확한 도구 인터페이스로 바꿉니다. 두 경로가 별도 타깃이더라도, 이 저장소는 임베디드 펌웨어, hardwired Ethernet, AI-agent 제어 도구가 하나의 플랫폼 안에 공존하는 좋은 사례입니다.

공개 아티팩트 범위

이 저장소는 크고 활발하게 관리되고 있습니다. 펌웨어 타깃, 플랫폼 지원, 문서, 빌드 스크립트, 도구 디렉터리, 컨트롤러 호환성 문서, AI 관련 호스트 도구가 포함되어 있습니다. 짧은 proof-of-concept만 있는 프로젝트가 아닙니다.

W5500 브리지 소스는 공개되어 있지만, 저장소에는 해당 W5500 Feather 브리지 하드웨어의 실제 사진이 없습니다. 따라서 이 Maker 글의 이미지는 하드웨어 사진이 아니라 생성 기술 다이어그램입니다. 데이터 흐름과 소스 구조를 설명하기 위한 이미지이며, 공개되지 않은 제품 사진을 암시하지 않습니다.

프로젝트 라이선스는 Apache License 2.0입니다. 확인한 저장소 메타데이터 기준으로 최근 활동도 있으며, 점검한 최신 커밋 날짜는 2026-06-25이고 저장소 업데이트 시점은 2026-07-02였습니다.

활용 가치

Joypad OS는 여러 Maker 범주에 걸쳐 있습니다. 레트로 게임 및 컨트롤러 펌웨어 플랫폼이고, 동시에 지연 시간에 민감한 장치 프로토콜을 위한 W5500 기반 Ethernet 브리지 사례입니다. 또한 물리적인 컨트롤러 입력을 MCP로 노출하고 VLM 기반 게임 제어를 실험한다는 점에서 AI 도구 레퍼런스이기도 합니다.

W5500 브리지는 마이크로컨트롤러가 로컬에서 TCP를 종료하면서 다른 쪽의 타이밍 민감 I/O를 보존해야 하는 프로젝트에 특히 흥미롭습니다. AI 도구는 실제 하드웨어 장치를 LLM 또는 vision agent가 명확한 tool interface로 제어해야 하는 프로젝트와 연결됩니다.

주요 한계는 범위입니다. W5500 경로, MCP 경로, VLM 경로가 하나의 완성된 appliance로 합쳐진 것은 아닙니다. 하나의 펌웨어 생태계 안에서 소스로 확인 가능한 기능들입니다. 그래서 레퍼런스로서 가치는 크지만, 독자는 빌드하려는 정확한 타깃을 확인한 뒤 어떤 도구 경로가 적용되는지 판단해야 합니다.

관련 WIZnet Maker 프로젝트

libogc2는 GameCube/Wii homebrew SDK를 현대화하고 WIZnet Ethernet adapter 지원을 포함한다는 점에서 관련이 있습니다. Joypad OS는 컨트롤러와 어댑터 펌웨어이며, 같은 저장소 안에 W5500 bridge target과 AI 제어 도구가 있다는 점에서 다릅니다.

W5500 Ethernet Adapter for GameCube: ETH2SP1는 하드웨어 생태계 관점에서 가장 가까운 비교 대상입니다. 해당 글은 GameCube W5500 어댑터의 reseller/product 항목이고, Joypad OS는 W5500 GameCube-to-Ethernet bridge target을 포함한 오픈소스 펌웨어 플랫폼입니다.

utility for the Nintendo GameCube: Swissswiss-gc는 GameCube 네트워킹 측면에서 관련이 있습니다. Joypad OS는 GameCube utility나 launcher가 아니라 컨트롤러, Joybus, 어댑터 펌웨어 관점에서 접근합니다.

FAQ

Joypad OS는 W5500 전용 프로젝트인가요? 아닙니다. Joypad OS는 넓은 범위의 컨트롤러 펌웨어 플랫폼입니다. W5500은 gc2eth_feather GameCube-to-Ethernet bridge target에 사용됩니다.

W5500은 실제 드라이버로 사용되나요? 예. 저장소에는 W5500 common register, socket register, TX buffer, RX buffer에 직접 접근하는 SPI 드라이버 코드가 포함되어 있습니다.

joypad-mcp가 W5500 위에서 동작하나요? 공개 README 기준으로 joypad-mcp는 호스트 측 MCP 서버이며, Joypad OS로 컨트롤러 입력 패킷을 UART 또는 USB-CDC로 보냅니다. 이 글은 MCP 트래픽 자체가 W5500을 통해 흐른다고 주장하지 않습니다.

왜 AI 관련 프로젝트로 볼 수 있나요? 저장소에는 합성 컨트롤러 입력을 위한 MCP 도구와 OpenAI vision 및 tool calling을 사용하는 VLM 컨트롤러 실험이 포함되어 있습니다. 단순히 AI를 언급하는 설명이 아니라, AI-agent 하드웨어 제어에 가까운 실제 레퍼런스입니다.

저장소에서 W5500 브리지를 바로 빌드할 수 있나요? 저장소에는 joypad_gc2eth_feather 타깃, W5500 드라이버 소스, pin mapping, network configuration이 포함되어 있습니다. 다만 플래시 전에 타깃별 하드웨어 가정을 반드시 확인해야 합니다.

Documents
  • Joypad OS GitHub repository

    Open-source firmware platform that includes controller adapters, AI tooling, and the W5500 gc2eth_feather target

  • Joypad OS changelog 2.1.0

    Release notes adding gc2eth, joypad-mcp, and joypad-bot

  • W5500 bridge app source

    GameCube/GBA to Dolphin TCP bridge application for the W5500 Feather target

  • W5500 driver source

    Minimal W5500 SPI driver using common and socket register blocks

  • joypad-mcp README

    MCP server documentation for driving a Joypad OS adapter as a synthetic player

  • joypad-bot README

    Vision-language model controller loop using OpenAI vision and tool calling

  • Apache License 2.0

    Repository license

Comments Write