aminehmida / anne-key

Firmware for Anne Pro Keyboard written in Rust

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Firmware for Anne Pro Keyboard written in Rust

Travis Build Status

This is an alternative firmware for the Anne Pro Keyboard, with the goal of being more stable than the original firmware and adding extra features.

Status

This project is still under heavy development and probably not quite ready yet to serve as your only keyboard.

Working today:

  • Basic keyboard functionality
  • Bluetooth (as a keyboard)
  • LED control (switching on/off, changing themes)
  • USB charging
  • Drop in replacement as a simple firmware update
  • Partial bluetooth communication with the Anne Pro App (tested with Anne Pro Mac App)

Not yet implemented:

  • USB
  • Media controls / special keys
  • Uploading custom lighting settings
  • Uploading custom keymaps
  • Power Management
  • BT setup mode with LEDs etc.

Community

We hang out in the Anne Pro Dev discord. Please observe the Rust Code of Conduct within our community.

Flashing

You can find the latest build on the Releases page. Download anne-key.dfu.

Then you can either follow the obins firmware update steps (click Update manual) or use dfu-util.

dfu-util

First you'll need to install dfu-util.

To 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.

Now your keyboard is in DfuSe mode. It should show up in dfu-util:

$ dfu-util -l
dfu-util 0.9

...

Found 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"
Found 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"
Found 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"

Then you can flash your keyboard firmware:

$ dfu-util --alt 0 --intf 0 --download anne-key.dfu

...

file contains 1 DFU images
parsing DFU image 1
image for alternate setting 0, (1 elements, total size = 5104)
parsing element 1, address = 0x08004000, size = 5096
Download        [=========================] 100%         5096 bytes
Download done.
done parsing DfuSe file

And that's it. Press the reset button again to exit the bootloader and return to normal keyboard mode and you're done!

If you want to return to the original firmware you can flash the original firmware with:

$ dfu-util --alt 0 --intf 0 --download "anne pro key 1.4.dfu"

Documentation & Hacking

You can find some documentation on hardware on GitBooks. Many fellow projects provide insights into the obins firmware and app protocol:

  1. Reverse-engineering
  1. Alternate control apps
  1. Alternate firmware

To build your own firmware, you need xargo with the following components:

  • nightly rust as default: rustup default nightly
  • rust-src: rustup component add rust-src --toolchain nightly
  • xargo itself: cargo +nightly install xargo
  • ARM linker: usually named arm-none-eabi-ld, please check with your OS

Then, make dfu in the top directory will build your anne-key.dfu.

To analyze the firmware's code size, you need cargo-bloat:

  • cargo install cargo-bloat
  • make bloat
  • make bloat BLOAT_ARGS="--crates" # passing arguments to cargo-bloat

About

Firmware for Anne Pro Keyboard written in Rust

License:Apache License 2.0


Languages

Language:Rust 92.3%Language:Python 5.4%Language:Shell 1.2%Language:Makefile 0.6%Language:Logos 0.4%Language:GDB 0.2%