demo

You know the drill: a new month always brings a new status update. Let’s delve into what’s happened lately!

Tooling status

Our mold making contractor has been working on the top molds of the UHK case and are on schedule. Here are the molds of the top case parts:

At this pace, the end is near. We should be able to test the final plastic parts within weeks!

LED display

In our previous update, we showed you the mold for the LED display. Since then, our supplier baked a complete unit featuring the PCB, the LEDs, and the epoxy inside. The result is a blindingly bright LED display!

The display is so bright that it’s rather overkill at night. Luckily, the LED driver ICs that we use allow us to precisely set the brightness level – which we will expose as a user option eventually.

And this is how it looks when scrolling the alphabet on it:

Actually, it looks better in real life, but not when recorded with a mobile phone under suboptimal lighting conditions.

Some problems still have to be resolved, though. The forward voltage of the white LEDs are considerably higher than of the red/yellow LEDs which results in an unbalanced charlieplexed LED matrix that has a tendency of ghosting which is noticeable, especially when only the white LEDs are on:

There are several ways of fixing this issue, so if everything goes well we’ll simply throw a couple of diodes at the LED matrix and make our supplier redesign the PCB of the display. We really try to keep the white LEDs, but in the worst case scenario, we’ll use LEDs of a different color instead, whose forward voltage matches that of the red/yellow LEDs.

Another issue to be resolved is acoustic noise. The LED driver ICs generate a high frequency noise that is slightly disturbing. This is due to the capacitors and inductors, which shrink and expand according to the PWM signal that drives the LEDs. There are about a half dozen ways to deal with this issue. Some of them increase costs, others increase complexity. We may end up combining multiple approaches to get the best result.

Firmware

Lots of things have been happening in firmware land lately. The FRDM dev boards that feature the processors we use have already been working for a while, but the firmware wasn’t tailored to our PCBs.

First up, I tried to set up the multipurpose clock generator of the K22 MCU which made me realize how much of a hideous beast it is. It would have likely taken me weeks to make it work, so instead, I summoned Santiago who set it up like it was a walk in a park.

Then I went on to implement the key matrix scanner, made the left keyboard half send key states to the right keyboard half, implemented a rudimentary USB communication protocol, exposed the EEPROM and LEDs via USB, and made all the peripherals work.

Not being a battle-hardened firmware developer, it’s always the low-level MCU programming that gives me the biggest headache. Now that these parts are in place, we can finally focus on implementing the high level architecture, protocols, features, and cleaning up the codebase.

The only major low level feature left is the bootloader, on which Santiago is working, and he should finish in November. In the meantime, we can simply use hardware USB programmers to program the firmware via the ARM SWD ports of the UHK.

Currently, the firmware is able to exercise the full breadth of hardware features, proving that our current generation PCBs work as expected. Next up, I’ll send a couple of assembled PCBs to our developers and contributors, so that they can make Agent communicate with the UHK via USB, and develop the firmware further.

Agent

Nejc implemented a data layer that persists the state of Agent into local storage. That’s right folks, from this point on, all of your keymaps and macros will be automatically saved. Mad props to Nejc for his hard work!

Jozsi implemented the rendering of mouse actions, updated to the latest (and now stable) Angular and TypeScript, and removed loads of legacy code.

I’ve written a couple of scripts in the usb branch of the Agent repo to demonstrate USB communication by reading and writing the EEPROM and LED driver ICs of the UHK. My half-baked code will eventually be refactored and integrated into Agent.

Graz meetup

Usually, Santiago is located in Madrid, but nowadays he lives in Graz, helping a major customer of NXP. Living near us, he recommended that we should meet, and we have gladly taken the opportunity. I also asked Nejc whether he wants to join – to which he said yes. And so, the four of us could finally meet in person.

There was no shortage of interesting conversation and fun times. Apart from a fair amount of geek talk, we ended up showing our apparent lack of pool skills.

And that wraps up this update! Looking forward to talking to you again on 2016-11-18.

Another month has passed, and so it’s time for our monthly status update! This one will contain a bad bit of news, a good bit of news, and lots of news bites on our progress.

Updated delivery schedule

Over the last few months, a lot of you have been giving positive feedback on our progress and appreciated the detailed updates. According to our Crowd Supply campaign page, the goods are expected to ship at the end of September.

We’re trying our best to deliver on time, busting our ass day by day, usually even on weekends, and still, it’s quite apparent that we can’t meet this deadline even if we bend over backwards. So the delivery schedule needs to be revised:

The keyboard and palm rest are expected to deliver by the end of December

The modules are expected to deliver in April 2017

Please let us explain the reasons.

