Author Topic: IBM Model M bluetooth controller board  (Read 73211 times)

0 Members and 1 Guest are viewing this topic.

Offline wulax

  • Thread Starter
  • Posts: 28
IBM Model M bluetooth controller board
« on: Wed, 22 June 2011, 10:04:37 »


Ever since seeing the article the user Hydron posted about his Model M bluetooth project I have wanted to do a similar controller. Since I dislike DIY projects that look hacked together I was not happy simply reprogramming a controller board from a suitable bluetooth keyboard and connecting it directly to my Model M. I also wanted a simple way to change or charge the batteries as well as press the pairing button.

During my search for suitable sources for a bluetooth module I stumbled across Jeff Rowberg and his Keyglove project. In one post he wrote about his experiences with the BluePacket BP20422 module which he sourced from a cheap mini keyboard named ITON PA-BK03 off Ebay. It sounded perfect for my needs so I decided to try it out.

After buying a few of the keyboards, disassembling one and desoldering its parts, I desoldered the EEPROM from the bluetooth module, connected it to an SSOP adapter and read out its contents with I2C using my Bus Pirate.



Unfortunately, after examining the firmware I realized it did not have the same structure as the one Hydron wrote about. The key matrix in this firmware was custom made for a mini keyboard, that is, it was not programmed to scan enough rows and columns to be usable with a Model M keyboard. Since I do not have the skills to reverse engineer the firmware and add a larger matrix, I tracked down a keyboard like the one Hydron used and read out its firmware. Fortunately, the firmware was interchangable between the modules and I could reprogram the key matrix to suit a Model M.

Since the mini keyboard included a Li-Po battery and a USB charger I decided to trace and write down the wiring of the keyboard into a Kicad schematic. Comparing it to the full size keyboard, there were a few adjustments to be made, and this is what I came up with:



Using Kicad, I designed a PCB that would fit inside a Model M and sent it to a PCB service. Two weeks later I recieved them:



Assembled:



The 850mAh battery was bought elsewere, the one on the mini keyboard is 150mAh (though it seems to change between production runs). I do not have access to an accurate enough ammeter or multimeter, so I have not been able to calculate how long the batteries will last between charges. I have however been using the 150mAh battery daily for almost a week of moderate typing and have yet to recharge it. The 850mAh will probably last several weeks if not months.

I decided to include the four pin serial port connector that can supposedly be used to program the module. However, I have not been able to find any information on how to use it.
I also had hopes of utilizing the caps/scroll/num-lock led ports of the bluetooth module (the white four pin connector) but the firmware does not support it.

The PCB footprint for the Model M key row membrane (right flat connector) has holes to fit an 8 as well as 12 pin connector to support both older and newer type membranes. The key matrix in the firmware can be programmed to support models 1391401 and 1392934 (including international variants), and probably other models if the key matrix is known.

Since I did not wish to modify anything on my Model M except the controller board I made use of the opening for the SDL connector for mini USB, power switch, pairing button and LEDs.



The blue LED is on all the time the keyboard is powered (unfortunately) and blinks when the controller is in pairing/discovery mode. The red LED is on while the battery is being charged and is switched off when the battery is fully charged. I am not too concerned about the power loss from the blue LED since it is a quality "high efficiency" one only dimly lit with a high resistance.

The battery being charged:



As for the USB connector, the module is not capable of sending signals over it as far as I know, so it is only used for charging the battery.

The bluetooth module is supposed to have an operating range of 10 meters, but in my experience anything more than 4-5 meters results in delayed or dropped signals. This seems to be very dependent on the reciever and its placement:



On my computer setup, the small reciever only has a usable range of ~1 meter, while the larger is usable to 4-5 meters depending on line of sight to the keyboard.

The minimum amount of PCBs I was allowed to order was 10, so I made a few more controllers. These have the 150mAh batteries from the mini keyboards. Since I have not decided what to do with them, they are not programmed yet and do not have the key row connector soldered.

EDIT: None left now and I'm not planning to make more any time soon. It's a nightmare to support all the different matrices.


Offline MissileMike

  • Posts: 280
IBM Model M bluetooth controller board
« Reply #1 on: Wed, 22 June 2011, 10:06:54 »
Awesome work!

