bvanheu / stratatools

Stratasys EEPROM tool
BSD 3-Clause "New" or "Revised" License
88 stars 40 forks source link

dimension #3

Closed matt574 closed 5 years ago

matt574 commented 10 years ago

will this work for dimension canisters? also where does the eeprom uid come from, is that viewable with your software from the bin dump? im using the Arduino eeprom tool to dump it? (one more) sorry im new to all this, will this work on windows. im installing Ubuntu right now but i have python and the arduino eeprom tool running on one of my windows machines. thanks

bvanheu commented 10 years ago

Yes it should work on windows, although i didn't test it.

The EEPROM uid is hardcoded on the chip, not viewable with my software. You should read it using 1-wire protocol. If you can dump the canister, you can dump the EEPROM uid.

You can probably use an Arduino to talk with the EEPROM, i think there is a 1-wire library for Arduino.

SyntheticOxygen commented 10 years ago

I'm working on the same chip for a school project and I am really happy I stumbled across your code. The canisters have a DS2433 EEPROM chip.

I can easily dump a chip using a bus pirate by entering the following command.

1-Wire>(0x55)(1) 0xf0 0x0 0x0 r:512

In the example above 1-Wire> is the bus pirate shell, and everything between parentheses (these things) are Macro's which the bus pirate will parse as commands. In this case (0x55) is the Match Rom command, and (1) is an automatically created macro containing the chip's rom adres. 0xf0 is the command for reading the entire memory. Note that this has no parentheses because this is an opcode you send to the chip to tell that you want to read the entire memory, and not a macro you want the bus pirate to extend. The 0x0 0x0 are the two bytes of the target adres you want to start reading from, in my case i want to read the entire memory so i start at 0. The r: is a bus pirate command telling it how many bytes you want to read back, since the chip is 4096 bits i want to read (4096/8 = 512) 512 bytes.

The school I attend has a Stratasys Dimension SST 1200. What machine type is this (fox, quantum, or something else)? And does your code support these type of canisters (P430) that this machine uses.

If I can get the hang of using the bus pirate script API I might be able to write a python script that interfaces with a DS2433 chip, reads a dump an writes it in binary to a file so it can be used with your code.

Again thank you for this github project and all of your work, Sincerely, Vincent

bvanheu commented 10 years ago

I don't know what kind of machine a dimension SST 1200 is, but you can try to decrypt the EEPROM for each machine type until it works. I didn't these canisters for those specific machines, but it should work without problem. There is a checksum for decrypted contents that will validate the decryption is successful.

Using a BusPirate is probably the easiest option to read/write on the DS2433 chip, since, like you said, there is a 1-Wire interface. Making a python script to automatize everything would be a nice addition ;)

SyntheticOxygen commented 10 years ago

Thank you for your quick reply, I will try that.

As I forgot the by EEPROM uid i guess you guys mean ROM, since the DS24xx chips all have a 64bit lasered ROM code (8bit family, 48 bit serial number, and an 8bit CRC tester). This can be dumped using the following command. (0x33) is the Read ROM command. 1-WIRE>(0x33) Note that this would only work if there is only 1 devices on the bus (OneWire is a bus system that supports multiple chips on 1 bus) The EEPROM UID will also appear if you search for the devices on the bus using the following command. 1-WIRE>(0xF0)

bvanheu commented 10 years ago

Exactly ;)

From the Maxim website: The factory-lasered registration number that is a unique 48-bit serial number, an 8-bit CRC, and an 8-bit Family Code (23h).

HaveBlueXST commented 10 years ago

SyntheticOxygen, the Dimension SST is a P-class machine, so use the "-t prodigy" argument when using the stratasys-cli.py tool.

matt574 commented 10 years ago

could someone please give me a little help. i think ive got most of it but i have one problem or im missing something. i have all my information, i used create_binary.py to create my new bin. but its only 104 bytes rather than 512. what am i missing or doing wrong. thanks

HaveBlueXST commented 10 years ago

You're not doing anything wrong - everything after the 'STRATASYS' that you see in the dump of a cartridge is random garbage. 104 bytes is exactly what you want to generate!

matt574 commented 10 years ago

when i go to flash it i get an error saying it cannot flash because its not 512

HaveBlueXST commented 10 years ago

Use 104 rather than 512 when writing the generated dump back to the EEPROM.

es4m0n commented 7 years ago

Is it possibel to refill a dimension canister?

HaveBlueXST commented 7 years ago

es4m0n, yes, you can refill a Dimension cartridge. Have a look at my tutorial: http://haveblue.org/?p=1988