docs: update release notes and contributor docs

This commit is contained in:
cmyk 2026-03-03 20:37:50 +01:00
parent 8f1db2a6b6
commit f49ccf0ef2
7 changed files with 199 additions and 210 deletions

View File

@ -1,6 +1,27 @@
# Changelog
## Unreleased
## Release v0.3.0-beta.1
### User-facing highlights (since v0.2.0-beta.2)
- New SeedEtcher Transfer Stack workflow cuts prep and etch time in half.
- Plate layout overhaul (seed + descriptor sides) with etch-first styling:
- custom-designed `SeedEtcher-Regular` plate font integration,
- circular QR modules with square islands,
- updated seed/descriptor text anchors, margins, and metadata placement.
- Print options UI before printing: selectable `DPI` (`1200`/`600`), `Invert`, and `Mirror`.
- Host print language selection: `PCL` (default) or `PS` (PostScript), plus a native PS writer path.
- Brother HBP support integrated into standard images (`image`, `image-debug`, `image-gadget`, `image-gadget-debug`) with lazy on-demand runtime prep.
- HBP-enabled sessions lock print flow to Brother HBP at `600 DPI` and bypass language/DPI selection for that session.
- SD detach/runtime handling was hardened for HBP and host print paths.
- Multisig descriptor-share mode migrated to interoperability-first `UR/XOR` for supported families, with explicit fallback to full descriptor UR for unsupported families.
- `SE1` fallback was removed from active backup output path.
- Optional etch stats page added to print output (CLI + UI toggle), with area/coverage and PSU guide sections.
- Print progress behavior was stabilized across `PCL`/`PS`/`HBP` (including etch-stats page accounting and stage ordering).
- Added debug-only `Load Test Wallet` action flow to speed testing without repeated scan loops.
- Transfer cutbox layout/workflow introduced for easier masking and cutting.
- Fixed deterministic 2x2 page/batch/count math across UI and controller host/HBP paths.
- Direct host PCL/PS output alignment corrected to match intended cutbox placement (top/cut-mark clipping and PCL horizontal shift fixes).
### Detailed notes
- HBP runtime integration is now part of the standard image outputs (`image`, `image-debug`, `image-gadget`, `image-gadget-debug`); separate runtime/spike image variants are removed.
- Internal CUPS/HBP runtime naming was normalized from `cups-spike` to `cups-runtime` across flake wiring, init/runtime env, helper scripts, and controller call sites.
- Runtime helper/script names are now:
@ -69,11 +90,6 @@
- Etch defaults block added to stats page for bench setup:
- `Na2SO4 100 g/L`, `34C`, `15 mm` electrode gap, `12 V` limit, `J=0.04 A/cm2`.
## Release v0.3.0-beta.1
- b0.3 plate layout overhaul (seed + descriptor sides) with etched-first styling:
- custom `SeedEtcher-Regular` plate font integration,
- circular QR modules with square islands,
- updated seed/descriptor text anchors, margins, and metadata placement.
- Invert behavior fix: plate border remains black while interior content is inverted.
- Page layout updates:
- 4 mm inter-plate spacing,

23
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,23 @@
# Contributing
## DCO / Signoff Required
By contributing, you agree to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
Every commit must include a `Signed-off-by` trailer that matches the commit author, for example:
```text
Signed-off-by: Jane Doe <jane@example.com>
```
Use Git signoff to add it automatically:
```bash
git commit -s -m "your message"
```
If you forgot signoff on the latest commit:
```bash
git commit --amend -s --no-edit
```

View File

