Universal Model M Controller

Hi ya'll! I'm like a cat when it comes to forums - I come around when I want attention or I have something I want to leave in your shoe. So here's a little something and it isn't dead. ^_^

I'm still working out small details and would like some input/ideas/see if anyone catches a silly mistake I've made. I know there have been other similar projects but they seem to have fizzled out or didn't have what I was wanting. Anyhoo, here's what we have: AT90USB1286 (Soarer's Controller/TMK/homebrew firmware), FFC connector pins for the various revisions (early with separate LED connector, later Lexmark era with LED traces integrated into the circuit membrane, SSK, 122 key, etc.), reset button next to USB connector (it will be a right angle button even though the picture shows a flat one), access to unused I/O ports and a little breadboard area for fiddling/expansion, and a right angle ground terminal for the plate. Since I enjoy soldering by hand I went with 1206 SMD's and the TQFP64.

I still need to add in the drill holes for mounting to the steel plate, and when used in those applications the ribbon connectors can be soldered to the other side. Also need a drill hole to accommodate the later M's with the smaller controller (there's the little foot-nub in the case that would interfere with its size). I'm thinking about putting in pads for a Mini USB connector since there seems to be space for the sake of personal preference. I prefer the sturdy USB-B, but I know other people like the mini. I don't have a Wheelwriter board, but since IBM was pretty consistent, it probably fits as well.

The exception at this point is the M13. Yes it would fit, but no Trackpoint provisions. Which leads me to a side question: can TMK firmware as a converter (not controller) handle PS/2 inputs for keyboard and mouse simultaneously? I remember reading it was problematic but haven't looked into it much since then.

When it's finalized I'll make available the design files. This is my first time designing a PCB and I'm using Fritzing to do so.

Ideas/suggestions/requests?
Attachments
controller.jpeg
phosphorglow
User avatar

Unread post04 Feb 2015, 10:49

User avatar
X
phosphorglow
 
Posts: 357
Joined: 30 Jun 2013, 22:13
Location: Indianapolis - USA
Main keyboard: IBM Model M
Main mouse: Kensington Expert Mouse
Favorite switch: Buckling Spring!
Club member: -
 
Hi Phosphorglow! Glad to see you back, except this time you're giving us some food. :D

I think I know a question that many of us (hello Muirium) are thinking: do you think it would be possible to add Bluetooth support to the controller?
scottc
User avatar

Unread post04 Feb 2015, 11:06

User avatar
X
scottc
 
Posts: 5353
Joined: 06 Oct 2013, 21:09
Location: Remote locations in Europe
Main keyboard: GH60-HASRO 62g Nixies, HHKB Pro1 HS, Novatouch
Main mouse: Steelseries Rival 300
Favorite switch: Nixdorf 'Soft Touch' MX Black
Club member: 0081
 
scottc wrote:Hi Phosphorglow! Glad to see you back, except this time you're giving us some food. :D

I think I know a question that many of us (hello Muirium) are thinking: do you think it would be possible to add Bluetooth support to the controller?

Thanks! :)

I don't know enough about hasu's firmware, but I think there's support for it somewhere? That was the idea behind having the extra I/O ports being accessible - someone more clever than myself can find applications for them. :P

If someone can direct me to some info I'd love to be able to include provisions for a module in the free space on the board!
phosphorglow
User avatar

Unread post04 Feb 2015, 11:15

User avatar
X
phosphorglow
 
Posts: 357
Joined: 30 Jun 2013, 22:13
Location: Indianapolis - USA
Main keyboard: IBM Model M
Main mouse: Kensington Expert Mouse
Favorite switch: Buckling Spring!
Club member: -
 
YES! That is a very interesting project, I'd be interested in buying a PCB and helping with the software.

I'm bluetoothing my SSK at the moment based on a Teensy++ (same AVR chip you are using) controller with TMK software, a Bluefruit EZkey and a little LiPo loader circuit. What I'm doing is partly quite similar to this, but I didn't think of making a custom PCB for that yet. That would be most welcome though!

