[Brainstorming] Bluetoothing Our Mechs, For Electonics Newbs
- Halvar
- Location: Baden, DE
- Main keyboard: IBM Model M SSK / Filco MT 2
- Favorite switch: Beam & buckling spring, Monterey, MX Brown
- DT Pro Member: 0051
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?
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?
- DanielT
- Un petit village gaulois d'Armorique…
- Location: Bucharest/Romania
- Main keyboard: Various custom 60%'s/HHKB
- Main mouse: MS Optical Mouse 200
- Favorite switch: Topre/Linear MX
- DT Pro Member: -
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
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
- Muirium
- µ
- Location: Edinburgh, Scotland
- Main keyboard: HHKB Type-S with Bluetooth by Hasu
- Main mouse: Apple Magic Mouse
- Favorite switch: Gotta Try 'Em All
- DT Pro Member: µ
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:
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!
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:
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!
- Halvar
- Location: Baden, DE
- Main keyboard: IBM Model M SSK / Filco MT 2
- Favorite switch: Beam & buckling spring, Monterey, MX Brown
- DT Pro Member: 0051
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.
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.
- Muirium
- µ
- Location: Edinburgh, Scotland
- Main keyboard: HHKB Type-S with Bluetooth by Hasu
- Main mouse: Apple Magic Mouse
- Favorite switch: Gotta Try 'Em All
- DT Pro Member: µ
Thanks, I vaguely remember Phosphorglow already did the work! And good news: we could combine at least one column quite easily.
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!
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!
- Nuum
- Location: Germany
- Main keyboard: KBD8X Mk I (60g Clears), Phantom (Nixdorf Blacks)
- Main mouse: Corsair M65 PRO RGB
- Favorite switch: 60g MX Clears/Brown Alps/Buckling spring
- DT Pro Member: 0084
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?
BTW, do I need a custom controller/converter, when I change the layout of a Model M from ANSI to ISO?
- Halvar
- Location: Baden, DE
- Main keyboard: IBM Model M SSK / Filco MT 2
- Favorite switch: Beam & buckling spring, Monterey, MX Brown
- DT Pro Member: 0051
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.Nuum wrote: ↑BTW, do I need a custom controller/converter, when I change the layout of a Model M from ANSI to ISO?
- Muirium
- µ
- Location: Edinburgh, Scotland
- Main keyboard: HHKB Type-S with Bluetooth by Hasu
- Main mouse: Apple Magic Mouse
- Favorite switch: Gotta Try 'Em All
- DT Pro Member: µ
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?
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?
-
- Location: UK
- Main keyboard: Filco ZERO green alps, Model F 122 Terminal
- Main mouse: Ducky Secret / Roller Mouse Pro 1
- Favorite switch: MX Mount Topre / Model F Buckling
- DT Pro Member: 0167
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
I would love to just pull out a beamspring on the train and start clakcing away
- Muirium
- µ
- Location: Edinburgh, Scotland
- Main keyboard: HHKB Type-S with Bluetooth by Hasu
- Main mouse: Apple Magic Mouse
- Favorite switch: Gotta Try 'Em All
- DT Pro Member: µ
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!
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!
- Halvar
- Location: Baden, DE
- Main keyboard: IBM Model M SSK / Filco MT 2
- Favorite switch: Beam & buckling spring, Monterey, MX Brown
- DT Pro Member: 0051
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.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!
- Muirium
- µ
- Location: Edinburgh, Scotland
- Main keyboard: HHKB Type-S with Bluetooth by Hasu
- Main mouse: Apple Magic Mouse
- Favorite switch: Gotta Try 'Em All
- DT Pro Member: µ
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!
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!
- Madhias
- BS TORPE
- Location: Wien, Austria
- Main keyboard: HHKB
- Main mouse: Wacom tablet
- Favorite switch: Topre and Buckelings
- DT Pro Member: 0064
- Contact:
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.
- Muirium
- µ
- Location: Edinburgh, Scotland
- Main keyboard: HHKB Type-S with Bluetooth by Hasu
- Main mouse: Apple Magic Mouse
- Favorite switch: Gotta Try 'Em All
- DT Pro Member: µ
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.
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.