In my obsessive monitoring of weird keyboard builds on the Internet, I came across this rae-dux build guide https://www.tzcl.me/blog/rae-dux, and I was intrigued. The thumb cluster looks good in terms of position. 95% of thumb clusters I see are too close to the palm for me. Also I'm used to 3 thumb keys so I can probably adjust to this pretty easily.
This was my first wireless/battery build and thus also my first ZMK firmware project. I love how small, thin, and portable this keeb is as well as the nice placement of the thumb arc.
rae-dux PCB from ergogen & Andew Rae
I managed to find a kind soul on a keeb discord that had extra spares and was willing to ship to me
Used by many bluetooth low energy keeb builds. Works with ZMK firmware.
kailh choc low profile switches
I like red linears the best but there are many varieties of clicky, tactile, and linear readily available
kailh choc key caps
There are AFAIK very limited options here
I got mine bundled with the nice!nanos from mkultra.click
So the final hiccup was I had snipped the JST connector off the other battery wires. So for the right hand I just stripped the battery wires and soldered them directly into the through holes on the PCB. With that done, I was able to charge over USB and then both halves started powering on successfully with battery power, pairing to each other, and typing correctly to the host PC!
So the project is essentially done and just in the knick of time too because I have already left for a winter road trip and won't have access to my electronics workshop for several months.
So hopefully once I've settled into a longer stop on this road trip, I'll flash it with my layout and start practicing. Still undecided whether I should flash it with dvorak and try to start using it ASAP or flash it with engram and use it to continue learning that layout. I'm not ready to try that as daily driver yet as I'm only about 19 letters in to the keybr gradual addition of letters process, and even then my speeds are ballpack 30 WPM with poor accuracy.
So the project has been stalled out for a week with tricky battery issues. We had a good milestone is that both halves looked to type fine when plugged in to USB-C. However, nothing worked on battery. No blue LED, no orange LED regardless of power switch position. I posted a bunch on discord looking for help and also had some folks here at the retreat center take a look.
I did a lot of diagnostic troubleshooting like de-socketing the nice!nano and trying to power it off the battery to take the PCB out of the equation and reduce variables. The basic state one:
* One battery showed about 3.2v on a multimeter, the other showed nothing
* One battery would trigger the orange charging LED and looked like the MCU was charging it OK
There was lots of testing continuity and measuring volts with a multimeter, which I only kind of know what I'm doing with. Many solder joints were reflowed in desperation. Some desoldering happened. I designed and printed a custom MCU desocketing tool.
I eventually posted some photos to discord and someone noticed right away that my battery leads had the wrong polarity given how I had soldered the JST connector to the PCB. There's 3 through-holes, B+, B-, and B+, and I soldered the JST connector on the right as per the build guide, so the red wire needs to be on the right for the polarity to match. But my battery JST had the red wire on the left and I didn't notice. So ultimately what we needed to do was remove the lead crimps from the JST housing and swap red and black. While I had the bare crimps exposed, I hooked them up to the MCU charging pins and left it overnight plugged into a USB charging cable overnight to see if it never charged before due to polarity reversal.
The next photo show the battery red wire connecting to negative which is incorrect.
Here's my janky charging rig throwing the crimps directly over some diode legs sticking out of the charging holes on the nice!nano. Once red was actually on positive, it charged!
This morning I was able to measure some voltage on the battery. Not the expected 3.7, but 3.2-ish although it was jumping around a bunch as I can't really hold the multimeter leads steady. So I put the crimps back into the JST connector with red on the correct side, put the MCU back into the sockets on the PCB, plugged the battery in and switched the power switch on. I saw a blue LED for the first time which was a good sign.
Miraculously, on linux I immediately saw a clearly labeled "rae-dux" device in `bluetoothctl" and was able to pair and type a letter over BLE right away.
So now the left half is working and basically just needs some rubber feet installed.
For the right half, in our various battery efforts I ended up cutting the JST off so now I just have bare stranded wire. I'll need to figure out how to connect that to the MCU and try to properly charge it, then I can determine if that battery is really dead or not. If it actually does charge, I'll probably just solder it to the PCB and call it good enough. The batteries are already out of stock on the vendor where I bought them so sourcing more might require a slow aliexpress purchase.
So a friend wanted to help out with the build so I walked him through the soldering for the right hand MCU socketing. We were then able to flash the right hand by copying the uf2 file to the root of the mass storage device. Now with both halves plugged into wired USB both sides seem to type which is good.
I cannot yet seem to get either side to power on with battery though so I'm concerned something went wrong there.
OK I read up a bit on the ZMK flashing process. I got my github repo set up and the action ran OK and built me a firmware. I can see the blue and orange (changing) lights on my MCU when I plug it in over USB and flip the power switch on. I cannot however see it in my iphone's bluetooth pairing screen, and the linux UI for this is just a see of undifferentiated hardware addresses so I have no idea if the MCU is in there somewhere amongst a dozen other speakers, headphones, etc. While waiting I installed the remaining switches on the left hand as well as keycaps. Will probably need to get some help on discord in order to move forward. The next goal would be to flash the default rae_dux firmware, pair it to my laptop, and get a keypress to work.
I recently moved my home electronics lab to a different room, and found a couple of hours today to get started on this build. I don't have much experience with SMD soldering. I watched a youtube and re-read the relevant section of the guide I'm following, and I think I did OK. But we'll need to wait until I get zmk setup and flash the MCUs to be sure.
The Kailh Choc Hotswap sockets first went in - attached to the bottom side of the PCBs.
Then I did the power switches.
Then the JST connectors.
I have 2 available reset button hardware options but neither seems to match these PCBs. My big through-hole ones have a bigger square footprint and the legs don't align with the holes. The smaller SMD ones that came bundled with the power switches from MKUltra seem to also not be quite right. These are non-essential though so I can get by shorting the holes with a piece of wire or something until I confirm and get the right reset button part.
I socketed one of the nice!nanos so far. I am using diode legs instead of mill max pins. I made the mistake of trying to set all the diode legs and then slot the MCU over them. This is not doable due to alignment issues and warping the legs get when you snip them off. So I pulled all diode legs out, place the MCU directly on top of the sockets, then threaded the diode legs down through the MCU holes into the sockets. That seemed to work fine, so I soldered them on and clipped the excess.
I was able to slot the battery in underneath the MCU without having to pry it out of the socket, which is a relief. Usocketting and resocketting is fraught with peril of bending tiny diode legs and creating a fiddly mess.
I got a package from MKUltra with my nice!nanos and the batteries and a few other components. I think I have everything I need to begin this build. But I want to get squeezebox v2209 done first so it'll have to wait a few more weeks.
With the custom PCBs en route to me, I next needed to order any other components I didn't already have on hand. I got the nice!nanos, batteries, power switches, and some kailh hotswap sockets from https://mkultra.click. The JST connectors I got from https://sparkfun.com. I had enough choc switches and caps on hand already. I have enough rubber feet in my small parts bin.