Reverse engineering Janome embroidery cards (part 3)
I did most of the work in this post back in the summer; I’ve only just got round to writing it up. In part 2, I’d attempted to use a Pi Pico to emulate the ROM in the memory cards, without any luck, and had ordered some chips to write to directly.
Writing flash chips
This proved to be more of a hassle than I was expecting. I cobbled together a circuit with an Arduino to write to the chips. Eventually I realised that the chips I’d got from ebay were faulty; I couldn’t reliably read back the data that had been written to them. One just seemed to have a few bad areas on it, so I was reasonably confident my circuit was OK. I ended up buying a couple more chips from a UK seller, and was able to successfully write to these.
(One thing to note with them is that they’re quite slow to erase - it can be ~20 seconds after sending the erase command before it completes).
Having got a chip written with a copy of one of the official cards, I tried connecting it to the machine with the connector I’d bought of AliExpress. This didn’t work; the machine behaved in the same crazy way as with the Pi Pico.
I concluded that the connector wasn’t making a reliable connection with the machine.
At this point my plan was to wait for a common official card to come up on eBay, desolder its connector and use that.
Customizer 2000
As I mentioned in the first post, Janome made a Customizer 2000 for their successors to the Memory Craft 8000. These took physically identical cards to the 8000, but had a larger capacity. I think the 8000 cards could be used in the newer models, but not vice versa.
I’d had an eBay search for one of these for ages, but they came up rarely and were either in the USA, or silly money. Back in August one came up, which I got for £15.
I’d previously managed to find a copy of the software for this on the Wayback Machine’s copy of Janome’s website, via a comment on the hackaday project. This seemed to work fine under Wine, so I was reasonably confident I’d be able to get the Customizer talking to my laptop once I’d bought a USB to Serial converter.
The Customizer 2000 came with a 4Mbit card (labelled “Card for Scanner”). The software allows you to save multiple designs and write them to a physical card via the reader. Usefully it also allows you to save the combined (and presumably processed) designs to a ROM image which you can later write to the physical card.
This all proved surprisingly easy to set up. I tried dumping one of my dumps of the official cards to the scanner card, and remarkably this worked (despite it being 1/4 the size of the image the software was presumably expecting).
Custom designs
I’d previously made some progress figuring out the format of the data on the official cards, and had identified where the start and end address of each colour block for each design was stored.
I modified the pyembroidery to create a minimal (and very rough) script to overwrite one of the images on a dump of one of the official cards. The code for this is here.
I had some trouble with getting the design in the right place on the machine (and some horrid crunchy noises as it ran beyond its limits).
The script is very minimal and rough, but it does work:

(Possible) next steps
TBH I’ve spent far, far too long on this project. If I do anything further, it’d be interesting to try and get either the flash chips or (ideally) the Pi Pico working to drive the sewing machine.
I originally thought the Pico wasn’t working because it was taking too long for it to initalise on power up, but given the flash chips didn’t work I suspect the connector may have been the issue. It’s annoying that the connectors are no longer available; if I can get a common official card cheaply I may sacrifice it for its connector to see if this works. If it does that would make something like the A8PicoCart, where you copy the game/design to a mass storage device, and it outputs it to the host machine, potentially feasible.
On the software side, my very, very, shonky code needs a proper clean up. It’d be good to remove
the dependency on an official rom image, but I think that would be very difficult. As well as the designs, the user interface and (I suspect) some of the firmware is on there.
I suspect I could get a little further with the rom, to potentially handle the number of colours in a design better (and perhaps handle >6 colours).
If I can’t get it working with a custom circuit, it’d be good to figure out how to drive the Customizer 2000 from Python, to remove the dependency on the Easy Import software. I did have a brief go at intercepting the serial communications in Linux, but didn’t get very far.