Close
0%
0%

Reverse Engineering the Janome Memory Cards

Reading the ROM on the Janome MemoryCraft 9000 memory cards

Similar projects worth following
Trying to read out Memory Card 101 to figure out how to have customized designs

.

  • Reading out the ROM - Part 3

    esophagoose11/17/2022 at 07:11 0 comments

    Looking at the binary read out again, I notice a couple of issues:

    1. Every 4 lines the text repeats itself - which is a 64 byte offset or that the A6 pin is not toggling

    2. Every 8 bytes are repeating (half of the line), A3 pin isn't toggling

    3. Sometimes the repeat parts aren't quite the same which indicates maybe a signal integrity issue (or power issue?)


    Though I feel like I'm getting close. This memory card has the alphabet on there and this is close to that:


    Found some incorrect pinouts in the firmware :(
    Fixed that and still having issues but closer to an alphabet!

    Every other letter is 0xF1.  Hmm .. pyembroidery makes is seem like I should be looking for 0x80 to indicate a control byte coming.

    With the fixed pinout, I added A-1 back in and see saw the wrong deltas but the start of the file REALLY looks like a header: "832 DATA EXP L V1.0 R1.0"
    I'll keep address A-1 in.

  • Reading out the ROM - Part 2

    esophagoose11/17/2022 at 06:03 0 comments

    So sew files only give deltas of movements, not absolute values so if my starting point or one byte is off, it messes up the whole image. With this, I decided to just plot the deltas, expecting on my card there to be a lot of back-and-forth movements.

    First I tested on the known good file (downloaded from the internet):

    Yep - I expected it to be a circle around the origin.


    And my readout:
    that makes no sense. Something is wrong. Which sucks because the file opens with:
    "832 DATA EXP L V" which looks like it could be a header. Then a little further along, there's this in a sea of non-ascii characters:
    which looks very much like a version string. So I was hoping it would be right.

    After some trial and error, I stopped using the A-1 address pin (which is suppose to be the LSB) and got this
    That looks good - because this card contains text, it makes since that there's only side to side and up and down motions. But converting to positions yield:

  • Reading out the ROM

    esophagoose11/17/2022 at 05:53 0 comments

    Flywired the memory card to 0.1" headers then jumpered them to an Arduino Mega.

    Here's the start of it:

    I'm using pyembroidery to parse the results. Looking online, everywhere said these should be *.sew files and thankfully pyembroidery has a parser so I can see how it works. 

    To test to make sure it works, Janome has some free design you can download and here's "Fairy and Ladybug": https://www.janome.com/inspire/Embroidery/fairy-and-ladybug/

    And I get this on my readout:
    Lovely. But it's far too few points. Looking at the source code of the parser, it seeks the file to a magic number 0x1D78. Looking at the file in a hex editor, it's all zeros until that address. On my readout, it looks like the data starts at 0x3000 so I set it to seek there. Interesting point, my filler bytes are all 0xFF not 0x00


    More points but not right. I'm expecting something like this (Memory 101 column):

    hmm ...

  • Finding the Pinout

    esophagoose11/15/2022 at 07:08 0 comments

    https://cdn.hackaday.io/images/6185371668403074614.file-1668403074585-589646513The culprit. It's a 34-pin PCMCIA card (type I?). On inside is a few pull-ups and decoupling cap and a non-descript ROM

    https://cdn.hackaday.io/images/6990101668403480474.file-1668403480437-523631299I ohm'd out power and ground and it didn't fit the standard pinouts for ROMs ICs or PC card / PCMCIA connectors. But after a bunch of digging and looking at old memory ICs, I found this:

    https://cdn.hackaday.io/images/4836591668403771644.file-1668403771630-260888991Power and ground matched up and after ohm'ing out the rest of the pins, I'm fairly confident it's the right part: - BYTE is hard-tied to ground means D8-D14 are high-Z and are not connected on the memory card - Pull-ups are present on CE and OE - A19 and A20 are not connected which makes sense, probably a lower capacity ROM


View all 4 project logs

Enjoy this project?

Share

Discussions

Jon wrote 02/04/2024 at 07:13 point

Could you upload the raw data from the card? I would like to look at.

  Are you sure? yes | no

catherinekasper262 wrote 12/05/2023 at 13:41 point

I've owned a Janome 9000 since I bought it new in 1998. It's a fabulous machine. I do have the reader/writer box, plus the scanner card that goes into it. It works with Customizer 2000 software on my windows 10 computer and I have a link to free download of that (below) plus written info that  I'd be happy to share. I would LOVE to see any and all improvements you have or can make to the embroidery functions of this machine. There's a market for selling anything you develop since it's regularly bought and sold on EBay and other online venues. If, by chance, you can tell me how to make any of the readily available cards erasable, readable, writable, that would be fantastic . 

Also, the largest area this machine can embroider is around 4" x 6". If that can be expanded somehow, you'd be regarded as a god.

PS. I only understand a small fraction of the work you've done but I thought I'd throw my 2 cents worth in here. 

https://web.archive.org/web/20180717081814/http://www.janome.co.jp/e/e_downloads/c2k150.html

  Are you sure? yes | no

Nurfaiz Foat wrote 09/23/2023 at 07:06 point

Hi, it is me again. Just some findings that I stumbled upon about the memory card

Apparently, there is an offered solution by Janome to transfer design from PC to empty card for Janome MC9000, MC5000 and MC5700.

You have to purchase the Janome Customizer 2000 software together with its reader/writer box and a blank memory card.

You can read it more about it here https://colab.research.google.com/drive/14OU45iYH2QD_xczZ33D1NeaiyF5jc8fq

And also, I found a video that explains how to run it in newer PC https://youtu.be/9d90zD4c0PI?si=0358VKYKl85lxJAG

According to the photo snippet, apart from .SEW format, it appears this machine family does read .BMP and .WMF

Hope this shed some light

  Are you sure? yes | no

Nurfaiz Foat wrote 09/21/2023 at 04:05 point

Hi Esophagoose,

I have recently refurbished a Janome MC8000 and have been exploring the idea of creating an alternative to the Janome cartridge, something like a PCB card for sideloading .SEW embroidery data, akin to a printer PCB card.

I believe the concept is similar to Gameboy Homebrew Cartridges.

I've been conducting research for some time now and came across your project.

By the way, I wanted to inform you that the sewing community in Pakistan has been maintaining a family of early 1990s and pre-2000 Janome embroidery machines. 

They have managed to salvage surplus cartridge develop their own embroidery pattern cards as seen in the video

https://youtu.be/x9r-jhBzAhA?si=xY4i7cZtxsusQV6B

  Are you sure? yes | no

esophagoose wrote 08/22/2023 at 03:59 point

The memory cards are read-only. I'd be making a new re-writeable card, graft the connector on to it, and give it a USB port so you can directly connect it to a computer. My next steps are to wire a logic analyzer onto the machine with the card in place and see how it reads the card. If you are able to instrument the scan-n-print to see what it sends, that'd be huge

  Are you sure? yes | no

RX HMP wrote 06/27/2023 at 01:26 point

Can we edit these cards? Have you progressed any further? Is there any blank off the shelf cards that could work? I resorted to the scan n print with blank card  but would like to completely replace the hardware with arduino but cant find nothing to compare with.

Great work.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates