Today I finished reinstalling and re-configuring my laptop for what must be the third or fourth time since I bought it back in Feburary. While I’m uncertain whether to blame bad software, badly written drivers (whose flaws I’ve exposed through numerous USB tests) or just general instability, all I know is that I’m officially sick of downloading Windows Updates. Days of work wasted just getting everything set back up just the way it was!
Nevertheless, some good and bad news. First, the good - a new WIP (Work In Progress) version of MyUSB 1.5.3 has been uploaded to the support group. This new update contains the new Stream Callback API, which allows for custom callbacks to the stream functions to be written, so that in-progress stream transfers can be aborted early from a stimulus other than the ones written into the stream functions themselves. The stream functions have also been enhanced with the addition of timeouts, so bad transfers will no longer freeze the device.
Once the Mass Storage demo is confirmed to pass the USB-IF MS class device specification compliance tests, and once a few other things are fixed or completed, MyUSB 1.5.3 will be released. I’m happy with the way things are progressing with the new code — lots of bugs quashed and this will be the first release to certify (via the USB-IF compliance tester tool) full compliance to the USB 2.0, HID class and Mass Storage class specifications. There’s also a few neat additions to the library, including a new Dual CDC demo based on the Interface Association Descriptors I blogged about previously.
Now the bad: no bluetooth host for the near future. Putting aside the enormous amount of effort (possibly more than what has been required to write MyUSB itself) needed to write a full Bluetooth stack, there is a technical limitation. The Bluetooth HCI expects the USB host to be able to buffer up to 64KB of data at once before passing it on to the upper service layers, an amount of RAM which the USB AVRs certainly don’t have. While it may be possible to implement only certain services that can be forced to only send certain packet sizes, I don’t know enough about the Bluetooth architecture and specifications to be certain.
Recent Comments