Este é um software para ler e escrever dados em um cartucho Stratasys EEPROM.
Você pode usar este código para 'reabastecer' uma eeprom ou criar uma imagem EEPROM do cartucho a partir do zero.
Esta ferramenta requer Python 2.7.
Você pode simplesmente instalar o Stratatools usando o PIP:
$ pip2 install stratatools
ou da fonte:
$ python2 ./setup.py build
$ python2 ./setup.py install
Ele puxará automaticamente a dependência:
Você precisa fornecer o tipo de máquina (Fox, Prodigy, Quantum, etc.) e o EEPROM UID, na forma hexadecimal sem o prefixo '0x'. Observe que o EEPROM UID para usar as extremidades com "23" (que é o código da família para o dispositivo EEPROM).
$ stratatools eeprom_decode
--machine-type fox
--eeprom-uid 2362474d0100006b
cartridge_dump.bin
O EEPROM UID deve começar com o código da família, algo como '23' ou 'B3'. Em seguida, é seguido por um ID de 6 bytes e termina com uma soma de verificação.
No Linux, é o conteúdo do arquivo Pseudo id .
Se você fornecer a opção '-d', o arquivo de entrada será interpretado como um arquivo formatado ASCII, contendo linhas do formulário produzido pelo comando 'er', a saber::
000096: 00 00 00 00 00 00 00 00 53 54 52 41 54 41 53 59 ........STRATASY
Caso contrário, o arquivo de entrada deve ser um arquivo binário.
Ao fornecer todas as informações necessárias, este software fornecerá uma nova imagem válida da EEPROM que você pode escrever em um cartucho.
Primeiro, crie um novo proto EEPROM usando o comando eeprom_create .
Você pode personalizar quaisquer parâmetros no exemplo a seguir:
$ 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
Como alternativa, crie um cartridge.txt de arquivo de texto.txt com o seguinte conteúdo:
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 as datas estão em formato internacional: yyyy-mm-dd hh:mm:ss .
Você pode usar eeprom_encode para criar o arquivo binário usado pela impressora.
$ stratatools eeprom_encode
--machine-type fox
--eeprom-uid 2362474d0100006b
cartridge.txt cartridge.bin
Você precisa fornecer o tipo de máquina correto e o EEPROM válido.
O EEPROM UID deve começar com o código da família, algo como '23' ou 'B3'. Em seguida, é seguido por um ID de 6 bytes e termina com uma soma de verificação.
O arquivo gerado terá 113 bytes de tamanho. Você pode concluir o arquivo com zeroes se desejar fazer com 512 bytes de comprimento, o tamanho usual da EEPROM.
O fornecimento da opção '-d' resultará em um arquivo de saída que contém uma sequência de bytes delimitados pelo espaço dupla, expressa em hexadecimal.
Caso contrário, a saída será um arquivo binário.
Você também pode colocar os dois 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
Se você deseja uma lista de todo material conhecido, basta executar o seguinte:
$ stratatools material --list
0 ABS
1 ABS_RED
2 ABS_GRN
[...]
Use esses nomes ao criar um novo cartucho.
Se você tiver um erro invalid checksum , o código não conseguiu descriptografar sua EEPROM corretamente. Verifique se o seu arquivo EEPROM é válido, verifique o EEPROM UID.
Se ainda não funcionar, preencha um ingresso no Github.
Um script auxiliar está disponível se você deseja reescrever automaticamente os cartuchos usando um Raspberry Pi. O script definirá a data de fabricação como 'hoje'. Ele também randomizará o número de série e definirá a Qtd de material atual para a quantidade inicial de material.
Você precisará de uma configuração de 1Wire em funcionamento no Raspberry Pi, veja abaixo como fazer isso.
Para simplesmente reabastecer um cartucho, inicie o script auxiliar especificando o tipo de impressora:
$ stratatools_rpi_daemon prodigy
Você também pode fornecer um modelo de cartucho:
$ stratatools_rpi_daemon --template ./abs_cartridge.txt prodigy
Este script é capaz de gerar código de configuração para sua impressora. Na verdade, existem 3 códigos diferentes disponíveis:
Só podemos gerar código configuration por enquanto. Esses códigos podem desbloquear recursos específicos da sua impressora.
Para decodificar um código de configuração, basta executar o seguinte:
$ stratatools setupcode_decode AAAA-BBBB-CCCC-DDDD
Você pode criar seu próprio código de configuração para ativar recursos específicos.
Por exemplo:
$ 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
Gerará um código configuration para uma impressora tipo 900mc.
Para obter ajuda nos valores disponíveis, você pode executar o seguinte:
$ stratatools setupcode_create --help
Use o seguinte esquema como referência:
Bus pirate
grey >---+
| (connected together)
blue >---+
eeprom
+------+
orange >---| Data |
| |
black >---| Gnd |
+------+
Dois scripts auxiliares estão disponíveis para interagir com o Buspirate.
Para ler uma EEPROM:
$ stratatools_bp_read /dev/ttyUSB0 eeprom.bin
Para escrever uma EEPROM:
$ stratatools_bp_write /dev/ttyUSB0 eeprom_new.bin
Use o seguinte esquema como referência:
Raspberry pi
5V >---+
|
4.7k Z eeprom
| +------+
GPIO4 >---+---| Data |
| |
GROUND >-------| Gnd |
+------+
Então você precisará investigar 2 módulos do kernel:
$ sudo modprobe w1-gpio gpiopin=4
$ sudo modprobe w1-ds2433
Pode ser necessário alterar a sobreposição de árvores de dispositivos. Atualize o seguinte arquivo /boot/config.txt e adicione esta linha no final:
dtoverlay=w1-gpio,gpiopin=4
Se a detecção estiver lenta no ônibus, você pode tentar reduzir o tempo limite. Crie o seguinte arquivo /etc/modprobe.d/wire.conf com o seguinte:
options wire timeout=1 slave_ttl=3
Agora você deve ver sua EEPROM aparecendo:
$ ls -l /sys/bus/w1/devices/w1_bus_master1
23-xxxxxxxxxxxx/
[...]
Para imprimir o eeprom uid:
$ xxd -p /sys/bus/w1/devices/w1_bus_master1/23-xxxxxxxxxxxx/id
23xxxxxxxxxxxx
Para ler uma EEPROM:
$ cp /sys/bus/w1/devices/w1_bus_master1/23-xxxxxxxxxxxx/eeprom ~/eeprom.bin
Para escrever uma EEPROM:
$ cp ~/eeprom_new.bin /sys/bus/w1/devices/w1_bus_master1/23-xxxxxxxxxxxx/eeprom
Para interagir com um DS2432, você precisará seguir as etapas encontradas neste projeto: https://github.com/bvanheu/ds2432-linux.
Agradecimentos especiais ao grupo Stratahackers. Sem eles, nada disso poderia ser possível. Eles forneceram suporte moral e técnico!
Agradecemos a Ashanin pelo apoio à UPRINT. Agradecemos a Ajtayh pelo ASA e UTT1010 no SetupCode.