Go to file
2021-09-05 01:58:48 +02:00
docs Add final PCB photos/schematics 2021-08-31 15:09:21 +02:00
firmware Allow to reset to stock firmware from user firmware by holding pine+f+h 2021-09-05 01:58:48 +02:00
keymaps Fix keymap generator, drop prototype keymap 2021-08-31 19:00:49 +02:00
.gitignore Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
bin2pgd.c Add bin2pgd tool 2021-08-31 14:29:21 +02:00
common.c common: Improve crc8 generation 2021-08-02 10:13:06 +02:00
COPYING Initial commit 2021-06-14 00:10:49 +02:00
HACKING Add HACKING file 2021-06-16 14:32:28 +02:00
i2c-charger-ctl.c Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
i2c-debugger.c Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
i2c-flasher.c Make i2c flasger reset the app block flag 2021-09-05 01:53:42 +02:00
i2c-inputd.c Update inputd to make it work with the latest firmware API 2021-08-31 19:01:43 +02:00
i2c-selftest.c Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
Makefile Drop prototype keyboard build 2021-08-31 19:00:18 +02:00
README Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
README.flashing README.flashing: fix few typos 2021-08-02 12:18:34 +02:00
README.i2c-intf firmware: Post-revert fixup 2021-08-05 02:27:39 +02:00
README.testing Update TODO and I2C interface description 2021-08-02 12:13:56 +02:00
TODO Update TODO 2021-08-05 03:40:40 +02:00
usb-debugger.c Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
usb-flasher.c Dump option ROM when reading flash over USB 2021-08-31 14:29:50 +02:00

FOSS firmware for pinephone keyboard
====================================

Features:

- Dual firmware architecture: stock firmware + optional user firmware.
- Stock firmware implements the full functionality of the keyboard.
  - Stock firmware is layout independent, it reports the raw status
    of the whole keyboard matrix.
  - Key maps and combinations can be arbitrarily changed in the keyboard
    driver without re-flashing the firmware.
  - Stock firmware should be sufficient for most users who will not want
    to do HW modifications to their keyboard to add more peripherals to
    the keyboard MCU.
  - Power efficient implementation using power-down feature of the MCU
    to save power as much as possible. (currently: 9 mW when idle, 20mW
    in active scanning mode - with at least one key pressed)
- Stock firmware is flashed in factory and allows flashing user firmware
  from the pinephone itself over I2C interface.
- User firmware can be used either for updates or for customizations
  (SW support for HW modifications of the keyboard)
- USB stack and tools for stock firmware flashing using ELAN's original
  bootloader to ease development of the stock firmware.
- Self-testing features to quickly test for issues with the keyboard matrix.
- Fully based on FOSS software, with no dependencies. You only need
  sdcc 4.1+ to build the firmware.

See demo video https://megous.com/dl/tmp/kb.mp4 and some technical overview https://xnux.eu/log/

You can support the project via donations at https://xnux.eu/contribute.html#toc-donations

See also Samuel's kernel driver:

  https://github.com/smaeul/linux/commits/wip/pp-keyboard

Enjoy!

	~megi