electronics

Module production is underway

Hi there, and welcome to this delayed monthly UHK status update!

TL; DR: The assembly of the first 400 modules is underway in our facility, and we expect to ship them in about a week. Afterward, we’ll be continuously producing and shipping module preorders as quickly as we can. One of our key contractors has become suddenly overloaded, and as a result, we expect to start UHK 60 v2 production around the end of April. There are a lot of cool demos in this update, so make sure to read it.

Module production

Module manufacturing has finally started, and we’re assembling the first 400 modules, including 100 modules per type. The following photo was taken after surface-mount assembly and shows the module panels:

Unlike the UHK panels, the module panels contain numerous PCBs. The key cluster panel looks like some kind of modern art:

The trackball panel is very densely populated:

It’s interesting to peek into the modules, so here are some pictures of them half-assembled and fully assembled:

The following modules have been assembled so far:

The modules’ look and accuracy have greatly improved since I made the last module demo videos, so I’ve made some new ones. At the end of the videos, you can see the scrolling navigation mode in action assigned to the Mod layer of my UHK 60 v2. This mode makes it easy to zoom through a massive amount of content quickly, and it’s great to skim through documents.

Let’s start with the trackball module.

We’ve tried many different balls, and we’re unsure whether to provide a light black resin ball or a heavier steel ball, so we’ll include both. We may eventually offer only one of these balls based on your feedback. The balls can be quickly replaced without tools, according to the following video.

The new, modified, injection-molded spacer improved trackpoint accuracy, and now it feels more accurate.

Beyond single tapping, the touchpad module supports two-finger tapping, two-finger scrolling, and pinch to zoom, but only tapping is supported at this point. We’ll add firmware support for every one of these actions soon.

Can the modules replace the mouse? It’s a question asked by many, so it’s worth an answer. The modules are a good fit to replace the mouse for regular desktop use, such as web browsing or interacting with applications. If you’re a graphics designer and spend a lot of time in Gimp or Photoshop, a mouse or a graphic tablet is a better choice, though. As for gaming, I think the modules are useful for specific games such as turn-based strategy, but I wouldn’t play fast-paced games, such as first-person shooters with them.

We keep shipping on a first-come, first-served basis, but the first 400 modules will be sent only to non-Crowd Supply backers. The reason for this is that Crowd Supply could potentially cause a weeks-long delay in delivery, and it is vital to get quick user feedback at the start of module mass production.

After shipping the first 400 modules, we’ll fully adhere to our first-come, first-served shipping policy, and we’ll be continuously producing and shipping module pre-orders as quickly as we can. So far, module mass-production has been a smooth ride, but it’s just started, so we don’t have reliable metrics on how long it’ll take to assemble all modules. We’ll provide you an estimate in our next monthly update.

In the meantime, make sure to update your address if you have moved to another location since your order.

Agent progress

Agent has evolved quite a bit recently, and now it’s able to detect every module and configure the actions of module keys and buttons.

A seamless experience of a fully-fledged product is kind of magical, and I believe that the above demo exemplifies it well. You can take a look at Agent’s web demo, which now includes the modules, too. We’re working hard to make the modules not only work for you but amuse you.

UHK 60 v2 progress

Two issues are blocking UHK 60 v2 production: PBT keycaps and plastic parts.

We’ve received a new PBT keycap sample set for approval since the last monthly update. This sample is a definite improvement over the previous one, but some keycaps’ shine-thru performance, especially the convex keycaps’, should be better. Our supplier is doing their best to maximize shine-through performance and provide improved samples soon.

As for the plastic parts of the UHK 60 v2, they’re larger than the modules and can only be molded with a larger machine. We have a great supplier who proved themselves, but due to a sudden influx of foreign orders, they’re quite overwhelmed these days and can only mold UHK 60 v2 parts around the end of April.

Most of you are very patient regarding such delays and primarily concerned about the quality of the final product which we highly appreciate, and we resonate with your mindset. Others are less patient which is understandable. We have dozens of suppliers, and even if one of them introduces a delay, the whole project gets delayed. These delays are often unexpected, and they’re among the top reasons why shipping hardware is so much harder than shipping software. We’ll do our best to push forward. We’re making sure that the wait worths it, and we’ll be keeping you updated.

Your tweets

You guys keep sending your awesome tweets, and we're always eager to read and feature them! If you got your modules, please share your love!

We’ll be keeping you updated on all things UHK and are looking forward to talking to you in mid-April. There’s a lot to do nowadays, so the update may be a bit late, but I’ll do my best.

Module schematic and BOM finalized

Hi there, and welcome to the monthly UHK status update!

TL;DR: The schematics and BOMs of the module PCBs and FPCs (Flexible Printed Circuits) have been finalized. Every part has been ordered for the modules.

Our contractor keeps making progress with the key cluster mold. This is how it looks:

