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 3440 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 3440 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 3147 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 3147 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 3147 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).

Post Reply

Return to “Workshop”