[Brainstorming] Bluetoothing Our Mechs, For Electonics Newbs

User avatar
Halvar

23 Sep 2014, 18:54

I'd like to convert one of my keyboards to bluetooth, probably my IBM Model M SSK. If anyone has experience or advice for me, or the same plan, that would be great, and maybe we can discuss it here along the way.

I started of course by googling, and this is what I found so far:

1) This seems to be the full solution if you just want to buy something - a "Bluetooth Keyboard Adapter" for USB and PS/2 boards:
http://handheldsci.com/kb
Also used here within the board:
http://geekhack.org/index.php?topic=43173.0
If it fits in the board, this is actually a nice and easy solution, and also kind of lame. It could be combined with Soarer's controller on a Teensy++, although I don't know what you would have to do to load a new config file it, i.e. if that could be made possible over Bluetooth.

2) Then there's the adafruit project for converting a Model M to bluetooth, that just has the disadvantage of a seemingly very short battery life:
https://learn.adafruit.com/convert-your ... d/overview

3) A genius hack on pre-rootworm Geekhack: Hydron actually reverse engineered the matrix in the EEPROM of the controller of a cheap chinese bluetooth keyboard and replaced it by the Model M matrix. An unbelievable feat if you ask me.
http://geekhack.org/index.php?topic=10371.0

4) And there's also wulax's project; he built on Hydron's idea and added an elegant PCB that fits perfectly in a Model M and exposes the USB port for charging, a pairing button, an on/off switch and some status LEDs at the connector hole on the backside of the Model M. It also holds membrane connectors and a LiIon battery.
http://geekhack.org/index.php?topic=19104.0

So what could I do? I suck at electronics, and I don't have the experience and tools to reverse engineer the EEPROM of an existing module, so I tend to use more or less the hardware of the adafruit hack, but I also don't want to keep the original controller if it is so power hungry. Also, if I could avoid making an actual PCB layout, I'd really like to, but there needs to be some kind of interface to the membrane cables.

So the idea would be to use either the Arduino Micro or a teensy++ as a controller with hasu's TMK software. It would have to work as a controller and communicate with the bluetooth module over serial. (I think Soarer's controller can't do that, so it doesn't qualify even though I like its configuration and macro possibilities).

What do you think? Any better ideas?

User avatar
DanielT
Un petit village gaulois d'Armorique…

23 Sep 2014, 19:05

GON has now Bluetooth on his TKL NerD boards, http://www.gonskeyboardworks.com/pcbs-a ... -nerd.html
I'm not a big fan of Bluetooth and wireless keyboards but is an interesting project.
Also Hasu made a replacement bluetooth controller for HHKB

User avatar
Muirium
µ

25 Sep 2014, 15:43

I'm thinking of doing this with an SSK as well. They're a great board for this kind of work, as they're compact enough to want to use on Bluetooth, but still have plenty of space inside for extra bits. The way I'd do it is replacing the controller completely. The old guys may not even draw all that much power, but "bitbanging" them, as done in the Adafruit tut, is completely suicidal from a battery life point of view. I think this was also the problem that Hasu had with his HHKB conversion.

So, to the basics. How many rows + columns do we need to scan for the SSK's matrix? Does it use all of the exposed traces on its ribbon cable? Someone care to draw up the matrix?

If those numbers add up to 23 or less, then we are in luck. This little guy can play integrated bluetooth interface and matrix controller:

Image
http://deskthority.net/viewtopic.php?p=185215#p185215

Even if they don't there are ways around it. Multiplexing: which likely takes up more power. But still way less than the problems encountered above.

These modules look highly power efficient to my untrained eye. Coupled with a serious battery pack, like the Ada project's, and we could be up to days or weeks depending on programming. That's my guess!

User avatar
Halvar

25 Sep 2014, 16:07

phosphorglow posted the SSK matrix here, it's 8 x 16:

http://deskthority.net/workshop-f7/mode ... m%20matrix

That does look like a very cool base for a keyboard controller though. Hadn't seen that before. Maybe there's a breakout board that's a bit easier to handle.

User avatar
Muirium
µ

25 Sep 2014, 16:23

Thanks, I vaguely remember Phosphorglow already did the work! And good news: we could combine at least one column quite easily.

Image

See how sparse B, C and D are? I expect they would have taken the numpad on full size Ms (as you know for yourself that the controllers are compatible). One of them can be hooked straight up to column 1, which has no overlap. That's us down to 23 pins in one simple hack!

Breakout boards are great, of course. But I'm thinking we could make our own PCB for this project, with a programmable matrix (like Soarer's controller) which can handle TKL matrices and smaller. That way we can put the power management right on the same PCB and have a no-assembly required custom Bluetooth controller. Or, if enough people want to do this with their SSKs, we could make a drop in Bluetooth upgrade, much like Xwhatsit's beamspring boards!