As for the right-side modules, András has been refining their mechanical design, and I’ve been tweaking their PCBs accordingly. These are some of the boards I’ve redesigned recently:

I consider the schematics and BOMs of each PCB and FPC to be fully finalized. András and I will meet over the next week and check how well the new 3D printed module cases fit with the new PCBs. Chances are high that everything will fit well, at which point the machining of the right-side module molds will begin.

I recently visited our EMC tester, TÜV, and we put the modules into the test chamber. The modules did not affect the measurements, which is exactly what I expected based on their small power consumption and small size. Given these results, the modules should pass the EMC tests with flying colors.

We’ve ordered every part of the modules from our suppliers. No parts shortages or delays are expected.

These days are unusually eventful due to the modules, hence this fabulously late monthly update. I’ll do my best to keep you up to date in a timely manner going forward, but I’ll keep prioritizing module development and production over the monthly updates for everyone’s sake.

Your tweets

You guys keep sending your awesome tweets, and we're always eager to read and feature them! If you got your UHK, please share your love!

We’ll be keeping you updated on all things UHK, and are looking forward to talking to you on 2020-06-16.

Trackball and touchpad module progress

Hi there, and welcome to the monthly UHK status update!

TL;DR: We’ve made progress with the trackball and touchpad modules. Some outstanding UHK reviews have been published.

Trackball and touchpad module progress

I recently thought I’d finished the firmware for the trackball module and it would be ready to demonstrate for all of you. I can give you a demonstration, but it’s not what I was hoping for.

As you can see, the pointer moves in highly erratic fashion, and it heavily drifts toward the top right corner. I can affect the pointer by moving the trackball toward the bottom left corner, but the erratic movement usually overpowers my movements. I believe that this is a side-effect of insufficient filtering on the PCB, but it’s really just a wild guess on my part, and I’ve contacted PixArt, the manufacturer of the optical sensor who will help.

As for the touchpad, we’ve increased its resolution and sensing area.

The big footprint is for an optionally solderable 2x20 pin 0.1" connector that directly mates with the Azoteq CT210A-S dongle for configuration and diagnostics purposes.

The new design is a clear improvement over the old one, but we still have some work to do based Azoteq’s new feedback. The ground must be routed in a very specific way to maximize sensor performance. It’s not rocket science, just finicky. István is working on the next PCB version.

Next up, I’ll be working on the firmware for the trackpoint module, and will implement the suggestions of PixArt to make the trackball module work flawlessly. I hope that I’ll be able to showcase at least one, but hopefully both of these modules in our next monthly update. The key cluster module prototype is already fully functional, and the touchpad module will come last.

UHK reviews

Quite a few UHK reviews have been made recently. Let’s take a look at them!

ShopzadaPH has made an extremely thorough review featuring an unboxing, the keycaps, layout, switches, and configuration of the UHK. He really left no stone unturned, and the production quality is great. This one is highly recommended if you’re considering purchasing a UHK.

Thomas Ran is the king of the hill when it comes to mechanical keyboard reviews on YouTube, and he’s just reviewed the UHK. In his review, he emphasizes that he’s not an ergo guy, and yet, he’s done a great job of explaining the fundamentals of ergo boards and reviewing the UHK.

I met Christian Bäuerlein in 2018, as he's the organizer of Mechanicon, the meetup for mechanical keyboard enthusiasts in Germany. He recently offered to review the UHK, and given his formidable experience with mechanical keyboards, I gladly said yes. I think he’s done a great job of capturing the essence of the UHK in his review, including unboxing, assembly, layout, configuration, switches and keycaps.

Hardware.Info may well be the largest testing lab for computer hardware, peripherals and consumer electronics in the Benelux, which shows in their UHK review, as it’s so detailed, it’s almost like a mad science experiment. Thanks to the magic of Google Translate, English readers can read the translated English review, or read the original Dutch review.

Your tweets

You guys keep sending your awesome tweets, and we’re always eager to read and feature them! If you got your UHK, please share your love!

We’ll be keeping you updated on all things UHK, and are looking forward to talking to you on 2020-01-10.

New Agent release and module progress

Hi there, and welcome to our monthly status update!

TL;DR: We’ve released a new Agent version after a long time without changes. We’ve made a functional key cluster module, and made progress with the trackpoint module.

New Agent release

It’s been a whopping ten months since we released the latest Agent version. We’ve actually been working on Agent since the latest release quite consistently, but weren’t able to publish a release due to the lack of a valid Windows Authenticode certificate. Long story short, we finally have a certificate, and recently released new Agent versions.

Feel free to check out the changelog on the GitHub Agent releases page. We’ve mostly fixed and polished a number of issues. A particularly useful feature is a dedicated Mac pointer speed preset which you should try out if the UHK mouse pointer movement feels slow on your Mac.

