{"id":27761083,"url":"https://github.com/tsoding/grub-gamepad","last_synced_at":"2025-08-02T14:09:27.446Z","repository":{"id":91698184,"uuid":"192732227","full_name":"tsoding/grub-gamepad","owner":"tsoding","description":"Ongoing effort to bring gamepad/joystick support to GRUB 2 (because reasons)","archived":false,"fork":false,"pushed_at":"2019-09-10T19:15:16.000Z","size":40,"stargazers_count":17,"open_issues_count":10,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-29T12:25:53.108Z","etag":null,"topics":["gamepad","gaming","grub","hacktoberfest","hacktoberfest2020","joystick","linux","twitch"],"latest_commit_sha":null,"homepage":"","language":"Nix","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tsoding.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-06-19T12:55:54.000Z","updated_at":"2023-08-19T09:30:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"82128c3f-41ae-4868-845c-686c2cf86bad","html_url":"https://github.com/tsoding/grub-gamepad","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tsoding/grub-gamepad","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsoding%2Fgrub-gamepad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsoding%2Fgrub-gamepad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsoding%2Fgrub-gamepad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsoding%2Fgrub-gamepad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tsoding","download_url":"https://codeload.github.com/tsoding/grub-gamepad/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsoding%2Fgrub-gamepad/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268401594,"owners_count":24244464,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gamepad","gaming","grub","hacktoberfest","hacktoberfest2020","joystick","linux","twitch"],"created_at":"2025-04-29T12:25:48.277Z","updated_at":"2025-08-02T14:09:27.421Z","avatar_url":"https://github.com/tsoding.png","language":"Nix","funding_links":["https://www.patreon.com/tsoding"],"categories":[],"sub_categories":[],"readme":"[![Tsoding](https://img.shields.io/badge/twitch.tv-tsoding-purple?logo=twitch\u0026style=for-the-badge)](https://www.twitch.tv/tsoding)\n# Gamepad support for GRUB\n\n- Development is done on https://twitch.tv/tsoding\n- Archive of the streams: https://www.twitch.tv/collections/qhijEFrmqRUFvA\n\n## Supported Gamepads\n\n- Logitech Rumble Gamepad F510 in DirectInput mode\n\n## Quick Start\n\n```console\n$ git clone --recursive git@github.com:tsoding/grub-gamepad.git\n$ nix-shell     # On NixOS\n\n$ cd grub/\n$ ./bootstrap\n$ ./configure\n$ make -j5\n\n$ cd ..\n$ make -B\n$ qemu-system-i386 -cdrom test.iso\n```\n\n## Connecting Gamepad via USB\n\n### VirtualBox\n\n- Create Virtual Machine with 256MB of RAM and no HDD\n- Attach the `test.iso` as Live CD\n- Connect a Gamepad as an OHCI device.\n- Start the machine to load into GRUB\n\n```console\ngrub\u003e nativedisk pata\ngrub\u003e nativedisk ohci\ngrub\u003e insmod usb_gamepad\ngrub\u003e terminal_input usb_gamepad\n```\n\n### QEMU\n\n```console\n$ lsusb\n$ sudo qemu-system-i386 -usb -device usb-host,hostbus=\u003cgamepad-bus\u003e,hostaddr=\u003cgamepad-addr\u003e -cdrom test.iso # Alternatively, you can reference your device by its ids -device usb-host,vendorid=\u003cgamepad-vendorid\u003e,productid=\u003cgamepad-productid\u003e \ngrub\u003e nativedisk pata\ngrub\u003e nativedisk uhci\ngrub\u003e insmod usb_gamepad\ngrub\u003e terminal_input usb_gamepad\n```\n\n## Architecture\n\n### Adding New Module\n\nTBD\n\u003c!-- TODO(#6): Adding New Module is not documented --\u003e\n\n### Registering New Terminal Input\n\nTBD\n\u003c!-- TODO(#7): Registering New Terminal Input is not documented --\u003e\n\n### Attaching to a USB device\n\nTBD\n\u003c!-- TODO(#8): Attaching to a USB device is not documented --\u003e\n\n## References\n\n- https://steamcommunity.com/groups/steamuniverse/discussions/0/558751660797029626/\n- https://github.com/rafaelffilho/RafaOS\n- https://wiki.osdev.org/GRUB\n- The Official GRUB repo: git://git.savannah.gnu.org/grub.git\n- https://qemu.weilnetz.de/doc/qemu-doc.html#usb_005fdevices\n- https://lists.gnu.org/archive/html/help-grub/2015-01/msg00011.html\n- https://atariwiki.org/wiki/Wiki.jsp?page=How%2Bto%2Bwrite%2Ba%2BUSB%2BDriver\n- https://github.com/krislig/rumblepad2py/blob/master/pad.py\n\n## Support\n\nYou can support my work via\n\n- Twitch channel: https://www.twitch.tv/subs/tsoding\n- Patreon: https://www.patreon.com/tsoding\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsoding%2Fgrub-gamepad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftsoding%2Fgrub-gamepad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsoding%2Fgrub-gamepad/lists"}