Hey there! It’s February, and we have a new UHK update for you. A lot has been happening, and, barring unforeseen delays, we’re on track for April keyboard delivery. Let’s delve into the gory details!
Rubber feet and caps
There are small rubber feet and rubber caps on the ends of the flip-out feet of the UHK. Up until this point, we only had 3D printed versions of these caps, but the tooling has finally been created for them, so we got a couple samples.
The samples are surprisingly good for a first run. There’s only a very slight modification to be done to the tool to make it fit perfectly, which will completely eliminate the parting lines that are now slightly visible.
Steel guides
The steel guides are currently being manufactured. Here are some samples before vibration grinding them.
Force measurements
András has made a number of measurements with our new force measurement gauge.
To find the optimal pull force between the keyboard halves, András has made measurements using various magnets. They must not be too strong, but strong enough to prevent the accidental separation of the halves while carrying or during a fall. Some final tests still have to be made in the coming days, then the chosen magnets will be ordered.
Right-half bootloader completed
Even though the bootloader for the right keyboard half was already working, it wasn’t secured. That means that if we transferred a firmware image whose memory region overlapped with the bootloader memory region, the bootloader would have been overwritten by the firmware image.
Luckily, Kinetis devices offer hardware level memory region protection for such cases, which Santiago made a good use of. Now, with the memory protection in place, even if the bootloader would want to overwrite itself, it couldn’t.
But this isn’t the only safety measure that KBOOT, the Kinetis bootloader, provides. Let’s say that the firmware transfer gets aborted due to a power outage or for whatever reason. In such a case, the CRC checksum of the firmware doesn’t get updated and when plugging in the UHK the next time, KBOOT detects the CRC mismatch, and instead of jumping to the corrupted firmware, it stays active, waiting for a new, valid firmware transfer.
With the above protections in place, we believe that the right keyboard half is unbrickable via USB. I’m delighted that NXP offers such a comprehensive bootloader. It makes things so much easier and safer.
Santiago will make the bootloader for the left keyboard half work, too, but there’s something else to be done before then.
Firmware progress
The UHK firmware has already been working for quite some time, but some things weren’t exactly rock solid and optimized. This is about to change.
The reliable and resilient communication of the UHK parts is the core concern. If you think of the left and right keyboard halves, and the left and right modules, these are all separate computers, and some of them contain multiple processors. The bus via which they’re interconnected offers a limited (although sufficient) bandwidth which must be utilized as efficiently as possible. To make things even more complex, any module can be disconnected, or connected any time, so hot-plugging must be seamlessly handled.
First up, the communication should be made fully asynchronous. Synchronous communication was easy to implement because it’s just a sequence of instructions, but it’s highly suboptimal because it uses inefficient busy loops instead of interrupt handlers, and it’s hard to do robust error handling with it.
I was aware of these problems from the get-go, but I wasn’t concerned because I wanted to implement a working firmware as quickly as possible and improve it later. Now that we’re marching towards release, it’s time to solve these problems properly.
When changing sync code to async, the application logic changes quite a bit because instead of using a sequence of sync calls, an async callback gets fired whenever a communication event occurs, and a state machine has to be implemented inside of the callback.
I will end up implementing a scheduler state machine, so that the I2C master (the blue rectangle in the diagram above) will talk to I2C slaves (yellow rectangles) in a round-robin fashion. The purpose of these inter-module messages is to propagate state between the modules.
This will result in a very clear programming model in which the scheduler will sync the state of the modules in the background all the time, and the rest of the application logic of the master will be able to deal with the various module-specific data structures as if they were local.
I recently hit a related problem that I was unable to resolve, so in my true style, I summoned Santiago. The problem was that communication did not resume between the halves when I disconnected then reconnected them, even despite using async I2C calls. Santiago looked into the issue and concluded that the KSDK I2C driver is not very robust.
As it turns out, I2C drivers typically assume that I2C devices don’t get hot plugged, but are permanently soldered onto a PCB. Obviously, our situation is different, which calls for a more robust I2C driver on which Santiago is working right now.
PCB redesign
In our previous update, we told you that the UHK prototype has failed the EMC test and that I will find a professional PCB designer who (unlike me) does know what he’s doing.
I’m happy to introduce István Pánti, PCB designer extraordinaire!
István has been using Altium Designer over the years, a commercial PCB designer application which happens to be the number one industry standard worldwide. Luckily, he was willing, and even excited to learn KiCad, and according to his opinion it’s a surprisingly powerful tool for a Free Software package.
Then he cleaned up all of my traces and most components of the right UHK board, and started to reroute the tracks, beginning with the D+, D- differential pairs of USB, which are supposed to be the most problematic according to the EMC test measurements. His design turned out to be a lot cleaner than mine.
Routing PCBs is not black magic, but it may seem like it to the outsider, especially when dealing with EMC issues. There are a lot of layout rules to follow. Lucky for us, István has routed his fair share of PCBs before, including a USB hub, and read plenty of USB PCB design guidelines which now he puts to good use.
He’s been making great progress recently, and the end of the redesign is near. You can see his progress on GitHub.
I asked him to also create a 4 layer version of the PCBs after he finishes with the 2 layer version. Then we’ll prototype both versions and put them to the test. The 4 layer PCB should perform significantly better in the EMC department, but we’ll only pick it if necessary because it’s also significantly more expensive. This way, we can progress as quickly as possible.
Manufacturing progress
A short overview:
- 2,000 LED displays are being manufactured.
- 16,000 steel guides are being manufactured.
- 4,000 magnet counterparts are being manufactured.
- 2,000 FFC cables are being manufactured.
- We will order 10,000 pogo pins, 126,000 keyswitches, and 126,000 keycaps in a few days.
- 140,000 screws are on their way to us.
Lots of stuff are about to flow in pretty soon. Expect pictures of big boxes filled with goodies!
Thank you for reading the February installment of UHKzine. Talk to you on 2017-03-16!
24 Comments
Woohooo ... keep going ;-) As always, it's a joy to read the update and as it seems after two months it will be over :-( But never mind ..... Are we still able to put around 2.5 meter cable between the two halves? Any more news about the addons, or will you start working on them after the UHK is released?
Nice to see you again, EdbO! A little while ago, I tested a UHK prototype with a 20 meter long cable and it worked well, so things are looking good in that department. Recently, Santiago and I investiagated whether it's possible to use the same processor, the MKL03Z32VFK4 in every one of the modules and the answer seems to be positive. In the meantime, András is looking to delegate the mechanical design of the modules soon. Other than that, no major news about the modules yet, but we'll push them hard once we deliver the keyboards and palm rests. Cheers!
Great work guys! I am waiting each month on this blog as small boy on christmas but, I have one question. I probably miss that, but which brand of keyswitches you will order
Hi there, Petr! Kailh has been choosen for blue, brown, red, black, and Cherry will be used for green and clear. According to the science, we've made a good choice.
That PCB picture actually looks like the mirror image of the left PCB rather than the right PCB.
It is the right PCB, I can assure you. The shape of the left PCB is a bit different.
If that is the case, they are miss labeled in the post from 2016-07-14 16:12
You're totally right! Just fixed the 2016-07 post. Thanks for noticing!
It looks like I actually skipped last months monthly cheer! OH THE NOES! Here they are: WOOHOOOO. WOOOOHOOOOOO. And one extra for good luck: WOOOOOHOOOOO.
Thanks for the updates though, I really love reading them. And please, oh please, could you snap a picture of a big bag of 126k of keyswitches? Now that would be a poster I'd hang in my office for sure!
Have a good one guys, keep up the good work.
Hi again, WeZzy! Thanks for rooting for us! We'll make sure to shoot a couple of hi-res pictures of the big bags for your viewing, and decorating pleasure. :)
Just a curiosity question, the pins of the left keyboard seem to be more exposed and so more likely to come in contact with other objects, I assume it is not harmful for the keyboard if two or more pins are short circuited due to an external conductor such as a metallic object or a wet thumb?
This is a great point. The polyfuse inside the UHK should already protect against such cases, but we'll further test it before certification.
What is vibration grinding?
The technology that will make the guides baby skin smooth. Here's a video of the process.
Ah, I think the common name for that may be a vibratory tumbler.
About the release date: is there still a possibility for more delays (and is crowdsupply flexible with delays)? A PCB redesign and testing should take a lot of time from the re-design phase, to testing prototypes, to mass production, right? I'm more concerned with getting a quality, finished product with all the bugs and kinks worked through, but at the same time, I am very enthusiastically looking forward to this keyboard. I just hope to have a realistic idea of the production timeline to keep my enthusiasm levels properly regulated / rationed for the oncoming months.
Hi Adam, Until we deliver the keyboards, there is always a possibility for more delays. The reason is that even if a single part gets delayed for some reason, that can affect the delivery schedule. Crowd Supply is flexible with these delays because they know how challenging it is to bring a complicated product like the UHK to the market. Even though PCB redesign does take time, our schematic and BOM is solid, so it should mostly be a matter of rerouting tracks, and possibly adding/changing some passive components. In any case, we will certainly not rush the project at the expense of quality. Thank you for your support, and should you have any further questions, feel free to ask!
Have you finished PCB redesign and started prototype manufacturing? There was no activity on it @GitHub for quite some time.
The PCB of the right keyboard half has been redesigned which features the USB that we suspect is the problematic part. The last modification was made to the electronics repo 10 days ago when the design was sent to manufacturing. Since then, new prototypes were made, now they're being checked by EMC experts, and a new EMC test is scheduled for the next Friday in the lab.
That's good news to hear!
Break a leg !
It is friday and there is light at the end of the tunnel.
Keep us posted.
Hi Jean! Just posted a small update on social media. Gonna post a big update on 2017-03-16 as promised.
Uhh, what's up with the latest EMC tests data?
If the labels are correct, I put the "Only laptop and USB cable" control measurements together and they are completely off: http://i.imgur.com/fOZfizs.png
Are the EMC tests really "failing" before you even plug the UHK in?
Yes, you're completely right. Quite crazy, isn't it? Please make sure to read our upcoming update. We'll talk about this.
Comments are closed.