We’ve also implemented the fanciest UHK feature to this day: Agent shows whether the UHK is split or merged, and displays whether the left half is connected. Obligatory demo follows:

(UHKs are not backlit yet. We'll release a backlight upgrade kit at some point, and future UHK hardware versions will be backlit.)

Admittedly, this feature is pretty useless in itself, but it’ll actually be useful in the future. The same mechanism will be used to show the modules. Imagine connecting your modules, seeing them show up, and be able to configure them with a click of a button. And talking about modules...

Functional key cluster module

After a fair deal of prototyping, the key cluster module actually works. Again, obligatory demo follows:

You probably noticed the little thingie at the bottom of the key cluster module.

As you can see, it’s an FFC cable. Our current FFC cable manufacturer couldn’t make a cable of merely 13 mm length, so we used a much longer off-the-shelf cable for the time being. I actually doubt whether an FFC cable of such short length can be made, but an FPC (flexible printed circuit) can surely be made. But we’ll probably end up using a rigid-flex board as the best solution.

Apart from the above slight change, there’s another issue. I noticed that the responsiveness of the trackball is lacking compared to the previous prototype. The new, smaller hall-effect sensors are probably not sufficiently sensitive to pick up all the magnetic state changes of the mini trackball.

I wired the old mini trackball breakout board to the key cluster trackball board to be able to test it with the key cluster module, and the change in responsiveness was immediately apparent. The right board is super responsive, and the left one skips the beat very often, especially when moving it quickly.

I think we’ll revert to the previous hall-effect sensor, and try to pack them tighter to be able to fit them on the board.

Trackpoint module

We’ve made progress regarding the interconnection of the top and bottom trackpoint boards. There isn’t enough space for an FFC connector on the top trackpoint board which contains the actual trackball sensor, so the cable needs to be directly soldered to it. I designed an FPC for this purpose, and we plan to use hot bar soldering to affix it to the top board.

I used a soldering iron for prototyping purposes. So far, so good!

This module should work well, and I’m excited to write firmware for it, and for the rest of the modules.

UHK unboxing video

ShopzadaPH has made an awesome unboxing video of the UHK which you’re welcome to watch:

Your tweets

You guys keep sending your awesome tweets, and we’re always eager to read and feature them! If you got your UHK, please share your love!

We’ll be keeping you updated on all things UHK, and are looking forward to talking to you on 2019-11-11.

Module PCBs assembled

Hi there, and welcome to our monthly status update!

First things first, we’ve finally delivered every UHK, including the ones with non-black cases! If you want to order a UHK, possibly with a non-black case, now’s the time. New orders ship in a week.

As for the modules, we keep making progress. Each of the module PCBs has been assembled since our last update.

Key cluster

The main key cluster PCB didn’t create any unexpected surprises.

His little brother, the key cluster trackball PCB, however, has proven to be more difficult.

The surface area of this board is merely 1 square centimeter or 0.15 square inch. This is not a whole lot of room for a dozen components, and we can’t make it larger due to the lack of space.

The PCB fab kept rejecting this board because the components were too close to the edges. The only solution was to use smaller magnetic sensor (which detect the rotation of the mini trackball). 

We ended up using a sensor with the HVSOF5 footprint, which is ridiculously small compared to the other components we use. I’m waiting for this part, and it’ll be quite an exercise to solder it. But I’m ready for the challenge, and so is my new microscope.

Trackball

The trackball board came out pretty nicely. It’s also completely useless, unfortunately.

While soldering the parts, I realized that the pinout of the ADNS-3530 optical sensors is backwards. The datasheet features the “top side” of the component, but as far as we’re concerned that’s the bottom side. Unlike trackballs, regular mice probably use this component in a reverse-mounted fashion, hence the misunderstanding.

Istvan has redesigned this board, and it’ll be fabbed soon.

Trackpoint

There’s not much to say about the trackpoint PCB. I haven’t found any issues yet. I think it’ll work well once I write firmware for it.

Touchpad

The touchpad PCB has turned out pretty well, too.

This board is hardly our final iteration though. Azoteq, the manufacturer of the IQS572 touch sensor IC that we use, reached out to us and offered to review our design.

They made suggestions on how to improve the ESD immunity of the design, but perhaps even more importantly, they suggested to use a finer pitched sensor matrix to improve the resolution and increase the sensing area of the touchpad.

We plan to implement their suggestions, and then we’ll send some samples to them for further review. The sensor IC is very sophisticated and has a myriad of configuration parameters, so having it tweaked by Azoteq will be extremely helpful. Azoteq provides the best support I’ve witnessed so far, and I’m very impressed by them.

As previously mentioned, we don’t have an ETA on the modules yet. We keep making progress, and we’ll announce the ETA when the time comes.

Your tweets

You guys keep sending your awesome tweets, and we’re always eager to read and feature them! If you got your UHK, please share your love!

We’ll be keeping you updated on all things UHK, and are looking forward to talking to you on 2019-10-10.

Module PCBs are ready

Hi there, and welcome to our monthly status update!

István, our PCB designer, has been on steroids, and he finished the PCBs for every module! The boards are being fabricated right now, and are expected to arrive in a week - at which point I’ll assemble them.

We already showed an inside look of the key cluster module in an earlier post, so this time, I’d like to showcase the right-side modules. I’ll feature three images per module: the assembled version, the half-assembled version, and the latest PCB which is being fabricated.

Please note that the following modules are only prototypes. Their color is not representative, and neither is their surface quality, which will be way smoother once the modules get injection-molded. The color of the PCBs will also differ, as we’ll use black soldermask for the final boards.

Trackball

The trackball only has a single PCB. It utilizes the ADNS-3530 optical sensor, which happens to be the most compact optical sensor according to my knowledge. The retaining ring can be removed by rotating it counter-clockwise, so one can easily clean the ball.

Trackpoint

The trackpoint is composed of two boards. The top board is provided by our supplier and contains the actual trackpoint module. The bottom board is designed by us, and its purpose is to do protocol translation between the PS/2 protocol of the trackball PCB and the I2C module protocol of the UHK.

Touchpad

The touchpad module is composed of two boards. The bottom board is a trivial one which simply routes the pogo pin header to an FFC connector, supplying power and data to the top board. The top board does the actual sensing using the Azoteq IQS572 touchpad sensor IC. The top side of the touchpad will be covered by black film.

When I said that that the boards are ready, what I really meant is that these boards should be fully functional. Their design is not set in stone yet, but we expect only very minor changes going forward. Even our mechanical design is fairly advanced and should contain the mechanical features needed for injection-molding.

As I previously mentioned, we don’t have a solid ETA on the modules yet. As you can see, we’re making rapid progress, and we’ll get there, but we surely won’t rush them, as we want to get them right.

Your feedback

You guys keep sending your awesome tweets, and we’re always eager to read and feature them! If you got your UHK, please share your love!

We’ll be keeping you updated on all things UHK, and are looking forward to talking to you on 2019-09-10.

Key cluster and trackpoint module progress

TL;DR: We’ve been making progress with the key cluster and trackpoint modules. New orders ship in a week, except non-black UHK cases.

Hi there, and welcome to our monthly status update! Let’s get right to it!

Production status

If you want your UHK shipped in a week, you should pick the black UHK case option. Otherwise your order will take longer due to temporary parts shortages. This shortage was mentioned in our previous monthly update, and we’ve been working on resolving it, but it’s taking more time than anticipated.

If you have any questions about the ETA of your order, please do read the delivery status page. We keep this page up-to-date, and we’re unable to provide more accurate information, not even if you email us.

Module progress

In our previous monthly update, I included a picture of the development board for the key cluster module. In the meantime, I’ve also written firmware to drive it, so here comes its obligatory demonstration:

From a technical standpoint, the BlackBerry trackball is an interesting little beast. The ball itself is not even electrically connected to the PCB. Instead, its four spindles rotate when pushed in the four directions. The spindles contain magnets which alter their magnetic fields about 9 times during a 360 degree rotation, and the alternating magnetic field is detected by the hall-effect sensors on the PCB.

Given its limited resolution, the BlackBerry trackball is hardly an ideal device for controlling the mouse pointer (right-sided modules will perform far better in that department), but it’s very well suited for scrolling in every direction. I’m actually surprised how well it’s already working, even though it’s the first working prototype. Over time, we’ll make the acceleration and speed of the mini trackball configurable, which will make it even more useful.

As far as the firmware goes, firstly, I slightly extended the UHK module protocol responsible for the keyboard halves and modules to communicate with each other. This allowed for the transmission of not only key states, but also pointer movement information. Then I wrote a driver for the BlackBerry trackball purely using interrupt handlers, which is the most efficient approach there is. Finally, I made the key cluster transmit the pointer movement information of the BlackBerry trackball to the right keyboard half which is the brain of the UHK.

The above pictures feature our most recent mechanical key cluster prototype. The creation of a working PCB is underway.

We’ve also made a mechanical prototype of the inside of the trackpoint module:

We may change the trackpoint component depending on various design constraints, but the overall mechanical design is expected to be close to final.

We’ve actually made progress with every one of the modules, but haven’t yet prototyped the others. We’ll be sharing all their juicy details in our upcoming newsletters.

Your feedback

You keep sending your nice tweets which we’re grateful for! Please keep them coming!

We’ll be keeping you updated on all things UHK, and we’re looking forward to talking to you on 2019-07-10.

New orders ship in a week

TL;DR: We caught up with pre-orders, and new orders ship in a week! Our customers made some awesome carrying cases for their UHKs. The UHK mouse mode is surprisingly useful, and viable for creating digital art. We’re making progress with the key cluster module.

Hi there, and welcome to our monthly status update! Ready for warp? Let’s punch it!

Production status

We’re thrilled to say that we’ve finally caught up with pre-orders, and incoming orders now ship in a week!

There are two exceptions regarding order parameters, though. If you want your UHK shipped in a week, you should pick the black UHK case option and a non-blank keycap printing option. Otherwise your order will take a bit longer due to temporary parts shortages. Feel free to check out the delivery status page for more information.

Please note that the order numbers have been removed from the delivery page. If your order hasn’t shipped yet, it’s because of the above exceptions. According to the delivery status page, you can shoot us a mail to change your order parameters to expedite delivery.

DIY UHK carrying cases

Some of you shared your DIY UHK cases, and they’re so awesome that I ended up writing a dedicated blog post about DIY UHK cases. I’m very impressed by these cases, and I’m sure they’re of interest of many UHK owners.

Creating digital art with the UHK

There are few keyboards with a dedicated mouse mode, and the UHK might just have the best implementation of all. Brandon Yu’s drawing is a testament to this.

I’m super impressed by Brandon’s work, and wouldn’t have ever thought that anyone would create such a beautiful drawing purely with the UHK.

The UHK mouse mode will never be as good as a dedicated mouse, but it’s surprisingly capable in the right hands. This is due to the implementation of the mouse pointer acceleration and its number of configuration options.

Key cluster module progress

We’ve been making progress with the key cluster module. András got the latest CAD model 3D printed, and we’re glad to say it’s more robust than ever.

In the meantime, I’ve been doing some electronics prototyping.

On the right side, you can see a breakout board designed by SparkFun, featuring a BlackBerry trackball - the kind of mini trackball that will be put into the key cluster. It’s wired to an old hand-soldered UHK left half. The left half of the UHK is just like a module from an electrical, firmware, and protocol standpoint, so it’s a great development board for modules. The design of the key cluster PCBs is in progress, and this is the whole Frankenstein keyboard on my desk:

(Yes, my UHK is backlit. We’ll release a backlight upgrade kit eventually.)

I also started to extend the firmware, and created a dedicated project for the key cluster module based on the firmware of the left keyboard half. The two projects contain a lot of duplicate code right now, so I’ll be gradually extracting the shared code to a module API which will be consumed by all the modules.

Your feedback

You’ve been sharing more than your fair share of tweets over the last month. Thanks so much, and as always, please keep them coming!

We’ll be keeping you updated on all things UHK, and we’re looking forward to talking to you on 2019-06-13.

FCC success and development news

Hi there, and welcome to our monthly status update!

TL;DR: We’ve passed FCC certification, and CE is in progress. We’re progressing with assembly, loads of UHK boxes arrived from the printing factory, and the UHK accessory boxes are already packed. The firmware and Agent have matured substantially. We’re waiting for final answers from TÜV to proceed further.

We’re aiming to send out the pilot run UHKs in October, and start the delivery of the rest of the first batch of 2,000 UHKs in November. If you backed us after 2017-07-13 then you’re in the second batch, which is expected to ship in March 2018.

FFC and CE certification

A week ago, we got great news from TÜV:

“All FCC 15 ready and just PASS for Radiated Emission. Producing the report now.”

Then I asked about CE, and to my surprise they told me that they didn’t know that we also needed CE measurements. I searched my emails to see whether I miscommunicated something, but I didn’t. Not only did I mention both FCC and CE, it was part of the subject line. It’d have been hard to make this any clearer.

I told TÜV that we would really appreciate if they wrapped up CE as fast as possible, especially considering the recent delays that they added to our project. They promised me that we’ll have the official CE report by the 18th. They did not promise an ETA regarding the FCC report, but told me that it’ll be ready “soon”.

To be perfectly honest, given the recent complications, we’d like to switch to an alternative certification body, but it’s way too late, and we don’t have any other options in Hungary. Going forward, I’ll be pinging them regularly to try to keep this under control. I believe this will get sorted out soon, and we’ll receive the certification papers shortly.

Our contract manufacturer is eager to start production, and as soon as we receive the reports from TÜV, we’ll start the PCBA of the pilot run units.

Manufacturing progress

Even though the PCBs are not assembled yet, we’re working on assembling and packaging everything else.

There are two small boxes inside of the main UHK box, one containing the USB cable, the other containing the bridge cable, the flip-out feet and their screws, and a lock strip that securely locks together the halves if you choose to use it. We’ve packed 500 of these boxes.

We’ve tested 500 USB cables and 500 bridge cables, and they all worked flawlessly. This is a good sign. Our cable suppliers definitely seem to be on par.

Right now, the case buttons are being pad printed. These are the first samples:

We’ve chosen the top, brighter color sample, even though the difference is hardly noticeable in this picture. Unlike our first pad printing supplier candidate, this supplier seems to perform just as expected. The prints are razor sharp, spotless, precisely positioned, and the correct font is used.

The cases are semi-assembled and we’re waiting for the back stickers to proceed further. We already received 3,000 stickers from the printing factory, but they were shiny instead of matte. Then we received a supposedly corrected batch of 3,000 that were matte, but lacked anti-scratch coating.

Now the printing factory will print yet another 3,000, and we’re hopeful that they’ll get it right this time. This journey is as expensive for them as it is time consuming for us. Once we get the correct back stickers, we’ll apply them to the case, and then glue small rubber feet to the cases,concluding their assembly.

We’re also making progress with the colored cases. This is the first colored case sample of a random test color:

Last but not least, 3,000 UHK boxes have arrived from the printing factory:

Being pre-assembled boxes, they take up quite a lot of floor space. 15 pallets to be exact. Maybe we shouldn't go with preassembled boxes next time.

Firmware progress

I’ve been heavily focusing on the firmware during the last couple of weeks and managed to make quite a lot of progress.

More than anything else, I wanted to make the I2C communication between the keyboard halves rock stable. Placing the bypass capacitors as closely to the IS31FL3731 LED driver ICs as possible made the communication much more robust, but from time to time it halted. The capacitors couldn’t totally negate the parasitic capacitance of the I2C bus, and these LED drivers being as picky as they are, the problem persisted.

Eventually, I managed to find a solution that is described in the AN-686 application note. The core problem is that when I2C communication halts in the midst of the communication, it makes the state machine of the slave that is being addressed wait for further data. Just as suggested by the application note, I clocked through the slave by toggling SCL until SCA went high.

This helped tremendously, and it made communication always recover when disconnecting and reconnecting the keyboard halves, but when using the keyboard over an extended period, the left half eventually became non-responsive.

I could reproduce this issue fairly reliably by making the right keyboard half reenumerate as the bootloader. This interrupted the communication with the left keyboard half, but didn’t unpower it, which always happens when disconnecting it. I also figured that the left KL03 MCU is the culprit because when I rebooted it, the communication always resumed. I needed to fix this issue.

First try: I2C watchdog

I thought that the issue could be solved by implementing an I2C watchdog not only for the right keyboard half but also for the left keyboard half. This proved to be a lot more difficult than anticipated thanks to a bug that I made earlier.

I created a timer interrupt, and put the I2C recovery code into it to reinitialize the I2C driver. Among other things, it called the Init_I2C() function. I realized that when commenting out Init_I2C() within the timer interrupt, the firmware worked, but when uncommenting it, it hit a hard fault. This was seemingly impossible because the hard fault also got hit when I deactivated the timer interrupt, so Init_I2C() wasn’t ever called within it.

I couldn’t figure this out, so I managed to summon Santiago who delved very deep into the issue. It also turned out that the debug version didn’t work at all, so he had to figure this out by looking the disassembled, gcc-optimized ARM assembly code of the firmware.

Santiago finally concluded that the issue was that I defined the I2C_Handler struct within a function so the struct got allocated in the stack, but after returning from the function this variable got deallocated. The problem is, the KSDK still tried to use the struct even after being deallocated, which triggered a hard fault.

The issue didn’t surface when referencing Init_I2C() once across the codebase because the function that contained the definition of the I2C_Handler struct got inlined so it was like being defined in main(), and never got deallocated. But when referring Init_I2C() twice, it wasn’t inlined anymore and the issue surfaced.

After this incident, I’ll surely think twice about making KSDK variables global. For even more details, Santiago created a slide which you’re welcome to study.

Unfortunately, even though my left-side I2C watchdog was running, it still didn’t do the trick. Somehow, communication didn’t recover. Which brings me to my second try.

Second try: hacking the KSDK

At this point, it was down to debugging. I needed to see not only what went over the wire between the MCUs of the left and right halves, but also what was happening inside of the KL03, especially regarding the state of its I2C driver. Using the debug feature of Kinetis Design Studio didn’t work for me as it pauses execution and given the realtime nature of the communication, it doesn’t behave as expected.

Then I tried to make semihosting work which basically allows the microcontroller to dump strings via the debug probe to the console using printf(). Unfortunately, I couldn’t make semihosting work because it crashed the microcontroller for some reason that I couldn’t figure out. Semihosting would also have posed a significant runtime overhead anyways, and it might have made the firmware behave differently, so maybe it’s not a big loss. In any case, I had to find an alternative solution.

Finally, I figured that I’d just use a spare peripheral of the microcontroller to dump relevant data, and I ended up using the SPI peripheral of the KL03. For this, I needed to temporarily repurpose two GPIO pins that were used to scan a row and column of the keyboard matrix. This made the prototype practically useless for touch typing temporarily, but that’s a small price to pay.

At this point, my prototype looked like this:

The halves are interconnected by two spiral cables via an adapter board. The adapter board features a 4P2T switch which allows me to disconnect and reconnect the halves easily for testing purposes. The adapter board also breaks out the wires of the cables. The wires I’m interested in are the SDA and SCL - the clock and data lines of the main I2C bus of the UHK.

Apart from I2C, I also soldered two wires to the MOSI and SCK pins of the SPI peripheral. And finally, I connected the two I2C wires and two SPI wires to my Logic 4 analyzer.

What you can see above is the result of the fixed code. Channels 0 and 1 are the SDA and SCL of the I2C. Channels 2 and 3 are the MOSI and SCK of the SPI. For every byte sent by the master over I2C, the status byte and the received byte get dumped over SPI on the slave. The received byte correctly gets dumped over SPI right after receiving it, which is the way it should be.

The core issue was that the KSDK I2C driver is designed for fixed-size messages, but the UHK messages are variable-sized. They contain a header of a byte length, and a 2 byte CRC16-CCITT checksum. I ended up hacking the KSDK of both the left and right keyboard half to make it deal with our variable-length messages.

The effort that went into making the keyboard halves and the modules communicate reliably is quite incredible. It makes me appreciate already established and widely implemented protocols like TCP/IP that just work. I’m so happy that this critical foundation is in place.

Apart from the above long journey, I implemented loads of fixes. Now we have a pretty changelog, and versioning conventions.

Agent progress

Robi has been really pushing hard recently. I’m impressed by his work, and his efforts came to fruition as Agent is now able to read and write the configuration of the UHK. It’s a wonderful feeling to plug in the UHK, see the configuration appear on the screen, reconfigure it, and merely click a button to save the new configuration to the keyboard.

The smoothness of the user experience resembles the configuration applications of the largest keyboard manufacturers, but all things considered, Agent offers much more sophisticated configuration options than those keyboards.

It’s been a long journey to get there. And wouldn’t it be cool to visualize the development of Agent over its lifetime? As a matter of fact, it’s very much possible with Gource, so let’s take a look at it:

While we’re at it, let’s also take a look at the firmware repo:

There’s still a lot to do, but given the current state of the firmware and Agent, even the pilot run recipients should experience a smooth ride.

Thanks so much for your support!

In our previous update, I elaborated in detail on the manufacturing challenges which have been causing us delays. After publishing our update, it felt awesome that so many of you got in touch with us and expressed your fullest support. We’re glad that you share our pursuit for quality, understand the nature of the delays, and agree that the UHK is worth the wait.

What has been said about the challenges of manufacturing clearly reverberate in this update. After all, who would think that it’s possible to mess up mere stickers (twice), or misunderstand clearly written, basic instructions about the certification process. But it’s the real world, and human errors do happen.

PCB assembly should happen shortly, just after we get the FCC and CE reports from TÜV. Then we’ll quickly assemble the pilot run units and send them out, and the rest of the first batch will follow. We can’t see any major challenges ahead us, we just have to wait longer than anticipated which is something none of us like, but it’s seems that it’s the nature of the hardware business.

Thanks again for your support and understanding! Let’s keep in touch, and we’re excited to talk to you on 2017-11-16.

Mechanical parts are ready, waiting for certification

Hi there, and welcome to our monthly status update!

TL;DR: All of the keyboard molds are finalized, and the plastic parts for the pilot run are ready. The PCBs of the pilot run are also ready, and waiting to be assembled. We’re waiting for TÜV to certify our design, and then the PCBs will get assembled. The printing factory is nearly ready with the UHK and palm rest boxes. We need about one and half month to start delivering batch 1. Please see the end of this update starting from the “The state of the pilot run” section to see why.

You can always check out the expected delivery date and update your shipping address on your Crowd Supply account page.

Mechanical parts

We’ve been tweaking the molds for seemingly forever. This process is usually extremely time-consuming and involves numerous iterations, especially for high quality plastic parts like the cases of the UHK. Thankfully, we’ve arrived at the end of this journey by manufacturing the top case parts, which were the only missing parts.

Of all the mechanical parts, only the baseplates of the palm rest are left undone. We weren’t completely satisfied with the coating of the latest samples we got, so we asked for new ones featuring three different kinds of powder coating.

We agreed that the middle, fine textured sample is the one to go with, as it most closely resembles the texture of the UHK case. The base plates of the pilot run are being laser-cut and they’ll be powder coated in a couple of days.

These plates will conclude the manufacturing of every mechanical part. Finding all the suppliers of the mechanical parts, and coordinating the manufacturing process has been an enormous undertaking for us as a small company, and we’re delighted to see that it’s coming to an end.

Pilot run PCBs

The 50 PCBs of the pilot run are ready, and waiting to be assembled.

UHK panel, top side

UHK panel, bottom side

Board assembly will start as soon as we receive the FCC and CE certifications from TÜV. Actually, the UHK may already be certified, we just haven’t heard of it because our contact person at TÜV recently quit. Now his boss is our new contact who is very busy, but nevertheless, he promised to get in touch with TÜV Netherlands and sort things out by the end of the week.

Printing the boxes

We’ve been in the printing factory lately, watching as the sheets of the UHK packaging as they get printed. I didn’t expect anything fancy and boy, was I wrong! The Heilderberg Printmaster printing press which was used to print the UHK packaging is a monumental machine and it was quite a sight.

The inside of the beast shown on its control panel

Packaging is not the meat of the product, but we do believe that it creates an impact, and we don’t like to leave any stone unturned, so we’ve put quite an effort into designing it. Hopefully it’ll show when you unbox your UHK and palm rest.

The state of the pilot run

We’re very close to assembling the pilot run PCBs, and sent out the pilot run surveys to the 50 participants recently.

Outstanding issues:

  • As mentioned above, we’re waiting for TÜV. As soon as the UHK PCBs get certified, we’ll commence their assembly. This can happen in days.
  • Also mentioned above, the base plates of the palm rests are being manufactured and then powder coated. These should be ready in a week.
  • We’re waiting for the UHK boxes, the palm rest boxes, and the back stickers of the UHKs. The printing factory should send the goods to us in about a week.
  • The case buttons of the UHKs have to be pad printed. We’ve received a couple of samples from a Hungarian company that had numerous issues. We found another, nearby company who will likely get the job done well and quickly, possibly in a week.

Once the above issues are resolved, assembling the pilot run UHKs will happen in a matter of days, and production speed will ramp up rapidly as we gain more experience regarding the assembly process.

The remaining 1,950 UHKs of batch 1 will follow quickly after receiving some feedback from pilot run recipients.

Given that the pilot run has yet to be sent out, then we have to gather some feedback from the pilot run recipients, and then assemble the next batch of PCBs, we have to push the current delivery date by one and half months, at which point the delivery of the remaining items of batch 1 should start. This brings me to the following point...

Some words about delays

Some of you are growing impatient due to the number of delays that have been introduced over the lifetime of the project. This is understandable, and we couldn’t be more eager to ship sooner. I’d like to elaborate a bit on why it’s taking so long to deliver.

You could see several bullet points in the above section, each involving at least one supplier of ours. We have dozens of such suppliers all around the world (mostly in Hungary, and some in Serbia, China, and Taiwan), and each of them was chosen from numerous suppliers.

For example, I contacted about 30 suppliers for the LED display alone, then chose one, and then exchanged about 200-300 emails with them, got a couple of samples, dealt with customs quite a bit, and all this resulted in the current LED display. And this is a single supplier!

András and I are running this show, two guys from Hungary. I work more than 300 hours a month solely on the UHK, and András is doing his fair share too. The only reason we don’t work more is because we can’t without flat-out burning out. We could add more workforce and experts to the project, resulting in faster progress, but they’d cost a lot of money and we have no room financially as custom tooling and starting and maintaining a supply chain and manufacturing capability is awfully expensive.

Speaking of finances, we’re extremely conservative. Full disclosure: I earn $2 per hour, and András earns $0 while working on the UHK mostly and in his own company part time. The vast majority of the money we spend is on manufacturing and R&D. We realize it’s your money and trust that you gave us to make this project a reality and we’re doing everything within our power to make this a success.

We could simply go to an OEM in China or Taiwan and use their resources to fix many of the issues we’ve encountered, but we’ve made a conscious decision to manufacture the UHK in our home country. The reason being that this way we can directly oversee manufacturing and QA without camping all the time in Shenzhen, and we can be more nimble in the long run, after going through the initial formidable hurdles of starting up all this.

I should also add that the UHK is not exactly an average keyboard, and not just a split keyboard, but a split, modular keyboard that is extendable with modules, which is something that, according to my knowledge, nobody has ever done before. The overall complexity of the project is quite staggering from a mechanical, firmware, electronics, and software standpoint compared to an average keyboard. In a couple of aspects, it’s the most complex keyboard ever made.

It’s also worth mentioning that we’re unwilling to make quality compromises, which also adds to the delays. Among many things, this has made the molds especially time consuming to make and refine.

When we announce a delay, it’s not because we were intentionally keeping quiet about it previously. It’s rather because of some unforeseen issue, like a critical supplier underperforming, a design issue that we couldn’t foresee, a supply chain issue, or virtually anything else we couldn’t think of previously. Very often we have to deal with these as we encounter them, and we always try to do our best. The road will eventually smooth out, but only after hitting every bump imaginable.

So, this is the long and the short of the situation. We’re really pushing it hard guys, and want to make this the best keyboard humanly possible. Let’s get there together, even if it takes longer than anticipated!

Thank you for reading this update! As always, we’ll be keeping you updated on a monthly basis via our blog and newsletter.

Talk to you on 2017-10-12!

Title