Unicomp New Model M Matrix - Has anyone figured this out?
I'm working on building a QMK compatible controller for my Unicomp New Model M. As much as I like this keyboard, the controller in this thing is just flaky as all get out. Hangs after booting requiring a replug, etc.
I noticed something odd the moment I opened it up - instead of having the 16x8 matrix of vintage Model M boards, the controller and matrix ribbon cable both have 25 total connectors! This obviously can't be a 16x8 matrix, as there's an extra connector somewhere.
Has anyone decoded the New Model M matrix yet? I could potentially do this myself, but I'd have to drill out the rivets on my perfectly good new keyboard to get a look at the membrane.
Even if anyone knows which of the connections are rows and which are columns, that would be incredibly useful.
Anyway, please let me know if you've got info on this. I plan on posting all my design files online once I've got this working.
I noticed something odd the moment I opened it up - instead of having the 16x8 matrix of vintage Model M boards, the controller and matrix ribbon cable both have 25 total connectors! This obviously can't be a 16x8 matrix, as there's an extra connector somewhere.
Has anyone decoded the New Model M matrix yet? I could potentially do this myself, but I'd have to drill out the rivets on my perfectly good new keyboard to get a look at the membrane.
Even if anyone knows which of the connections are rows and which are columns, that would be incredibly useful.
Anyway, please let me know if you've got info on this. I plan on posting all my design files online once I've got this working.
- Sheepless
- Location: United Kingdom
- Main keyboard: IBM Model F122
- Main mouse: Logitech G502
- Favorite switch: IBM buckling spring
I'm sorry to hear that, after all these years, Unicomp still haven't figured out how to handle USB reliably. I've abandoned two of their keyboards in the past because of this.
I don't think you need to drill it out in order to map it. Just unplug the ribbons from the controller, then hold down a key and use a multimeter to find the pair of traces which have continuity. Then repeat until all keys done. If doing it manually, this is a long and tedious process, but it's doable. It gets a bit easier if you use something like a Raspberry Pi or Arduino to automate the scanning.
I don't think you need to drill it out in order to map it. Just unplug the ribbons from the controller, then hold down a key and use a multimeter to find the pair of traces which have continuity. Then repeat until all keys done. If doing it manually, this is a long and tedious process, but it's doable. It gets a bit easier if you use something like a Raspberry Pi or Arduino to automate the scanning.
- 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 remember Chyros saying something about Unicomp splitting the matrix into chunks so they could hack their way to "NKRO". Model M is intrinsically 2KRO, see, but if you chop it up and add enough 2's together… right?
Could be a bitch trying to reverse engineer this one. Hopefully someone has the matrix already worked out or the membranes photographed.
You could always try asking Unicomp. They should have a diagram somewhere.
Could be a bitch trying to reverse engineer this one. Hopefully someone has the matrix already worked out or the membranes photographed.
You could always try asking Unicomp. They should have a diagram somewhere.
- clickykeyboards
- Location: United States of America
- Main keyboard: 1395682, IBM model M 1985
- Main mouse: Logitech G500 weighted
- Favorite switch: buckling spring
- DT Pro Member: 0233
- Contact:
See for some additional info on a project that I am collaborating on with Wendell from Level1Techs.
https://youtu.be/xCHbd3x13rU
https://gitlab.com/esr/m-star
I primarily am contributing on testing and validating the new prototype of a QMK-based controller to add built-in USB support with a variety of vintage IBM and Lexmark model M keyboards (1985 - 1999)
...but Wendell has already done some work with the Unicomp 2021 Mini M
https://forum.level1techs.com/t/level1- ... ion/175331
https://youtu.be/xCHbd3x13rU
https://gitlab.com/esr/m-star
I primarily am contributing on testing and validating the new prototype of a QMK-based controller to add built-in USB support with a variety of vintage IBM and Lexmark model M keyboards (1985 - 1999)
...but Wendell has already done some work with the Unicomp 2021 Mini M
https://forum.level1techs.com/t/level1- ... ion/175331
Last edited by clickykeyboards on 10 Sep 2021, 16:37, edited 1 time in total.
- zrrion
- Location: United States
- Main keyboard: F122
- Main mouse: Microsoft IntelliMouse
- Favorite switch: ALPS SKCC Cream
- DT Pro Member: -
- Contact:
The matrix isn't "chopped up" it's just way bigger than needed. This means that the keys are farther apart on the matrix because the matrix positions that would cause the most conflicts if they had a switch there are left blank. Mapping the positions would be just as easy for the new SSK as for the old one.
This project was the inspiration for making a New Model M replacement controller.clickykeyboards wrote: ↑10 Sep 2021, 14:56See for some additional info on a project that I am collaborating on with Wendell from Level1Techs.
https://youtu.be/xCHbd3x13rU
https://gitlab.com/esr/m-star
I primarily am contributing on testing and validating the new prototype of a QMK-based controller to add built-in USB support with a variety of vintage IBM and Lexmark model M keyboards (1985 - 1999)
IMG_9167.jpg
...but Wendell has already done some work with the Unicomp 2021 Mini M
https://forum.level1techs.com/t/level1- ... ion/175331
Sadly both the matrix and controller are totally different between the Mini M and New Model M, which is why I'm going down the path of building my own controller. The Mini M has a much larger matrix and membrane mounted lock lights, while the New Model M has a slightly bigger than vintage and controller mounted LEDs. The controller to membrane attachment method is totally different too.
Sounds like I'll have to build my controller and then use some custom firmware to read out the matrix codes as I press keys. Annoying, but not the worst thing in life.
- 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 stand corrected. Didn't they do something silly, though, and make multiple logical USB controllers, in a hacky attempt to circumvent the (false) 6KRO limit of USB?
There's a right way and a wrong way of doing that. And maybe even a Unicomp way as well…
- sharktastica
- Location: Wales
- Main keyboard: '86 IBM F Bigfoot + '96 IBM M50
- Main mouse: Logitech MX Revolution
- Favorite switch: Cap B/S, BOX Navy
- Contact:
Assuming you mean Mini M rather than New M (latter of which reuses the same inner assembly and electronics as the Ultra Classic/SpaceSaver M):
https://www.reddit.com/r/modelm/comment ... im_matrix/
https://www.reddit.com/r/modelm/comment ... n/gwg8vky/
Correct, it's a 16x12 matrix
Indeed, it's been done before. Here's some info on r/ModelM:
https://www.reddit.com/r/modelm/comment ... im_matrix/
https://www.reddit.com/r/modelm/comment ... n/gwg8vky/
Thanks for the info, but this is for the Mini M matrix, which is not at all similar to a New Model M's matrix.sharktastica wrote: ↑10 Sep 2021, 19:20Assuming you mean Mini M rather than New M (latter of which reuses the same inner assembly and electronics as the Ultra Classic/SpaceSaver M):
Correct, it's a 16x12 matrix
Indeed, it's been done before. Here's some info on r/ModelM:
https://www.reddit.com/r/modelm/comment ... im_matrix/
https://www.reddit.com/r/modelm/comment ... n/gwg8vky/
Mini M = 16x12 matrix, or 28 total connectors
New Model M = 25 total connectors, presumably 16x9? Maybe 16x8 with an unused trace for god knows why?
- sharktastica
- Location: Wales
- Main keyboard: '86 IBM F Bigfoot + '96 IBM M50
- Main mouse: Logitech MX Revolution
- Favorite switch: Cap B/S, BOX Navy
- Contact:
My apologies, I'm aware of the difference between Mini and New M but I was confused since this controller design is not a new one (except for some minor mounting and IC changes, it's been this way since Unicomp introduced Windows keys on their keyboards). In any case, my bad and purdeandrei has made a controller that supports 4th generation Model Ms such as the New Model M, however, I'm unsure about the matrix specification. Hopefully, he reads this and can chime in.
-
- Location: Romania
I made an open source controller design here:
https://github.com/purdeaandrei/overnum ... roller_1xb
Unfortunately you can't order it as it is from JLCPCB right now, cause of the chip shortage.
I have a batch that I ordered before the chip went out of stock, that I will be selling, but first I need to experiment with depositing some carbon/graphite onto the contact pads. The controllers work fine without carbon, I'm just a little concerned about longevity without carbon. There is definitely a reason why Unicomp deposits carbon onto its controllers, and why the same carbon is deposited onto the membrane contact pads in normal Model M membranes.
Feel free to reuse information from the above project for your own design. For instance it may be worth designing a variant with the rp2040 chip as it will likely be supported by qmk I think.
https://github.com/purdeaandrei/overnum ... roller_1xb
Unfortunately you can't order it as it is from JLCPCB right now, cause of the chip shortage.
I have a batch that I ordered before the chip went out of stock, that I will be selling, but first I need to experiment with depositing some carbon/graphite onto the contact pads. The controllers work fine without carbon, I'm just a little concerned about longevity without carbon. There is definitely a reason why Unicomp deposits carbon onto its controllers, and why the same carbon is deposited onto the membrane contact pads in normal Model M membranes.
Feel free to reuse information from the above project for your own design. For instance it may be worth designing a variant with the rp2040 chip as it will likely be supported by qmk I think.
-
- Location: Romania
See here for software:
https://github.com/qmk/qmk_firmware/pull/12688
The classic/ultraclassic software will likely be compatible with the new model M too, which I didn't have to test out. From what I heard, they haven't redesigned the membrane.
https://github.com/qmk/qmk_firmware/pull/12688
The classic/ultraclassic software will likely be compatible with the new model M too, which I didn't have to test out. From what I heard, they haven't redesigned the membrane.
Thank you, this is fantastic! This has all the hard parts of the board design done - getting the matrix landing pads and mounting screw holes in the correct location.pandrew wrote: ↑10 Sep 2021, 23:00I made an open source controller design here:
https://github.com/purdeaandrei/overnum ... roller_1xb
Unfortunately you can't order it as it is from JLCPCB right now, cause of the chip shortage.
I have a batch that I ordered before the chip went out of stock, that I will be selling, but first I need to experiment with depositing some carbon/graphite onto the contact pads. The controllers work fine without carbon, I'm just a little concerned about longevity without carbon. There is definitely a reason why Unicomp deposits carbon onto its controllers, and why the same carbon is deposited onto the membrane contact pads in normal Model M membranes.
Feel free to reuse information from the above project for your own design. For instance it may be worth designing a variant with the rp2040 chip as it will likely be supported by qmk I think.
My plan is to use an existing SMT32 board similar to a Blue Pill and have my custom board simply receive the Blue Pill plus lock light LEDs/resistors. My only concern is that the Blue Pill doesn't have castellations, so I need to mount it to the main board with headers. I'm not entirely sure there's enough clearance in the New Model M case for that.
Were I up for doing my own surface mount soldering, the RP2040 would indeed be perfect for the application. Unfortunately the Raspberry Pi Pico board that I could easily use at home is a couple GPIO pins short of driving a 16x8 matrix plus three lock lights.
Anyway, thanks for the tip, your design looks great. Its very unfortunate that its nearly impossible to source raw STM32 parts at the moment .
Also, as for the graphite on the landing pads, I've been wondering if simply tinning them with solder with be good enough. The main problem with leaving the bare landing pads exposed is that copper will eventually oxidize, leaving a poorly conducting surface.
Back in the days before solder masks on PCBs (early 1970s, I'm looking at you), tinning all the copper on a PCB with solder was a common work around to avoiding oxidation. So maybe that's good enough for here?
-
- Location: Romania
If you look at my design, you will see:
1) a square on the left, marking the area where a plastic hook holds the board on some, but not all unicomps. Apparently this hook is missing on the New Model M.
2) circles around the top row of LEDs. Those show the area where there are plastic pieces of the top case that are holding down the controller when the keyboard is closed.
You will probably want to avoid placing anything in those areas especially daughter-boards.
I don't know if there's enough space for a bluepill, but I can say, it's possible to mount a board onto another without castellated holes, you just need good plated-through holes, flux, and good soldering equipment. If the holes are not too small, you can make them wick through. You can see for an example the first couple compact beamspring controllers I've assembled here: download/file.php?id=62971
Also be careful with the hole sizes, there are two variants, for the new M use the larger holes.
1) a square on the left, marking the area where a plastic hook holds the board on some, but not all unicomps. Apparently this hook is missing on the New Model M.
2) circles around the top row of LEDs. Those show the area where there are plastic pieces of the top case that are holding down the controller when the keyboard is closed.
You will probably want to avoid placing anything in those areas especially daughter-boards.
I don't know if there's enough space for a bluepill, but I can say, it's possible to mount a board onto another without castellated holes, you just need good plated-through holes, flux, and good soldering equipment. If the holes are not too small, you can make them wick through. You can see for an example the first couple compact beamspring controllers I've assembled here: download/file.php?id=62971
Also be careful with the hole sizes, there are two variants, for the new M use the larger holes.
-
- Location: Romania
Jlcpcb has rp2040 in stock, so you don't have to solder them yourself. But it's also possible to solder qfn chips like that at home, as long as you have a hot air station, leaded solder, and good tacky flux. There's plenty youtube tutorials on that. I've done it myself successfully many times. I consider the current lack of qmk support a bigger hurdle but it will be solved eventually.
Jlcpcb already tins the pads if you select HASL. I'm mostly concerned about galvanic corrosion in humid climates, and the possibility of the metal from the membrane bonding with the pads, and I'm afraid of the metal from the membrane getting pulled off when you want to remove the controller. My spacesaver M had one of my controllers with HASL tinned pads for a few months, and hasn't died yet, but also I haven't opened it up yet to inspect. From some preliminary testing I've done I think I will use graphite spray with a stencil to deposit graphite onto the pads.
Jlcpcb already tins the pads if you select HASL. I'm mostly concerned about galvanic corrosion in humid climates, and the possibility of the metal from the membrane bonding with the pads, and I'm afraid of the metal from the membrane getting pulled off when you want to remove the controller. My spacesaver M had one of my controllers with HASL tinned pads for a few months, and hasn't died yet, but also I haven't opened it up yet to inspect. From some preliminary testing I've done I think I will use graphite spray with a stencil to deposit graphite onto the pads.
I've been meaning to get a hot air station for doing exactly this sort of work - maybe this'll be by motivation. Its getting nearly impossible to build much of anything at home without some soft of surface mount soldering capability.pandrew wrote: ↑10 Sep 2021, 23:42Jlcpcb has rp2040 in stock, so you don't have to solder them yourself. But it's also possible to solder qfn chips like that at home, as long as you have a hot air station, leaded solder, and good tacky flux. There's plenty youtube tutorials on that. I've done it myself successfully many times. I consider the current lack of qmk support a bigger hurdle but it will be solved eventually.
Jlcpcb already tins the pads if you select HASL. I'm mostly concerned about galvanic corrosion in humid climates, and the possibility of the metal from the membrane bonding with the pads, and I'm afraid of the metal from the membrane getting pulled off when you want to remove the controller. My spacesaver M had one of my controllers with HASL tinned pads for a few months, and hasn't died yet, but also I haven't opened it up yet to inspect. From some preliminary testing I've done I think I will use graphite spray with a stencil to deposit graphite onto the pads.
Or maybe I should adapt your design to a RP2040 and just have it professionally stuffed. Considering the saved assembly headache this might be the thing to do.