Il s'agit d'un logiciel à lire et à écrire des données sur une cartouche Stratasys EEPROM.
Vous pouvez utiliser ce code pour «remplir» une EEPROM ou construire une image EEPROM de la cartouche à partir de zéro.
Cet outil nécessite Python 2.7.
Vous pouvez simplement installer des stratatools à l'aide de PIP:
$ pip2 install stratatools
ou de la source:
$ python2 ./setup.py build
$ python2 ./setup.py install
Il tirera automatiquement la dépendance:
Vous devez fournir le type de machine (Fox, Prodigy, Quantum, etc.) et l'EEPROM UID, sous forme hexadécimale sans le préfixe '0x'. Notez que le UID EEPROM à utiliser se termine par "23" (qui est le code familial du périphérique EEPROM).
$ stratatools eeprom_decode
--machine-type fox
--eeprom-uid 2362474d0100006b
cartridge_dump.bin
L'UID EEPROM devrait commencer par le code de la famille, quelque chose comme «23» ou «B3». Il est ensuite suivi d'un identifiant de 6 octets puis terminez avec une somme de contrôle.
Sur Linux, il s'agit du contenu du fichier pseudo id .
Si vous fournissez l'option '-d', le fichier d'entrée sera interprété comme un fichier formaté ASCII, contenant des lignes de la forme produite par la commande `` er '' imprimantes, à savoir:
000096: 00 00 00 00 00 00 00 00 53 54 52 41 54 41 53 59 ........STRATASY
Sinon, le fichier d'entrée doit être un fichier binaire.
En fournissant toutes les informations requises, ce logiciel fournira une nouvelle image EEPROM valide que vous pouvez écrire à une cartouche.
Créez d'abord un nouveau proto EEPROM à l'aide de la commande eeprom_create .
Vous pouvez personnaliser tous les paramètres dans l'exemple suivant:
$ 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
Alternativement, créez un fichier texte cartridge.txt avec le contenu suivant:
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"
Toutes les dates sont au format international: yyyy-mm-dd hh:mm:ss .
Vous pouvez ensuite utiliser eeprom_encode pour créer le fichier binaire utilisé par l'imprimante.
$ stratatools eeprom_encode
--machine-type fox
--eeprom-uid 2362474d0100006b
cartridge.txt cartridge.bin
Vous devez fournir le type de machine correct et le UID EEPROM valide.
L'UID EEPROM devrait commencer par le code de la famille, quelque chose comme «23» ou «B3». Il est ensuite suivi d'un identifiant de 6 octets puis terminez avec une somme de contrôle.
Le fichier généré sera de 113 octets. Vous pouvez compléter le fichier avec des zéros si vous souhaitez faire 512 octets de long, la taille de l'EEPROM habituelle.
La fourniture de l'option '-d "se traduira par un fichier de sortie contenant une chaîne à double qualité d'octets d'espace délimités, exprimés en hexadécimal.
Sinon, la sortie sera un fichier binaire.
Vous pouvez également tuer les deux commandes ensemble:
$ 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
Si vous voulez une liste de tout matériel connu, exécutez simplement ce qui suit:
$ stratatools material --list
0 ABS
1 ABS_RED
2 ABS_GRN
[...]
Utilisez ces noms lors de la création d'une nouvelle cartouche.
Si vous avez une erreur invalid checksum , le code n'a pas pu déchiffrer correctement votre EEPROM. Vérifiez que votre fichier EEPROM est valide, vérifiez le double de l'EEPROM UID.
Si cela ne fonctionne toujours pas, remplissez un billet sur GitHub.
Un script d'assistance est disponible si vous souhaitez réécrire automatiquement les cartouches à l'aide d'un Raspberry Pi. Le script définira la date de fabrication sur «aujourd'hui». Il randomisera également le numéro de série et définira la quantité actuelle du matériau sur la quantité de matériau initiale.
Vous aurez besoin d'une configuration de 1 câble de travail sur le Raspberry Pi, voir ci-dessous sur la façon de le faire.
Pour simplement remplir une cartouche, lancez le script d'assistance spécifiant le type d'imprimante:
$ stratatools_rpi_daemon prodigy
Vous pouvez également fournir un modèle de cartouche:
$ stratatools_rpi_daemon --template ./abs_cartridge.txt prodigy
Ce script est capable de générer du code de configuration pour votre imprimante. Il y a en fait 3 codes différents disponibles:
Nous ne pouvons générer du code configuration que pour l'instant. Ces codes peuvent débloquer des fonctionnalités spécifiques de votre imprimante.
Pour décoder un code de configuration, exécutez simplement ce qui suit:
$ stratatools setupcode_decode AAAA-BBBB-CCCC-DDDD
Vous pouvez créer votre propre code de configuration pour activer des fonctionnalités spécifiques.
Par exemple:
$ 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
Génera un code configuration pour un type d'imprimante 900mc.
Pour obtenir de l'aide sur les valeurs disponibles, vous pouvez exécuter ce qui suit:
$ stratatools setupcode_create --help
Utilisez le schéma suivant comme référence:
Bus pirate
grey >---+
| (connected together)
blue >---+
eeprom
+------+
orange >---| Data |
| |
black >---| Gnd |
+------+
Deux scripts d'assistance sont disponibles pour interagir avec l'usée.
Pour lire une EEPROM:
$ stratatools_bp_read /dev/ttyUSB0 eeprom.bin
Pour écrire un eeprom:
$ stratatools_bp_write /dev/ttyUSB0 eeprom_new.bin
Utilisez le schéma suivant comme référence:
Raspberry pi
5V >---+
|
4.7k Z eeprom
| +------+
GPIO4 >---+---| Data |
| |
GROUND >-------| Gnd |
+------+
Alors vous devrez sonder 2 modules de noyau:
$ sudo modprobe w1-gpio gpiopin=4
$ sudo modprobe w1-ds2433
Vous devrez peut-être modifier la superposition de l'arbre de périphérique. Mettez à jour le fichier suivant /boot/config.txt et ajoutez cette ligne à la fin:
dtoverlay=w1-gpio,gpiopin=4
Si la détection est lente dans le bus, vous pouvez essayer de réduire le délai d'attente. Créez le fichier suivant /etc/modprobe.d/wire.conf avec les suivants:
options wire timeout=1 slave_ttl=3
Vous devriez maintenant voir votre Eeprom apparaître:
$ ls -l /sys/bus/w1/devices/w1_bus_master1
23-xxxxxxxxxxxx/
[...]
Pour imprimer l'Eeprom UID:
$ xxd -p /sys/bus/w1/devices/w1_bus_master1/23-xxxxxxxxxxxx/id
23xxxxxxxxxxxx
Pour lire une EEPROM:
$ cp /sys/bus/w1/devices/w1_bus_master1/23-xxxxxxxxxxxx/eeprom ~/eeprom.bin
Pour écrire un eeprom:
$ cp ~/eeprom_new.bin /sys/bus/w1/devices/w1_bus_master1/23-xxxxxxxxxxxx/eeprom
Pour interfacer avec un DS2432, vous devrez suivre les étapes trouvées dans ce projet: https://github.com/bvanheu/ds2432-Linux.
Un merci spécial au groupe Stratahackers. Sans eux, rien de tel ne pourrait être possible. Ils ont fourni un support moral et technique!
Merci à Ashanin pour le support souple. Merci à AJTayh pour ASA et ULT1010 dans SetUpcode.