{"id":13423331,"url":"https://github.com/ah-/anne-key","last_synced_at":"2026-02-03T14:10:32.011Z","repository":{"id":44463137,"uuid":"116851901","full_name":"ah-/anne-key","owner":"ah-","description":"Firmware for Anne Pro Keyboard written in Rust","archived":false,"fork":false,"pushed_at":"2020-07-30T06:21:46.000Z","size":18682,"stargazers_count":574,"open_issues_count":25,"forks_count":32,"subscribers_count":48,"default_branch":"master","last_synced_at":"2026-01-28T18:58:25.777Z","etag":null,"topics":["anne","embedded","firmware","keyboard","mechanical-keyboard","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ah-.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}},"created_at":"2018-01-09T18:05:04.000Z","updated_at":"2026-01-22T23:01:34.000Z","dependencies_parsed_at":"2022-09-21T23:06:52.568Z","dependency_job_id":null,"html_url":"https://github.com/ah-/anne-key","commit_stats":null,"previous_names":[],"tags_count":92,"template":false,"template_full_name":null,"purl":"pkg:github/ah-/anne-key","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ah-%2Fanne-key","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ah-%2Fanne-key/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ah-%2Fanne-key/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ah-%2Fanne-key/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ah-","download_url":"https://codeload.github.com/ah-/anne-key/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ah-%2Fanne-key/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29047450,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T10:09:22.136Z","status":"ssl_error","status_checked_at":"2026-02-03T10:09:16.814Z","response_time":96,"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":["anne","embedded","firmware","keyboard","mechanical-keyboard","rust"],"created_at":"2024-07-31T00:00:31.091Z","updated_at":"2026-02-03T14:10:31.975Z","avatar_url":"https://github.com/ah-.png","language":"Rust","funding_links":[],"categories":["Firmware projects","Rust"],"sub_categories":["WIP"],"readme":"Firmware for Anne Pro Keyboard written in Rust\n==============================================\n\n[![Travis Build Status](https://travis-ci.org/ah-/anne-key.svg?branch=master)](https://travis-ci.org/ah-/anne-key)\n\n\u003cimg src=\"docs/src/images/ferris.png\" width=30%/\u003e \u003cimg src=\"docs/src/images/anne.jpg\" width=50%/\u003e\n\n\nThis is an alternative firmware for the [Anne Pro Keyboard](http://en.obins.net/anne-pro), with the goal of being more stable than the original firmware and adding extra features.\n\nFor the [Anne Pro 2](http://en.obins.net/anne-pro2) (with USB-C connector), please follow and help with the [OpenAnnePro](https://github.com/OpenAnnePro) project (including flashing, bootloader, and more in the future). The developers also hang out in the [Anne Pro Dev discord](https://discord.gg/ygssH9x).\n\nStatus\n------\n\nThis project is still under heavy development and probably not quite ready yet to serve as your only keyboard.\n\nWorking today:\n\n- Basic keyboard functionality\n- Bluetooth (as a keyboard)\n- LED control (switching on/off, changing themes)\n- USB charging\n- Drop in replacement as a simple firmware update\n- Partial bluetooth communication with the Anne Pro App (tested with [Anne Pro Mac App](https://github.com/msvisser/AnnePro-mac))\n\nNot yet implemented:\n\n- USB hangs on connect/disconnect\n- USB sends keys concurrently with BT (to toggle USB, use the `5` key\n  in BT layer)\n- Media controls / special keys\n- Uploading custom lighting settings\n- Uploading custom keymaps\n- Power Management\n- BT setup mode with LEDs etc.\n\nCommunity\n---------\n\nWe hang out in the [Anne Pro Dev discord](https://discord.gg/ygssH9x). Please observe the [Rust Code of Conduct](https://www.rust-lang.org/conduct.html) within our community.\n\nFlashing\n--------\n\nYou can find the latest build on the [Releases page](https://github.com/ah-/anne-key/releases). Download `anne-key.dfu`.\nIf LEDs aren't working with latest build, you can try [build 209](https://github.com/ah-/anne-key/releases/tag/2018-04-12-209-master-aee0f1b)\n, or the following procedure: reboot into DFU mode by holding down `Fn+Space+Esc`, then exit with `Esc`.\n\nThen you can either follow the [obins firmware update steps](http://en.obins.net/firmware) (click Update manual) or use `dfu-util`.\n\n### dfu-util\n\nFirst you'll need to [install dfu-util](https://docs.particle.io/support/particle-tools-faq/installing-dfu-util/).\n\nTo flash your Anne Pro connect via USB, then hold down the Esc button, press the little reset switch on the back and finally release Esc.\n\nNow your keyboard is in DfuSe mode. It should show up in dfu-util:\n\n```\n$ dfu-util -l\ndfu-util 0.9\n\n...\n\nFound DFU: [0483:df11] ver=0200, devnum=23, cfg=1, intf=0, path=\"20-2\", alt=2, name=\"@BluetoothFlash  /0x1c000000/14*256 a,192*256 g\", serial=\"057C37553731\"\nFound DFU: [0483:df11] ver=0200, devnum=23, cfg=1, intf=0, path=\"20-2\", alt=1, name=\"@Internal Flash  /0x0c000000/64*256 a,192*256 g\", serial=\"057C37553731\"\nFound DFU: [0483:df11] ver=0200, devnum=23, cfg=1, intf=0, path=\"20-2\", alt=0, name=\"@Internal Flash  /0x08000000/64*256 a,192*256 g\", serial=\"057C37553731\"\n```\n\nThen you can flash your keyboard firmware:\n\n```\n$ dfu-util --alt 0 --intf 0 --download anne-key.dfu\n\n...\n\nfile contains 1 DFU images\nparsing DFU image 1\nimage for alternate setting 0, (1 elements, total size = 5104)\nparsing element 1, address = 0x08004000, size = 5096\nDownload        [=========================] 100%         5096 bytes\nDownload done.\ndone parsing DfuSe file\n```\n\nAnd that's it. Press the reset button again to exit the bootloader and return to normal keyboard mode and you're done!\n\nIf your keyboard is running our firmware, you can reboot to DFU mode by holding down `Fn+Space+Escape`.\n\nIf you want to return to the original firmware you can flash the [original firmware](http://en.obins.net/firmware) with:\n\n```\n$ dfu-util --alt 0 --intf 0 --download \"anne pro key 1.4.dfu\"\n```\n\nDocumentation \u0026 Hacking\n---------\n\nYou can find some documentation on hardware on [GitBooks](https://ahah.gitbooks.io/anne-pro-internals/).\nMany fellow projects provide insights into the obins firmware and app protocol:\n\n1. Reverse-engineering\n- [hi-a's disassembly of the firmware and bootloader](https://hi-a.github.io/annepro-key/) ([repo](https://github.com/hi-a/annepro-key))\n- [metr1xx's APK reverse engineering](https://github.com/metr1xx/anne-pro-community-app)\n\n2. Alternate control apps\n- [Blucky87's Python CLI](https://github.com/Blucky87/AnneProCLI)\n- fcoury's [Node.js library](https://github.com/fcoury/node-anne-pro) and [electron app](https://github.com/fcoury/electron-anne-pro)\n- [kprinssu's Windows app](https://github.com/kprinssu/anne-keyboard-windows)\n- [msvisser's Mac App](https://github.com/msvisser/AnnePro-mac)\n\n3. Alternate firmware\n- [Msvisser's qmk port](https://github.com/msvisser/qmk_firmware/tree/anne_pro/keyboards/anne_pro) receives great approvals from users\n- Older qmk ports: [josecostamartins'](https://github.com/josecostamartins/qmk_firmware/commits/anne_pro) and [dwhinham's](https://github.com/dwhinham/qmk_firmware/commits/anne_pro)\n\n\nTo build your own firmware, you need the following components:\n\n- rustup: to make use of the `rust-toolchain` file\n- cargo-objcopy: you need to build it outside this directory `cd ~ ; cargo install cargo-binutils`\n\nThen, `make dfu` in the top directory will build your `anne-key.dfu`.\n\nTo analyze the firmware's code size, you need [cargo-bloat](https://github.com/RazrFalcon/cargo-bloat):\n\n- `cargo install cargo-bloat`\n- `make bloat`\n- `make bloat BLOAT_ARGS=\"--crates\" # passing arguments to cargo-bloat`\n\nOur CI requires consistent formatting, please use our pre-commit hook\nto make sure:\n\n- `cp scripts/pre-commit .git/hooks/pre-commit`\n\nTo fix formatting:\n\n- `make fmt`\n\nTroubleshooting\n---------\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fah-%2Fanne-key","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fah-%2Fanne-key","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fah-%2Fanne-key/lists"}