User avatar
Nuum

25 Sep 2014, 16:40

A "drop in Bluetooth upgrade" would be great, I could use one for my SSK, after I finally get around restoring it. I think, if we make our own PCB, we should make it compatible to fullsize Model Ms, too!

BTW, do I need a custom controller/converter, when I change the layout of a Model M from ANSI to ISO?

User avatar
Halvar

25 Sep 2014, 17:06

Nuum wrote: BTW, do I need a custom controller/converter, when I change the layout of a Model M from ANSI to ISO?
No, you can use the same controller. You can check that right now by pressing the ISO key's membrane points by hand with a dull stick through their barrel.

User avatar
Muirium
µ

25 Sep 2014, 17:15

Yup. IBM's controller in the Model M is pretty smart. Especially the version in the SSK, which has an integrated numpad mode (toggled by Num Lock), and is the only missing feature when you pop a standard Model M controller into an SSK, like Halvar.

But it's much more efficient for us to scan the matrix directly, rather than stand on top of another controller, translating its output. That way we can do standard tricks like sleep mode and smart poll rate which are the basics for getting real world usable battery life in any wireless keyboard.

Supporting full size Model Ms might be tricky, by the way. The column optimising tricks I want to do are only possible by assuming an SSK matrix, not a full size one. There are ways to stretch to much larger matrices, though. I just don't want to have to master that complexity right at the get-go. Especially as SSKs are by far the most likely Model M anyone wants to make Bluetooth, right?

andrewjoy

25 Sep 2014, 17:42

I want a Bluetooth beamspring there is plenty of space for a huge battery , keep you going for ages on them long business trips.

I would love to just pull out a beamspring on the train and start clakcing away

User avatar
chzel

25 Sep 2014, 17:50

Paired to your 7" tablet!!

User avatar
Muirium
µ

25 Sep 2014, 17:56

A Kishsaver and iPad go together nicely, you know. But do bear in mind the full metal jacket on these beastly Fs and beamsprings is no good for 2.4 GHz signals to penetrate. Model Ms are better suited to Bluetooth, and are simpler too.

Looking closely at the Model M matrix, I see IBM prioritised Shift and Control (giving them nice sparse areas of the logical grid) for rollover reasons. Model Ms have no diodes and are limited in rollover (especially the 122 keys, yuck). Fortunately, we barely need to compromise things any further, and with a bit of gentle cunning there should be no adverse consequences. No need to worry about NKRO over Bluetooth with these guys either!

User avatar
Halvar

25 Sep 2014, 18:25

Muirium wrote: Breakout boards are great, of course. But I'm thinking we could make our own PCB for this project, with a programmable matrix (like Soarer's controller) which can handle TKL matrices and smaller. That way we can put the power management right on the same PCB and have a no-assembly required custom Bluetooth controller. Or, if enough people want to do this with their SSKs, we could make a drop in Bluetooth upgrade, much like Xwhatsit's beamspring boards!
I have to say I didn't really think of designing a controller that could be ready-made and offered as a plug-in solution, similar to xwhatsits's controller. For myself, I don't have skills or tools for SMD soldering or computer-based PCB layout, and also no real interest to offer a "product". Where I am now skill-wise, I guess I need my LEGO parts that I can put together much like in the adafruit tutorial. I have to think about that.

User avatar
Muirium
µ

25 Sep 2014, 18:29

Well, you've stumbled onto something I've been thinking about for a while, see. Xwhatsit's boards are bloody brilliant, and those connectors in Model Ms make them just as ready for a modular approach.

But yes, you and I are at about the same (newb) level when it comes to the technical expertise to make this work. Anyone who has the know how fancy helping out? I bet we could get 10-20 people in an interest check just for BT SSKs!

User avatar
Madhias
BS TORPE

25 Sep 2014, 19:10

I would be interested too, in a BT SSK controller. I also googled a little bit some months ago, but do not know enough when it comes to more than just soldering or wiring something up. The best option would be to replace the IBM controller completely.

User avatar
Muirium
µ

25 Sep 2014, 19:13

Indeed. With the IBM controller out the way, we can put in something built around power optimisation, and programmed especially for this purpose; rather than having to "bang" the original!

The software will be the really creative part. I've seen what Kile can do with an NRF wireless board. Months of power from a single coin battery! Bluetooth has more overhead than his custom 2.4 GHz link, and these (ARM based?) Bluetooth modules are "overkill" as he puts it. But we can throw a ton of battery at this problem, all tucked away nice and cosy inside the SSK's shell.

Naturally, what I want to see ideally is a USB port for charging and flashing new firmware. A controller firmware with layers and hopefully even macro support. And for Bluetooth pairing to be triggered by a key combination straight on the keyboard, rather than superfluous extra buttons. If we're the controller, we can do that.

Post Reply

Return to “Workshop”