Code Monkey home page Code Monkey logo

stratatools's Introduction

Build Status

Stratatools

This is software to read and write data on a Stratasys cartridge EEPROM.

You can use this code to 'refill' an EEPROM or build a cartridge EEPROM image from scratch.

Installation

This tool requires Python 2.7.

You can simply installs Stratatools using pip:

$ pip2 install stratatools

or from source:

$ python2 ./setup.py build
$ python2 ./setup.py install

It will automagically pull the dependency:

Cartridge Usage

Print information about a cartridge

You have to provide the machine type (fox, prodigy, quantum, etc.) and the EEPROM uid, in hexadecimal form without the '0x' prefix. Note that the EEPROM uid to use ends with "23" (which is the family code for the EEPROM device).

$ stratatools eeprom_decode \
    --machine-type fox \
    --eeprom-uid 2362474d0100006b \
    cartridge_dump.bin

The EEPROM uid should starts with the family code, something like '23' or 'b3'. It is then followed by a 6 bytes id then finish with a checksum.

On Linux, it is the content of the id pseudo file.

If you provide the '-D' option, the input file will be interpreted as an ASCII formatted file, containing lines of the form produced by the printers 'er' command, namely:

000096: 00 00 00 00 00 00 00 00 53 54 52 41 54 41 53 59   ........STRATASY

Otherwise, the input file must be a binary file.

Create your own cartridge

By providing all the required information, this software will provide a new valid EEPROM image that you can write to a cartridge.

First, create a new EEPROM proto using the eeprom_create command.

You can customize any parameters in the following example:

$ stratatools eeprom_create \
    --serial-number 1234.0 \
    --material-name ABS \
    --manufacturing-lot 1234 \
    --manufacturing-date "2001-01-01 01:01:01" \
    --use-date "2002-02-02 02:02:02" \
    --initial-material 11.1 \
    --current-material 22.2 \
    --key-fragment 4141414141414141 \
    --version 1 \
    --signature STRATASYS > cartridge.txt

Alternatively, create a text file cartridge.txt with the following content:

serial_number: 1234.0
material_name: "ABS"
manufacturing_lot: "1234"
manufacturing_date {
  seconds: 1436540129
}
last_use_date {
  seconds: 1436540129
}
initial_material_quantity: 42.0
current_material_quantity: 42.0
key_fragment: "4141414141414141"
version: 1
signature: "STRATASYS"

All the dates are in international format: yyyy-mm-dd hh:mm:ss.

You can then use eeprom_encode to create the binary file used by the printer.

$ stratatools eeprom_encode \
    --machine-type fox \
    --eeprom-uid 2362474d0100006b \
    cartridge.txt cartridge.bin

You have to provide the correct machine-type and the valid eeprom uid.

The EEPROM uid should starts with the family code, something like '23' or 'b3'. It is then followed by a 6 bytes id then finish with a checksum.

The generated file will be 113 bytes in size. You can complete the file with zeroes if you want to make it 512 bytes long, the usual EEPROM size.

Supplying the '-D' option will result in an output file containing a double-quoted string of space delimited bytes, expressed in hexadecimal.

Otherwise, the output will be a binary file.

You can also pipe the two commands together:

$ stratatools eeprom_create \
    --serial-number 1234.0 \
    --material-name ABS \
    --manufacturing-lot 1234 \
    --manufacturing-date "2001-01-01 01:01:01" \
    --use-date "2002-02-02 02:02:02" \
    --initial-material 11.1 \
    --current-material 22.2 \
    --key-fragment 4141414141414141 \
    --version 1 \
    --signature STRATASYS | \
    stratatools eeprom_encode -t fox -e 2362474d0100006b > cartridge.bin

List supported material

If you want a list of all known material, simply run the following:

$ stratatools material --list
0       ABS
1       ABS_RED
2       ABS_GRN
[...]

Use those names when creating a new cartridge.

Errors

If you have an invalid checksum error, the code was not able to decrypt your EEPROM correctly. Verify that your EEPROM file is valid, double check the EEPROM uid.

If it still doesn't work, fill a ticket on Github.

Automation with a Raspberry Pi

A helper script is available if you wish to automatically rewrite cartridges using a Raspberry Pi. The script will set the manufacturing date to 'today'. It will also randomize the serial number and set the current material qty to the initial material quantity.

You will need a working 1wire setup on the Raspberry Pi, see below on how to do that.

To simply refill a cartridge, launch the helper script specifying the printer type:

$ stratatools_rpi_daemon prodigy

You can also provide a cartridge template:

$ stratatools_rpi_daemon --template ./abs_cartridge.txt prodigy

Configuration Code

This script is able to generate configuration code for your printer. There are actually 3 different codes available:

  • configuration
  • setup
  • clear

We're only able to generate configuration code for now. These codes can unlock specific features of your printer.

Information about a configuration code

To decode a configuration code, simply run the following:

$ stratatools setupcode_decode AAAA-BBBB-CCCC-DDDD

Create your own configuration code

You can create your own configuration code to enable specific features.

For example:

