{"id":17055583,"url":"https://github.com/tuna-f1sh/wiredhoo","last_synced_at":"2026-01-07T12:51:46.982Z","repository":{"id":87875914,"uuid":"337681681","full_name":"tuna-f1sh/wiredhoo","owner":"tuna-f1sh","description":"Project to add wired connectivity to a Wahoo Kick by emulating the ANT+ profile within an emulated ANT USB stick; the host believes it is communicating to a ANT+ wireless device. Broader scope to be an open-source firmware replacement for trainers.","archived":false,"fork":false,"pushed_at":"2022-02-09T08:38:09.000Z","size":1042,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-04T15:17:28.489Z","etag":null,"topics":["ant","bike","cycling","trainer"],"latest_commit_sha":null,"homepage":"","language":"C","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/tuna-f1sh.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}},"created_at":"2021-02-10T09:57:48.000Z","updated_at":"2023-10-01T06:49:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"d88b275c-120d-441b-9346-8697d80ad923","html_url":"https://github.com/tuna-f1sh/wiredhoo","commit_stats":{"total_commits":32,"total_committers":1,"mean_commits":32.0,"dds":0.0,"last_synced_commit":"d857334e3e9b34f5c126ffbaa1350118094196eb"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuna-f1sh%2Fwiredhoo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuna-f1sh%2Fwiredhoo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuna-f1sh%2Fwiredhoo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuna-f1sh%2Fwiredhoo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tuna-f1sh","download_url":"https://codeload.github.com/tuna-f1sh/wiredhoo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246193323,"owners_count":20738471,"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","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":["ant","bike","cycling","trainer"],"created_at":"2024-10-14T10:18:38.079Z","updated_at":"2026-01-07T12:51:46.940Z","avatar_url":"https://github.com/tuna-f1sh.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WiredHoo\n\nProject to add **wired** connectivity to a Wahoo Kick by emulating the ANT wireless protocol within an emulated ANT USB stick; the host believes it is communicating to an ANT+ wireless device.\n\nFed up with wireless connectivity issues, I decided to come up with a solution. The ergo trainer and inertial measurement stems from the work done by [Budget Trainer Build](https://budgettrainerbuild.wordpress.com/)\n\nBroader scope for this project is to become an open-source firmware alternative for inertial trainers.\n\nThe project is very much a work in progress and not top of my priority - I'm open to collaboration. See the GitHub discussions board for upto date progress.\n\n## TODO - See GitHub discussions\n\n - [x] Create ANT USB device.\n- [x] Emulate ANT control.\n- [x] Emulate ANT+ power meter and fitness control profiles.\n- [x] CI tests for the above - more as develop.\n- [x] Light sensor speed reading: TIM counter input capture, I’ve got most of this just need to test.\n- [x] Moment of inertia based power measurement: based on work done by Budget trainer build\n- [ ] Back EMF resistance control: PID controller based on measured power to setpoint error.\n- [ ] Spin-down routine: fit curve of energy loss with rps.\n- [x] ADC sampling: vsense, emf sense - the ADC is initialised but thinking DMA circular buffer.\n- [ ] LED routines 💄: basic but also thinking WS2812B for power level indication.\n\n# Build\n\n## Requirements\n\n* `arm-none-eabi-gcc` (version 10 used) and a SWD flashing tool (Black Magic Probe, STLINK or similar) for development.\n* `make upload` assumes a [Black Magic Probe](https://1bitsquared.com/products/black-magic-probe) is being used with [Tagconnect TC2030 CTX](https://www.tag-connect.com/product/tc2030-ctx-nl-6-pin-no-legs-cable-with-10-pin-micro-connector-for-cortex-processors).\n* An STM32F4 dev board: I'm using the Feather STM32F4. Will probably make custom PCB at some point to replace Kickr board.\n* _STM32CubeMX if changing chip setup_\n\n```\nmake # compile with debug flags\nmake upload # upload to board via SWD\nmake attach # attach for GDB debug\n```\n\n# Porting\n\nI started this project around the Wahoo Kick V4. It should be possible to port this to any moment of inertia based trainer (or otherwise for that matter):\n\n* trainer.h has many defines specific to the trainer: inertia of system, dimensions etc. If you want to develop for another trainer, I suggest we break these into trainer specific header files.\n* The timer counter capture (tim.c/.h) setup might require changing depending on the expected frequency of the flywheel speed measurement.\n* Inevitably other bits to be added here.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftuna-f1sh%2Fwiredhoo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftuna-f1sh%2Fwiredhoo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftuna-f1sh%2Fwiredhoo/lists"}