Fortunately, this Atmel chip has LOTS of pins... To speak to a bluetooth chip (or other interesting peripherals on the breadboard part) it would be nice if D2 and D3 (AVR UART RX and TX) would be free and available on the breadboard area, as well as maybe one or two free ADC pins and a few digital SPIO pins. In my experimenting at the moment, I'm using D2 and D3 for UART RX/TX, three outputs for bluetooth pairing, bluetooth reset and a battery on/off LED respectively, and 2 digital inputs for sensing status of a battery on/off switch and Bluetooth, and an analog input for sensing battery voltage. So 8 pins all in all, in addition to voltage and ground.

Another idea you could steal from the teensy would be the possibility to use a MCP1825 voltage regulator to let the controller run on 3.3 V. (https://www.pjrc.com/teensy/3volt.html) This saves about half of the power that the AVR chip needs (https://www.pjrc.com/teensy/low_power.html), and I don't think the Model M matrix will have a problem with that at all. You can see how they did it in the schematic: https://www.pjrc.com/teensy/schematic.html
Last edited by Halvar on 04 Feb 2015, 13:35, edited 3 times in total.
Halvar
User avatar

Unread post04 Feb 2015, 11:44

User avatar
X
Halvar
 
Posts: 3040
Joined: 10 Nov 2012, 10:29
Location: Baden, DE
Main keyboard: IBM Model M SSK / Filco MT 2
Favorite switch: Beam & buckling spring, Monterey, MX Brown
Club member: 0051
 
I was thinking of something like this too, i was going to go through hole tho. Looking forward to see progress.
andrewjoy

Unread post04 Feb 2015, 11:47

X
andrewjoy
 
Posts: 4489
Joined: 11 Apr 2012, 16:27
Location: UK
Main keyboard: Novatouch (PBT caps) , Model F 122 Terminal
Main mouse: EC Technology 1600dpi / DXT Vertical
Favorite switch: MX Mount Topre / Model F Buckling
Club member: 0167
 
I think a drop-in replacement controller with USB support for model M keyboards is a great idea.

If one could figure out bluetooth wireless support, that would also be of interest to model M users. We still get the same request for a "wireless model M" each and every month.

@Phosphorglow, have you thought about how to support the various different styles of model M controllers and the differences in the pin connectors?

There were alot of differences in the controllers used by IBM and Lexmark from 1987-1999.

Early model M keyboards had an a pin arrangement of 16 + 8 + 4 (LED), then later model M keyboards had 16 + 12 pin connectors.

http://www.clickeykeyboards.com/model-m ... 1987-1999/
clickykeyboards
User avatar

Unread post04 Feb 2015, 14:02

User avatar
X
clickykeyboards
 
Posts: 139
Joined: 21 Feb 2011, 14:02
Main keyboard: 1395682
Favorite switch: buckling spring
Club member: -
 
No kidding!

Image

Don't mind if I mirror this at DT, do you Clicky? It's a slow load from your page: http://www.clickeykeyboards.com/picture ... d=18524217

If there's only two different ribbon cable formats to worry about, we could simply include the sockets to support both. This includes everything from an SSK to a 122 key Model M, right?

The real advantage in a replacement controller is Bluetooth, for sure. Right now, we can simply pop a Teensy into any Model M and run Soarer's Converter on it for fully programmable USB goodness, running from the original. But Bluetooth, and the necessary power savings, are a whole other story. That's compelling!
Muirium
User avatar
µ

Unread post04 Feb 2015, 14:09

User avatar
X
Muirium
µ
 
Posts: 22409
Joined: 03 Feb 2013, 10:11
Location: Edinburgh, Scotland
Main keyboard: IBM 4704 Kishsaver
Main mouse: Apple Magic Trackpad
Favorite switch: Gotta Try 'Em All
Club member: -
 
I could list other advantages:

1.- Free software :-)
2.- Potential configuration tools similar to xwhatsit
3.- Fun. Lots of Fun

I would participate in this project !
idollar
i$

Unread post04 Feb 2015, 14:19

X
idollar
i$
 
Posts: 1312
Joined: 24 Oct 2014, 15:57
Location: Germany (Frankfurt area)
Main keyboard: IBM F or M
Favorite switch: BS
Club member: 0091
 
I'm thinking about putting in pads for a Mini USB connector since there seems to be space for the sake of personal preference. I prefer the sturdy USB-B, but I know other people like the mini. I don't have a Wheelwriter board, but since IBM was pretty consistent, it probably fits as well.

Question: why don't you put in pads for Mini and USB-B and direct soldering of the cable all in parallel ? The user could decide which one to mount. The top left side of the PCB should have space for all if they are not mounted at the same time.

Just an idea ...
Last edited by idollar on 04 Feb 2015, 14:47, edited 1 time in total.
idollar
i$

Unread post04 Feb 2015, 14:23

X
idollar
i$
 
Posts: 1312
Joined: 24 Oct 2014, 15:57
Location: Germany (Frankfurt area)
Main keyboard: IBM F or M
Favorite switch: BS
Club member: 0091
 
Yeah, I like that too. With an option for the best (current) connector of all: micro USB. Leave a few feet free for USB C when it comes along too!
Muirium
User avatar
µ

Unread post04 Feb 2015, 14:28

User avatar
X
Muirium
µ
 
Posts: 22409
Joined: 03 Feb 2013, 10:11
Location: Edinburgh, Scotland
Main keyboard: IBM 4704 Kishsaver
Main mouse: Apple Magic Trackpad
Favorite switch: Gotta Try 'Em All
Club member: -
 
 
@Muirium. Sure.. you can add a copy of the image to the DT wiki, but please remember to cite the original source. Working in academia, it drives me crazy when I find my photos and descriptions copy-and-pasted without attribution.
clickykeyboards
User avatar

Unread post04 Feb 2015, 14:32

User avatar
X
clickykeyboards
 
Posts: 139
Joined: 21 Feb 2011, 14:02
Main keyboard: 1395682
Favorite switch: buckling spring
Club member: -
 
I did this some weeks ago, before putting together one of my Ms ...
I wanted to put the output into a matrix format. I will do it.
It may be useful. I have only seen a SSK matrix "decoded" in the DT.

DSC_9300.jpg
DSC_9299.jpg
DSC_9298.jpg


I have contrasted and saturated the images.
The resolution is also reduced drastically. If needed I could post a better version of these.
idollar
i$

Unread post04 Feb 2015, 14:43

X
idollar
i$
 
Posts: 1312
Joined: 24 Oct 2014, 15:57
Location: Germany (Frankfurt area)
Main keyboard: IBM F or M
Favorite switch: BS
Club member: 0091
 
if there are multiple matrix connections , how about ether multiple connectors on the board ( prob need multi layer board for that or its going to get too big), or an adapter similar to xwhatsit display writer adapter.

In fact thinking about it now, an audino like "shield" for each type of matrix connection.
andrewjoy

Unread post04 Feb 2015, 17:19

X
andrewjoy
 
Posts: 4489
Joined: 11 Apr 2012, 16:27
Location: UK
Main keyboard: Novatouch (PBT caps) , Model F 122 Terminal
Main mouse: EC Technology 1600dpi / DXT Vertical
Favorite switch: MX Mount Topre / Model F Buckling
Club member: 0167
 
In my opinion is simpler.

Software

- The software could be configured to decide the number of rows and columns in the matrix. This is not a problem.

Hardware

Option 1 - parallel connectors covering all the options. Installed or not, but ready on the pcb
Option 2 - one connector for rows and a second for columns covering the max length of each. Blank inserts to cover the unused pins. In the worst scenario two per connector blanking the right and left side.

Both options are possible if the PCB is correctly designed.
idollar
i$

Unread post04 Feb 2015, 17:26

X
idollar
i$
 
Posts: 1312
Joined: 24 Oct 2014, 15:57
Location: Germany (Frankfurt area)
Main keyboard: IBM F or M
Favorite switch: BS
Club member: 0091
 
My first thought on reading that: You could even go with a single, extra long, connector which auto detects what's plugged into it.

My second thought: wait a minute, aren't all the rows and columns open circuits until keys are pressed? Auto detection would need the user to start pressing keys so it can see what's plugged in, where. Which might be fun!
Muirium
User avatar
µ

Unread post04 Feb 2015, 18:12

User avatar
X
Muirium
µ
 
Posts: 22409
Joined: 03 Feb 2013, 10:11
Location: Edinburgh, Scotland
Main keyboard: IBM 4704 Kishsaver
Main mouse: Apple Magic Trackpad
Favorite switch: Gotta Try 'Em All
Club member: -
 
 
Why to autodetect if the matrix will always be the same once installed ?
idollar
i$

Unread post04 Feb 2015, 18:32

X
idollar
i$
 
Posts: 1312
Joined: 24 Oct 2014, 15:57
Location: Germany (Frankfurt area)
Main keyboard: IBM F or M
Favorite switch: BS
Club member: 0091
 
Imagine explaining how to install one of these to IBM newbs, or anyone who hasn't heard of a matrix. That's why!
Muirium
User avatar
µ

Unread post04 Feb 2015, 18:48

User avatar
X
Muirium
µ
 
Posts: 22409
Joined: 03 Feb 2013, 10:11
Location: Edinburgh, Scotland
Main keyboard: IBM 4704 Kishsaver
Main mouse: Apple Magic Trackpad
Favorite switch: Gotta Try 'Em All
Club member: -
 
 
A manual should do the job. There are a handset of cases to explain only.
I do not see any problem in documenting it.
idollar
i$

Unread post04 Feb 2015, 19:23

X
idollar
i$
 
Posts: 1312
Joined: 24 Oct 2014, 15:57
Location: Germany (Frankfurt area)
Main keyboard: IBM F or M
Favorite switch: BS
Club member: 0091
 
idollar wrote:A manual should do the job. There are a handset of cases to explain only.
I do not see any problem in documenting it.

You have more faith in people than i do , nobody ever RTFM ever, even when the solution is right there in black and white. :).

More simple to say plug the thing into the thing and then into the other thing.
andrewjoy

Unread post04 Feb 2015, 19:39

X
andrewjoy
 
Posts: 4489
Joined: 11 Apr 2012, 16:27
Location: UK
Main keyboard: Novatouch (PBT caps) , Model F 122 Terminal
Main mouse: EC Technology 1600dpi / DXT Vertical
Favorite switch: MX Mount Topre / Model F Buckling
Club member: 0167
 
andrewjoy wrote:
idollar wrote:A manual should do the job. There are a handset of cases to explain only.
I do not see any problem in documenting it.

You have more faith in people than i do , nobody ever RTFM ever, even when the solution is right there in black and white. :).
More simple to say plug the thing into the thing and then into the other thing.

I have the solution: When you first plug your USB keyboard and until you configure the membrane type the controller shall output automatically "Did't I tell you that you shall read the manual before plugging me in ? : - ) " in an endless loop.
This will do ... :-)
idollar
i$

Unread post04 Feb 2015, 20:55

X
idollar
i$
 
Posts: 1312
Joined: 24 Oct 2014, 15:57
Location: Germany (Frankfurt area)
Main keyboard: IBM F or M
Favorite switch: BS
Club member: 0091
 
It would be funnier if it intercepted keystrokes and just typed the next letter of "Read the manual first!" each time.

*types*

"Pleas"

... wait … that's not what I typed ...

*another key*

"e"

... ???

Please what?

And so on.
Daniel Beardsmore
User avatar

Unread post04 Feb 2015, 22:26

User avatar
X
Daniel Beardsmore
 
Posts: 4985
Joined: 17 Aug 2011, 18:23
Location: Hertfordshire, England
Main keyboard: Filco Majestouch 1 (home)/Poker II backlit (work)
Main mouse: MS IMO 1.1
Favorite switch: Probably not whatever I wrote here
Club member: -
 
That's actually a lovely bit of genius. I made a macro for All work and no play makes Jack a dull boy. But when the keyboard seems to have composed it for itself, it's so much better! One. Stroke. At. A. Time.
Muirium
User avatar
µ

Unread post04 Feb 2015, 22:33

User avatar
X
Muirium
µ
 
Posts: 22409
Joined: 03 Feb 2013, 10:11
Location: Edinburgh, Scotland
Main keyboard: IBM 4704 Kishsaver
Main mouse: Apple Magic Trackpad
Favorite switch: Gotta Try 'Em All
Club member: -
 
 
Daniel, this is the right way to do it, indeed !
idollar
i$

Unread post04 Feb 2015, 22:34

X
idollar
i$
 
Posts: 1312
Joined: 24 Oct 2014, 15:57
Location: Germany (Frankfurt area)
Main keyboard: IBM F or M
Favorite switch: BS
Club member: 0091
 
This looks real good. Will watch the progression of this!
beltet
User avatar

Unread post04 Feb 2015, 23:01

User avatar
X
beltet
 
Posts: 836
Joined: 28 Jul 2013, 23:12
Location: Stockholm Sweden
Main keyboard: Custom NerD60
Main mouse: Saitek cyborg R.A.T 7
Favorite switch: Ergo MX Clear
Club member: -
 
Halvar wrote:YES! That is a very interesting project, I'd be interested in buying a PCB and helping with the software.

I'm bluetoothing my SSK at the moment based on a Teensy++ (same AVR chip you are using) controller with TMK software, a Bluefruit EZkey and a little LiPo loader circuit. What I'm doing is partly quite similar to this, but I didn't think of making a custom PCB for that yet. That would be most welcome though!

Fortunately, this Atmel chip has LOTS of pins... To speak to a bluetooth chip (or other interesting peripherals on the breadboard part) it would be nice if D2 and D3 (AVR UART RX and TX) would be free and available on the breadboard area, as well as maybe one or two free ADC pins and a few digital SPIO pins. In my experimenting at the moment, I'm using D2 and D3 for UART RX/TX, three outputs for bluetooth pairing, bluetooth reset and a battery on/off LED respectively, and 2 digital inputs for sensing status of a battery on/off switch and Bluetooth, and an analog input for sensing battery voltage. So 8 pins all in all, in addition to voltage and ground.