If you decide to sell, I am definitely in for 1.
BS: 5 Space Savers  ||  9 42H  ||  10 1391401 or similar  ||  1x 1390131  || AT&T 305b  ||  Dell Model M
Cherry: Leopold FC200RC/AB  ||  3 Ducky 1087  ||  PLU ML87 ||  Cherry G80-8113LUVEU-2  browns
Alps: Filco Zero Tenkeyless (fukka)  ||  ABS M1  ||  3x Dell AT101w  ||  Ancer KF-191  ||  6 Vivanco Compact
Misc: NMB RT6855T+  ||  NMB RT101 Space Invader  ||  Dell Quietkey  ||  Ge Fanuc Industrial Metal

Offline wulax

  • Thread Starter
  • Posts: 28
IBM Model M bluetooth controller board
« Reply #2 on: Wed, 22 June 2011, 10:13:26 »
Replaced the images with links since attaching them seemed to do stange things.

I have not decided on a price for the controllers yet. I will have to think and calculate on it a bit.

Offline dfj

  • Posts: 171
  • Location: Canada
  • Visit our irc: #geekhack on libera.chat!
sweet solders. :)
« Reply #3 on: Wed, 22 June 2011, 11:11:19 »
Sweet build, well done.

  Ah, and I think I see where some of the irritation in soldering them modules comes from: it looks like a small bridge needs to form as the pads don't run under the edges of the module? The 1/2 vias on the edge of the module that you were soldering to are concave, thus pull back a hair from line defining the edge of the board... do you think running the pads 1mm more, under the edge of the module, might help? Or - is this already the case, and my old eyeballs are betraying me...

  but yeah, way sweet build. :)

dfj
« Last Edit: Wed, 22 June 2011, 11:28:24 by dfj »
Fave Switch manus: IBM, Topre, Matias, ...

Offline theferenc

  • Posts: 1327
IBM Model M bluetooth controller board
« Reply #4 on: Wed, 22 June 2011, 13:26:42 »
I would also be interested in one of these. Being able to give a Model M as a present to a person who only likes wireless keyboards...this would work well.
HHKB Pro 2 -- Custom UNIX layout Unicomp Customizer 101 -- IBM Model M 1391401 (modded to UNIX layout) -- IBM 1397000 (also UNIX layout) -- SSK in UNIX layout -- Model F 122 key in UNIX layout (Soarer USB "native")
 
CST L-TracX trackball -- Kensington Expert Mouse trackball

Offline REVENGE

  • Posts: 568
IBM Model M bluetooth controller board
« Reply #5 on: Wed, 22 June 2011, 16:00:17 »
Uhhhh, win!
◕ ‿ ◕

Offline wulax

  • Thread Starter
  • Posts: 28
IBM Model M bluetooth controller board
« Reply #6 on: Wed, 22 June 2011, 20:15:12 »
Quote from: dfj;365290
 Ah, and I think I see where some of the irritation in soldering them modules comes from: it looks like a small bridge needs to form as the pads don't run under the edges of the module? The 1/2 vias on the edge of the module that you were soldering to are concave, thus pull back a hair from line defining the edge of the board... do you think running the pads 1mm more, under the edge of the module, might help? Or - is this already the case, and my old eyeballs are betraying me...
Actually, the module has pads that extends about 0.5mm inwards on its underside. The Kicad footprint I used accounts for that exactly.

The difficulties I had soldering them probably came from my cheap soldering tools and using too little flux. The technique I use now is:

1. Position the module on the board and tape it down.
2. Add a string of flux paste along the edges of the module, both the board pads and the half vias, on all sides.
3. Hold solder wire (1mm diameter) along the edges and drag solder all of the pads with moderate speed. This will add enough solder to hold the module in place but not enough to fill 50% of the area from the top of the half via to the edge of the pad (which seems to be the recommended amount for smd components). I have experimented with drag soldering a second time but this seems to create too many bridges even if more flux is added. Therefore a second step is needed.
4. Touch the pads one at a time with the tip of the iron while adding a small amount of solder from the other side.

This is still a time consuming way to do it but it's the fastest way I have found so far.
« Last Edit: Wed, 22 June 2011, 22:09:14 by wulax »

Offline wulax

  • Thread Starter
  • Posts: 28
IBM Model M bluetooth controller board
« Reply #7 on: Thu, 23 June 2011, 08:14:09 »
After a bit of calculation:
The parts for one controller costs $30, insured shipping to US costs $15. It takes a few hours to assemble, flash and test one.
I'll sell the controllers for $80 each (shipping included). That way I'll recuperate the cost for extra controllers and earn something like minimum US wage for the work.
PM me if anyone is interested.
If you are interested in a controller for the 1391401 keyboard, you will have to wait a few days. I do not currently own that keyboard so I have no way to test it, but I ordered one a couple of days ago and should recieve it soon.

Acfrazier suggested that I make use of myropcb.com for manufacturing a bunch of controllers cheaply. I will look into it. Perhaps some kind of mini group buy could be arranged if it proves viable.
« Last Edit: Thu, 23 June 2011, 08:58:02 by wulax »

Offline trievalot

  • Posts: 246
IBM Model M bluetooth controller board
« Reply #8 on: Thu, 23 June 2011, 08:19:51 »
Can you make one for a HHKB?????
Please

i will pay you :)
[SIGPIC]

Offline wulax

  • Thread Starter
  • Posts: 28
IBM Model M bluetooth controller board
« Reply #9 on: Thu, 23 June 2011, 09:40:16 »
Quote from: trievalot;366030
Can you make one for a HHKB?????
Please

i will pay you :)

It might be possible. The firmware I used in these controllers can certainly be adjusted to the key matrix of the HHKB. The problem is that HHKB uses the Fn key for a lot of its functionality which is not possible to emulate directly with that firmware. The original firmware from the mini keyboard has Fn key functionality but I am not sure if its matrix is large enough for the HHKB. I will look into it.

The best would be if someone managed to reverse engineer the firmware so it could be adjusted to any matrix and functionality or were able to get their hands on the source code. Both are probably unlikely unfortunately.

That reminds me: Perhaps I should post the two firmwares so someone can make an attempt at reverse engineering them? Or does that violate some kind of copyright law?

Offline theferenc

  • Posts: 1327
IBM Model M bluetooth controller board
« Reply #10 on: Thu, 23 June 2011, 12:22:33 »
What model IBM did you use originally, if it doesn't quite work with 1391401?
HHKB Pro 2 -- Custom UNIX layout Unicomp Customizer 101 -- IBM Model M 1391401 (modded to UNIX layout) -- IBM 1397000 (also UNIX layout) -- SSK in UNIX layout -- Model F 122 key in UNIX layout (Soarer USB "native")
 
CST L-TracX trackball -- Kensington Expert Mouse trackball

Offline greyhounds

  • Posts: 43
IBM Model M bluetooth controller board
« Reply #11 on: Thu, 23 June 2011, 12:37:57 »
If you're not in the mood to build more but willing to pass this on to the masses, Symtech http://www.symtechlabs.com/ or someone similar could build them. Car guys use them for the Megasquirt fuel injection controllers.

You probably have a brazillion similar sources already though as you're obviously pretty saavy about the electrical type stuffs....

Offline wulax

  • Thread Starter
  • Posts: 28
IBM Model M bluetooth controller board
« Reply #12 on: Thu, 23 June 2011, 19:32:08 »
Quote from: theferenc;366261
What model IBM did you use originally, if it doesn't quite work with 1391401?

The other one I talked about in the article, 1392934. There is not reason it shouldn't work on 1391401, it's just that I haven't tested it yet and want to do so before selling a controller with that firmware.

Offline gilgam

  • Posts: 298
IBM Model M bluetooth controller board
« Reply #13 on: Fri, 24 June 2011, 06:23:10 »
Mmmmm

a SSK blutooth ...
Realforce 105 FR, HHKB Pro 2 black, 1 Raptor K1 Black Cherry and 1 Raptor K1 Red Cherry , Compag MX 11800  tBrown Cherry, G80-3000 Clear Cherry , G80-1000 Blue Cherry / Ghetto red, Lexmark 1992 SSK Buckling spring, Unicomp 2011 Customizer 102 Buckling spring
and a few rubber dome/scissors keyboards from Apple/Logitech

Offline wulax

  • Thread Starter
  • Posts: 28
IBM Model M bluetooth controller board
« Reply #14 on: Mon, 27 June 2011, 07:43:07 »
I just recieved my 1391401, made in 1992.

It seems I messed up :frown:



This model has an extra spacer to hold in place the considerably thinner controller board. The bluetooth board won't fit unless that spacer is removed. Since that shouldn't be needed it's back to the drawing board. I'll need to make the board a size and form that will fit both new and old style 1391401, including the 1392934.