Our April delay that was caused by our previous bank (which we abandoned forever) has definitely contributed to this one, as it caused a lot of overhead, and we could only pay to our mold making contractor in a delayed manner.

Another reason is design delays. We have just finished the design of the feet and the palm rest. Getting the design right has definitely taken longer than expected and now the molds of the feet are about to be made. As a rule of thumb, we rather take the time to get the design right than to rush things and end up with a mediocre product.

We have to focus on the core keyboard first and implement the modules afterwards. So the mold of the modules will be created right after the mold of the keyboard. We will pay the extra shipping fees because of the separate shipment of the modules. That’s the least we can do.

We’re running things in parallel as aggressively as we can to hit our updated schedule. For example, a mold of our special keycaps just got ready in Taiwan, the mold of the case and the cutting tool is being created in Serbia, and our contractor for the LED display has just started to work on their mold.

We’re very sorry for this delay. We understand that you can’t wait to put the UHK under your hands and waiting sucks. We’re asking for your patience and to remedy the situation a bit we’d like to offer something, which is an…

Anodized aluminium palm rest

There are plenty of ways to make a palm rest and we have considered various designs over time. One of the candidates involved a beautiful anodized base plate milled from solid aluminium.

Of course they come in pairs. This is the left one.

It was clear from the get go that it won’t be cheap and we were thinking about making it available as a premium product later. But now, it’s our golden opportunity to make up for the delay of the project schedule. So I’m here to announce that we will provide this anodized aluminium palm rest to those who purchase the palm rest pledge before keyboard shipment! The price for the aluminum palm rest will go up afterwards.

Now that we wrapped up the bad and the good news let’s move on to the rest.

Tented UHK prototyped

Since our latest update we got the feet 3D printed, screwed it onto the back of a prototype and shoot a picture of it.

Everything feels right about the feet and we’re satisfied with the overall design. The palm rest is yet to be fabricated. We’ll make sure to show it to you as soon as it gets ready.

The state of the mold

The molds of the bottom cases are complete. This is the left one.

The remaining molds are also in the works, and in our true style, we’ll be posting more pictures as they get made.

Injection molded UHK keycaps

The UHK features two keycap types that are non-standard. One is a concave-shaped, 1.75U, row 4 keycap used by the Mod and Space keys, and the other is convex-shaped, 1.5U, row 1 keycap used by the backspace key.

I’m happy to let you know that recently, our keycap supplier got the molds ready for these keycaps and sent us a couple of samples:

These custom keycaps are impeccable and totally consistent with the rest, just as expected. They put a smile on our faces because custom parts like these are major milestones for the project.

The state of the modules

Not much has been said about the modules recently, so it’s time to share some information on them. We’ve actually made a couple of videos of them in action, so that you can get an idea how the modules feel and behave.

Please note that the plastic case and electronics of the modules are not ready yet. So far, the key components have been chosen so we show you the guts of the modules directly connected to the PC.

If you are curious about the exact ICs that we use inside of the UHK, or in the modules then you’re welcome to delve into our datasheets repository.

As for the number of buttons of the right-handed modules we’re not exactly sure yet but we’re aiming for two buttons per module.

Let’s see what we have!

Trackball module

The trackball module features an ADNS-3530 optical sensor which is remarkably tiny and communicates over SPI. This demo board translates SPI to USB but we’ll use a KL03P24M48SF0 microcontroller to translate SPI to I2C which is spoken by the UHK.

Trackpoint module

The trackpoint module features a sensor of an unknown part number (our supplier signed an NDA with the manufacturer so we don’t know) but it’s remarkably similar to the now defunct SK8702 trackpoint module which features the SK7102 controller. Our supplier only provided an incomplete datasheet to us, which is not a major problem because the module speaks PS/2.

We’ll use the FlexIO capability of the KL03P24M48SF0 microcontroller to implement a protocol translator which will translate from PS/2 to the I2C protocol of the UHK.

Being an I2C device, the controller will directly connect to the UHK. We’ll have to design a custom-sized touchpad, however, featuring the IQS572. Luckily, Azoteq provided a design guide for that.

It’s not a coincidence that I mentioned the name of Azoteq a fair number of times above. Back in the day I blogged that we’re looking for a suitable part, then they contacted to us and provided the most awesome support ever!

Key cluster module

The key cluster module features a couple of keys and buttons which are simple to scan by the microcontroller. The tiny trackball is a Blackberry trackball which uses hall effect sensor along the 4 axis. We haven’t yet hooked up the Blackberry trackball to control the mouse pointer but you can find plenty of videos on YouTube of its various applications. I recommend watching Sparkfun’s video of their trackballer breakout board which explains it in detail.

Introducing our firmware developer

A while ago, we reached out to you looking for a firmware developer. We’ve gotten quite a few excellent applications and please let me take the opportunity to thank every one of the applicants for contacting us.

Without further ado, let me introduce you our firmware developer, Santiago González Fabián from the sunny city of Madrid.

My name is Santiago González and I've been playing with electronics and computers since I can remember, but I discovered the amazing world of embedded systems in the Electronics Engineering Bachelor where I felt in love with 8051 and ASM code. I've programmed 8 bit and 32 bit MCUs in C and Assembly mainly, and my focus the last 4 years has been the Cortex M world, working at Freescale and NXP as Field Application Engineer trying to solve all kind of issues with Embedded Systems all over Spain, from Automotive to Industrial equipments, from 8 Kb Flash devices toggling LEDs to 2 MB Cortex M7 doing Ethernet, Motor Control and RTOS scheduling at the same time.

Embedded systems are my job and my hobby (Although I also climb mountains in the weekend) so in my free time I look for new challenges in several places (Stack Exchange, HackADay, Electronic Forums…) and that's how I met László and UHK, in my weekly check of NXP Community. After having a look into the project and the open source philosophy behind it, I decided I would love to help if possible. Now the UHK PCBs have arrived to Spain, so I can begin the Bootloaders development :). I cannot wait to start coding!

The new prototype sitting on Santiago’s desk

Since first getting in touch with Santiago, I’ve exchanged almost a hundred emails with him about deep technical stuff. It’s apparent to me that he’s highly knowledgeable, a truly excellent communicator, and his enthusiasm clearly shows. We couldn’t ever wish for more than that.

The bootloaders of the UHK are a lot more complex than those of regular keyboards (not that most keyboards have a single bootloader to begin with). This is because our design is highly modular, composed of separate keyboard halves and modules, each running separate firmware images. So naturally, we want to enable you to upgrade the firmware of every module over USB with a click of a button.

The idea is that the right keyboard half will run the master bootloader that will directly upgrade the application firmware from the PC. The left keyboard half and the modules will run the slave bootloader which will connect over I2C to the master bootloader, which will in turn relay the firmware image from the host computer over USB.

KBOOT 2 already supports the above scenario, but a fair amount of customization has to be done by somebody who really knows what he’s doing.

Apart from implementing the bootloaders, Santiago will be working on parts of the firmware that require deep knowledge of the Kinetis platform, like the FlexIO based PS2 to I2C protocol translator of the trackball, and such.

Still reading? Then pat yourself on the back because you deserve it! Talk to you on 2016-09-15.

Two months ago we announced that we’ll be moving to a much more powerful ARM processor instead of the AVR – and one month ago we said that we’ll be using an even powerful one. Moving to a new processor architecture is a big deal, especially with a short amount of time – but we were able to make it happen without hurting the project schedule.

We’ve been working heavily on the new firmware lately, and we’re happy to let you know that it’s paid off big time! This is how the left side of my desk looks:

The rightmost FRDM-K22F board contains the insanely powerful MK22FN512VLH12 processor and runs the firmware of the right keyboard half. It shows up as a fully-fledged USB device, implementing a keyboard interface, a mouse interface, and a generic HID interface. This means that it can act as a keyboard, as a mouse and it’s also able to communicate with the host computer (to transfer configuration data, etc). As proof of this, a button on this board makes it send the scancode of the letter “a” to the host computer, another button scrolls with the mouse downwards, and a script that I’ve written makes the RGB LED display any color.

The middle FRDM-KL03Z board acts as the left keyboard half, and it communicates via the right half via the I2C protocol. A button on this board moves the mouse pointer leftwards, and another button moves it rightwards.

The leftmost board is an Open Bench Logic Sniffer which sniffs the communication of the aforementioned boards, so that the firmware can be debugged more easily.

Want to watch a half minute video of how it works? Pop that corn, then enjoy the view!

Working on the new firmware is a labor of love. Being an advocate and practitioner of clean code, I’ve made sure that it’s not merely working, but supremely readable. There’s a lot of code to be added, but it should be easily hackable by the UHK owner.

Progress on Agent

Arpi has been giving Agent some love. Now you can switch between keymaps in the side menu and change to the macro view interface. This is still considered to be a mockup, but more and more things are working, so you’re welcome to click around!

The UHK in the Wild

Our most beautiful master prototype is truly a word traveller. It’s been in San Francisco and New York to be seen by the media and you at getgeeked, then travelled to Moscow, only to arrive to Singapore to be featured at Hackware v1.2, then went back to Hungary, had a trip to Spain for a testing session, and recently landed in DevConf in Johannesburg!

A UHK was given away by DevConf to a speaker and an attendee, and they liked our prototype so much that they’re in the process of purchasing a 10-pack.

