{"id":17429795,"url":"https://github.com/marph91/icestick-remote","last_synced_at":"2026-02-24T21:33:58.601Z","repository":{"id":55374345,"uuid":"233089541","full_name":"marph91/icestick-remote","owner":"marph91","description":"Remote control in VHDL, which fits on a Lattice icestick.","archived":false,"fork":false,"pushed_at":"2024-01-12T18:02:07.000Z","size":94,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-28T00:41:25.889Z","etag":null,"topics":["fpga","ghdl","hardware","ice40","icestick","vhdl"],"latest_commit_sha":null,"homepage":"","language":"VHDL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marph91.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2020-01-10T16:43:54.000Z","updated_at":"2024-01-12T17:54:41.000Z","dependencies_parsed_at":"2024-10-19T05:27:33.350Z","dependency_job_id":"3dec350c-496b-478f-80de-6f040b1c1f81","html_url":"https://github.com/marph91/icestick-remote","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/marph91/icestick-remote","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marph91%2Ficestick-remote","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marph91%2Ficestick-remote/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marph91%2Ficestick-remote/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marph91%2Ficestick-remote/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marph91","download_url":"https://codeload.github.com/marph91/icestick-remote/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marph91%2Ficestick-remote/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29801023,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T21:02:39.706Z","status":"ssl_error","status_checked_at":"2026-02-24T21:02:21.834Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["fpga","ghdl","hardware","ice40","icestick","vhdl"],"created_at":"2024-10-17T07:09:33.809Z","updated_at":"2026-02-24T21:33:58.586Z","avatar_url":"https://github.com/marph91.png","language":"VHDL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# icestick-remote\n\n[![check_scripts](https://github.com/marph91/icestick-remote/workflows/check_scripts/badge.svg)](https://github.com/marph91/icestick-remote/actions?query=workflow%3Acheck_scripts)\n[![synthesis](https://github.com/marph91/icestick-remote/workflows/hdl_synthesis/badge.svg)](https://github.com/marph91/icestick-remote/actions?query=workflow%3Ahdl_synthesis)\n[![testsuite](https://github.com/marph91/icestick-remote/workflows/testsuite/badge.svg)](https://github.com/marph91/icestick-remote/actions?query=workflow%3Atestsuite)\n\nRemote control in VHDL, which fits on a Lattice icestick. The whole design flow was done using open source tools. It was tested with a Panasonic TX-49FXW654 and can be extended for other devices and protocols.\n\n## Repository structure\n\n- gui: Contains a python script to provide control signals to the FPGA.\n- hdl: Contains the toplevel hardware design as well as the infrared encoder and sampler code.\n- sim: Contains a few automated tests and scripts for manual tests.\n- submodules: Contains [icestick-uart](https://github.com/marph91/icestick-uart), which is used to communicate with the icestick.\n- syn: Contains the scripts and constraints for synthesis and following steps.\n\n## Prerequisites\n\nTo process the VHDL code and finally flash the generated bitstream on the device, the open source toolchain was used. This includes [ghdl](https://github.com/ghdl/ghdl), [ghdl-yosys-plugin](https://github.com/ghdl/ghdl-yosys-plugin), [yosys](https://github.com/YosysHQ/yosys), [nextpnr](https://github.com/YosysHQ/nextpnr) and [icestorm](https://github.com/cliffordwolf/icestorm). Further information about the tools can be found at the linked pages.\nThere are also prepared docker container, including all the mentioned tools. For more information, see \u003chttps://github.com/ghdl/docker\u003e respectively \u003chttps://github.com/hdl/containers\u003e.\n\n## Usage\n\n- Create the bitstream and flash the icestick: `cd syn \u0026\u0026 make \u0026\u0026 make load`\n- Send control signals to the icestick, which get encoded and sent via the infrared LED: `cd gui \u0026\u0026 ./remote_gui.py`\n- New codes can be obtained by pressing the \"Start sampling\" button at the \"Sample\" tab.\n\n## Resource usage\n\nresource | absolute usage | relative usage\n-------------|----------:|---:\nICESTORM_LC  | 474/ 1280 | 37%\nICESTORM_RAM |   2/   16 | 12%\nSB_IO        |  11/  112 |  9%\nSB_GB        |   4/    8 | 50%\nICESTORM_PLL |   0/    1 |  0%\nSB_WARMBOOT  |   0/    1 |  0%\n\n## Further information\n\nPanasonic remotes use the Kaseikyo protocol. Other Panasonic devices may use different codes, which can be extended. Since the Kaseikyo protocol uses pulse distance coding, other protocols with the same encoding technique could be added trivially. The NEC protocol is one of them and can be activated via generic. However, it wasn't tested.\n\nUseful links:\n\n- \u003chttps://www.vishay.com/docs/81288/tfdu4101.pdf\u003e\n- \u003chttps://www.mikrocontroller.net/articles/IRMP#KASEIKYO\u003e\n- \u003chttps://www.mikrocontroller.net/attachment/4246/IR-Protokolle_Diplomarbeit.pdf\u003e\n- \u003chttps://www.roboternetz.de/phpBB2/files/entwicklung_und_realisierung_einer_universalinfrarotfernbedienung_mit_timerfunktionen.pdf\u003e\n- \u003chttp://www.hifi-remote.com/wiki/index.php/Panasonic\u003e\n- \u003chttps://github.com/ukw100/IRMP/blob/master/src/irmpprotocols.h\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarph91%2Ficestick-remote","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarph91%2Ficestick-remote","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarph91%2Ficestick-remote/lists"}