User-space driver pinephone keyboard
Find a file
Ondrej Jirman 693cf5ae86 Fix issue with ppkb inputd not working after using the kernel driver
This was caused by kernel driver disabling the matrix scan in the KB
firmware and userspace tools not re-enabling it on startup. :)
2022-07-27 23:02:15 +02:00
docs Add final PCB photos/schematics 2021-08-31 15:09:21 +02:00
firmware Drop I2C bit functions, to make timing easier to modify 2021-09-05 02:26:55 +02:00
keymaps Make kmap.h build more resilient 2022-01-15 23:53:04 +01: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 ENOENT means the i2c userspace device driver is missing 2022-01-17 16:08:27 +01: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 Add more bit definitions to cahrger ctl register map 2022-07-27 22:25:05 +02:00
i2c-debugger.c Don't exit the debugger on I2C communication errors, just report them 2022-02-02 10:45:17 +01:00
i2c-flasher.c Make i2c flasger reset the app block flag 2021-09-05 01:53:42 +02:00
i2c-inputd.c Fix issue with ppkb inputd not working after using the kernel driver 2022-07-27 23:02:15 +02:00
Makefile Remove selftest 2022-02-02 08:39:54 +01: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 2022-01-16 17:00:46 +01: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