Hacking the Brother KM-950i to Knit Multi-Colour Patterns

I’ve previously discussed hacking the Brother KM-950i. The major limitation to this work was the hack only supported two-colour patterns. That’s like having a black and white printer when what I really wanted was a colour printer!

Two-colour patterns are quite simple. Each knit is represented in binary (0 or 1) for the two colours.

Output of a two colour pattern

So how could this possibly support multi-colour? It wasn’t until 2015 (2 years after my initial fork of the Brother KM-930e hack) when I had my first epiphany and a year later in 2016 when I actually knitted a multi-coloured thing. This upgrade to the original two-colour hack has been several years in the making!

The Brother file format has never been fully reverse-engineered. There were whole sections of the header data that was still unexplained. I scanned the machine’s service manual, various newsgroups and forums but nothing turned up.

Through trial and error I worked out what part of the header was storing height and width information. I also worked out how to turn off the pattern scanner.

Just an aside: patterns use to be uploaded to the knitting machine by a specially designed in-built scanner that accepts mylar sheets. Which is pretty cool considering it was built in the 1980s. However, when doing hacked knitting you had to wait for the scanner to feed the next ‘sheet’ even though no sheet was in the scanner, which interrupted progress.

Back to multi-colour… the real ‘ah-hah!’ moment was after I noticed a whole section of the header was always blank and always the same length as the number of rows in the pattern. No one seemed to know why.

 

 

Multi-colour patterns are special in a number of ways. The knitting machine carriage cannot hold more than two colours so a colour changer needs to be used which is attached to one end of the machine.

This means the carriage can only knit one colour at a time. It passes left→right and then back right→left to change colours. A number is displayed to tell you which colour to select next.

So how does the machine know which colour to display for each row in the pattern? The answer is in that blank space in the header – the one that’s always the same length as the number of rows in the pattern!

The process of converting a png image to a knitting pattern and the resulting knitted piece.

That moment when you have a theory and test it to see if it works and suddenly it all works… magical. When you realize multi-colour patterns have a row for each colour so need to be custom height and you’ve already figured out how to define height… double magical.

The I LOVE YOU virus binary in knitted form. The first multi-colour thing I made!

My son’s personalised baby blanket, knitted a few days after he was born. I also sell these.

 

 

 

 

 

 

So we now have a hack for knitting multi-colour patterns on a Brother KM-950i. I was more than a little excited when I finished my first multi-colour piece.

You’ll find my code here. Please note you’ll need to know how to use a command line, have python installed and have a hacked cable ready to use this. Full instructions available at Adafruit website. Instructions on using the multi colour hack specifically can be found in the github readme.

Stay tuned for an exploration of the different algorithms of multi colour! It’s a big blog post with lots of detail on double jacquard.

Enjoy! Any questions just ask in the comments below.

Sarah Spencer

I’m the crafty type. I enjoy lead lighting, knitting, crochet, screen printing… the list goes on! I also work in IT so I write code from time to time.

You can find me on Github and Twitter.

Latest posts by Sarah Spencer (see all)

2 Replies to “Hacking the Brother KM-950i to Knit Multi-Colour Patterns”

  1. I am really excited about your hack. I have a 950i and haven’t begun to explore all the things that I would like to do. I’m not that tech savvy, but willing to learn. Thank you so much for your post. XXX

Leave a Reply

Your email address will not be published. Required fields are marked *