Este es un software para leer y escribir datos en un cartucho StrataSys EEPROM.
Puede usar este código para 'rellenar' una EEPROM o construir una imagen EEPROM de cartucho desde cero.
Esta herramienta requiere Python 2.7.
Simplemente puede instalar Stratatools usando PIP:
$ pip2 install stratatools
o de la fuente:
$ python2 ./setup.py build
$ python2 ./setup.py install
Tirará automáticamente la dependencia:
Debe proporcionar el tipo de máquina (Fox, Prodigy, Quantum, etc.) y el EEPROM UID, en forma hexadecimal sin el prefijo '0x'. Tenga en cuenta que el EEPROM UID para usar termina con "23" (que es el código de familia para el dispositivo EEPROM).
$ stratatools eeprom_decode
--machine-type fox
--eeprom-uid 2362474d0100006b
cartridge_dump.bin
El EEPROM UID debería comenzar con el código de familia, algo así como '23' o 'B3'. Luego es seguido por una ID de 6 bytes y luego termina con una suma de verificación.
En Linux, es el contenido del archivo pseudo id .
Si proporciona la opción '-d', el archivo de entrada se interpretará como un archivo formateado ASCII, que contiene líneas del formulario producido por el comando de impresoras 'ER', a saber:
000096: 00 00 00 00 00 00 00 00 53 54 52 41 54 41 53 59 ........STRATASY
De lo contrario, el archivo de entrada debe ser un archivo binario.
Al proporcionar toda la información requerida, este software proporcionará una nueva imagen EEPROM válida que puede escribir en un cartucho.
Primero, cree un nuevo EEPROM Proto usando el comando eeprom_create .
Puede personalizar cualquier parámetro en el siguiente ejemplo:
$ 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
Alternativamente, cree un archivo de texto cartridge.txt con el siguiente contenido:
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"
Todas las fechas están en formato internacional: yyyy-mm-dd hh:mm:ss .
Luego puede usar eeprom_encode para crear el archivo binario utilizado por la impresora.
$ stratatools eeprom_encode
--machine-type fox
--eeprom-uid 2362474d0100006b
cartridge.txt cartridge.bin
Debe proporcionar el tipo de máquina correcto y el EEPROM válido UID.
El EEPROM UID debería comenzar con el código de familia, algo así como '23' o 'B3'. Luego es seguido por una ID de 6 bytes y luego termina con una suma de verificación.
El archivo generado tendrá un tamaño de 113 bytes. Puede completar el archivo con ceros si desea que sea 512 bytes de largo, el tamaño de EEPROM habitual.
El suministro de la opción '-d' dará como resultado un archivo de salida que contenga una cadena de bytes delimitados de espacio doble, expresado en hexadecimal.
De lo contrario, la salida será un archivo binario.
También puede encender los dos comandos juntos:
$ 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 desea una lista de todo el material conocido, simplemente ejecute lo siguiente:
$ stratatools material --list
0 ABS
1 ABS_RED
2 ABS_GRN
[...]
Use esos nombres al crear un cartucho nuevo.
Si tiene un error invalid checksum , el código no pudo descifrar su EEPROM correctamente. Verifique que su archivo EEPROM sea válido, verifique dos veces el EEPROM UID.
Si todavía no funciona, llene un boleto en GitHub.
Un script de ayuda está disponible si desea reescribir automáticamente los cartuchos utilizando una Raspberry Pi. El script establecerá la fecha de fabricación en 'hoy'. También aleatorizará el número de serie y establecerá la Cantidad del material actual en la cantidad inicial del material.
Necesitará una configuración de trabajo de 1 alambre en la Raspberry Pi, vea a continuación sobre cómo hacerlo.
Para simplemente rellenar un cartucho, inicie el script de ayuda especificando el tipo de impresora:
$ stratatools_rpi_daemon prodigy
También puede proporcionar una plantilla de cartucho:
$ stratatools_rpi_daemon --template ./abs_cartridge.txt prodigy
Este script puede generar código de configuración para su impresora. En realidad, hay 3 códigos diferentes disponibles:
Solo podemos generar código configuration por ahora. Estos códigos pueden desbloquear características específicas de su impresora.
Para decodificar un código de configuración, simplemente ejecute lo siguiente:
$ stratatools setupcode_decode AAAA-BBBB-CCCC-DDDD
Puede crear su propio código de configuración para habilitar características específicas.
Por ejemplo:
$ 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
Generará un código configuration para una impresora tipo 900MC.
Para obtener ayuda en los valores disponibles, puede ejecutar lo siguiente:
$ stratatools setupcode_create --help
Use el siguiente esquema como referencia:
Bus pirate
grey >---+
| (connected together)
blue >---+
eeprom
+------+
orange >---| Data |
| |
black >---| Gnd |
+------+
Hay dos guiones a ayuda de ayuda para interactuar con el buspirate.
Para leer un EEPROM:
$ stratatools_bp_read /dev/ttyUSB0 eeprom.bin
Para escribir un EEPROM:
$ stratatools_bp_write /dev/ttyUSB0 eeprom_new.bin
Use el siguiente esquema como referencia:
Raspberry pi
5V >---+
|
4.7k Z eeprom
| +------+
GPIO4 >---+---| Data |
| |
GROUND >-------| Gnd |
+------+
Entonces necesitará sondear 2 módulos de kernel:
$ sudo modprobe w1-gpio gpiopin=4
$ sudo modprobe w1-ds2433
Es posible que deba cambiar la superposición del árbol del dispositivo. Actualice el siguiente archivo /boot/config.txt y agregue esta línea al final:
dtoverlay=w1-gpio,gpiopin=4
Si la detección es lenta en el autobús, puede intentar reducir el tiempo de espera. Cree el siguiente archivo /etc/modprobe.d/wire.conf con lo siguiente:
options wire timeout=1 slave_ttl=3
Ahora deberías ver que aparecer tu EEPROM:
$ ls -l /sys/bus/w1/devices/w1_bus_master1
23-xxxxxxxxxxxx/
[...]
Para imprimir el eeProm uid:
$ xxd -p /sys/bus/w1/devices/w1_bus_master1/23-xxxxxxxxxxxx/id
23xxxxxxxxxxxx
Para leer un EEPROM:
$ cp /sys/bus/w1/devices/w1_bus_master1/23-xxxxxxxxxxxx/eeprom ~/eeprom.bin
Para escribir un EEPROM:
$ cp ~/eeprom_new.bin /sys/bus/w1/devices/w1_bus_master1/23-xxxxxxxxxxxx/eeprom
Para interactuar con un DS2432, deberá seguir los pasos que se encuentran en este proyecto: https://github.com/bvanheu/ds2432-linux.
Un agradecimiento especial al grupo Stratahackers. Sin ellos, nada como esto podría ser posible. ¡Proporcionaron apoyo moral y técnico!
Gracias a Ashanin por el apoyo de lujo. Gracias a Ajtayh por ASA y ULT1010 en SetupCode.