Hello from Oakland!
We hope your 2016 is off to a great start. Here’s what we’ve been up to lately:
After the last backer update, a couple of incredibly talented electrical engineers stepped up to review the board designs we thought were in pretty good shape. The reviews were very comprehensive…and incredibly humbling. The old boards would probably have worked, but the reviewers identified a whole bunch of things that we should be doing to make your keyboards easier to manufacture, more reliable and longer lasting. The EE contractor in Europe we’d been working with started updating the design before going dark for 3 weeks. We ended up having to scramble to find somebody else. The updated boards are designed and laid out. We’re in the process of getting the updates reviewed. (Previous reviewers: If you’re curious, the updated boards are on the master branch on GitHub.) In addition to fixing a number of possible reliability issues, we’ve switched to differential signaling for the i2c bus and having the key scanning microcontrollers take responsibility for driving the LEDs. That should mean that both LED updates and keypresses will be much more reliable with longer inter-hand cables, and that we’ll have less trouble passing FCC certification.
We’ve done a bunch of work on the keyscanner firmware, mostly to improve performance and to drive the LEDs. You can find the latest keyscanner firmware here: https://github.com/keyboardio/avr_keyscanner/tree/feature/spi_apa102
The other side of that firmware is the driver on the Arduino side. The current version is here: https://github.com/keyboardio/KeyboardioScanner/tree/led_control
That part of the firmware is about as done as it can be until we get prototypes of the new PCBs made. We’ve never promised that the Model 01 is the best keyboard for twitch gaming, but in early testing, we’ve been getting better performance numbers than we’d expected. Right now, we’re able to push out about 12 frames of LED updates per second and to scan the key matrix roughly every 5ms (200 scans per second). With the LEDs enabled and updating at full speed, we’re not yet looking at competitive eSports class performance, but we’ve still got a lot of code to optimize. Once we have the prototype boards, we’ll be able to do further performance tuning.
On the USB front, we rebuilt our USB stack on top of a fork of Nico Hood’s updated Arduino HID driver (which was, in part, a fork of our earlier work). We’ve now got NKRO tested and working on OS X, Linux, Windows, iOS, and working at least reasonably well on Android. (You don’t get to press an unlimited number of keys at the same time on Android.) You can find our draft HID library on GitHub: https://github.com/keyboardio/HID/tree/keyboardio
There are a bunch of clever things a keyboard can do (like type emoji) if it knows what kind of computer it’s plugged into. Most keyboards handle this with a dip-switch or a completely separate “Mac-compatible” model. We think you deserve better than that, so we’ve been playing with a way for your keyboard to figure out whether it’s plugged into a Mac, a Windows box or a Linux box. Officially, computers don’t provide this information over USB, but security researchers have written papers about the possibility of “fingerprinting” a host operating system based on the the quirks of an operating system’s USB implementation. Most of the proposed implementations are based around the concept of “fuzzing” the host–sending bad data to the host computer and seeing how it reacts. That’s a perfectly reasonable technique for attacking a computer, but is slightly uncouth for a “regular” peripheral. We’re not willing to go that far.
This weekend, Jesse sat down with Arduino 1.6.7’s new PluggableUSB implementation and wrote the beginnings of an entirely passive host OS fingerprinting library. It’s on GitHub: https://github.com/keyboardio/FingerprintUSBHost
Right now, we know it can tell the difference between OS X 10.10+, Windows 10 and Linux. It can’t yet differentiate iOS 9 from OS X 10.10+ or Android from ChromeOS from Linux. If you’ve got an Arduino Leonardo or Micro hanging around and want to test it out, we’d love failure reports or pull requests.
Now that we have most of the core libraries we’ll need, the next step on the software front is to begin to put together and updated version of our actual keyboard firmware. The biggest difference from the firmware we’ve been running on the Kickstarter units is likely to be moving the keymaps from flash memory into EEPROM, which should make key layout updates much, much easier.
The keycaps have seen only small tweaks in the past six weeks. Next up on that front is for Corrigan, our contract mechanical engineer, to take a look through Jesse’s work to make sure he’s not doing anything too crazy.
In December, Corrigan and his team presented us with a half dozen options for feet and a half dozen options for an improved interconnect mechanism. We narrowed the selection down to the options we thought would work well and then presented those to our manufacturer for their feedback. Once we have the results of their evaluation, we’ll (hopefully) be able to pick a winner and hand it off to the manufacturer for final-ish pricing and a production timeline. Once we get that, we’ll finally have a real manufacturing schedule we can share with you.
We’ve started to integrate the new versions of the mechanical and electrical models, at least in terms of making sure all the parts stack up.
And, on what is essentially a technicality, we’ve now joined the ranks of Kickstarter campaigns who have shipped (something) to (some) backers on time. We promised delivery of screwdrivers to the $23 “Source Code & a Screwdriver” backers in December and we did!
Screwdrivers shipped out to every $23 backer we had addresses for in December. If you backed at this level and *haven’t* gotten one yet, we probably haven’t gotten your address yet. Login to your Kickstarter account and fill in the survey! Or, just drop us an email. (If you backed us for one or more keyboards, don’t fret. We haven’t asked for your addresses yet, because we’re still a while off from shipping the Model 01. Your day will come.)
Later this week, Jesse will be at CES. We don’t have a booth, but you may be able to find him hanging out at the Autodesk or HWTrek booths. There will likely be a Model 01 on display in Autodesk’s Fusion 360 showcase. If you’re around, feel free to message @keyboardio on Twitter and we’ll see if we can meet up.
Also, we finally scheduled that vacation we were talking about in November. We’ll be on the Big Island of Hawaii for the second week of February. We worked hard to pick a week that won’t have much of an impact on schedules–that’s the week that everything in China will be closed for the annual Spring Festival. If you’re in Kona or Hilo and want to check out the Model 01, drop us a note. We’ll have a keyboard with us and would be thrilled to say hi.
If you or anyone you know is looking to buy a Model 01 any time in January 2016, discount code HAPPY2016 will get you $16 off.