Our sincerest thanks go to Mark Pearl, organizer of DevConf, who got in touch with us, and helped to make this happen!

What’s Next?

The firmware has progressed so far, it’s now time to redesign the PCBs to feature the new processors instead of the old AVRs. There’s also a lot in the works on the mechanical design front, so stay tuned.

Most keyboards don’t have a lot to offer in terms of ergonomics. But with the UHK and our new stretch goal, a super-high-quality palm rest, you’ve got tons of them.

Take a look at the palm rest set up in various arrangements, starting with the flat setup:

Tilted setup:

Tented setup:

András is quite serious when it comes to durable mechanical design. So much so that the base of the palm rest is a solid stainless steel sheet. We surely don’t expect people to wreck this anytime soon. As you can see, the palm rest also comes with a set of legs which can be set in various configurations. It’s up to you which set-up is most comfortable.

You can even screw in your UHK.

We’ve heard from a few people who love the UHK because it will help them handle their disabilities. One creative backer even suggested that they would be attaching each keyboard half to an armchair. In situations like this, we’ve got you covered!

The keyboard features four threaded stainless steel inserts per keyboard half

As far as we know, the UHK is the first keyboard to use stainless steel mounting inserts. These are perfect for screwing your keyboard into almost any situation.

If you’re mounting your beloved keyboard (like to an arm-chair) and need a little more room than the provided cable can allow, not to worry! We’ve got you covered here, too. You can use any standard telephone cable. A while back, I even tried a 20 meter (66ft) long cable. Check it out:

This video is for those of you who want to mount the keyboard halves to your arm chair and asked whether you can use a long cable for this purpose. You can use pretty much any 4P4C cross-over telephone cable to connect the two halves.

Up until this point I was the only one testing the UHK and using it as my daily driver which makes me feel all warm and fuzzy but also somewhat worried. As the lead developer of the project I'm hopelessly biased and rather clueless regarding how other folks would use it.

A while ago András and I were attending to Forbes Flow where we managed to show our beloved keyboard to Ádám Somlai-Fischer, cofounder & principal artist of Prezi. Prezi is considered to be the most successful Hungarian startup of all times so let me just say that this is a big deal for us. Thankfully, Ádám found our project quite interesting and generously offered his help. We asked for testers and we ended up getting contacted by them pretty soon.

Today was a truly remarkable day because it hallmarks the delivery of our two, recently built, 5th generation prototypes to the chosen six, namely:

Csaba

Szabolcs

Mark

Apparently, we forgot to take pictures of Dávid and Vilmos so shame on us! Also, Kálmán couldn't make it but we hope that we'll be able to meet him in person eventually.

Thank you very much Prezi, Ádám, and the chosen six for your help! We already learned a ton of stuff from you guys and this is only getting better as you start to use the prototypes during your daily work. Fear not, we're here to hold your hands!

Last but not least, special thanks go to Ákos Tolnai, our strategic consultant from Ability Matrix. He was with us all the time at Prezi HQ providing invaluable insights that are critical to onboard future users as gracefully as possible.

It's always fun for me to see people experience our beloved keyboard and realize how it is familiar and yet different in a cool way. Lately, I've been to a Toptal meeting, followed by JSConf 2015 Budapest. In my true style, a prototype was in my backpack waiting to be seen by people. Naturally, some pictures were shot.

Even more recently, András and I were attending to a meetup at Ustream Hungary and the organizers have asked me to give a talk about the UHK in quite an unexpected fashion. I used our website as a presentation medium and got 5 minutes but the attendees asked so many questions that it ended up being about 20 minutes and people still couldn't get enough after the talk! It was a great experience for everyone involved.

Some of the things I learned along the way:

Wherever you present always make sure people take some pictures. A lot more pictures could have been shot than the above.

Demoing the UHK on mobile is a novel experience for most, but a programmer's editor is very much needed. Just purchased DroidEdit Pro.

I've really gotta get some name cards made.

After conference parties are fun but be sure not to stay there too late or else the next day you'll look like crap due to the lack of sleep.

I've gotta get some tan because I look hopelessly pale next to Pablo. I don't wanna look white and nerdy.

Based on our video and images you must already have a good idea of how the Ultimate Hacking Keyboard looks like. We thought why not take this experience to the next level and provide a 3D model that you can rotate, zoom and pan. You can also go fullscreen and cycle through the annotations. Go crazy!

Instead of hunching over the laptop Laci is typing (and controlling the mouse pointer) in the most laid back fashion ever. A perfect use case of the Ultimate Hacking Keyboard. A more ergonomic working environment is surely preferred on the long run, of course.