This beta version is the first version using a homegrown USB driver! 🎉
No more depending on the official driver is a big step for the project! At first, there will probably be a setback, as unavoidably bugs will be introduced. But I believe this is a necessary phase and a critical step for the project to thrive. As much as using the official driver was a great help to start the project, I believe it is now a burden, for a few reasons:
- the official driver is not a public API, and as such it is frequently subject to changes which can break STUdio
- for the same reason, using this driver is suboptimal and requires to jump through hoops
- finally, using this driver outside Luniistore may be frowned upon
Using our own driver means taking back the control, which means:
- no more breaking changes (as long as the device does not change its USB protocol, which seems highly unlikely, to say the least)
- cleaner code
- the possibility to fine-tune the driver over time
As a matter of fact, I was able to use the async API of libusb to write this driver, which should already put less strain on the rest of the (server-side) application during USB communication. It should also be possible to implement a (lengthy, but still useful) defragmentation routine.
However, before I push this driver into the official release, I'll ask for your feedback. The driver will have to be tested against a variety of devices, especially with different firmware versions, to tackle the remaining corner cases. I you're willing to help, please let me know in issue #97.
Other improvements is this release:
- Automatically open browser when the app starts (unless instructed otherwise with a system property)
- Upgrade to vertx 3.9.0 and disable netty DNS resolver, which should remove some warnings