> todo item added: Figure out a way to mass-download all the auto-updating drivers
> todo item added: Start sniffing the protocol this tool uses to reprogram the mouse so I can build a cross-platform tool for it.
This does sound like an intriguing idea. For all those crappy Windows drivers that come with an 300 MiB+ Electron based configuration UI, auto updater, etc... figure out how to get the actual driver binaries and build a script that downloads and repackages them using NSIS.
One could in theory build some kind of Qemu based sandbox framework that snapshots the disk and extracts the binaries after installation. Tricking the updater into actually installing the driver inside a VM without the hardware might be a bit tricky, but depending on how they do the check (e.g. look if the USB ID is present?), I guess it should be doable and might be a bit easier than the reverse engineering approach in this Twitter thread (and also easier to automate, so it does not just work for this particular device).
I fear the biggest challenge for such a project would be dealing with the hardware vendors legal department though.
Or just reverse their stupid ass USB protocol, and don't run their software stack at all. No legal threats with that, because RE for interoperability is legal.
Controlling USB devices is rather simple, once you know the format of "packets" they send to their interface endpoints, to control the device. Format can often times be deduced from observing the URBs in wireshark while clicking around the vendor's app.
My point is that gets a bit tedious for sufficiently large number of stupid ass USB devices. You might want a simpler to automate approach, and possibly something where you don't have to deal with binary driver signing yourself, which is rather expensive if you are doing this for a hobby.
> No legal threats with that, because RE for interoperability is legal.
The local copyright law where I live agrees with that assessment. I take it you did the necessary research for wherever you live?
But what if your reverse engineered driver infringes one of their stupid ass patents? What about trademarks (e.g. if you try to advertise it as a replacement for the official device driver)?
You do know that even if you are totally in the right, that does not necessarily stop them from suing you anyway? Regardless of who is actually right, this will end up costing you a lot of time, money and nerves.
I'd be very careful making legal assessments like that as an engineer. Responding to a legal threat totally unprepared and with a response like that will make the "sue you anyway" scenario very likely.
> todo item added: Start sniffing the protocol this tool uses to reprogram the mouse so I can build a cross-platform tool for it.
This does sound like an intriguing idea. For all those crappy Windows drivers that come with an 300 MiB+ Electron based configuration UI, auto updater, etc... figure out how to get the actual driver binaries and build a script that downloads and repackages them using NSIS.
One could in theory build some kind of Qemu based sandbox framework that snapshots the disk and extracts the binaries after installation. Tricking the updater into actually installing the driver inside a VM without the hardware might be a bit tricky, but depending on how they do the check (e.g. look if the USB ID is present?), I guess it should be doable and might be a bit easier than the reverse engineering approach in this Twitter thread (and also easier to automate, so it does not just work for this particular device).
I fear the biggest challenge for such a project would be dealing with the hardware vendors legal department though.