I'll still sell the boards for use with the Space Saving 1392934 if there is interest though there doesn't seem to be any of that... Probably the price.

On another note: The 150mAh battery ran out after a week of daily use. That should put my 850mAh battery at a bit more than a month.

Offline Hydron

  • Posts: 15
IBM Model M bluetooth controller board
« Reply #15 on: Thu, 28 July 2011, 23:15:49 »
Hey this is pretty impressive! I'm glad someone found my efforts at a wireless IBM helpful - this is a decent step up from my rather rough-and-ready effort!
I did consider doing a PCB myself but decided it would cost too much for my liking, and that verroboard was an acceptable hack. I especially like the inclusion of the battery - I have to pull my board apart to change the AAs in mine.

One comment about the range issue - you might find that the module works better without the ground plane on the board directly below it. I'm not completely sure about this, but the antenna may be designed assuming its operating more in free space. I can probably check the docs I have on the chip, as well as the board from the keyboard I sacrificed for the module.

As an interesting note, I just got my Model M to talk to my android phone (had to root it and install a specific app to enable HID bluetooth keyboards). There is something pretty funny about using a huge heavy battleship of a keyboard to control a tiny phone!

Offline wulax

  • Thread Starter
  • Posts: 28
IBM Model M bluetooth controller board
« Reply #16 on: Wed, 03 August 2011, 09:02:48 »
Quote from: Hydron;389167
Hey this is pretty impressive! I'm glad someone found my efforts at a wireless IBM helpful - this is a decent step up from my rather rough-and-ready effort!
I did consider doing a PCB myself but decided it would cost too much for my liking, and that verroboard was an acceptable hack. I especially like the inclusion of the battery - I have to pull my board apart to change the AAs in mine.

Thank you for posting your project. That's pretty much what made it possible for me to make it.

Quote from: Hydron;389167
One comment about the range issue - you might find that the module works better without the ground plane on the board directly below it. I'm not completely sure about this, but the antenna may be designed assuming its operating more in free space. I can probably check the docs I have on the chip, as well as the board from the keyboard I sacrificed for the module.

Interesting, I hadn't noticed that, looking at the PCB from the full size keyboard it's true. When I get the time and some leftover cash I will design a new PCB that fits all Model M and include that empty antenna area. After that I will release everything to the public domain. I have given up on selling any controller boards. The differences in keyboard matrices between Model Ms makes it pretty much impossible to know which keyboard fits with a given matrix.

Quote from: Hydron;389167
As an interesting note, I just got my Model M to talk to my android phone (had to root it and install a specific app to enable HID bluetooth keyboards). There is something pretty funny about using a huge heavy battleship of a keyboard to control a tiny phone!

Yeah, I tried that too. Unfortunately the only working bluetooth keyboard app I have found, BlueInput, doesn't support different languages yet so it's mostly useless for me. What app (or driver) are you using?

Offline Harbinger

  • Posts: 4
IBM Model M bluetooth controller board
« Reply #17 on: Fri, 12 August 2011, 13:12:30 »
I'd love to build one (or several) of these as I've been collecting Model M's from thrift stores when they occasionally pop up. Building one of these w/o the ground plane as a test would be a good idea before committing to a large batch of boards.

Offline Hydron

  • Posts: 15
IBM Model M bluetooth controller board
« Reply #18 on: Tue, 16 August 2011, 07:41:11 »
Probably possible to hack one of the existing boards to remove the plane (though it would be pretty ugly!)

Wulax:
The app I used is called "Bluetooth Keyboard Easy Connect". I think it needs root access (i.e. the phone needs to be hacked), and also needs certain bluetooth binaries that may not be included in the stock phone firmware. I fortunately had both things sorted already due to running a custom ROM on the phone. There may be other apps that work though, I seem to recall a japanese developed one with similar looking features.
By the way, if you are interested in sending an unpopulated board to me (should fit in an envelop, and therefore be cheap to send) I'll have a go at removing the plane under the antenna and seeing what range I get with my module. I'm probably doing a digikey order for work shortly, so I should be able to get the other parts pretty easily. PM me if you're interested.

Offline wulax

  • Thread Starter
  • Posts: 28
