Do you feel that mice have lost quality in recent years? You're not alone. Switches die overnight, no amount of cleaning helps, and there's always a subpar sensor. Alexander Nadeau, known as 'wareya' on GitHub and YouTube, explains that he's already on his third Logitech G203, and decided to escape that spiral by creating an open source mouse based on the popular Pixart PMW3360 sensor... with all the challenges that entails.
The concept of the 'gamer accessory' has given rise to a huge number of products, but at the same time, it's harder to identify quality options. Even popular brands seem to have lost traction, and what was once known for offering robust and stable experiences now disappoints from every point of view.
Alexander 'wareya' Nadeau has a problem with mice. In his video, he admits that he's already on his third Logitech G203, replacing the switches every six months because they stop working. Personally, I understand how he feels, as I was forced to transplant two switches into my Logitech G300s (and disable two buttons in the process), but 'wareya's solution is much more advanced: building a DIY open source mouse.
The Challenge of Building an Open Source Mouse
'wareya' explains the main ways a switch fails: 'bounce' (when the On/Off state of the switch changes very quickly, creating effects like false double clicks) and 'chatter' (when the switch stops working if you hold it down). Both conditions can be corrected by firmware, but it generates additional latency. Switches actually have three states: On, Off, and the position between them. Chatter leaves the switch trapped in that intermediate state, but with the help of an algorithm, it's possible to ignore it and preserve the previous state.
'wareya' designed both the PCB and the shell of the mouse, but the hardest part was finding a sensor. The Pixart PMW3360 has an excellent price/performance ratio, and many budget mice have adopted it, however, it's almost impossible to buy it separately. Add to that another inconvenience: the firmware associated with the PMW3360 is not open source, so we must clone its content from another mouse... and tolerate the presence of that blob.
In summary, building a DIY mouse requires sacrificing another mouse, extracting the firmware compatible with the sensor, and designing a PCB based on the RP2040 to run all the relevant code. 'wareya' tried using an ESP32, but a bug prevents it from returning from sleep mode. Link below!
Access the project on GitHub: Click here