$ stratatools setupcode_create \
    --serial-number 1234 \
    --system-type 900mc \
    --type configuration \
    --envelope-size large \
    --build-speed 1x \
    --material ABS-M30 NYLON PC-ABS \
    --version 1

Will generate a configuration code for a printer type 900mc.

For help on available values, you can run the following:

$ stratatools setupcode_create --help

Interesting fork / rewrite

Interfacing with the cartridge

Bus-pirate

  • Use the MISO wire (orange) for the data
  • Use the GROUND wire (black) on the ground
  • Connect the 5V (grey) on the pull-up voltage input (blue)

Use the following schematic as a reference:

Bus pirate

    grey    >---+
                | (connected together)
    blue    >---+

                 eeprom
                +------+
    orange  >---| Data |
                |      |
    black   >---| Gnd  |
                +------+

Two helper scripts are available to interact with the BusPirate.

To read an eeprom:

$ stratatools_bp_read /dev/ttyUSB0 eeprom.bin

To write an eeprom:

$ stratatools_bp_write /dev/ttyUSB0 eeprom_new.bin

Raspberry Pi

  • Use the GPIO 4 (pin 7) for the data
  • Use any GROUND (pin 6,9,14,20 or 25) on the ground
  • Use the 5V Power (pin 2) to pull-up the data line using a ~4.7k resistor

Use the following schematic as a reference:

Raspberry pi

     5V     >---+
                |
           4.7k Z    eeprom
                |   +------+
    GPIO4   >---+---| Data |
                    |      |
    GROUND  >-------| Gnd  |
                    +------+

Then you'll need to probe 2 kernel modules:

$ sudo modprobe w1-gpio gpiopin=4
$ sudo modprobe w1-ds2433

You might need to change the device-tree overlay. Update the following file /boot/config.txt, and add this line at the end:

dtoverlay=w1-gpio,gpiopin=4

If detection is slow on the bus, you can try to reduce the timeout. Create the following file /etc/modprobe.d/wire.conf with the following:

options wire timeout=1 slave_ttl=3

You should now see your eeprom appearing:

$ ls -l /sys/bus/w1/devices/w1_bus_master1
23-xxxxxxxxxxxx/
[...]

To print the eeprom uid:

$ xxd -p /sys/bus/w1/devices/w1_bus_master1/23-xxxxxxxxxxxx/id
23xxxxxxxxxxxx

To read an eeprom:

$ cp /sys/bus/w1/devices/w1_bus_master1/23-xxxxxxxxxxxx/eeprom ~/eeprom.bin

To write an eeprom:

$ cp ~/eeprom_new.bin /sys/bus/w1/devices/w1_bus_master1/23-xxxxxxxxxxxx/eeprom

DS2432

To interface with a DS2432, you'll need to follow the steps found in this project: https://github.com/bvanheu/ds2432-linux .

Acknowledgement

Special thanks to the Stratahackers group. Without them, nothing like this could be possible. They provided moral and technical support!

Thanks to ashanin for the uPrint support. Thanks to ajtayh for ASA and ULT1010 in setupcode.

stratatools's People

Contributors

256ff avatar bvanheu avatar dschiedsch avatar eychei avatar havebluexst avatar mayrthom avatar nkaminski avatar nneonneo avatar silvood avatar texane avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stratatools's Issues

Invalid crypted content checksum

I have been working on getting this to work all week and am now stuck at this point. any ideas? for Fortus 400 and 900 machines. Tried using fox ,fox2 for machine type as well. I have the latest version of Python-crypto
wtf

Exception: cannot copy scratchpad

Hi.

By using BusPirate, I've managed to read the cartridge and decode the information.
Then I tried to generate a new binary for my cartridge.

But when I try to write it, I get the following exception:
Exception: cannot copy scratchpad, scratchpad is (binary bytes, ending in many 0xFF's) but i sent (binary bytes, none of them is 0xFF's)

Have you seen this happening before? Thanks

stratasys-ng is broken in a specific case

See the next lines:

$ ./stratasys-cli.py info -t prodigy -e 23747906010000d0 -i test.bin -u -r
Traceback (most recent call last):
File "./stratasys-cli.py", line 168, in 
app.run()
File "./stratasys-cli.py", line 46, in run
args.func(args)
File "./stratasys-cli.py", line 133, in command_info
cartridge = m.decode(machine_number, args.eeprom_uid, cartridge_crypted)
File "/home/parallels/stratasys/stratasys/manager.py", line 76, in decode
cartridge_packed = self.decrypt(machine_number, eeprom_uid, cartridge_crypted)
File "/home/parallels/stratasys/stratasys/manager.py", line 220, in decrypt
if self.checksum.checksum(cartridge_crypted[0x00:0x40]) != struct.unpack("<H", cartridge_crypted[0x46:0x48])[0]:
struct.error: unpack requires a string argument of length 2

ABS_S Not Working

I have generated a new binary for ABS_S and filled the rest of the binary with 0's to complete the 512 bytes. When I try using this eeprom in my machine I get "Support not valid" error. I am able to refill the regular ABS fine. I have tried incrementing the support serial number twice now. Any ideas why this isn't working? Is there anyone who can confirm that it does work?