@ -2,24 +2,33 @@
SeedEtcher is an open-source, air-gapped system for creating durable Bitcoin backups by printing seed phrases, descriptors, and QR codes with a standard laser printer and permanently etching them into metal.
It minimizes trust and attack surface by relying on offline hardware, simple materials, and a transparent, reproducible workflow instead of expensive dedicated machines.
Once you get the hang of the workflow a double-sided plate can be done in 1.52h.
Starting with version b0.3 the follwing things were substantially improved:
Starting with ***version b0.3*** prep-time and etch time halved!
- All brother lasers are supported (even host-based). PCL/PS remains the recommended way to print. HBP (host based printing) is capped to 600dpi (memory limit of pi zero)
The following things were substantially improved or added:
- Multisig uses descriptor-share backups (no full descriptor on a single plate). These wallet configs default to UR/XOR-compatible shares: `1/2`, `2/2`, `2/3`, `2/4`, `4/4`, `3/5`, and any `n-1/n`. This replaces b0.2's custom SE1 Shamir share method for interoperability. All other wallet types stay on full descriptor.
- All Brother lasers are supported (even host-based). PCL/PS remains the recommended way to print. HBP (host based printing) is capped to 600dpi (memory limit of pi zero)
All other brands that support true PCL or PostScript should work too. See: [printers.md](docs/printers.md)
- A new method leverages the use of silicone sheets to reliably transfer toner masks to both sides of a metal plate at once.
- Print output can be sent non-inverted and non-mirrored for checking before printing to transfer paper.
- A new method (SeedEtcher Transfer Stack<sup>TM</sup>) leverages the use of silicone sheets to reliably transfer toner masks to both sides of a metal plate at once.
This means, you can also etch both sides at once!
- A new
- A new plate layout design optimizes for etching. All rounded forms, including a custom designed font face and QRs with circle modules. Also the mask area now covers the whole plate except for the side where you tape it for transfer. This means you only need to tape one side before etching.
- I designed a 3d printable etching container for optimal etching performance. No manual movement required. It will be released after geyser.io campaign, presumably.
- Improved etching method by using 30% FeCl3 at 40°C. It can be made from 40% by diluting it with distilled water.
- For folks who want to electro etch, there is an optional stats page with A/cm2 calculations that can be printed additionally. (I am still researching the optimal electro etching workflow.)
---
The project consists of:
## The project consists of:
## 1) SeedEtcher Controller
### 1) SeedEtcher Controller
Raspberry Pi Zerobased controller firmware that drives a standard laser printer over USB.
Scan seed and descriptor QR codes offline and print deterministic layouts for etching.
## 2) SeedEtcher Workflow
### 2) SeedEtcher Workflow
A documented, repeatable workflow for chemically etching printed layouts onto steel.
@ -32,14 +41,13 @@ A documented, repeatable workflow for chemically etching printed layouts onto st
---
## Features
- Multisig uses descriptor-share backups (no full descriptor on a single plate). Starting with b0.3 these wallet configs default to UR/XOR-compatible shares: `1/2`, `2/2`, `2/3`, `2/4`, `4/4`, `3/5`, and any `n-1/n`.
other multisig configurations output the full descriptor.
- The SeedEtcher controller has a descriptor recovery mode. TODO: cross-platform binaries will make this inheritance-friendly.
- Manual mnemonic input with validation (`bip39`).
- GUI-driven, with physical button navigation.
- Multisig uses descriptor-share backups (no full descriptor on a single plate). These wallet configs default to UR/XOR-compatible shares: `1/2`, `2/2`, `2/3`, `2/4`, `4/4`, `3/5`, and any `n-1/n`. Other multisig configurations output the full descriptor.
- The SeedEtcher controller has a descriptor recovery mode and is able to scan them directly from the metal plates.
- Manual mnemonic input with validation (`bip39`)
- GUI-driven, with physical button navigation
- Outputs plates layouts with words + QR codes directly via serial USB
- Laser print → toner transfer → acid etching for steel backup.
- Debugging via serial shell and PDF capture on host.
- Laser print → toner transfer → acid etching for steel backup
- Debugging via serial shell and PDF capture on host or UART in host mode
---
@ -64,7 +72,7 @@ diskutil eject /dev/diskX
```
---
## Build & Deploy (Quick Start)
## Build & Deploy for debugging (Quick Start)
(see [build-matrix.md](docs/dev/build-matrix.md) for target builds)
@ -78,7 +86,7 @@ diskutil eject /dev/diskX
```
Run controller on Pi:
./controller < /dev/ttyGS1 >> /log/debug.log 2>> /log/debug.log &
```./controller < /dev/ttyGS1 >> /log/debug.log 2>> /log/debug.log &```
---

View File

