Pinephone Keyboard – kernel driver merged
I have updated Samuel's WIP
driver that the distros started using to make it work with his IP5209
charger driver on the final production keyboard. The result is now merged into
my kernel tree and works on both Pinephone and Pinephone Pro.
This also means, that keyboard battery voltage and current can now be read
from sysfs. You don't need to use my userspace tools for that anymore.
I've also updated the drivers to make them report probe errors, and improved
the charger driver to make it not fail when the charger is asleep during boot.
You still have to wake the charger up by pressing the button on the side of the
keyboard before being able to access it via sysfs.
You can run:
dmesg | grep kb151
to see if the keyboard driver is functioning properly. If you see any errors
there, you may have a bad physical connection between the phone and the
keyboard. You can try improving the connection, and rebooting the phone.
You may see for example:
[ 0.388320] kb151 5-0015: Found KB151 with firmware 1.0 (features=0xf)
[ 0.916089] kb151 5-0015: Charger is initialized
[ 0.828521] kb151 2-0015: KB151 was not detected on the bus (-6)
If you want to run
ppkb-i2c-inputd, just add
kb151.disable_input option to kernel boot arguments to disable the
kernel driver. Kernel driver handles
Fn layer differently from the
userspace daemon. With userspace daemon, pressing
Fn+- will really write out those characters to the console.
Userspace driver also has
Pine Key layer, which can be used to
invoke function keys. Kernel driver doesn't have ability to invoke
F1 - F10 keys in any way directly.