IBM Model M bluetooth controller board
« Reply #19 on: Mon, 22 August 2011, 11:20:07 »
Quote from: Hydron;399805
By the way, if you are interested in sending an unpopulated board to me (should fit in an envelop, and therefore be cheap to send) I'll have a go at removing the plane under the antenna and seeing what range I get with my module. I'm probably doing a digikey order for work shortly, so I should be able to get the other parts pretty easily. PM me if you're interested.


Sounds interesting. PM sent.

Offline timofonic

  • Posts: 59
IBM Model M bluetooth controller board
« Reply #20 on: Wed, 07 September 2011, 03:22:52 »
This is interesting...

Is this adapter NKRO?
« Last Edit: Wed, 07 September 2011, 03:27:37 by timofonic »

Offline SamirD

  • * Esteemed Elder
  • Posts: 1508
  • Location: HSV and SFO
  • on Buckling Springs since '88
    • http://www.huntsvillecarscene.com
IBM Model M bluetooth controller board
« Reply #21 on: Wed, 16 November 2011, 18:42:26 »
Killer!  I wish I saw this article back in the day when boards were still available. :(

Offline stroma

  • Posts: 1
IBM Model M bluetooth controller board
« Reply #22 on: Thu, 08 March 2012, 15:52:21 »
What a great article. I will try to make my IBM model M wireless too :).

Offline Fujisawa Rob

  • Posts: 5
Re: IBM Model M bluetooth controller board
« Reply #23 on: Wed, 12 June 2013, 10:53:15 »
Are these for sale? Thanks.

Offline snoopy

  • The Flying Ace
  • * Elevated Elder
  • Posts: 1828
  • Location: Industrial Environment
  • Gone with the Wind
Re: IBM Model M bluetooth controller board
« Reply #24 on: Wed, 12 June 2013, 14:00:45 »
Are these for sale? Thanks.

You've seen how old this is?


But cool stuff in here... now I dream of a wireless ssk :D

Offline gnubag

  • Posts: 509
  • Location: California, US
Re: IBM Model M bluetooth controller board
« Reply #25 on: Wed, 12 June 2013, 14:38:36 »
Are these for sale? Thanks.

You've seen how old this is?


But cool stuff in here... now I dream of a wireless ssk :D

well the one missing feature is to use it with the cable/without bt.

Offline listokei

  • Posts: 65
  • Location: KOREA
    • ListoKei Blog
Re: IBM Model M bluetooth controller board
« Reply #26 on: Sun, 11 August 2013, 10:11:08 »
Wow! It's awesome projects!!!  :thumb: :thumb:

Offline agodinhost

  • Posts: 767
  • Location: Brazil, RJ
  • Soylent green is people ...
    • Dr Ian O Xaman
Re: IBM Model M bluetooth controller board
« Reply #27 on: Sun, 11 August 2013, 11:18:28 »
Definitely, awesome work man!
Building one square I2C keyboard with those 1200 switches (thanks JDCarpe)
GH60 |GH60-Alps |GH60-BT |GHPad/GHPad Alps |GH60-Case |Alps TKL |EL Wire |OS Controller, Round 2 |My Custom Keyboard |WTT/WTB

Offline berserkfan

  • Posts: 2135
  • Location: Not CONUS Not CONUS Not CONUS Not CONUS
  • changing diapers is more fun than model f assembly
Re: IBM Model M bluetooth controller board
« Reply #28 on: Fri, 14 March 2014, 21:34:53 »
necrobump praise from me  :p

The genius of geekhackers knows no bounds
Most of the modding can be done on your own once you break through the psychological barriers.

Offline blackbox

  • Posts: 725
Re: IBM Model M bluetooth controller board
« Reply #29 on: Thu, 20 March 2014, 11:05:14 »
Awesome project!
Keyboards: Dell AT102W (matias standard clicky), Maltron two-hand 3D fully ergonomic keyboard (Vintage MX Black). CM QF XT (MX Grey) IBM model M

The LAN table!
http://geekhack.org/index.php?topic=62536.0

Offline blackbox

  • Posts: 725
Re: IBM Model M bluetooth controller board
« Reply #30 on: Thu, 20 March 2014, 11:05:35 »
Keyboards: Dell AT102W (matias standard clicky), Maltron two-hand 3D fully ergonomic keyboard (Vintage MX Black). CM QF XT (MX Grey) IBM model M

The LAN table!
http://geekhack.org/index.php?topic=62536.0