ARM-based IBM Model M USB controller
-
- Location: Serbia
- Main keyboard: IBM Model M
- Favorite switch: ALPS blue
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.
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.
- Redmaus
- Gotta start somewhere
- Location: Near Dallas, Texas
- Main keyboard: Unsaver | 3276 | Kingsaver
- Main mouse: Kensington Slimblade
- Favorite switch: Capacitative Buckling Spring
- DT Pro Member: -
- Contact:
Awesome project indeed! Will the kicad files be available for public?
-
- Location: Serbia
- Main keyboard: IBM Model M
- Favorite switch: ALPS blue
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.
- Redmaus
- Gotta start somewhere
- Location: Near Dallas, Texas
- Main keyboard: Unsaver | 3276 | Kingsaver
- Main mouse: Kensington Slimblade
- Favorite switch: Capacitative Buckling Spring
- DT Pro Member: -
- Contact:
Awesome! I love the USB-B connector, perfect replacement for an SDL cable. Any estimate on cost of materials?poyovimenakafudraga wrote: ↑22 Sep 2020, 23:32Thanks!
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.
-
- Location: Serbia
- Main keyboard: IBM Model M
- Favorite switch: ALPS blue
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.
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.
-
- Location: Germany
- Main keyboard: Model F77
- Main mouse: Logitech MX Master 3S
- Favorite switch: Alpaca V2
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 wrote: ↑23 Sep 2020, 00:14Well, 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.
-
- Location: Serbia
- Main keyboard: IBM Model M
- Favorite switch: ALPS blue
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.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...
- Redmaus
- Gotta start somewhere
- Location: Near Dallas, Texas
- Main keyboard: Unsaver | 3276 | Kingsaver
- Main mouse: Kensington Slimblade
- Favorite switch: Capacitative Buckling Spring
- DT Pro Member: -
- Contact:
Hey! Any update on this project?
-
- Location: Serbia
- Main keyboard: IBM Model M
- Favorite switch: ALPS blue
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.
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.
- an_achronism
- Location: Scotland
- Main keyboard: IBM 5150 Personal Computer keyboard (1981)
- Main mouse: Gigabyte GM-M6880X
- Favorite switch: Capacitive buckling spring (IBM F models)
- Contact:
How's this going as of now? Still struggling to source STM32F303s?
- 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: µ
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.an_achronism wrote: ↑28 May 2021, 07:51How's this going as of now? Still struggling to source STM32F303s?
- an_achronism
- Location: Scotland
- Main keyboard: IBM 5150 Personal Computer keyboard (1981)
- Main mouse: Gigabyte GM-M6880X
- Favorite switch: Capacitive buckling spring (IBM F models)
- Contact:
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...Muirium wrote: ↑28 May 2021, 10:14Thought 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.an_achronism wrote: ↑28 May 2021, 07:51How's this going as of now? Still struggling to source STM32F303s?
-
- Location: Serbia
- Main keyboard: IBM Model M
- Favorite switch: ALPS blue
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.an_achronism wrote: ↑28 May 2021, 07:51How's this going as of now? Still struggling to source STM32F303s?
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).