Fortus 250mc

heres my eeprom file
uid: 2378ca240200003f
the machine is a fortus 250mc and I am getting the invalid checksum error
I will get you any other info needed
thank you for any help.

eeprom.zip

BP_Read.Py Windows Error

After installing Python 2.7.8, pycrypto, and pyserial on my Windows installation the read script will find my eeproms and report their 8 bit ID but after that I get the following error:

C:\Users\Ben\Desktop\stratasys-master\helper>python bp_read.py COM3 eepromRead
Device found: 0x23 0x6E 0xBC 0x60 0x01 0x00 0x00 0x2D
Reading...
Done!
Traceback (most recent call last):
File "bp_read.py", line 147, in
f.write(hex2bin(memory))
File "bp_read.py", line 40, in hex2bin
return hexadecimal.replace("0x", "").replace(" ", "").decode("hex")
AttributeError: 'NoneType' object has no attribute 'replace'

Is there something I'm doing wrong? If I'm not, is there any chance at fixing it?

refill Fortus MC900

hallo refill experts,
I am trying to create a eeprom(ds2433) for an Fortus 900MC with eeprom_create.... Therefore I use fox2 as maschine type, right? But what value for key-fragment I have to enter? What is the meaning of the parameter key-fragment?
Thank you for your help!

Array out of range error....

I have python 2.7.9 and pycrypto now installed.

I have a Fortus 250, not sure which cartridge "type" to use? Fox / Prodigy?

I'm now running the stratasys-cli command and getting an error, did you resolve your problem?

pi@raspberrypi ~/Downloads/stratasys-master $ sudo python stratasys-cli.py eeprom -t fox -e 0000016c560823 -i random_file.bin
Traceback (most recent call last):
File "stratasys-cli.py", line 228, in
app.run()
File "stratasys-cli.py", line 47, in run
args.func(args)
File "stratasys-cli.py", line 125, in command_eeprom
self._eeprom_info(args)
File "stratasys-cli.py", line 167, in _eeprom_info
cartridge = m.decode(machine_number, args.eeprom_uid, cartridge_crypted)
File "/home/pi/Downloads/stratasys-master/stratasys/manager.py", line 73, in decode
cartridge_packed = self.decrypt(machine_number, eeprom_uid, cartridge_crypted)
File "/home/pi/Downloads/stratasys-master/stratasys/manager.py", line 213, in decrypt
key = self.build_key(cartridge_crypted[0x48:0x50], machine_number, eeprom_uid)
File "/home/pi/Downloads/stratasys-master/stratasys/manager.py", line 235, in build_key
key[0] = ~cartridge_key[0] & 0xff
IndexError: bytearray index out of range
pi@raspberrypi ~/Downloads/stratasys-master $

