2021–06–28:
Pinephone keyboard's final summary
I finished most of my testing of the pinephone keyboard, and also completed
the firmware, and this post should serve as a summary of my observations.
- Connecting I2C interface of the charger chip to the phone is problematic,
and should not be done.
- I haven't found a way for the interface to not be broken by problematic
behavior of the charger chip when autodetecting whether I2C interface is used or
whether indication LEDs are connected.
- Flashing the firmware over I2C is possible and I've implemented a
scheme
and tools to
do it safely.
- I've optimized the firmware for lowest power consumption I could achieve,
which is now 9 mW (theoretical minimum is 2.5 mW).
- I've added self-testing routine to the firmware, so it's possible to
quickly determine any kind of shorted electrical paths between matrix columns.
Testing for failure mode where the row or column electrical path is cut requires
pressing all the keys on the keyboard. This may be useful for QA in the
factory.
- The firmware just needs testing at this point to get it ready for production
use and to iron out any quirks.
There are some open
questions around the charger, that need further investigation.
Next steps is completing the TODO list, which
contains only minor things at this point.
Suggested HW changes
After quite some testing, this is a final set of suggestions I have:
- Remove all 3 pull-up resistors (R1, R2, R3 – https://megous.com/dl/tmp/caf7ce50b996579b.png)
from the keyboard controller board. They are not necessary and increase power
consumption.
- Do not connect charger over I2C and INT pin to the phone
(experiment didn't work out well)
- Expose free-unused GPIOs (P70-P77 and P83 – P87 – https://megous.com/dl/tmp/2cb59d6fffb097b3.png)
on the top of the board (in the unused area where the text is https://megous.com/dl/tmp/51a664f7d79396ac.png)
as similarly sized easily solderable pads as the ones used for I2C interface (https://megous.com/dl/tmp/585ca537c4374117.png).
- We have completely free and user customizable firmware on the
keryboard's MCU and this would allow for all kinds of interesting HW extensions
to the keyboard, to make the openness of the firmware truly worthwhile:
- like additional buttons or notification LEDs controllable from
the phone,
- to glue something like this https://megous.com/dl/tmp/7cda737b24aa0e99.png
to the bottom of the keyboard to allow 4-finger control (thumb typing on top,
modifiers keys on the bottom of the keyboard, when holding the keyboard in both
hands),
- etc.
- Please expose as many of these as possible, it's a very nice opportunity
for modding-inclined users.