seedhammer.com

module
v1.4.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 23, 2026 License: Unlicense

README

SeedHammer II Firmware

This repository contains the source code to run the controller program for the SeedHammer II engraving machine. The hardware is open source.

Installation

Press and hold the firmware upgrade button while connecting the machine to a computer. Then, copy the firmware file to the USB drive that appears. The installation is complete when the drive disappears.

Building from source

To build a UF2 image, Nix with flakes enabled is required.

$ nix run .#build-firmware
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, except for the signature. To copy the signature from an official release to a locally built firmware:

$ nix run .#copy-signature <path/to/official/seedhammerii-vX.Y.Z.uf2> seedhammerii-vX.Y.Z>

Development

Connect a debugger to the debug and UART ports on the machine PCB. Then, build and flash a firmware image:

$ nix run .#flash-firmware flash -tags debug

In debug mode, logging output from the controller is routed through the USB serial device. Use

$ tinygo monitor

to show the log on your terminal.

License

The files is this repository are in the public domain as described in the LICENSE file, except files in directories with their own LICENSE files.

Contributions

Contributors must agree to the developer certificate of origin, 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.

Directories

Path Synopsis
package address derives recieve and change addresses from output descriptors.
package address derives recieve and change addresses from output descriptors.
package backup implements the SeedHammer backup scheme.
package backup implements the SeedHammer backup scheme.
bc
bytewords
Package bytewords implements the the bytewords standard as described in [BCR-2020-012].
Package bytewords implements the the bytewords standard as described in [BCR-2020-012].
fountain
Package fountain implements the fountain encoding used by the Uniform Resources (UR) format described in [BCR-2020-005].
Package fountain implements the fountain encoding used by the Uniform Resources (UR) format described in [BCR-2020-005].
ur
Package ur implements the Uniform Resources (UR) encoding specified in [BCR-2020-005].
Package ur implements the Uniform Resources (UR) encoding specified in [BCR-2020-005].
urtypes
Package urtypes implements decoders for UR types specified in [BCR-2020-006].
Package urtypes implements decoders for UR types specified in [BCR-2020-006].
xoshiro256
Package xoshiro256 implements the xoshiro256** pseudo-random number generator.
Package xoshiro256 implements the xoshiro256** pseudo-random number generator.
package bip32 contains helper functions for operating on bitcoin bip32 extended keys.
package bip32 contains helper functions for operating on bitcoin bip32 extended keys.
package bip380 implements support for [BIP380], output descriptors.
package bip380 implements support for [BIP380], output descriptors.
package bip39 represents and converts bitcoin bip39 mnemonic phrases.
package bip39 represents and converts bitcoin bip39 mnemonic phrases.
Package bip85 implements the BIP85 specification [BIP85]: https://bips.dev/85/
Package bip85 implements the BIP85 specification [BIP85]: https://bips.dev/85/
cmd
assets command
Command assets converts PNG assets to embedded image literals.
Command assets converts PNG assets to embedded image literals.
biptool command
Command biptool manipulates Bitcoin seeds, keys and mnemonics.
Command biptool manipulates Bitcoin seeds, keys and mnemonics.
bitmapfont command
Command bitmapfont converts an OpenType file into an embedded bitmap font.
Command bitmapfont converts an OpenType file into an embedded bitmap font.
picosign command
Command picosign replaces the signature of UF2 firmware images for the rp2350 microcontroller from Raspberry Pi.
Command picosign replaces the signature of UF2 firmware images for the rp2350 microcontroller from Raspberry Pi.
vectorfont command
wordlist command
package codex32 is an implementation of the codex32 scheme.
package codex32 is an implementation of the codex32 scheme.
driver
ap33772s
package ap33772s implements a driver for the Diodes AP33772S USB PD 3.1 sink controller.
package ap33772s implements a driver for the Diodes AP33772S USB PD 3.1 sink controller.
otp
Package otp provides access to the one-time-programmable memory on the rp2350 microcontroller.
Package otp provides access to the one-time-programmable memory on the rp2350 microcontroller.
pio
tmc2209
Package tmc2209 is a TinyGo implementation for the TMC2209 stepper motor driver.
Package tmc2209 is a TinyGo implementation for the TMC2209 stepper motor driver.
Package engrave transforms shapes such as text and QR codes into line and move commands for use with an engraver.
Package engrave transforms shapes such as text and QR codes into line and move commands for use with an engraver.
font
constant
Code generated by seedhammer.com/cmd/vectorfont; DO NOT EDIT.
Code generated by seedhammer.com/cmd/vectorfont; DO NOT EDIT.
sh
package shfont contains the font used for engraving.
package shfont contains the font used for engraving.
vector
package font converts an OpenType font into a form usable for engraving.
package font converts an OpenType font into a form usable for engraving.
gui
package gui implements the SeedHammer controller user interface.
package gui implements the SeedHammer controller user interface.
assets
Code generated by gui/assets/gen.go; DO NOT EDIT.
Code generated by gui/assets/gen.go; DO NOT EDIT.
op
alpha4
Package alpha4 implements an image.Alpha replacement with compact 4-bit alpha values.
Package alpha4 implements an image.Alpha replacement with compact 4-bit alpha values.
ninepatch
package ninepatch contains an image.Image implementation of stretchable images in 9-patch format.
package ninepatch contains an image.Image implementation of stretchable images in 9-patch format.
paletted
Package paletted implements a image.Paletted replacement with a more compact encoding.
Package paletted implements a image.Paletted replacement with a more compact encoding.
rgb565
Package rgb565 contains an image.RGBA64Image implementation of a 16-bit RGB565 image.
Package rgb565 contains an image.RGBA64Image implementation of a 16-bit RGB565 image.
internal
nfc
poller
Package poller implements a NFC device poller for accepting data from either tags or writers.
Package poller implements a NFC device poller for accepting data from either tags or writers.
type2
package type2 implements the NFC Forum type 2 protocols.
package type2 implements the NFC Forum type 2 protocols.
type4
package type4 implements the NFC Forum Type 4 Tag specification.
package type4 implements the NFC Forum Type 4 Tag specification.
type5
Package type5 implements the NFC Forum type 5 protocols.
Package type5 implements the NFC Forum type 5 protocols.
package nonstandard implements parsing of non-standard bitcoin output descriptors.
package nonstandard implements parsing of non-standard bitcoin output descriptors.
Package picobin implements the block format for the Rapsberry Pi rp2XXX family of microcontrollers.
Package picobin implements the block format for the Rapsberry Pi rp2XXX family of microcontrollers.
Package seedqr encodes and decodes [SeedQR] and CompactSeedQR formats.
Package seedqr encodes and decodes [SeedQR] and CompactSeedQR formats.
package slip39 implements the [SLIP-39] specification.
package slip39 implements the [SLIP-39] specification.
package uf2 implements the [UF2] file format.
package uf2 implements the [UF2] file format.
website
content module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL