ARM-based IBM Model M USB controller

poyovimenakafudraga

22 Sep 2020, 22:52

Hello there.

I was looking for a replacement controller for my '91 Model M for quite some time and, after some consideration and experimenting, I ended up doing my own project.

I'll keep it short here: it does the job, you can enter or exit bootloader mode with a single button next to the USB connector, it can also be configured to replace all common variations of the original controller. At this time, it's limited to 101/102 key (ANSI and ISO) and SSK keyboards, since they all share the same PCB and membrane configuration. It runs a fork of QMK, which should be a convenient solution.

At this point, I'm waiting for my pull request to be reviewed and (hopefully) merged into QMK repo. Guys maintaining the project seem to be pretty busy (there is ~300 open PRs), so it may take some time. Also I haven't dealt with git before so let's hope I've done everything right. I only occasionally do stuff in Java and Matlab (no, I'm not 90 years old).

I'm planning to open-source the project since it's pretty simple, but not before the firmware is sorted out. That will need a bit of work too, because I haven't documented every change as I went through revisions, schematics need some tidying up, BOM needs to be consolidated etc. I'd also like to write a manual on how to open your keyboard, see what type of controller you need and how to replace it.

And just a disclaimer: I don't want to be a direct competition to the existing Blusb project. This one has less features, and it will be accordingly cheaper to buy or make yourself. If you need BT connectivity, check that one out, it seems great, and it also supports more different types of the Model M.

So, I'm here for any kind of opinions or suggestions, e.g. is this piece of hardware even feasible for selling, are there any ways to make it more useful, is there anything I'm overlooking etc.

Here's the project repo. I definitely have to write a better documentation, but this should do for now.

I'm new here, sorry if I should have introduced myself somewhere beforehand.
This is the first revision which doesn't have the single-button bootloader feature. Picture is just to show different connectors.
This is the first revision which doesn't have the single-button bootloader feature. Picture is just to show different connectors.
rev_09b.jpg (2.82 MiB) Viewed 3640 times
Render of the last revision. Circuit is tested, I just still don't have any assembled PCBs that look like this.
Render of the last revision. Circuit is tested, I just still don't have any assembled PCBs that look like this.
ModelM_controller_rev11b_render_1.png (120.44 KiB) Viewed 3640 times

zzxx53

22 Sep 2020, 23:02

Very cool project!
Support for QMK is always nice.

User avatar
Redmaus
Gotta start somewhere

22 Sep 2020, 23:21

Awesome project indeed! Will the kicad files be available for public?

poyovimenakafudraga

22 Sep 2020, 23:32

Redmaus wrote:
22 Sep 2020, 23:21
Awesome project indeed! Will the kicad files be available for public?
Thanks!
Sure, I'll probably just zip them and upload them to github. I honestly don't think I can be bothered setting up git on a Windows machine (I'm doing most of my work on a PC, but I use Linux for git and MCU flashing). Again, no point in doing that before the QMK Configurator is set up. And I'll first have to assemble a couple of boards to see if the layout needs any tweaking. For example, default SOT23 footprint in KiCAD has tiny pads which are unnecessarily hard to solder, so I stretched them a bit.

User avatar
Redmaus
Gotta start somewhere

22 Sep 2020, 23:51

poyovimenakafudraga wrote:
22 Sep 2020, 23:32
Thanks!
Sure, I'll probably just zip them and upload them to github. I honestly don't think I can be bothered setting up git on a Windows machine (I'm doing most of my work on a PC, but I use Linux for git and MCU flashing). Again, no point in doing that before the QMK Configurator is set up. And I'll first have to assemble a couple of boards to see if the layout needs any tweaking. For example, default SOT23 footprint in KiCAD has tiny pads which are unnecessarily hard to solder, so I stretched them a bit.
Awesome! I love the USB-B connector, perfect replacement for an SDL cable. Any estimate on cost of materials?

poyovimenakafudraga

23 Sep 2020, 00:14

Well, it's hard for me to estimate because I've used components from variuos sources, which were bought in different amounts, some parts I already had etc. I should make a nice BOM with multiple sources and prices listed. Also the important factor are the outrageous shipping prices to my country (they went up during the pandemic).

Anyway it shouldn't be too much, even with small amounts and locally bought parts it shouldn't be over 10€ a piece.
To give you an idea, the most expensive part is the PCB itself (if I go to the local manufacturer it would be 5-6€ a board plus some initial tooling fees. Prototype PCBs from China are much cheaper but the shipping is expensive for me).
Only other "expensive" part is the STM32 MCU, it usually goes from 2 to 3€. Other components are under 1€, but they add up a bit.

kmnov2017

23 Sep 2020, 00:20

poyovimenakafudraga wrote:
23 Sep 2020, 00:14
Well, it's hard for me to estimate because I've used components from variuos sources, which were bought in different amounts, some parts I already had etc. I should make a nice BOM with multiple sources and prices listed. Also the important factor are the outrageous shipping prices to my country (they went up during the pandemic).

Anyway it shouldn't be too much, even with small amounts and locally bought parts it shouldn't be over 10€ a piece.
To give you an idea, the most expensive part is the PCB itself (if I go to the local manufacturer it would be 5-6€ a board plus some initial tooling fees. Prototype PCBs from China are much cheaper but the shipping is expensive for me).
Only other "expensive" part is the STM32 MCU, it usually goes from 2 to 3€. Other components are under 1€, but they add up a bit.
Have you checked JLCPCB.com, individual PCBs with them cost a few cents a piece. They also offer an assembly service which is basically as good as free...

poyovimenakafudraga

23 Sep 2020, 00:25

Have you checked JLCPCB.com, individual PCBs with them cost a few cents a piece. They also offer an assembly service which is basically as good as free...
Yup, but this board exceeds 100x100mm limit for $2 / 5pcs. And the cheapest shipping option I have is Fedex IP which is $23 if I remember correctly. Anyway, JLC is great for the price, I got the prototype batch from them.

User avatar
Redmaus
Gotta start somewhere

20 Oct 2020, 04:44

Hey! Any update on this project?

poyovimenakafudraga

20 Oct 2020, 12:35

Hey. I'm just gonna throw some photos in.
I got the PCBs just a couple of days ago and the only thing left to do is to finally assemble a whole board and test it out. And, as a bonus task, to figure out how to implement a cheaper secondary MCU (the one that handles resetting the STM32) instead of the Attiny.

I'm glad that anyone finds this interesting, it'll make me finish it after several months of stalling.
Compared to the original PCB which is a smaller variant.
Compared to the original PCB which is a smaller variant.
20201020_081546.jpg (2 MiB) Viewed 3347 times
The button doesn't reach to the outside but it can be pressed with a pen for example. I couldn't do much better with given space and standard components.
The button doesn't reach to the outside but it can be pressed with a pen for example. I couldn't do much better with given space and standard components.
20201020_081915.jpg (1.51 MiB) Viewed 3347 times
Micro USB daughterboard. There is also one for USB C but I haven't got any connectors yet. I cheaped out a bit so these order numbers are all over the place.
Micro USB daughterboard. There is also one for USB C but I haven't got any connectors yet. I cheaped out a bit so these order numbers are all over the place.
20201020_093323.jpg (1.8 MiB) Viewed 3347 times

User avatar
an_achronism

28 May 2021, 07:51

How's this going as of now? Still struggling to source STM32F303s?

User avatar
Muirium
µ

28 May 2021, 10:14

an_achronism wrote:
28 May 2021, 07:51
How's this going as of now? Still struggling to source STM32F303s?
Thought you weren't into USB. I have one of these lying spare, as you know. Runs TMK/QMK as it's Teensy compatible. I used to run Soarer's Controller on it myself.

User avatar
an_achronism

28 May 2021, 10:16

Muirium wrote:
28 May 2021, 10:14
an_achronism wrote:
28 May 2021, 07:51
How's this going as of now? Still struggling to source STM32F303s?
Thought you weren't into USB. I have one of these lying spare, as you know. Runs TMK/QMK as it's Teensy compatible. I used to run Soarer's Controller on it myself.
I'm generally not, but for some reason I fancy sticking a controller replacement into an M just to fiddle with remaps etc. I'll message you, hahah...

poyovimenakafudraga

28 May 2021, 12:05

an_achronism wrote:
28 May 2021, 07:51
How's this going as of now? Still struggling to source STM32F303s?
Yes, there are literally none to be found. All the work was finished ages ago and I have 3 or 4 assembled and working boards, that's how many MCUs I had on hand. I've been lazy about writing the documentation but that's obviously not the biggest problem of this project.

I was thinking about redoing the project around a different MCU but STM32F seemed like such a perfect choice. I coud have chosen F072 instead of F303 but they now have the same availability problem. Also my initial intention was to just retrofit my own keyboard(s), and now that it's done there isn't much of a motivation left to do everything over again. If nothing else, making prototypes isn't cheap at all (although much cheaper than just a couple of years back).

Adriaanvn

Yesterday, 13:17

I'm reviving this thread. I have about 5 Model Ms, which I would like to give a new lease on life, by giving them an USB interface. (I'll maybe sell some extras - I don't need all 5 of them.) Of course, QMK comes to mind. Starting there, I have found a few candidates, which, unfortunately, use chips or boards that are no longer available. This is what I found (leaving out bluetooth / battery powered solutions):

Model M 101 Teensy2 is based on a Teensy 2 (there is another, which used Teensy++2), which are no longer in production. The current Teensy 4.0 is not (yet) supported by QMK, but as Teensy evolves, so did the price. This platform may no longer be suitable as a keyboard controller.

Model M Type C is based on an AT90USB1286-AU. Nice design, but the PCB is laid out 'wrongly': the USB C connector faces toward the inside and will need an extension cable and something to attach the connector to the opening available. USB C receptacles are generally SMD mounted - not something for a 2 kilogram keyboard. There is no elegant support for the boards that have 12 pin ribbon cables (instead of 8+4 in two connectors).

USB interface for IBM Model M keyboard is based on an ATmega32U4-MU. It eliminates the drawbacks like extra cables and no SMD for the USB connector, but does need two multiplexer 74HC165 chips (which, as I understand, make it impossible to put QMK in programming/flashing mode by using keystrokes).

Model H (with an informative blog entry.) Version 0.2 uses an ATMEGA32U4-AU and a 74HC595 to compensate for the low number of I/O pins on the microcontroller. No support of the 'newer' Model Ms with the 8 and 4 pin leads grouped together in a 20 pin connector.

Yacobo: based on a development board "Blue Pill" with an STM32F103C8T6. The board was developed by LeafLabs, but copied (in China) by numerous others. There are fake ones sold by the usual suspects (eBay, Amazon, AliExpress) but there are also good ones to be had for under € 10. A separate USB programmer to flash a bootloader is needed once (about € 8). This could be built on a piece of development board without needing to order PCBs.

Lastly, there is the one by Nidzo Tomic (aka poyovimenakafudraga on this forum and OP for this thread):

Yugo-M-controller-project which uses a STM32F303. It combines the advantages of the ones listed above, coupled with simplicity (and reliability?). BUT: it seemed dead. I added a comment on an already raised issue on github and Nidzo responded:

I need to re-figure out the PADAUK chip flashing. I made a custom programmer for them, but haven't used it since 2021. That's one of the reasons why compiling the documentation will take some work. That chip is used to switch STM32 into bootloader mode. 'Unconventional' to say the least, but it's cheap and it works.

There could be more work to get it to 'production' state than I hoped. He also had a change of plans: I definitely don't indent to sell the PCBs as I did before. Let's hope he does get around to documenting or at least put the gerber files for the PCB on github. I'm not sure the larger design (the PCB seems higher than most others) will fit most Model Ms.

I went ahead and spent some time on finding parts (in Europe). The 16 pin flexible print connector (6-520415-6 by TE Connectivity) is out of stock with Mouser. Buying stuff from DigiKey is expensive due to import regulations. Buying from TE directly did not work immediately. The rest, including the STMs or Atmels, does not seem to be problem (anymore).

Who else has an Model M sitting on a shelf and would like to upgrade to USB? (And join me to select one of the solutions above and share costs?)

BTW - I'm new here. When it comes to keyboards this explains my love for Model Ms and what I did to extend their lives.

poyovimenakafudraga

Yesterday, 19:14

Alrighty, let's get back to work!

I just managed (after some hassle) to fire up the virtual machine from which I did QMK forking and chip programming. That's good news. PADAUK programming won't be a problem. An ATTiny chip can be used instead (see those two jumpers by the SOP8?). The PADAUK is just way cheaper. This secondary chip just sends low/high on the appropriate STM32 pins when the button is pressed. Nothing more than an LED blinker program.

To summarize the current situation:
  • I have 3 assembled boards (connectors need to be soldered on, but the electronics are functional). I can sell two of them – third one would be a backup for my own Model M.
  • I've got a surplus of 5 STM32s. That's how many more boards I can assemble relatively quickly.
  • I've got a bunch of all other supplies, including connectors, buttons, PADAUKs etc. as well as 25-ish manufactured PCBs.
Being reminded of how much parts I've got in stock, I think I should take some days off, assemble a batch and list it on Tindie.

Let me know what you think – what would be the best course of action?
Attachments
20240422_184643.jpg
20240422_184643.jpg (145.85 KiB) Viewed 105 times

Post Reply

Return to “Workshop”