@ -1,127 +0,0 @@
# SeedHammer controller program
This repository contains the source code to run the controller program for the
[SeedHammer](https://seedetcher.com) engraving machine. It runs on the same hardware
as the [SeedSigner](https://seedsigner.com/hardware): Raspberry Pi Zero or Zero W, a
WaveShare 1.3 inch 240x240 LCD hat and a Pi Zero compatible camera with a OV5647
sensor.
## Installation
Write `seedetcher-vX.Y.X.img` to an SD-card and insert that into the SD-card
slot on the Raspberry Pi.
### Linux
The `dd` command writes the image to the block device `/dev/sdX`:
```sh
$ dd if=result/seedetcher-vX.Y.Z.img of=/dev/sdX bs=1M
```
### macOS
Use a similar command as for Linux or a GUI tool such as [balenaEtcher](https://www.balena.io/etcher/).
### Building from source
To build a complete `seedetcher.img` image, [Nix](https://nixos.org/) with flakes enabled is required.
The default Nix package in `flake.nix` builds the image:
```sh
$ nix build github:seedetcher/seedetcher
$ ls result/seedetcher.img
```
The `seedetcher.img` image contains the Pi Zero firmware, the Linux kernel and drivers, and the
`controller` program that drives the Pi hardware and engraver.
To build a versioned image, use the `mkrelease` script and specify a tag:
```sh
$ nix run github:seedetcher/seedetcher#mkrelease vx.y.z
```
the resulting image will embed the version. The command also accepts git branches or commits.
### Reproducible builds
The build process is designed to be deterministic; that is, images produced with the above steps
should match the released images bit-for-bit. If not, please open an issue.
Use a tool such as `shasum` or `sha256sum` to verify that the release binary matches.
## Development
### Update through USB
There is a crude facility to replace and restart the controller binary on a running device. First,
build and prepare a debug build of the image
```
$ nix build .#image-debug
```
from a local clone of this repository. Then write `result/seedetcher-debug.img` to an SD-card.
Connect the device to your machine with a USB cable to the USB port closest to the mini-HDMI
port of the device; that is, the port usually used to communicate with the engraver.
Then, to upload and run a new version of the controller binary, run
```
$ export USBDEV=/dev/cu.usbmodem101 # Or (usually) /dev/ttyUSB0 on Linux.
$ nix run .#reload $USBDEV
```
In debug mode, logging output from the controller is routed through the USB serial device.
Use
```
$ cat $USBDEV
```
to show the log on your terminal. The `nix .#reload` command automatically does this after reloading.
### Remote control
There are few commands available to remote control, or script, the device in debug mode.
```
$ echo "input up" > $USBDEV
```
sends one or more button events to the device. Available buttons are: `up`, `down`, `left`, `right`, `center`,
`b1`, `b2`, `b3`.
```
$ echo "runes ACCIDENT" > $USBDEV
```
sends text to the device, where every space and the newline sends an implicit `input b2`. Useful for scripting the input of seeds.
```
$ echo "screenshot" > $USBDEV
```
instructs the controller to dump a screenshot to the SD card.
## Dry-run engraving
Testing the engraving process without actually spending a plate can be done in dry-run mode. It's activated
by long-pressing the middle button on the engraving screen. When dry-run is enabled, a small notice is shown
in the lower right corner of the screen.
### License
The files is this repository are in the public domain as described in the [LICENSE](LICENSE) file,
except files in directories with their own LICENSE files.
### Contributions
Contributors must agree to the [developer certificate of origin](https://developercertificate.org/),
to ensure their work is compatible with the the LICENSE. Sign your commits with
Signed-off-by statements to show your agreement with the `git commit --signoff` (or `-s`)
command.

41
docs/FeCl3-40to30.md Normal file
View File

@ -0,0 +1,41 @@
# Mixing 30% from 40% FeCl3 solution
30% solution seems more effective because it flows better.
40% is more available than 30%.
But it is easy enough to mix 30% from 40% by diluting it with distilled water.
## Equipment
- 1L 40% Ferric Chloride
- 1L Distilled water
- 1L HDPE/PP Bottle (do NOT use PET!)
- 1-1.5L plastic beaker
- Funnel
- Glass or plastic pipette
- Nitrile gloves
- Eye protection
- Accurate scale (+/-0.1g)
## To get 0.5L 30% Solution
You'll need:
- 161.5g distilled water
- 484.5g ferric chloride 40%
## How to mix
***IMPORTANT***\
NEVER ADD water to Ferric Chloride. Add Ferric Chloride to water.
It produces heat.
This order IS IMPORTANT!
1) Put the beaker on the scale and tare (set it to 0)
2) Add 161.5g distilled water. Use pipette to get it accurate.
3) Tara (set scale to 0) with beaker still on.
4) Slowly pour Ferric Chloride into water. DO NOT GO TOO FAST, to prevent the solution from heating up too fast.
5) Don't overshoot: approach 480g very slowly.
6) Use the pipette or a smaller plastic cup to add the rest up to 484.5g.
7) Use a funnel to pour the finished solution into a HDPE/PP bottle.
My 3D printed etching container is designed for exactly 0.5L.