index out of range.... :(

No module named cartridge

I'm trying to run stratasys-cli.py to read the info on a cartridge I dumped but I'm running into a problem.
The command I'm running is "python3 ./stratasys-cli.py eeprom -t prodigy -e b60000014b406523 -i ~/eeprom-2365404b010000b6.bin" and this is the error:
Traceback (most recent call last):
File "./stratasys-cli.py", line 36, in
from stratasys import manager
File "/home/pi/stratasys/stratasys/manager.py", line 29, in
import cartridge
ImportError: No module named cartridge

No EEPROM data

Have been using this tool for fortus 250mc and dimension series for quite some time .

Now, I was trying to refill a 450mc Chip, I was able to read and the id is "b3-xxxxxxx" usually it will be "23-xxxxxx" and it doesn't have eeprom in it it has "rw" , when i tried to read rw it is showing " ff ... " only. so i was not able to get the eeprom data copied for editing the material percentage
Is there a way refill the chip?

I am using Rasp pi 3 for refilling the chip

Stratasys Fortus 450mc

Has anyone had any luck reading/writing the 450mc chips? I've noticed they are slightly different in how they store everything (UID is 23-xxxxxxxx, no eeprom file but a "rw" file, "rw" file shows as all f values when viewed with xxd). I also understand that they use SHA-1 encryption on these.

If anyone can help point me in the right direction, I would appreciate any help available.

Thanks!

bp_read.py error

Hi,
I'm trying to use a bus pirate v3 to read one of my material cartridge chips and I am getting this error:
Traceback (most recent call last):
File "./bp_read.py", line 135, in
print("Device found: " + rom_sequence)
TypeError: cannot concatenate 'str' and 'NoneType' objects

Am I missing something obvious here to fix it?

Problems encrypting ABS_S cartridge

I have a DS2433 EEPROM that I read the data from.
When i run the decryption, I get:

Exception: invalid content checksum: should have 0x239e but have 0x29d3

Running parse_binary.py
Traceback (most recent call last):
File "./bin/parse_binary.py", line 124, in
print("Material type: " + material_id_to_name[material_type] + " ("+str(material_type)+")")
IndexError: cannot fit 'long' into an index-sized integer

I'm thinking this is irrelevant, as I'm going to completely overrwrite the data when stratasys-cli.py generates a new binary file with fresh data, so it doesn't matter what the old data was, and in theory I can start with a blank EEPROM.

So I forge ahead and supply the binary generation script with all of the parameters it needs to create a new binary file.

Material argument is ABS_S, material = "ABS_S"
New Serial Number argument is F300000152D34D23

./stratasys-cli.py eeprom --output-file new_eeprom.bin --machine-type prodigy --eeprom-uid F300000152D34D23 --serial-number 38418508.0 --material-name ABS_S --manufacturing-lot EMPTY --manufacturing-date "2008-09-26 12:11:08" --use-date "2008-09-26 12:11:08" --initial-material 56.3 --current-material 56.3 --key-fragment 55aa55a73dae7dbe --version 1 --signature STRATASYS -o ./decrypted/canister.bin

And here's what I see to be my problem:

Running parse_binary.py
Canister S/N: 595333825064730214718688711587204337155914865061188961283062879622117309308131205276049080320
Traceback (most recent call last):
File "./bin/parse_binary.py", line 124, in
print("Material type: " + material_id_to_name[material_type] + " ("+str(material_type)+")")
IndexError: cannot fit 'long' into an index-sized integer

This is using the newest set of scripts, and I get the same problems using the old set, with a modified materials.py script to exclude the duplicate ABS_S and ABS_SS definitions.

F123 support?

Has anybody gotten this to work with the F123 line of printers? Like the F170, F270, etc.

I have a machine and a few chips to play around with.

How to read eeprom's UID with Bus Pirate?

Hello, thanks for this wonderful tool!

I will try to use Bus PIrate to read, then rewrite eeprom.

Let me ask you something, how could I do to find out the eeprom UID using Bus Pirate? Thank you!

1 wire support raspi-config

I was trying for a while to read the eeproms and forgot to enable 1-wire support in raspi-config advanced options. Just a reminder for anyone that might be a noob. It worked after I did that.

UPrint cartridge.

Good evening,

I checked the wiring suggested on the readme, however I have an UPrint and its EEPROM is different as you can see on the images bellow, it has 4 contact areas (even if I believe it uses only 2) do you have any ideas on which ones should I use?
As recently you included the uprint machines ID's I do believe that someone already used it, if someone could help me in how to use it for this specific printer?

Thank you very much in advance!
1dd3d24a-fa48-11e4-8f55-602a42a5d834
1dd196ce-fa48-11e4-9d35-39d386106d2c

Refilling a Uprint ?

Hi, Just wondering if anyone can help me.... I'm currently trying to refill my Uprint support chip using the " bvanheu's Stratasys cartridge EEPROM generator " but each time i create a new "refill.bin " file as showing below, and upload it to the chip, i notice that the UID doesn't change and i get an " S1 Invalid error " displayed on the printer.

Here is the original UID for the support: b3d3bc06d014106d

And here is the command I've used to create the new bin file:

stratasys-cli.py eeprom --machine-type uprint --eeprom-uid 6d1014d006bcd3b3 --serial-number
111222333.0 --material-name ABS_S --manufacturing-lot 7567 --manufacturing-date "2016-01-01
01:01:01" --use-date "2016-01-01 01:01:01" --initial-material 40.0 --current-material 40.0 --key-
fragment 55aa55c395bf4ebe --version 1 --signature NOTSTRATA -o refill.bin

Please see attached image which shows the original support UID and code for its remaining 4% support, followed by the new code from the refill.bin file.... both shows the same UID.

1

Material not identifiable

I dumped a lot of chips of my HP Designjet (aka uprint) and can read the values. But Material is shown "unknown (4095 - 0xfff)". Can anyone please help me to add my Material to the material.py so that I can create a refill file from zero.

Another problem is, when I use the "REFILL" command for the stratasys-cartrige.py the material will be changed and I don't know why.

ID: b311120ad014101f
Rev: 1f1014d00a1211b3

Attached there are these files:
400ccm.bin - Dump of the original EEPROM with 24.xx cuin
full.bin - Dump of the original EEPROM with 100%
refill400.bin - created with the refill-command from the 400ccm file
refillfull.bin - created with the refill-command from the 100% file

Files can be found here: https://github.com/256FF/uPrint/tree/master/Dumps/b311120ad014101f

Trouble With Rasp Pi UID Reading

We have our Raspberry Pi set up like the example on the README.md. We go to enter the following commands:

$ sudo modprobe w1-gpio gpiopin=4
$ sudo modprobe w1-ds2433

It doesn't display anything. So we enter:

$ ls -l /sys/bus/w1/devices/w1_bus_master1

We get a list of files at that location but we do not get any chip information like the README.md shows. I have double checked our setup. The modules above are loaded. What am I missing?

invalid crypted content checksum

I have the following xxd outputs:

xxd -p id_2017-04-28_original
238763210100001a

xxd -p eeprom_2017-04-28_original
1d3bcdd6826485d60a8fe69566fe8ad8bb8e1bf2ed123289d97286516ed3
80f68165e6a73b1a6b0c52e57fe23e2c218252e57fe23e2c21829afe53d4
2da8af43ac7600000000a64d55aa551b06465dbefeb300000000000040b5
6c000a68cfd37ffe84220120a0bf5354524154415379530b821c867b5fa5
c2282a916d2cc7b7194e67ccc250fc797feec88b05f4fe13f844b5a5c1f0
0d259f9a36f57131f6ae0666c53bf4a4cff6a3f29691706d9624c2b4454f
6e6b9a7f1d88fad6671294c7b08169100db556cb9633d99792346b3fa1d7
695193cf3d78d8a0373003eabecce46338063f09a011a90e990640ff23a6
f6c924263f478dc69dbcaa11fedad25996f5cfe130e4a08253bdaabeabbd
aa8ea5b98a4b0e29f4edb81f1df7dcdf4ca395d01a3eb35e201b2284c56a
7f3a3312613b220b2ef06cce7b8657f2099518bb89cb4d3219dd07bbef87
5ded830dfd2fddc6aee011eb9c2092a8b7bdeb2696b61cb4122da4b15753
0fc25d2b005bbd425da5b126dc6e4c8bd6208941bedb44f5bca20aee1e9d
e8bde3e1f45e8c23b660f41a9eec3b789a1042e83d73039c65e124fba755
f890277e380eed00649ffbed1d843d8cbb943858a40f260fc97c35b772ca
9d5ffc5c377a0ffd4fcfe12b07358ab01b5ad93e3df40f1a2f2224f59fd9
5f8f5cb959556ef2038f3e4baeebea1049f1def04a6edce223ce17957e6d

Running the script hits me with

./stratasys-cli.py eeprom -t prodigy -e 1a00000141858723 -i eeprom_2017-04-28_original
Traceback (most recent call last):
File "./stratasys-cli.py", line 252, in
app.run()
File "./stratasys-cli.py", line 27, in run
args.func(args)
File "./stratasys-cli.py", line 101, in command_eeprom
self._eeprom_info(args)
File "./stratasys-cli.py", line 211, in _eeprom_info
cartridge = m.decode(machine_number, args.eeprom_uid, cartridge_crypted)
File "/home/pi/ds2433/stratasys-master/stratasys/manager.py", line 52, in decode
cartridge_packed = self.decrypt(machine_number, eeprom_uid, cartridge_crypted)
File "/home/pi/ds2433/stratasys-master/stratasys/manager.py", line 197, in decrypt
raise Exception("invalid crypted content checksum")
Exception: invalid crypted content checksum

Want to "re-wire" the 7 meters of filament left in that cartridge.
Running python 2.7.9

So what am I doing wrong here?

Cannot read eeprom with raspberry pi

Hi,

i tried to read out the eeprom of a stratasys uprint with a raspberry pi, but it didn't worked as i had expected.
I wrote "dtoverlay=w1_gpio,gpiopin=4" in the file "boot/config.txt" and i can also see the device in the folder "sys/bus/w1/devices/w1_bus_master1"
But in the folder "sys/bus/w1/devices/w1_bus_master1/b3-xxxxxxxx" there is no file called eeprom. Just driver , id, name, rw  subsystem, uevent.

Does anybody know this problem?

Regards

Mayr

EEPROM Values reading as "fffff..."

Attached is the image was trying to refill a chip was able to get the id when tried to read eeprom . I was getting only "f" repeated for the entire string length

any ideas ? why is this happening ? so was not able to get the catridge details when running ./stratasys-cli.py

img_3002

Can Dimention or Fortus printers be used?

Can Dimention or Fortus printers be used? I have the .bin file that I copied from the device. Is it possible to view the contents of it like other printers? Right now I am getting errors running the stratasys-cli.py eeprom -t command.

Selecting material type for support material

Have been able to refill a model cartridge for a BST1200 using ABS as the material (normally the type is P400 but not on the list). What type(s) of material can be used for refilling the support material (P400_r)?

eeprom uid transposer

Is it possible to add option for a transposer or formatter function to this project so that I can enter the UID of a chip as it is displayed at /sys/bus/w1/devices/ (eg. 23-0000014b4065) and have it converted to the UID (eg. b60000014b406523) used to encrypt/decrypt the eeprom?
It's not a big deal but would help prevent an accidental typo from messing things up.
Thanks.

Invalid checksums

Hi I keep getting this error on all my eeproms... I tried to figure out how that came to be but failed...

Traceback (most recent call last):
File "./stratasys-cli.py", line 228, in
app.run()
File "./stratasys-cli.py", line 47, in run
args.func(args)
File "./stratasys-cli.py", line 125, in command_eeprom
self._eeprom_info(args)
File "./stratasys-cli.py", line 167, in _eeprom_info
cartridge = m.decode(machine_number, args.eeprom_uid, cartridge_crypted)
File "/home/pi/stratasys-master/stratasys/manager.py", line 74, in decode
cartridge = self.unpack(cartridge_packed)
File "/home/pi/stratasys-master/stratasys/manager.py", line 130, in unpack
raise Exception("invalid content checksum: should have " + hex(struct.unpack("<H", str(cartridge_packed[0x40:0x42]))[0]) + " but have " + hex(self.checksum.checksum(cartridge_packed[0x00:0x40])))
Exception: invalid content checksum: should have 0x83f5 but have 0x5e57

Any thoughts?

Bus Pirate to read/write Uprint

Hello,

I have made an attempt to read the chip using a bus pirate. I think I have it connected correctly. I have downloaded python and pycrypto. I am using PuTTy to connect to the Bus Pirate, when I enter "$ ./bp_read.py /dev/ttyUSB0 eeprom.bin" to read the chip, all that comes up is BOOTLOADER. Would someone please school me a bit to tell me what I am doing wrong?

Thanks,
John

Troubles with uPrintSE

Hi!
I am having troubles with the uPrintSE chips. I have two main issues.

  1. I can't decrypt and print out the information on the chip. I read out the chip via putty and tried to encrypt the information on it and it would give me an error (see image).
    27868932-4bf46d0a-616c-11e7-87f2-3e2024a8cea3

BUT, when I do the same thing with an uPrint chip (not SE), it works perfectly fine and it will print out the information (see image below)
screenshot at 2017-07-05 09-41-15 1

So, I kinda had the feeling that this is an uPrint SE specific issue. I'm confused why it works fine with an uPrint chip but not with an SE. Anyone any ideas?

  1. Issue: If I overwrite my uPrint SE chip, the printer will not recognize the material. It says "invalid carrier".
    I used this to generate the new hex codes and then copied it on the chip.
    ./stratasys-cli.py eeprom --machine-type uprintse --eeprom-uid b61014d006cec1b3 --serial-number 7070.0 --material-name P430_IVR --manufacturing-lot 7070 --manufacturing-date "2001-01-01 01:01:01" --use-date "2002-02-02 02:02:02" --initial-material 40.0 --current-material 40.0 --key-fragment 4141414141414141 --version 1 --signature MAYA -o three_percent.bin

Here is the UID and the information on chip:
b3 c1 ce 06 d0 14 10 b6
e7 6d 89 74 99 43 53 72 04 50 3d 84 c4 27 2b 62 5b e3 65 36 86 53 e3 c8 10 28 38 f4 45 d5 3f 0c f1 35 ac 94 bd bc c8 12 cf 48 39 87 fa 0a 6e 25 cf 48 39 87 fa 0a 6e 25 80 b8 88 20 b5 95 72 87 42 c4 00 00 00 00 c6 53 55 aa 55 47 9e e8 4e be 6d 0f 00 00 00 00 00 00 c8 3a 9a 08 26 d2 ea 84 8f bc 9d c9 01 00 00 00 53 54 52 41 54 41 53 59 53 02 34 f1 de 56 45 bd 32 46 60 31 21 a5 c8 fa

Unable to find device on bus pirate using bp_read.py [Windows]

I'm on a windows 8 machine running Python 2.7.12 with pycrypto 2.6.1 installed. When trying to use the test file bp_read.py I am unable to find my EEPROM chip.

In cmd I use the command python bp_read.py COM7 eeprom.bin and I've made sure that I'm connected to the correct COM port and the baud rate is set to 115200.

The following output is received:

λ python bp_read.py COM7 eepromBin
Device found: None
Traceback (most recent call last):
File "bp_read.py", line 138, in
raise(Exception("unable to find a device on this 1-wire bus"))
Exception: unable to find a device on this 1-wire bus

I've tested the EEPROM chip with a OneWire sniffer and can find all of the data.
I've tested the buspirate with the hardware test on the dangerous prototype website with all OK

I cannot figure out why I'm unable to find my EEPROM chip.

My setup looks like this:

img_1226
img_1227
img_1228

build.sh failing

Hi,

I was trying to build your code via $ ./build.sh on Mac Osx, but it prompts an error:
src/des.c:409:5: error: conflicting types for 'DESX_CBCUpdate'
int DESX_CBCUpdate (DESX_CBC_CTX *context, uint8_t *output, uint8_t *inp...
^
src/des.h:20:5: note: previous declaration is here
int DESX_CBCUpdate(DESX_CBC_CTX *, uint8_t *, uint8_t *, unsigned int);

I think this causes the build to fail (there is no file 'strata sys' in /bin). I am by no means a coding expert, but how can I resolve this?

Looking forward hearing from you!

Thanks,
Neil

P.s.: it gives some error to, but I don't think they cause the build to fail:

src/stratasys.c:167:30: warning: format specifies type 'int' but the argument
has type 'ssize_t' (aka 'long') [-Wformat]
printf("%d bytes\n", bytes);
~~ ^~~~~
%zd
src/stratasys.c:180:32: warning: format specifies type 'int' but the argument
has type 'ssize_t' (aka 'long') [-Wformat]
printf("\t%d bytes\n", bytes);
~~ ^~~~~
%zd
src/stratasys.c:192:30: warning: format specifies type 'int' but the argument
has type 'ssize_t' (aka 'long') [-Wformat]
printf("%d bytes\n", bytes);
~~ ^~~~~
%zd
src/stratasys.c:205:30: warning: format specifies type 'int' but the argument
has type 'ssize_t' (aka 'long') [-Wformat]
printf("%d bytes\n", bytes);
~~ ^~~~~
%zd
4 warnings generated.

New Black Eeprom DS28 for Stratasys, any solution ?

Hello Everyone,

Well, I'm writing this post because we recently bought a Stratasys Fortus 450 and what a surprise, the cartridge have a new black eeprom with the slot on the side instead of on the middle with green ones....

We tried to read them, but impossible to communicate with, it seems to be a DS28E01 Eeprom. Did you already see this kind of eeprom and were you able to read it ?

If you have any information, please do not hesitate to contact me.

Thank you all.

Ciboulete

uPrint EEPROM uid starts with 00 and keeps changing

I'm trying to use this tool with a uprint eeprom using the one pin data method on a raspberry pi. The uid seems to keep changing every couple of seconds and it starts with 00- rather than the 23- that the guide says it should have. Anyone have any insight on this problem?

Question: Key Fragment

Hello, first of all I would like to say thank you for your wonderful software. I am planning to use it soon and was wondering what I should enter for the key fragment argument when creating a new EEPROM file.

Cheers,
Danny

Dimension elite support

does one of the machine_number provide support for a elite, if not how can i help to get the

hex string ? i got one, also have some dumps of the software ( diskimage )

Cheers

Use with Raspberry Pi

I am trying to refill cartridges using the GPIO pins on a Raspberry Pi to read/write the eeprom. Does Stratasys-ng expect the data file to be in binary?

What I am doing is taking the dump from the GPIO directory, opening it using Vi in hex mode, copy the data to another text editor, remove all of the spaces etc. I save that as a text file which I copy into HxD on my windows machine where I then save it as a .bin. However, the data will not decrypt for me. Is there a better way of doing this so that I am less likely to be causing errors?

Another place I may be having an issue is with the chip serial number. When I look up the serial using my Bus Pirate it differs from what the GPIO directory on the Pi calls it. Which one should I believe?

Thanks in advance!

dimension

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

w1-wire

Hi,

I'm trying to find and load:
$ sudo modprobe w1-wire w1-ds2433

There's a w1_ds2433, which I'm hoping is the same as I believe modprobe will use "-" or "_".

But, I can not find: w1-wire, will w1-gpio do the same? Or do I need to download w1-wire from somewhere?

Any comments or suggestions welcome.

Many thanks.

Regards,

Rowland

Manually Resetting Eeprom Hex Files?

I currently use Fortus 400mc, and I am interested in learning about the encryption used in the eeprom hex files. It seems that the only encrypted portion of the hex is the 10 bytes at 0×58-0×63, and I'm assuming this somehow gets cross-checked against the chip ID. Does anyone have any info on how these 10 bytes get generated, and how they could be manually modified to reset a cartridge to a set amount?

Highlighted below is the section in question from an empty cartridge. 0×62-0×63 is always 8084 on a full cartridge.

00000000 1A 66 41 34 16 EB B0 1F 9F E5 17 20 64 0B 69 AB
00000010 0C 39 96 BC 31 4E 35 C6 85 43 92 5F BF 43 71 79
00000020 34 E2 CD E1 85 76 B1 8E 39 DB CF 71 89 46 6F 22
00000030 39 DB CF 71 89 46 6F 22 A0 3C 46 76 A9 70 5F B0
00000040 53 F3 00 00 00 00 03 CF 55 AA 55 79 AB 0A 52 BE
00000050 E3 F0 00 00 00 00 00 00 2A 0D 84 E4 C2 52 D6 95
00000060 32 93 69 C8 C9 8E B0 FB
53 54 52 41 54 41 53 59
00000070 53 BC 02 2F 0E 7C 70 BC DC DD 3C A3 A9 F8 95 B5
00000080 DD 6F 0B 64 97 1D FD 2D 2E F9 0D AB A4 2D 8B 9F
00000090 0E A5 50 23 5A 1F 47 DF 19 DD F8 A1 6C D3 EB E2
000000A0 6A 89 FF 85 F5 64 06 64 87 82 BB 1C 13 1C ED 49
000000B0 D4 2D 3C 06 D0 3A EA 82 49 2C 60 5D D8 C9 F7 A0
000000C0 7A D2 30 4C C1 2D 88 DB 5C 88 F3 24 3B 0B C1 8B
000000D0 3D DC 47 49 2C 51 83 F4 E6 7A 0A B5 3E CE 5A F4
000000E0 E2 9B 2D 02 AA 3B 5F A1 B1 58 A3 A6 F8 2B 80 88
000000F0 70 19 C4 D7 D1 5B F9 CE 5A B8 5B B3 B2 54 D0 32
00000100 E7 44 1B 6E 58 0C A6 69 50 43 68 9F 6D A5 2E 90 .
00000110 2C CA 64 D8 D2 0B 43 C4 8D FD 6A 5A 73 68 C0 99
00000120 A7 3C 08 C4 50 F0 F6 7D A6 09 D6 8E A2 95 A9 FB
00000130 10 68 F8 F9 CE FF 22 D9 11 EF 55 47 2F CF 54 32
00000140 9C 03 3C CE 5A 11 79 3B 87 68 AF E2 3A 7A 84 2D
00000150 A4 28 8C BB 9D 08 09 7F 41 9A 60 27 D5 8B C5 A6
00000160 86 C0 E5 5A 30 2A F5 9F A6 B9 1B A8 4F AC BB 2A
00000170 01 34 AA 5F BE 4E 24 52 DD 9E 55 17 22 E8 4C 62
00000180 9A 41 B2 13 AE 70 53 7A 44 9E ED 01 99 CD 26 82
00000190 3B 57 B6 07 68 E1 1A 18 01 6A 10 7B 35 54 61 2E
000001A0 5B 84 BA 19 EC E5 B9 EE 99 39 ED 07 0A BD 7B EA
000001B0 11 88 CB 09 0F 7D B0 2F 6C 79 8E 56 A2 8D 4E 05
000001C0 B7 AF 89 4A 12 39 93 AC DF 05 6E D1 93 B2 9B 2D
000001D0 9E 2C 25 7D 82 20 3D 2C 4A E3 ED 5A 04 E7 E9 59
000001E0 84 C1 C4 31 12 39 37 E3 8E 27 FB DA E8 1B 71 AA
000001F0 93 EE E9 61 2B 04 6D 44 88 CD 02 FE A2 01 1E 5E

What is machine ID for uPrint SE Plus?

Firs of all - thanks for this project!

How can we get this ID - only bruteforce, or maybe can do it by reading some files in firmware of printer? Or maybe key is not stored plain?

Illegal Cartridge Error...

Morning,

I've read, edited and re-programmed an EEPROM as below. But when trying the cartridge with the re-programmed EEPROM I got an illegal cartridge error.

Read EEPROM (empty):


Serial number 220078410.0
Material SR30 (171 - 0xab)
Manufacturing lot 5817
Manufacturing date 2014-04-03 12:15:06
Last use date 2014-04-03 12:15:06
Initial quantity 56.3
Current quantity 0.0626293700581
Key fragment 55aa556bbdc355be
Version 1
Signature STRATASYS

Machine type: prodigy 5394D7657CED641D
EEPROM uid: 290000016c560823


Re-programmed EEPROM to:


Serial number 220078415.0
Material SR30 (171 - 0xab)
Manufacturing lot 5817
Manufacturing date 2014-04-03 12:15:06
Last use date 2014-04-03 12:15:06
Initial quantity 56.3
Current quantity 22.2
Key fragment 55aa556bbdc355be
Version 1
Signature STRATASYS

Machine type: prodigy 5394D7657CED641D
EEPROM uid: 290000016c560823


Note:

I changed the following:

Serial number from: 220078410.0 to 220078415.0 (increased by 5)
Current quantity form: 0.0626293700581 to 22.2 ( new number)

Any ideas why I get an error?

Should the, current quantity 22.0626293700581 to keep it in the same format?

Any help would be appreciated.

Regards,

R.

Fortus 380

Good morning all

Was anyone able to read out a Fortus 380 chip? I suppose the machine key is "ktype"

Windows 7 ImportError: No module named cipher

How do I get rid of this error? I have tried many things, install, uninstall from python pycrypto change cipher to Cipher, what is the correct way to do it? I am running raspian on a pi3 and windows 7 on the pc. I cannot get the command
"python stratasys-cli.py eeprom -t fox -e 8e0000020fe48423 -i cartridge_dump.bin -r"
to work.
It says from crypto.cipher import DES, XOR
ImportError: No module named cipher

Copying eeprom data using the buspirate

Using buspirate 3.6 I was getting errors that there was no one wire device connected when I ran the bp_read.py file (error was from the bus pirate). As per issue #8 I tried doing it manually using the buspirate com port commands, all I recived back was 0xFF, this was verified by scoping the line. I am using python 2.7.12 pn windows and python 2.7.9 on linux, neither work, and I don't expect them too since I can't even get it working manually.

The pullup is enabled to 5v, when I connect the eeprom it drops to 1.72V (This is under the voltage as per the ds2433 datasheet) which I was concerned about so I tried using an external 4.7k which didn't work and a 2.2k, which didn't work (line voltage was above threshold at 3.3V and 2.8V respectively) all I was getting on the scope was the line was high (no drop in voltage and read starting to happen unless I was using the BP VPullup line and option).

why the cartridgewriter can't work?(uprint)

I follow the step in README.md. Install "teensyduino" and add "onewireproxy. ino" in Arduino. and Wire Arduino to DS2433 chip. but after Press the Read button, "CartridgeWriter. exe" just crash, why? My way to differentiate ground pin and data pin of Uprint's chip is form this issues: #21
And the photo is that how I connected.
why

UPrintSE checksum issue

I'm using the github/meawoppl/eepromTool-ds2433.git repo to read the uprint se chips and it seems to get a good read of 512 bytes (the code read/verifies 5 times)
Yet when I call the stratasys-cli program it give a checksum error.
I've tried 3 different chip reads and all give the checksum issue.
Please see attached screenshot and hex dump
Thanks!
screenshot from 2017-10-28 09-37-58

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.