TL;DR: Azoteq has discontinued their touchpad modules, TPS43 and TPS65. There is no successor or alternative product. I have given up. I will pivot from touchpads to sliders like HHKB Studio, but not placed on case sides.
What is PTP? Why are Azoteq touchpad modules so irreplaceable?
For the last 20 years, the UI of PC haven't made any advancement. In 2005, we already had mice, touchpads, trackballs, etc... But, wait, really no progress? I think that there was at least one important advancement: inertial scrolling on touchpads.
I am not familiar with Mac history. As far as I checked, MacBook Pro (2008) was the first MacBook with inertial scrolling. On Windows, 8.1 (2013) was the first. On Windows, inertial scrolling comes with "Precision Touchpad". "PTP (Precision Touchpad Protocol)" is often used as the feature name of touchpads. On Mac, there are no (major) third-party touchpads now, so the feature has virtually no name.
In the age of the dot-com bubble, "dog year" was a buzzword. Nostalgic. In 2024, I still saw non-PTP touchpads for Windows everywhere. On Windows, a decade was not enough to popularize PTP. Do only immortal elves like Frieren use Windows now? All dogs are using Mac now?
There are enough reasons of it. After Windows 8.1 (after Vista, actually), Microsoft has almost stopped to invest Windows make better. After 12 years from the first release, PTP feature is still sketchy. For example, it yet cannot change scrolling speed without RegEdit and reboot. Laptop or touchpad manufacturers felt uneasy with such flaws. Logitech implemented their own inertial scrolling (but it is not very smooth like PTP or Mac).
Unlike Logitech, I decided to use PTP for my products. I implemented PTP on QMK. It works well on my prototype (now I am typing this blog by it) for several months. I found some glitches of it in the several months. Today I am going to tell you a glitch lurking in Azoteq IC, IQS550 / IQS572 (and other ICs, probably).
Before going to the glitch, we should know what is Azoteq TPS43, especially why it is so irreplaceable.
First of all, in the market now, there are little touchpad modules. Cirque, Azoteq, and nothing. I don't know why. In Alibaba, there are many touchscreen modules, but no touchpad modules. Moreover, Cirque touchpad modules are not PTP-ready. Cirque makes PTP-ready ICs (Gen 6, Dell uses it), but Cirque touchpad modules don't have them. Azoteq touchpad modules, TPS43 and TPS65, are irreplaceable. They use Azoteq PTP-ready ICs, IQS572 and IQS550 respectively.
But in 2024, Azoteq have discontinued TPS43 and TPS65 without successors.
We can make our own PTP touchpad modules if we have a good PTP-ready IC, PCBA design skill, money, time, motivation, etc. Let's see PTP-ready ICs in the market. You can find just two relevant options: Microchip maXTouch (mXT144U) and Azoteq (IQS550 or IQS572). Where is Cirque Gen6? No sale on Mouser or such retailers. Synaptics also makes PTP-ready ICs (Microsoft uses it), but no sale on retailers too. This situation discourages me from making my own touchpad modules. In this situation, I am not confident enough that I can resolve the glitch. What is the glitch? Now we are ready to go on it.
Power-saving behavior? Does not seem to be the case.
Leave a touchpad alone for a few tens seconds, then suddenly swipe with two fingers. On MacBook, you will see what you expect: Inertial scrolling. On my prototype's Azoteq TPS43 (its IC is IQS572), the first swipe is ignored. Subsequent operations are recognized correctly. Only the first operation is ignored. Not a showstopper, but a noticeably bad experience. Decent touchpads never have this glitch.
The behavior looks like a side effect of power-saving. So I underestimated the glitch for several months. "Just find the power-saving configuration in IQS572 and kill it, that's all".
This was not the case.
I killed every power-saving features in the IQS572, but the glitch remains. I tested a cheap USB PTP touchpad, and I found the same glitch. Now I suspect that the behavior comes from "Auto Tuning Implementation (ATI)" feature of IQS572. The cheap USB PTP touchpad's IC should have similar feature and behave similarly, I guess.
Capacitive touchpad relies on capacitance sensing, and capacitance is susceptible to changes in circumstances such as room humidity or surface moisture. Touchpad ICs should adapt to such changes every second. At the same time, PTP-ready ICs analyze the sensing data to calculate the position(s) of the finger(s) and to identify / track the finger(s). Analysis and adaptation will be closely intertwined, I think. ATI will be a maze built on a huge amount of experience. ATI should fix almost any malfunctions, but the glitch might be too hard to find. (Apple found and fixed it, of course)
IQS572 datasheet describes the ATI configuration parameters, but I find them quite difficult to manage. To do so, I need a testing machine of touchpads, like an XY plotter. And the configuration should be able to adapt to changing circumstances. I cannot run tests under very many circumstances.
I guess that Cirque or Synaptics PTP-ready ICs may not have the glitch. Do Microsoft and Dell both overlook the glitch? That's unlikely. But Microchip maXTouch? I can test it, but, there is no other way? Isn't investing this way too risky?
The problem is too much for me. I have given up. No touchpad in my future products.
My dream touchpad
I invested a lot in my touchpad project.
Recent fancy laptops' touchpads have Linear Resonant Actuators (LRA). It generates a tactile feeling on the fingers when the user presses the touchpad. This is called haptic feedback. Such touchpads should detect the pressure of fingers, so a pressure sensor is also required.
Does such a feature look too much for a privately run shop like DecentKeyboards? Actually not so much.
LRA is a common component. See Digikey. Vybronics, PUI Audio, Vishay Dale, and JIE YI ELECTRONICS make them. About driver ICs, TI and Renesas make them.
LRA is a promising way, but I pursued piezo actuator. I found that cheap cheap piezo speaker elements in Aliexpress are able to generate a tactile feeling on the fingers via (not very large) touchpads. Piezo driver IC, TI DRV2667 makes possible to design a quite small driver PCBA. The advantages of piezo actuator are not only the cost and footprint. The response time is noticeably faster than LRA. The shortcoming is, the assembly work is cumbersome. This may be critical for mass production, but no problem for me. I built a piezo actuator driver PCBA and it works flawlessly.
Cheap cheap piezo elements
My prototype PCBA, piezo actuator driver and pressure sensing MCU
My testing bed for a stack of touchpad module, piezo elements, force sensing resistors
Pressure sensor is much more burdensome. For the cost, force sensing resistor (film type sensor) is the only option available to us. It is a wacky sensor. Its pressure-resistance curve is not linear, and has a strong hysteresis. I need a MCU (ATtiny 1606) just to sense the pressure of the fingers on the touchpad. Anyway, it works well.
We can make decent touchpads if the glitch does not block us. After discontinuing Azoteq TPS43 and TPS65, the glitch is critical.
The life goes on. Capacitive slider is the next destination.
Recently I was interested in a feature of HHKB Studio: Capacitive sliders placed on case sides.
Sadly they are not PTP for now, but it may be improved by firmware update someday. The sensitivity is not a decent thing ("when I did want to use the touch bars, I found them unresponsive and difficult to engage, often requiring three or four swipes to get them going." It sounds similar to the glitch), but it can be solved if the IC is not sophisticated like PTP-ready ICs, I guess. Sliders placed on case sides were bad idea, but how about top horizontal center? My next prototype will give me the answers.
I have been using my current prototype for several months, and I have found inertial scrolling and zooming features of the PTP touchpad to be indispensable. As a pointing device, touchpad is poor. Just for inertial scrolling and zooming, there is no need for a 2D touchpad. An 1D slider will do.
The downside of capacitive slider: I have to build my own slider module. It looks hard but able to get through, I guess now.