Unicomp New Model M Matrix - Has anyone figured this out?

handyman

10 Sep 2021, 02:41

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.

User avatar
Sheepless

10 Sep 2021, 12:38

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.

User avatar
Muirium
µ

10 Sep 2021, 14:27

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? :roll:

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.

User avatar
clickykeyboards

10 Sep 2021, 14:56

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)
2021 M-star. Replacement for 1988 model M controller
2021 M-star. Replacement for 1988 model M controller
IMG_9167.jpg (781.01 KiB) Viewed 3084 times

...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.

User avatar
zrrion

10 Sep 2021, 14:57

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.

handyman

10 Sep 2021, 17:01

clickykeyboards wrote:
10 Sep 2021, 14:56
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)

IMG_9167.jpg


...but Wendell has already done some work with the Unicomp 2021 Mini M

https://forum.level1techs.com/t/level1- ... ion/175331
This project was the inspiration for making a New Model M replacement controller.

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.

User avatar
Muirium
µ

10 Sep 2021, 17:55

zrrion wrote:
10 Sep 2021, 14:57
The matrix isn't "chopped up" it's just way bigger than needed.
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…

User avatar
sharktastica

10 Sep 2021, 19:20

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):
handyman wrote:
10 Sep 2021, 02:41
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.
Correct, it's a 16x12 matrix
handyman wrote:
10 Sep 2021, 02:41
Has anyone decoded the New Model M matrix yet?
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/

handyman

10 Sep 2021, 21:02

sharktastica wrote:
10 Sep 2021, 19:20
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):
handyman wrote:
10 Sep 2021, 02:41
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.
Correct, it's a 16x12 matrix
handyman wrote:
10 Sep 2021, 02:41
Has anyone decoded the New Model M matrix yet?
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.

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?

User avatar
sharktastica

10 Sep 2021, 22:05

handyman wrote:
10 Sep 2021, 21:02
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.

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?
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.

pandrew

10 Sep 2021, 23:00

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.

pandrew

10 Sep 2021, 23:01

Oh by the way, the controller has an extra contact pad that is not on the membrane. The matrix is 16x8

pandrew

10 Sep 2021, 23:04

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.

handyman

10 Sep 2021, 23:14

pandrew wrote:
10 Sep 2021, 23:00
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.
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.

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?

pandrew

10 Sep 2021, 23:32

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.

pandrew

10 Sep 2021, 23:42

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.

handyman

11 Sep 2021, 03:27

pandrew wrote:
10 Sep 2021, 23:42
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.
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.

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.

Post Reply

Return to “Workshop”