View File

@ -2,11 +2,11 @@
A word of warning:\
This process is somewhat involved. Its not a machine that you flip on and off and be done with it.\
But the idea was to create a process that doesnt require a $500 machine. Most of the items you need you might already have. Also, you wont create multisig backups very often.
This workflow has many unknown variables (like the laser printer/toner (orignal or cheap replacement?) or iron you use). I tried to rule out as many variables as possible. Still, your mileage may vary. Do not expect this to work on your first try.
But the idea was to create a process that doesnt require a $500 machine. Most of the items you need you might already have. Also, you wont create multisig backups very often. Besides, how about adding a new skill to your skill set: etching metal!
This workflow has many unknown variables (like the laser printer/toner (original or cheap replacement?) or iron you use). I tried to rule out as many variables as possible. Still, your mileage may vary. Do not expect this to work on your first try.
Here's a video of the process: https://youtu.be/O1ZcKIli9hk?si=wur4efhf88QD2LMY \
The video DOES NOT REPLACE this guide. Please do read this guide for best results.
The video DOES NOT REPLACE this guide. Please do read this guide for best results AND security/safety instructions.
What you need:
@ -17,17 +17,27 @@ What you need:
- [ ] Micro-USB male to USB-A female ([amazon](https://a.co/d/drLFF49))
- [ ] Steel Plates, 10x10cm (make sure they are really flat). You can get them on ebay or amazon or cut your own.
- [ ] Iron (for ironing clothes)
- [ ] 0.5-2mm thick silicone sheet ([amazon](https://a.co/d/2F59LSZ)) for better heat and pressure transfer
- [ ] 0.5-2mm thick silicone sheet ([amazon](https://a.co/d/2F59LSZ)) for SeedEtcher Transfer Stack
- [ ] Wood board, cork mat (optional)
- [ ] Toner Transfer Paper ([amazon](https://a.co/d/dmR4RUL))
- [ ] Anti-etching pens ([amazon](https://a.co/d/5DnOhRR)), stop out ground e.g. from [Lascaux](https://lascaux.ch/en/products/brushes-printmaking-sets-various/lascaux-etching?shp3_product=1704) or [Charbonnel](https://intaglioprintmaker.com/product/charbonnel-lamour-black-covering-varnish/) or nail polish
- [ ] Packaging or electrical tape
- [ ] Masking tape
- [ ] Acetone
- [ ] Isopropyl Alcohol
- [ ] Ferric Chloride Etching 40% solution ([amazon](https://a.co/d/h497Xaa))\
- [ ] Ferric Chloride Etching 40% solution ([amazon](https://a.co/d/h497Xaa)), you can also find it in art supply stores, or on ebay.com\
If you can, get 30% solution, it's more efficient (viscosity). But you can create 30% from 40% solution by adding distilled water: [FeCl3-40to30.md](FeCl3-40to30.md)
Note: FeCl is for etching brass, copper and steel. It does not work for titanium! Etching titanium with hydrofluoric acid is not recommended unless you have a lab and know what you are doing.
- [ ] Nitrile Gloves, eye protection
- [ ] HDPE/PP etching container
- [ ] Container for water bath (40°C)
- [ ] Baking Soda (sodium bicarbonate, NaHCO₃), NOT baking powder (contains acids + starch)
Really nice to have:
- [ ] Thermometer
- [ ] Aquarium air pump
- [ ] Aquarium heater
## Flash SeedEtcher to SD-card
Use [balena etcher](https://etcher.balena.io) or via cmd line:
@ -47,13 +57,13 @@ SeedEtcher just needs a QR of the descriptor. The seedphrase(s) can be input via
You generally use a coordinator like [sparrow](https://www.sparrowwallet.com) to create the descriptor.
Note: Sparrow just needs the xpubs of the seedphrases for this and not the actual seedphrase(s).
Example: Create the 3 seedphrases for a 2/3 multisig on [SeedSigner](https://seedsigner.com). Use sparrow to create the descriptor.
Scan the descriptor from sparrow with SeedEtcher and then each seedphrase QR from the SeedSigner. Tip: use a magnifiying glass in front of the SeedEtcher cam to scan the tiny dotted QR from the SeedSigner.
Scan the descriptor from sparrow with SeedEtcher and then each seedphrase QR from the SeedSigner. Tip: use a magnifying glass in front of the SeedEtcher cam to scan the tiny dotted QR from the SeedSigner.
## Descriptor Shares
For multisig backups, SeedEtcher prints descriptor shares instead of a full descriptor on each plate.
For `2/3` multisig in current b0.3 flow, descriptor shares use UR/XOR-compatible payloads (interoperability-first).
Legacy `SE1:` recovery remains available for previously created backups.
Legacy `SE1:` has been discontinued.
- No single plate reveals the full descriptor.
- You must scan at least `t` descriptor shares to reconstruct and export the descriptor QR.
@ -65,12 +75,11 @@ Legacy `SE1:` recovery remains available for previously created backups.
For multisig backups, the on-device review/setup flow is:
1. Confirm wallet
1. Confirm wallet (check receive/change addresses)
2. Fingerprints review (all cosigner fingerprints, paged)
3. Descriptor shares summary (`t/n`)
4. Wallet label
5. Paper size
6. Print
3. Wallet label
4. Print settings
5. Print
### Recovery (cold-room flow)
@ -97,85 +106,99 @@ For multisig backups, the on-device review/setup flow is:
## Printing the Layouts
Connect the dataport of the Pi Zero (its the one closer to the center) to the printers USB port. Connect a power source to the other port. SeedEtcher sends a bitmap via this USB serial connection using PCL that most laser printers understand.
Tip: Print the layout to paper first to check.
Connect the dataport of the Pi Zero (its the one closer to the center) to the printers USB port. Connect a power source to the other port. SeedEtcher sends a bitmap via this USB serial connection using PCL, PostScript or HBP (Brother host based printers protocol).
Tip: Print the layout to paper first to check. You can set inverted and mirrored off for that to save toner.
For the real print remember to use inverted and mirrored!
Use the manual feed to print onto the transfer paper. Make sure it prints onto the glossy side!
### Printer Settings
- Set resolution to highest (bitmap is sent at 600dpi)
- Set resolution to highest your printer supports (bitmap is sent at 1200dpi or 600dpi) (Caveat: Brother HQ1200 is not true 1200. If you send a 1200dpi bitmap to a printer set to HQ1200/600 via PCL, it will print it 200% in size. Just send 600dpi in that case.)
- Shut off toner saving options.
- If it has a silent mode option, turn it on (prints slower which is good).
- Set density to 0 (neutral, not +, not -).
- Configure manual feeder to be prioritized, makes it more convenient.
### A Note on Printing and Security
SeedEtcher is an air-gapped workflow. Therefore, your printer should obviously also be air-gapped. You should not use a networked printer for this. Albeit, it is very unlikely that an attacker would be able to extract the print layout, it is not impossible. So, keep that in mind.
SeedEtcher is an air-gapped workflow. Therefore, your printer should obviously also be air-gapped. You should not use a networked printer for this. Albeit, it is very unlikely that an attacker would be able to extract the print layout, it is not impossible. So, keep that in mind. Some printers have a memory wipe option.
Also, no cameras should be present where you do this process. That includes cell phones.
## Transferring Laser Print to Steel Plate
Important: Do not touch the printed surface! Oils from your fingers will prevent the toner from sticking to the metal.
***IMPORTANT:*** Do not touch the printed surface! Oils from your fingers will prevent the toner from sticking to the metal.
Note: When doing 2-sided plates, keep in mind that you have to etch one side at a time. You cannot transfer toner to both sides because the heat would destroy the other side.
1) ### Sand and clean metal plates
Use a scotch brite, steel wool or 240320 grit sand paper to thoroughly clean the plate. If you like the brushed metal look, sand it that way. Then thoroughly clean it with warm water and dish soap. Then clean it with acetone. Optionally, clean it with isopropyl alcohol after the acetone. Do not touch it after that. Oil on surface is your enemy. Let it dry.
Cut the print with a 1-2mm edge around the black square. Its easier to get off this way after transferring.
Pre-heat the iron to around 170°C. (the temperature has to be between 150°C and 180°C). Tip: Use a thermometer to figure out how hot your iron gets.
2) ### Cut and fasten transfer paper to plates
Cut the plate layouts as indicated by the cut marks. Use a clean surface (fresh piece of paper on a cutting mat), a clean metal ruler and a sharp cutter.
The new layout is designed for maximal mask coverage of a 100x100mm plate. Put the transfer paper with the laser side down on the plate. Pay attention what side should be flush with the plate edge! The left side is intentionally 5mm shorter so you can tape it down with a small strip of masking tape. (Tip: put a piece of tape on cutting mat and cut it to thin strips 5x20mm).
Use a scotch brite, steel wool or 600 grit sand paper to thoroughly clean the plate. If you like the brushed metal look, sand it that way. Then thoroughly clean it with warm water and dish soap. Then clean it with acetone. Optionally, clean it with isopropyl alcohol after the acetone. Do not touch it after that. Oil on surface is your enemy. Let it dry.
Tape the transfer paper with the laser print face down onto the steel plate. Masking tape works well for this, since it is easily removable after transfer. Only tape one side, preferebly the side where there is just black (left or right side). A tiny strip is enough. ONLY use masking tape for holding the transfer paper, not for etch masking!
Put 2 layers of a thin cotton rag (no texture!) over the plate.
TIP (highly recommended!): Get some 0.5-2mm thick silicone sheet ([amazon](https://a.co/d/2F59LSZ)). Cut it to 10x10cm and use that instead of the cotton rag. Pressure and heat distribution is better with silicone.
Put the plate on a wood block on the floor. Some household paper folded 4 times underneath the plate helps to keep it from sliding. Your contraption for this should be stable, no wiggling.
3) ### SeedEtcher Transfer Stack
With the SeedEtcher Transfer Stack it is now possible to heat transfer both sides of the plate at once.
TODO: add image for transfer stack
Pre-heat the iron to around 175°C. (the temperature has to be between 150°C and 180°C but no more than 180°C). Tip: Use a thermometer to figure out how hot your iron gets.
Put a paper towel folded 4 times on your wood board (optionally use cork, even better insulator). The board should be on the floor and it should not wiggle.
Put a silicone sheet, then the plate, another silicone sheet, then a 10x10cm piece of paper towel.
The silicone sheets distribute pressure and heat vastly better. You will regret it if you leave this out!
4) ### Heat Transfer
Set a timer to 180 seconds. Start the timer. Press the iron onto the plate with increasing pressure, covering the whole plate with the iron for 60s. Do not slide the iron!
Lift, press down on left half of plate, 30s. Then right side 30s. Then top 30s. Then bottom.
Pressure is important. Do it on the floor where you can really lean onto the iron. But be careful to not slide while pressing! And please, do not break your wifes iron.
Optional: Put a stack of steel plates on top of the hot plate (heat sink). It seems to help moving the heat off the transfer paper quickly, causing the toner to be released onto the steel fully.
Let it cool off completely! The transfer paper should buckle and lift off the metal all by itself. The transfer paper should come off without any toner sticking to it.
Optional: Put a stack of steel plates on top of the hot plate (heat sink).
Let it cool off completely! It will take a while (20m). The transfer paper should buckle and lift off the metal all by itself. The transfer paper should come off without any toner sticking to it.
5) ### Bake plate in oven
Pre-heat to 180°C, no airflow.
Bake for 12 minutes.
This reflows the toner and makes it stick even more to the plate and closes pinholes.
6) ### Repairs
If the transfer wasnt perfect you can do repairs by using nail polish or stop out ground and a small brush or anti-etching pens ([amazon](https://a.co/d/5DnOhRR))
### Trouble shooting
Dont be frustrated if it doesnt work the first time. This takes practice.
Common culprits:
- not enough pressure (most of the toner sticks to the paper)
- not enough heat (most of the toner sticks to the paper)
- plate not clean enough (toner doesnt stick everywhere)
- touching the print toner surface or plate (oils!)
Bake plate in oven.
Pre-heat to 170°C, no airflow.
Bake for 8 minutes.
This reflows the toner and makes it stick even more to the plate.
Repairs:\
If the transfer wasnt perfect you can do repairs by using nail polish or stop out ground and a small brush or anti-etching pens ([amazon](https://a.co/d/5DnOhRR))
- smeared transfer: your iron was too hot, or you moved/sheared the stack
## Etching
Youll need:
### Youll need:
- [ ] Container to hold Ferric Chloride. Food containers made from HDPE work well. Choose a size that allows to fully submerge the metal plate in 1L of solution. Tip: Test with water first.
- [ ] Plastic bowl with 1L of 2025°C warm water and 12 tablespoons (1530 g) of baking soda (NaHCO₃) dissolved into it.
- [ ] Container to hold Ferric Chloride. Food containers made from HDPE/PP work well. NO METAL containers, obviously! Choose a size that allows to fully submerge the metal plate in 1L of solution. Ideally the plate is vertical, especially when you want to etch both sides at the same time. Tip: Test with water first.\
I designed a 3d printed container for etching both sides holding exactly 0.5l of etchant. But I will not release the files just yet.
- [ ] Plastic container to hold a 40°C water bath. You put the etching container into it.
- [ ] Thermos with hot water to top up when the bath gets too cold
- [ ] Plastic bowl with 1L of 3040°C warm water and 12 tablespoons (1530 g) of baking soda (NaHCO₃) dissolved into it.
- [ ] Gloves and eye protection
- [ ] Timer
- [ ] Close access to running water
Warning:
Ferric Chloride stains EVERYTHING it comes in contact with. Dont let it drip into your kitchen sink, youll ruin the sink.
Always first put the plate into the baking soda solution bowl before rinsing it with water. This prevents acid carryover into sink and flash rust.
### Safety
1. Prepare the plate. You have to mask off the other side that should not be etched. Make sure you mask it off properly or etchant will get to it. Normal packaging tape or electrical tape works. Avoid masking tape! (its not water proof)\
Tip: make a holding flap from tape, so you can hold the plate easily.
2. Make sure the etchant is around 20-25°C. Too warm will make the etchant too aggressive and it will attack the toner mask more quickly. Too cold (10-15°C) and it etches much slower. Tip: Put the etching container in a hot water bath to achieve the temperature.
3. Set timer to 5 minutes and start. Submerge the plate fully into the FeCl, ideally keep it vertical. Get the FeCl moving slightly by either moving the container or the plate. Dont go crazy, a slight movement of the fluid every 30s is enough.
4. Take the plate out, let it drip off, submerge it into the baking soda bowl. This neutralises the acidic ferric-chloride residue.
5. Rinse the plate under running water (no hot water!). \
You can use a very soft brush to clean the plate carefully from etching remains. Just be careful to not destroy the mask!\
This prevents the neutralizer to mess with your ferric chloride.
1. Repeat steps 35 three to four times. This depends on how deep you want to etch and how well your toner mask is holding up.\
Important: Never put the plate back into the acid right after neutralizing it. The etchant solution will be slowly destroyed by this.\
Do work in a well ventilated area or outdoors. Albeit the fumes from FeCl3 aren't strong, I just recommend it.
Do wear protection gear: nitrile gloves, eye protection (important!). And maybe don't wear your favorite Bitcoin t-shirt.
***W A R N I N G***\
Ferric Chloride stains EVERYTHING it comes in contact with. Dont let it drip into your kitchen sink, youll ruin the sink.
Neutralize everything with the baking soda water solution!
1. Prepare the plate. You have to mask off the unmasked strip on the left side. Make sure you mask it off properly or etchant will get to it. Normal packaging tape or electrical tape works. Avoid masking tape! (its not water proof)\
Tip: make a holding flap from tape, so you can hold the plate easily from top.
1. Make sure the etchant is around 40°C. Tip: Put the etching container in a slightly warmer water bath to achieve the temperature. Use hot water from thermos to adjust it. Nice to have: Use an aquarium heater.
2. Set timer to 60 minutes. Submerge the plate fully into the FeCl, ideally keep it vertical. Get the FeCl moving slightly by either moving the container or the plate\
Etchant needs to be moving, or no fresh etchant will get to where it is supposed to. So, either take a plastic or glass stick and stir or use an fishtank air pump to produce bubbles from the bottom of the etch tank. If the bubbles are too strong, clamp the silicone tube slightly. This is a very comfortable setup.
1. Check the plate every 20 minutes. Check the mask. It is best not to do multiple sessions with neutralizing bath and water rinse, I found. It tends to destroy the mask.
60 minutes should get you 0.2mm etch depth. If the mask looks fine after 60 you can go to 80 or even 100.
1. When desired etch depth has been reached, take the plate out, let it drip off, submerge it into the baking soda bowl. This neutralises the acidic ferric-chloride residue.
2. Rinse the plate under running water.
And obviously: Do not etch unattended!
One liter of FeCl should last you for plenty of plates. I etched 16 plates and it still works fine.\
@ -189,18 +212,20 @@ You could use salt water and 12V/1amp to etch.\
However, I do strongly advise you NOT to do that. Etching stainless steel with salt water can produce chlorine gas and other toxic chlorine compounds.\
You do NOT want chlorine gas in your lungs. There are hundreds of youtube videos on etching like this, and none of them cares to give you that warning.
Etching copper or brass this way is fine.
Using Na2SO4 seems the way to go. But I need to do more testing.
## Post processing
Remove the toner with acetone.
Remove the toner with a stainless steel scrubber with dish soap and running water. Super efficient!
Clean rest with acetone.
Optionally wipe it down with vinegar (prevents corrosion).
If you etch 304 steel it is advisable to use citric acid to make the etched surface corrosion resistant again.
Optionally wipe it down with vinegar (but it's not as effective).
If the etching started to etch surfaces that should have been masked, you can often correct it by using 1200 or finer grit sandpaper with a sanding block.
If the etching started to etch surfaces that should have been masked, you can often correct it by using 240-320 grit sandpaper with a sanding block.
Carefully sand the etched plate until the undesired etching errors are mostly gone.
Do not keep failed prints or transfer sheets: destroy immediately!
And lastly: Please do test your backup before calling it done.

View File

@ -1,11 +1,14 @@
# Supported Printers
**Important:** For SeedEtcher a laser printer MUST have USB. All printers in this list do.
***PCL capability is preferable***, since you won't need to load the extra HBP (Brother's Host Based Printer) support (which is heavy on a zero).
A printer without Wi-Fi is preferable (air-gapped security). Wi-Fi can be shut off, however.
PCL and PostScript capable printers should generally work well with SeedEtcher.
Gotchas: If your print comes out 2x scale, you probably set the printer to a different resolution than what you're sending.
## Brother
***PCL capability is preferable***, since you won't need to load the extra HBP (Brother's Host Based Printer) support (which is heavy on a zero).
A printer without Wi-Fi is preferable (air-gapped security). Wi-Fi can be shut off, however.
Brother's suffix meanings:
D = Duplex
W = Wireless
@ -113,4 +116,4 @@ Some rows are manual additions for known models not present in the current `brla
## Other Printers
For now, only printers with true PCL and PostScript are supported.
For non-Brother models, only printers with true PCL or PostScript are currently supported.