Another idea you could steal from the teensy would be the possibility to use a MCP1825 voltage regulator to let the controller run on 3.3 V. (https://www.pjrc.com/teensy/3volt.html) This saves about half of the power that the AVR chip needs (https://www.pjrc.com/teensy/low_power.html), and I don't think the Model M matrix will have a problem with that at all. You can see how they did it in the schematic: https://www.pjrc.com/teensy/schematic.html

Excellent stuff! Thanks for the input - this is exciting! ^_^

Okie dokie, I made a few changes. D2 and D3 are now free, as well as F0-F3. It looks like I can move the crystal to where the free port jumpers are on the left side, and move most of those to the breadboard area. Question is, what should I leave where it is?

I'm curious about the LiPo circuit, can you give me some more info? I'm sure I can add in traces and pads over there...
Is it possible at that point to use it as a wired AND bluetooth keyboard? I'll work on placing the voltage regulator, shouldn't be a big deal.
Attachments
controller1.jpeg
phosphorglow
User avatar

Unread post05 Feb 2015, 12:19

User avatar
X
phosphorglow
 
Posts: 357
Joined: 30 Jun 2013, 22:13
Location: Indianapolis - USA
Main keyboard: IBM Model M
Main mouse: Kensington Expert Mouse
Favorite switch: Buckling Spring!
Club member: -
 
I'd be very happy with just a Bluetooth only keyboard that simply uses USB to charge, by the way. But dual mode is definitely all the more awesome still!

Something wireless modules generally suck at is how you program them. You need a physical programmer module, which hooks up to them manually every time you need to alter the software. The Teensy has spoiled me with its smart simplicity: do everything over USB. That's what we want for this! Reprogrammability right over the USB cable.
Muirium
User avatar
µ

Unread post05 Feb 2015, 12:21

User avatar
X
Muirium
µ
 
Posts: 22409
Joined: 03 Feb 2013, 10:11
Location: Edinburgh, Scotland
Main keyboard: IBM 4704 Kishsaver
Main mouse: Apple Magic Trackpad
Favorite switch: Gotta Try 'Em All
Club member: -
 
idollar wrote:
I'm thinking about putting in pads for a Mini USB connector since there seems to be space for the sake of personal preference. I prefer the sturdy USB-B, but I know other people like the mini. I don't have a Wheelwriter board, but since IBM was pretty consistent, it probably fits as well.

Question: why don't you put in pads for Mini and USB-B and direct soldering of the cable all in parallel ? The user could decide which one to mount. The top left side of the PCB should have space for all if they are not mounted at the same time.

Just an idea ...

Parallel won't work, but it loooooks like I have enough space to put pads in for a Micro right above the holes for the USB-B. Can anyone recommend a specific high quality connector brand/model I can plan for?
phosphorglow
User avatar

Unread post05 Feb 2015, 12:28

User avatar
X
phosphorglow
 
Posts: 357
Joined: 30 Jun 2013, 22:13
Location: Indianapolis - USA
Main keyboard: IBM Model M
Main mouse: Kensington Expert Mouse
Favorite switch: Buckling Spring!
Club member: -
 
Could you leave a set of through holes for the 4 USB lines, for those of us who like to string up our own socket on the keyboard chassis? That'd be mighty convenient! If so, labels please!

The standard names and numbering are here:

http://pinouts.ws/usb-pinout.html
Muirium
User avatar
µ

Unread post05 Feb 2015, 12:34

User avatar
X
Muirium
µ
 
Posts: 22409
Joined: 03 Feb 2013, 10:11
Location: Edinburgh, Scotland
Main keyboard: IBM 4704 Kishsaver
Main mouse: Apple Magic Trackpad
Favorite switch: Gotta Try 'Em All
Club member: -
 
clickykeyboards wrote:I think a drop-in replacement controller with USB support for model M keyboards is a great idea.

If one could figure out bluetooth wireless support, that would also be of interest to model M users. We still get the same request for a "wireless model M" each and every month.

@Phosphorglow, have you thought about how to support the various different styles of model M controllers and the differences in the pin connectors?

There were alot of differences in the controllers used by IBM and Lexmark from 1987-1999.

Early model M keyboards had an a pin arrangement of 16 + 8 + 4 (LED), then later model M keyboards had 16 + 12 pin connectors.

http://www.clickeykeyboards.com/model-m ... 1987-1999/

Physically there were a lot of different styles, but luckily the matrices are all electrically similar (for example, using a later Lexmark controller in place of an early IBM works, etc.). This layout has provisions for all the different ribbon connectors, everything else boils down to small changes in mapping. Yay for consistency!
phosphorglow
User avatar

Unread post05 Feb 2015, 12:40

User avatar
X
phosphorglow
 
Posts: 357
Joined: 30 Jun 2013, 22:13
Location: Indianapolis - USA
Main keyboard: IBM Model M
Main mouse: Kensington Expert Mouse
Favorite switch: Buckling Spring!
Club member: -
 
Muirium wrote:Could you leave a set of through holes for the 4 USB lines, for those of us who like to string up our own socket on the keyboard chassis? That'd be mighty convenient! If so, labels please!

The standard names and numbering are here:

http://pinouts.ws/usb-pinout.html

Can and will do!

Going to need this little provision for terminal boards anyhoo.
phosphorglow
User avatar

Unread post05 Feb 2015, 12:42

User avatar
X
phosphorglow
 
Posts: 357
Joined: 30 Jun 2013, 22:13
Location: Indianapolis - USA
Main keyboard: IBM Model M
Main mouse: Kensington Expert Mouse
Favorite switch: Buckling Spring!
Club member: -
 
Next

Who is online

Users browsing this forum: joric, ullr, Zed and 48 guests