2021–06–11: PinePhone
keyboard – HW testing
Pinephone keyboard arrived a workday earlier than advertised by DHL, so
I started looking at it today.
Looking inside you see two boards. Top one is for the battery charger, the
bottom one is for the keyboard controller:
This prototype has I2C interface from the charger controller wired ad-hoc to
the I2C interface on the POGO pins. This will be useful to test how and if it
really works and if the charging chip is controllable. :) I haven't checked
whether the components on the other side of the board are not populated, to make
the I2C interface available, but hopefully they are.
This prototype also has POGO pins and USB interface nicely exposed as
solderable pads on the USB controller board:
You'll need to be careful when soldering the USB cable to the keyboard
controller board, because battery wires are directly under the through hole pads
you'll need to solder the USB cable to. If you do it with the board mounted as
is, you'll most likely burn the insulation on the battery wires.
Soldering is necessary if you'll want to flash your own keyboard
firmware.
To avoid burning the insulation, I've first unscrewed the board and padded it
with a paper tape.
I've used jumper wires instead of soldering the USB cable directly, because
I plan to add a USB flashing connector to the chasis, once everything is
verified to work, and no further HW mods are necessary.
All that remains is to solder the jumper wires to the USB cable
temporarily…
… and plugging in the keyboard to my PC to verify it works:
input: HID 04f3:1812 as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-2/1-2.1/1-2.1:1.0/0003:04F3:1812.0038/input/input58
hid-generic 0003:04F3:1812.0038: input,hidraw5: USB HID v1.11 Keyboard [HID 04f3:1812] on usb-0000:02:00.0-2.1/input0
input: HID 04f3:1812 Mouse as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-2/1-2.1/1-2.1:1.1/0003:04F3:1812.0039/input/input59
input: HID 04f3:1812 System Control as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-2/1-2.1/1-2.1:1.1/0003:04F3:1812.0039/input/input60
input: HID 04f3:1812 Consumer Control as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-2/1-2.1/1-2.1:1.1/0003:04F3:1812.0039/input/input61
input: HID 04f3:1812 Wireless Radio Control as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-2/1-2.1/1-2.1:1.1/0003:04F3:1812.0039/input/input62
hid-generic 0003:04F3:1812.0039: input,hiddev99,hidraw6: USB HID v1.11 Mouse [HID 04f3:1812] on usb-0000:02:00.0-2.1/input1
And it does. :) This is USB interface exposed by the main firmware.
It's probably possible to press keys and control the PC using the keyboard over
USB HID, as is.
Entering the flashing mode requires issuing some command over one of these
HID interfaces, that will cause jump to the bootloader, which will expose
altogether different USB device interface meant for flashing.
Next step is writing and testing a FOSS flashing tool. It should also be
possible to test the charger I2C interface. These two tasks are independent.
I'll start with the flashing tool.