After couple months of finding. Finally, a complete pinout of Blackberry Q30 Keyboard !

Right now I'm working on the driver of Synaptics touch controller IC. It turned out that my previous keyboard has Synaptics S3501B and my current keyboard has Synaptics S3508A instead. These are RMI4 compliance chip from Synaptics. And I confirmed that S3508A works with RMI4 driver on Linux.
Above pic is Dmesg log from my F1C100s board. The driver has a problem parsing IRQ number from device tree, so I did some quick workaround patch in rmi_drive.c . pdata->irq = 39 is to request irq from irq number 39. Which is GPIO Port E interrupt number.
Some quick patch
Since this thing is work correctly. I did some logic analyzing on the I2C bus. Especially with the HID report.
I was able to decode the HID report of the Synaptics IC. I'll update on this soon but this is what I got:
page number : 0x00
function : 0x12
HID report : 0x05 for finger detection, 0x06 for HID report
0x06 report : 88 bytes with following format
// Finger 1
// F12_report[0] -> Finger 1 present (1/0)
// F12_report[1] -> ABS_X LSB
// F12_report[2] -> ABS_X MSB
// F12_report[3] -> ABS_Y LSB
// F12_report[4] -> ABS_Y MSB
// F12_report[5] -> pressure
// F12_report[6] -> ABS_MT_TOUCH_MINOR
// F12_report[7] -> ABS_MT_TOUCH_MAJOR
// Finger 2
// F12_report[8] -> Finger 2 present (1/0)
// F12_report[9] -> ABS_X LSB
// F12_report[10] -> ABS_X MSB
// F12_report[11] -> ABS_Y LSB
// F12_report[12] -> ABS_Y MSB
// F12_report[13] -> pressure
// F12_report[14] -> ABS_MT_TOUCH_MINOR
// F12_report[15] -> ABS_MT_TOUCH_MAJOR
// F12_report[16] to F12_report[85] are all at 0x00
// F12_report[86] -> BTN_TOUCH single finger == 1, 2 fingers == 3
// F12_report[87] is 0x00
For now I have to port the code to STM8 and STM32. So please stay tuned for next update!
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.