Guía de SeedSigner: versión inicial

De la caja de piezas a firmar una transacción: materiales y sus trampas, la
decisión de soldar o no, montaje, verificación de la firma del software,
arranque, menús, generación de la seed con dados, SeedQR, ciclo completo de
firma de una PSBT, resolución de averías y limitaciones honestas.

Documenta la versión 0.8.7 (julio de 2026). Los vectores de prueba están
contrastados contra docs/dice_verification.md en ese mismo tag.

Cubre el aparato, no el método: el porqué vive en la guía de autocustodia
verificable y aquí no se repite.
This commit is contained in:
Picaro
2026-08-08 13:05:04 +02:00
commit 77393eef7a
4 changed files with 609 additions and 0 deletions
+545
View File
@@ -0,0 +1,545 @@
# SeedSigner — guía completa
*Montar, verificar y usar un firmante de Bitcoin **air-gapped** —sin cable, WiFi ni Bluetooth— por menos de 50 €.*
---
## Qué es esto y qué no
SeedSigner es un **firmante** (*signing device*), no una wallet. No guarda tu seed: la mantiene en memoria mientras está enchufado y **la olvida por completo al desconectarlo**. Esa propiedad —ser *stateless*— es su rasgo definitorio y la razón de casi todo lo que hace raro.
Tres cosas que conviene tener claras antes de montar una:
1. **Tu backup en papel o metal ES el dispositivo.** No hay copia en el aparato. Si pierdes el papel, no hay nada que recuperar de la SeedSigner. Esto asusta al principio y luego resulta liberador: el hardware es desechable y reemplazable por 40 €.
2. **No tiene WiFi ni Bluetooth** (en la Pi Zero 1.3, que es la recomendada). Es lo que se llama **air-gapped**: sin ninguna conexión posible con otro ordenador. Solo puede *recibir* datos leyendo códigos QR con la cámara, y solo *enviar* mostrando QR en su pantalla. Aunque el software quisiera filtrar tu seed, no tendría por dónde.
3. **La montas tú.** Eso es una ventaja de seguridad (no hay cadena de suministro que comprometer, no hay paquete que interceptar) y un coste de tiempo real.
> **Esta guía cubre el aparato, no el método.** El **porqué** —por qué generar tu propia entropía, cómo verificarla, cómo diseñar una passphrase, cómo comprobar el backup— está en la [guía de autocustodia verificable](https://git.bitcointxoko.org/pikaro/autocustodia-verificable), es libre igual que esta, y aquí no se repite. Los pasos de este documento dan por supuesto ese porqué: si no lo tienes, empieza por ahí.
> **Cuatro palabras que van a salir mucho.** El **firmware** es el programa que corre dentro del aparato: no es una app que instalas encima, es su software propio y se actualiza aparte. **Air-gapped** significa sin ninguna conexión posible con otro ordenador — ni cable, ni WiFi, ni Bluetooth. El **xpub** (o **zpub**, el mismo dato escrito de otra forma) es tu clave pública extendida: sirve para generar tus direcciones y ver tu saldo, pero **no para gastar**. Y **GPG** es la herramienta con la que compruebas que un fichero descargado lo firmó quien dice y nadie lo ha manipulado por el camino.
>
> El **fingerprint** (o **XFP**) aparece a partir de la sección 9: son ocho caracteres que identifican tu wallet sin revelar nada de ella, y con los que compruebas que estás donde crees que estás.
**Estado de la información:** agosto de 2026, versión **0.8.7** ("The Summer of SeedSigner", 8 de julio de 2026). Contrasta siempre con el [repositorio oficial](https://github.com/SeedSigner/seedsigner) antes de seguir cualquier paso técnico. Si algo aquí lo contradice, gana el repositorio.
> ⚠️ **El README del repositorio va por detrás de las releases.** Cuando escribimos esto, el texto del README seguía documentando la 0.8.6 mientras la 0.8.7 llevaba semanas publicada. **Mira siempre la [página de releases](https://github.com/SeedSigner/seedsigner/releases), no el README**, y usa el número que ponga ahí. Es un caso pequeño del mismo principio de toda esta guía: la documentación envejece, la fuente primaria manda.
---
## Índice
1. [Materiales](#1-materiales)
2. [La decisión que hay que tomar antes de comprar: soldar o no](#2-la-decisión-que-hay-que-tomar-antes-de-comprar-soldar-o-no)
3. [Montaje](#3-montaje)
4. [Descargar y verificar el software](#4-descargar-y-verificar-el-software)
5. [Grabar la MicroSD](#5-grabar-la-microsd)
6. [Primer arranque y test de entrada/salida](#6-primer-arranque-y-test-de-entradasalida)
7. [Recorrido por la interfaz](#7-recorrido-por-la-interfaz)
8. [Configuración recomendada](#8-configuración-recomendada)
9. [Generar tu seed con dados](#9-generar-tu-seed-con-dados)
10. [SeedQR: cargar la seed en segundos](#10-seedqr-cargar-la-seed-en-segundos)
11. [Crear la wallet en Sparrow y firmar una transacción](#11-crear-la-wallet-en-sparrow-y-firmar-una-transacción)
12. [Pruébalo antes de comprar: el simulador](#12-pruébalo-antes-de-comprar-el-simulador)
13. [Resolución de problemas](#13-resolución-de-problemas)
14. [Limitaciones y qué NO hace](#14-limitaciones-y-qué-no-hace)
15. [Fuentes](#15-fuentes)
---
## 1. Materiales
| Pieza | Especificación exacta | Precio orientativo | Trampa |
|---|---|---|---|
| **Raspberry Pi Zero** | **v1.3**, sin WiFi/Bluetooth | 10-20 € | Ver abajo ⚠️ |
| **Pantalla** | Waveshare **1.3" LCD HAT, 240×240 px** | 15-20 € | ⚠️ La trampa principal |
| **Cámara** | Compatible Pi Zero, sensor **OV5647** (Aokin / AuviPal 5MP 1080p) | 8-12 € | El cable es específico del Zero |
| **MicroSD** | Cualquiera, ≥ 4 GB | 5 € | La imagen ocupa < 42 MB |
| **Alimentación** | Cargador USB de red o batería externa | — | ⚠️ Ver abajo |
| **Carcasa** | Open Pill o Orange Pill (impresión 3D) | 0-15 € | Opcional para empezar |
**Total: 40-60 €.**
### ⚠️ Las tres trampas de la compra
**1. La pantalla.** Waveshare fabrica varias placas de 1,3 pulgadas que **se parecen muchísimo y no son compatibles**. La que necesitas es la de **240×240 píxeles**. Si compras la de otra resolución, no funciona y no hay forma de arreglarlo por software. Comprueba la resolución en la descripción antes de pagar, no el aspecto de la foto.
**2. El modelo de Pi.** La recomendada es la **Pi Zero 1.3**, precisamente porque **no lleva WiFi ni Bluetooth**: la propiedad air-gapped es física, no una opción que puedas desactivar por descuido.
Las "W" y "2W" son más fáciles de encontrar y funcionan, pero llevan radio. Si acabas con una:
- Sigue siendo utilizable — el software de SeedSigner no usa la radio.
- Puedes **desactivar el WiFi/BT por hardware**. Hay un procedimiento documentado por [DesobedienteTecnologico](https://github.com/DesobedienteTecnologico/rpi_disable_wifi_and_bt_by_hardware) (proyecto en español, por cierto).
- **Importante:** cada modelo usa una imagen distinta y **no son intercambiables**. Ver la tabla del punto 4.
**3. La alimentación.** Es la causa nº 1 de "no me funciona la cámara" y "se reinicia solo". **Una pila de 9V no da suficiente corriente.** Usa un cargador de red decente o una batería externa (power bank) de las normales. Y usa un cable USB de datos-y-carga en buen estado: los cables de carga baratos tienen conductores finos y provocan caídas de tensión que se manifiestan como fallos aleatorios.
### Dónde comprar
Cualquier distribuidor de electrónica sirve; no hay una cadena de suministro que proteger porque las piezas son genéricas y el software lo verificas tú. Comprar en tres sitios distintos es incluso mejor: nadie sabe que estás montando un firmante de Bitcoin.
Las carcasas impresas se pueden comprar hechas en [BTC Hardware Solutions](https://btc-hardware-solutions.square.site), o imprimirlas: los ficheros están en el [repositorio](https://github.com/SeedSigner/seedsigner/tree/main/enclosures). La **Open Pill** se imprime en ~2 h sin soportes y no necesita tornillería. La **Orange Pill** queda más acabada pero pide 4 separadores M2,5 de 10 mm y tornillos M2,5 de 6 y 12 mm.
---
## 2. La decisión que hay que tomar antes de comprar: soldar o no
La Pi Zero viene, por defecto, **sin los pines GPIO soldados**. La pantalla se conecta a esos 40 pines (2 filas de 20). Tienes tres caminos:
| Opción | Qué implica | Para quién |
|---|---|---|
| **Comprar "Pi Zero WH"** | Viene con los pines ya soldados de fábrica | ⭐ **Si dudas, esta.** Cuesta 3-5 € más y te ahorra el único paso que puede arruinar la placa. Ojo: la WH lleva radio (ver trampa 2) |
| **Soldar tú** | 40 puntos de soldadura. No es difícil, pero es la primera vez de mucha gente | Si quieres aprender, o ya tienes soldador |
| **Cabezal sin soldadura** | Existen cabezales a presión (*hammer header*). Funcionan, pero son menos fiables a largo plazo | Solución de compromiso |
**Si sueldas, dos consejos que evitan el 90% de los problemas:**
- **Suelda antes de montar nada más.** Placa desnuda, buena luz, sin prisa.
- **Una soldadura fría no se ve, se nota.** Si la pantalla no enciende, los botones no responden o el aparato se reinicia, revisa las soldaduras antes que ninguna otra cosa. Es la causa más frecuente. Una soldadura correcta es brillante y con forma de volcán; una fría es mate y abultada.
> **Para un taller:** decidir esto de antemano cambia por completo la logística. Soldar 40 pines por persona come 45-60 minutos y exige un soldador por cada 2-3 asistentes, además de ventilación. Ver el guion del facilitador.
---
## 3. Montaje
**Regla de oro: prueba antes de meterlo en la carcasa.** Desmontar un conjunto ya encajado para arreglar un problema es la forma más habitual de romper la pantalla o la carcasa. El orden correcto es: montar sin carcasa → grabar la SD → arrancar → test de I/O → *entonces* encajarlo todo.
### 3.1 La cámara
Es la pieza más delicada del montaje y donde más gente se equivoca.
1. En la Pi Zero, localiza el conector de cámara (el conector plano estrecho, en el borde).
2. **Tira suavemente de las pestañas hacia fuera.** Cuando están hundidas, sujetan el cable; hay que levantarlas para poder insertarlo.
3. Inserta el cable plano **con los contactos dorados mirando hacia la cara inferior de la placa** (la cara sin componentes). Esto es lo que más gente pone al revés.
4. Vuelve a presionar las pestañas para fijar el cable.
5. Comprueba que el cable entra recto y hasta el fondo, sin quedar torcido.
> El cable de la Pi Zero es **más estrecho** que el de las Raspberry Pi grandes. Si compraste una cámara "para Raspberry Pi" genérica, puede venir con el cable ancho y necesitarás el adaptador correcto. Comprueba esto al desembalar, no el día del taller.
### 3.2 La pantalla
Encaja el HAT de Waveshare sobre los 40 pines GPIO. Va en una única orientación posible: la pantalla queda sobre la Pi, y los pines entran todos a la vez. **No fuerces.** Si no entra, algo está desalineado — retíralo y mira los pines.
### 3.3 La carcasa (después de probar)
Una vez que hayas confirmado que arranca, la pantalla pinta, los botones responden y la cámara ve, ya puedes encajarlo en la Open Pill o atornillar la Orange Pill.
---
## 4. Descargar y verificar el software
⚠️ **Ejecuta la verificación antes de abrir o montar el archivo `.img`.** Algunos sistemas operativos modifican el archivo al montarlo y la verificación fallaría.
### 4.1 Descarga la imagen de TU modelo
Desde las [releases oficiales](https://github.com/SeedSigner/seedsigner/releases). Versión actual: **0.8.7**. Comprueba en esa página que no ha salido una más nueva.
| Tu placa | Imagen |
|---|---|
| Raspberry Pi Zero 1.3 ⭐ | `seedsigner_os.0.8.7.pi0.img` |
| Raspberry Pi Zero W | `seedsigner_os.0.8.7.pi0.img` |
| Raspberry Pi Zero **2** W | `seedsigner_os.0.8.7.pi02w.img` |
| Raspberry Pi 1 B/B+ | `seedsigner_os.0.8.7.pi0.img` |
| Raspberry Pi 2 B | `seedsigner_os.0.8.7.pi2.img` |
| Raspberry Pi 3 B | `seedsigner_os.0.8.7.pi02w.img` |
| Raspberry Pi 4 B / 400 | `seedsigner_os.0.8.7.pi4.img` |
La imagen ocupa **menos de 42 MB** desde la v0.6.0. Si te parece que ha descargado demasiado rápido, es normal.
> Elegir mal no rompe nada: es software, no firmware. Simplemente no arrancará y volverás a grabar la SD. Si no sabes qué placa tienes, prueba `pi0`.
>
> Si le quitaste físicamente el chip de WiFi a tu placa, sigues usando la imagen del hardware **original**: las imágenes se compilan por arquitectura de procesador.
**Descarga también, de la misma release, estos dos archivos:**
- `seedsigner.0.8.7.sha256.txt` — el manifiesto de hashes
- `seedsigner.0.8.7.sha256.txt.sig` — su firma
Los tres archivos, en la misma carpeta.
### 4.2 Verificar la firma
*(El porqué de cada paso está en la Sección 4 / Paso 0b de la guía de autocustodia. Aquí van los comandos concretos.)*
**1. Importar la clave pública del proyecto:**
```
gpg --fetch-keys https://keybase.io/seedsigner/pgp_keys.asc
```
Debe confirmar que se importó o actualizó 1 clave. **Ignora el ID y el correo que muestre.**
**2. Verificar la firma del manifiesto:**
```
gpg --verify seedsigner.0.8.7.sha256.txt.sig
```
Debe decir **"Good signature"**. Si dice "Bad signature", **para aquí**.
El aviso `WARNING: This key is not certified with a trusted signature` es **normal** y se resuelve en el paso siguiente. No es un error.
**3. El paso crítico — ¿de quién es esa clave?**
En la última línea de la salida, toma los **16 caracteres de la derecha** (4 bloques de 4) y compáralos con la huella publicada en [keybase.io/seedsigner](https://keybase.io/seedsigner).
⚠️ **El nombre y el correo que muestra GPG no verifican nada.** Cualquiera puede poner el texto que quiera al crear una clave. **Solo la huella cuenta.**
Para no depender de una sola fuente, el proyecto publica la misma huella en tres sitios independientes:
- [Twitter](https://twitter.com/SeedSigner/status/1530555252373704707)
- [Gist de GitHub](https://gist.github.com/SeedSigner/5936fa1219b07e28a3672385b605b5d2)
- [seedsigner.com/keybase.txt](https://seedsigner.com/keybase.txt)
Si las cuatro coinciden (Keybase + esas tres), un atacante tendría que haber comprometido todas a la vez. **Si no coinciden, para aquí.**
**4. Verificar la imagen:**
Linux o macOS:
```
shasum -a 256 --ignore-missing --check seedsigner.0.8.7.sha256.txt
```
*(macOS anterior a v11 Big Sur no soporta `--ignore-missing`; omítelo e ignora los avisos de archivos ausentes.)*
Windows (PowerShell):
```
CertUtil -hashfile seedsigner_os.0.8.7.pi0.img SHA256
```
y compara manualmente con el valor del `.sha256.txt`.
Debe salir **`OK`** para tu archivo `.img`. Si sale `FAILED`, **para aquí**.
### 4.3 Alternativa sin terminal
Sparrow Wallet incluye `Tools``Verify Download`, con interfaz gráfica. Le das la firma, el manifiesto y el `.img`.
⚠️ **Pero Sparrow te mostrará el nombre y correo de la clave, y eso no verifica nada.** El paso 3 (contrastar la huella) sigue siendo imprescindible hagas la comprobación como la hagas.
### 4.4 Si quieres eliminar incluso esa confianza
Desde la v0.7.0, las imágenes son **reproducibles**: puedes compilarlas desde el código fuente y comprobar que el resultado es byte a byte idéntico al publicado. Eso elimina la confianza en quien firma las releases. Instrucciones en el [repo de seedsigner-os](https://github.com/SeedSigner/seedsigner-os/blob/main/docs/building.md).
Es también una forma útil de contribuir al proyecto: compilar y publicar el hash que te sale.
---
## 5. Grabar la MicroSD
Tres opciones: **Raspberry Pi Imager**, **balenaEtcher** o `dd`. Las dos primeras son las recomendadas; ambas verifican la escritura por defecto, y **conviene esperar a que esa verificación termine** — te ahorra horas de depuración si luego el aparato no arranca.
- No hace falta formatear la tarjeta antes.
- Comprueba que el adaptador de MicroSD **no tiene el interruptor de bloqueo activado**.
- Borra todo lo que hubiera en la tarjeta.
**En macOS:** al terminar, el sistema dirá que el disco es ilegible y ofrecerá inicializarlo. **Pulsa "Expulsar", nunca "Inicializar".** Es normal: macOS no sabe leer el sistema de archivos de Linux.
**En Windows:** usa Pi Imager como primera opción. Si la escritura falla, se cuelga o no empieza, prueba a ejecutar la aplicación **como administrador** (clic derecho). Si tienes activado *Acceso controlado a carpetas* (no viene activo por defecto), desactívalo temporalmente.
Si una de las dos aplicaciones te falla, prueba la otra: hay máquinas donde una funciona mejor que la otra.
---
## 6. Primer arranque y test de entrada/salida
1. Inserta la MicroSD.
2. Conecta la alimentación **por el puerto USB correcto** — la Pi Zero tiene dos micro-USB y solo uno es de alimentación (viene marcado `PWR`).
3. **Espera unos 45 segundos** a que aparezca el logo. La primera vez parece que no pasa nada. Ten paciencia antes de concluir que algo falla.
### El test de I/O: hazlo siempre
`Settings`**Input/Output Tests**.
Comprueba, uno por uno:
- **Cada botón y cada dirección del joystick.** Si alguno no responde → soldadura.
- **La cámara.** Debe mostrar imagen en vivo. Si no → cable del revés, mal insertado, o alimentación insuficiente.
Este test tarda dos minutos y es el que decide si puedes montar la carcasa o tienes que volver al soldador. **No lo saltes.**
> **La SD se puede quitar después de arrancar.** Es una propiedad de seguridad deliberada: una vez cargado el sistema en memoria, puedes extraer la tarjeta y así garantizar que ningún dato secreto pueda escribirse en ella. Para uso normal no hace falta, pero es una opción disponible.
---
## 7. Recorrido por la interfaz
**Los controles:** un joystick de 5 posiciones (arriba, abajo, izquierda, derecha, pulsar) y tres botones (KEY1, KEY2, KEY3) cuya función cambia según la pantalla y se indica en el margen.
**El menú principal:**
| Entrada | Qué hace |
|---|---|
| **Scan** | Activa la cámara para leer un QR (una PSBT a firmar, una SeedQR, un QR de ajustes, una dirección a verificar) |
| **Seeds** | Gestiona las seeds cargadas en memoria en esta sesión |
| **Tools** | Crear seed nueva (dados, imagen, elegir palabras), explorador de direcciones, generación BIP85 |
| **Settings** | Configuración, tests de I/O, idioma, red |
**Lo que hay que interiorizar:** todo lo que hay en `Seeds` **desaparece al desconectar**. No es un fallo ni un modo temporal — es el diseño. La seed vive en tu papel; la SeedSigner solo la sostiene mientras hace un cálculo.
---
## 8. Configuración recomendada
`Settings`:
- **Idioma:** desde la 0.8.7, el **español es idioma totalmente soportado** (y el catalán también). Cámbialo nada más arrancar: quita la barrera del inglés de golpe, y en un taller ahorra media hora de traducir menús en voz alta.
- **Red:** Mainnet para uso real; Testnet o Regtest para practicar (ver la nota de abajo).
- **Densidad de QR:** si tu ordenador no lee bien los QR animados que muestra la SeedSigner, baja la densidad aquí.
- **Tipos de script:** por defecto Native Segwit. También soporta Taproot, Nested Segwit y Legacy.
- **Modo persistente de ajustes:** los ajustes sí se pueden guardar en la SD (no las seeds).
### SettingsQR: configurar varios aparatos en segundos
El proyecto mantiene un [generador de ajustes](https://github.com/SeedSigner/seedsigner-settings-generator) que produce un **código QR con toda una configuración**. Escaneas el QR con la SeedSigner y queda configurada de golpe: idioma, red, tipos de script, nivel de usuario.
Es la diferencia entre configurar quince aparatos a mano y proyectar un QR en la pared. **Para un taller es imprescindible.**
### ⚠️ Nota sobre la red de pruebas
La guía de autocustodia recomienda **signet** para practicar, porque testnet3 lleva años deteriorada. Pero el README de SeedSigner 0.8.7 lista **mainnet, testnet y regtest** — no menciona signet.
`[VERIFICAR]` antes de planificar una práctica: comprueba en los ajustes de tu dispositivo qué redes ofrece realmente tu versión. Si no hay signet, las opciones son **testnet** (con sus problemas conocidos) o **regtest** (que requiere un nodo propio, pero funciona perfectamente para un taller: controlas la red entera y puedes generar bloques a voluntad).
Para un taller, **regtest contra tu nodo es la opción más limpia**: sin depender de faucets externos ni de la salud de una red pública.
---
## 9. Generar tu seed con dados
> **Lee antes las secciones 2, 3 y 5 de la [guía de autocustodia](https://git.bitcointxoko.org/pikaro/autocustodia-verificable)**: por qué la entropía propia importa, por qué 99 tiradas, cómo diseñar la passphrase y por qué no debes inventártela. Aquí solo va el manejo del aparato.
### 9.1 El vector de prueba (hazlo primero, siempre)
`Tools``New Seed` → dados → 24 palabras. Introduce:
```
655152231316521321611331544441236164664431121534415633526456254462245546236542364246312613322234612
```
Debe producir **exactamente**:
```
eyebrow obvious such suggest poet seven breeze blame virtual frown dynamic donor
harsh pigeon express broccoli easy apology scatter force recipe shadow claim radio
```
**Vector corto** (50 tiradas → 12 palabras):
```
65515223131652132161133154444123616466443112153441
```
```
hole luggage safe present express tragic orbit shed switch metal identify path
```
Fingerprint `8d9cced8`, zpub `zpub6qf9ziL759pzyhKMWaPfNSiCETkoA6oq3fbCDvXqcURiMtPnkEg3nH93W5mrSkvGPoJC9xTYZheYDsYoiYc5AkSk9iY3DkCJHkFgHMdijW6`.
Son seeds públicas, publicadas en la documentación del proyecto. **Riesgo cero, diez minutos, y verifica tu unidad concreta con tu firmware concreto** antes de que custodie nada.
Si coincide: tu aparato convierte la entropía correctamente. Si no coincide: para y revisa qué versión tienes instalada.
### 9.2 Generar la tuya
1. `Tools``New Seed` → dados → **24 palabras (99 tiradas)**.
2. Tira el dado 99 veces, introduciendo cada resultado.
3. **Anota cada tirada en papel según la introduces.** Sin la secuencia no podrás hacer la verificación cruzada, y no hay forma de recuperarla.
4. Al terminar, la SeedSigner calcula el checksum y muestra las 24 palabras en 6 pantallas de 4.
5. Si dudas de una tirada a mitad: **reinicia el proceso entero**. No "arregles" una tirada suelta.
⚠️ La secuencia de tiradas **es material de clave**. Nunca la fotografíes ni la guardes en digital.
### 9.3 Verificación cruzada [avanzado]
El repositorio incluye `tools/mnemonic.py`, que ejecuta exactamente el mismo código de conversión que corre en el dispositivo:
```
git clone https://github.com/SeedSigner/seedsigner.git
cd seedsigner && python3 -m venv venv && source venv/bin/activate
pip install embit && pip install -e . && cd tools
python3 mnemonic.py dice <tus_99_tiradas>
```
También acepta `coins` para secuencias binarias y `--zero-indexed-dice` si anotaste los dados como 0-5.
Contrasta el resultado con [iancoleman.io/bip39](https://iancoleman.io/bip39) y [bitcoiner.guide/seed](https://bitcoiner.guide/seed/).
⚠️ En iancoleman: marca "Show entropy details", selecciona **"Base 10"** o **"Hex"** — **nunca la opción "Dice [1-6]"**, porque ahí el 6 se convierte en 0 y obtendrás un resultado distinto — y fija "Mnemonic Length" a 24 palabras.
> ### 🔴 Con una seed de ENSAYO, nunca con la tuya
>
> Haz esta verificación **antes** de generar la seed que vas a usar: tira 99 veces, genera una seed desechable con el mismo dado y el mismo método, verifica **esa** contra las tres herramientas, descártala, y solo entonces genera la real.
>
> La seed de ensayo no va a tener fondos jamás, así que puedes teclearla en tu ordenador de siempre sin ningún riesgo. Y cubre el ataque que el vector público no cubre: un aparato manipulado podría reconocer el vector conocido y portarse bien solo con él, pero no puede distinguir tus tiradas de ensayo de las de verdad.
>
> **La seed que vayas a usar no se teclea en un ordenador nunca.** Ni air-gapped, ni en una sesión efímera que destruyas después. La documentación de SeedSigner sugiere esa vía para verificar seeds reales; aquí somos más estrictos a propósito, y la Sección 3.2 de la [guía de autocustodia](https://git.bitcointxoko.org/pikaro/autocustodia-verificable) explica por qué.
### 9.4 La opción de la cámara: qué es y cuándo vale
En `Tools` vas a ver, junto a los dados, la opción de generar la seed **con una foto**. La vas a ver, alguien va a preguntar, y merece una respuesta mejor que "no la uses".
**Cómo funciona.** SeedSigner encadena cuatro entradas en un SHA-256: el número de serie del Pi, el tiempo desde el arranque, hasta 50 fotogramas de la previsualización en vivo y la foto final. Las dos primeras aportan casi nada —el aparato no tiene reloj y el número de serie no es secreto—, así que **todo descansa en la cámara**.
**Y la cámara aporta de sobra.** Una escena iluminada mide del orden de **millones de bits** frente a los 256 que hacen falta. El dato que más sorprende: **una pared blanca vale prácticamente igual que una estantería llena de libros** —menos del 10% de diferencia—. La entropía no está en lo que fotografías, está en el **ruido del sensor**, que cambia en cada lectura. Dos fotos seguidas del mismo sitio, con el aparato quieto en la mesa, difieren en el 80% de sus valores de color. Y en 320 capturas medidas no se repitió ninguna.
O sea: **el método no es débil.** Si alguien en el taller lo usa con luz, tiene una seed sólida.
#### Por qué el taller usa dados igualmente
Por una sola razón, y no es la cantidad de entropía. Lo dice el desarrollador principal de SeedSigner en su propio análisis:
> Con la imagen solo puedes verificar el **proceso**, no los resultados individuales. Los dados se diferencian exactamente en eso: las tiradas caben en un papel.
Son unos 12 MB de fotogramas. No caben en un QR, y escribirlos a la tarjeta sería guardar tu seed en disco —justo lo que un aparato *stateless* no hace nunca—. Con tus 99 tiradas puedes ir a tres herramientas distintas y comprobar que dan lo mismo. Con una foto, **nadie podrá comprobar nunca nada sobre esa seed concreta**, ni tú.
En un taller eso pesa el doble: lo que enseñamos es a verificar, y los dados son el único método donde el asistente puede hacerlo con sus propias manos.
#### Si la usas, cuatro reglas que nadie te va a decir
Salen de mediciones sobre cuatro aparatos físicos, y ninguna es evidente:
| | |
|---|---|
| **1. Con luz** | Es lo único que importa de verdad. Cualquier escena vale |
| **2. Nunca a oscuras** | Boca abajo en la mesa, la lente tapada, dentro de una bolsa |
| **3. Pulsa, no mantengas** | Mantener el botón **se salta la capa de previsualización entera** |
| **4. Ignora la pantalla** | Lo que ves no indica cuánta entropía recogiste |
La regla 2 no es exageración: con el sensor sin luz se midieron fotos finales de **113, 177, 190 y 221 bits**, por debajo de los 256 que necesita una seed de 24 palabras. Y la capa de previsualización, que debería cubrir eso, **se cae al mismo tiempo**: a oscuras casi todos sus fotogramas son un negro constante que un atacante puede calcular sin haber visto nada. Los dos fallos tienen la misma causa —falta de luz— así que no son dos capas, es una.
La regla 3 viene de un tic introducido en la v0.7.0: si mantienes el botón pulsado atraviesas previsualización, captura y aceptación de un gesto, y no se encadena ni un fotograma.
La regla 4 es la que más incomoda: una pantalla de revisión **completamente negra** vino de capturas con cien veces lo necesario, y una **con ruido bien visible** de capturas muy por debajo del mínimo. Mirar la pantalla para quedarte tranquilo es mirar algo que no correlaciona.
> **De dónde salen estas cifras.** Del [análisis de entropía por imagen](https://kdmukai-bot.github.io/seedsigner-ai-analysis/image-entropy/) del propio proyecto, con los 340 MB de capturas en bruto publicados para que cualquiera lo contradiga. Ellos mismos avisan de que es un análisis asistido por IA de su desarrollador principal, **no una auditoría independiente**, y de que nadie ha reproducido las cifras todavía.
#### El tercer método: elegir las palabras a mano
SeedSigner también deja **elegir tú las palabras** de la lista BIP-39 y calcula la última. Es válido si eliges esas palabras con una fuente aleatoria de verdad —dados y una tabla— y **es un desastre si las eliges "al azar" de tu cabeza**, que es lo que hace casi todo el mundo. Si vas por ahí, usa una tabla y un dado, no tu intuición.
---
## 10. SeedQR: cargar la seed en segundos
Escribir 24 palabras a mano en un joystick cada vez que quieras firmar es tedioso, y el tedio hace que la gente deje de verificar cosas. La respuesta del proyecto es la **SeedQR**: transcribes tu seed a un código QR **a mano**, en papel, y luego la SeedSigner la lee en un segundo con su cámara.
- La SeedSigner tiene un **modo guiado** para transcribirla, casilla a casilla.
- El proyecto publica [plantillas imprimibles](https://github.com/SeedSigner/seedsigner/tree/main/docs/seed_qr/printable_templates) en varios formatos: rejilla, puntos, y formato "cromo" de tamaño tarjeta.
- **Estándar** (25×25 para 12 palabras, 29×29 para 24) o **Compact** (21×21 y 25×25), que ocupa menos casillas.
⚠️ **Una SeedQR es tu seed en texto plano.** No es cifrado ni ofuscación: cualquiera con un móvil la lee. Guárdala con exactamente el mismo cuidado que las palabras escritas, y nunca la fotografíes.
Muy práctica. Y es donde más gente confunde "difícil de leer para un humano" con "seguro".
---
## 11. Crear la wallet en Sparrow y firmar una transacción
### 11.1 Crear la wallet
1. Sparrow → `File``New Wallet`. Ponle nombre.
2. `Airgapped Hardware Wallet` → en la fila de SeedSigner, pulsa **`Scan`**. Se abre la cámara del ordenador.
3. En la SeedSigner, con la seed cargada: `Export Xpub``Single Sig``Native Segwit``Sparrow`.
4. La SeedSigner muestra un **QR animado**. Ponlo delante de la cámara del ordenador hasta que Sparrow lo capte entero.
5. `Apply`.
6. **Compara el fingerprint de Sparrow con el que muestra la SeedSigner.** Deben coincidir.
Si el QR animado no se lee: baja la densidad de QR en los ajustes de la SeedSigner, o ajusta el brillo con el joystick (arriba/abajo).
### 11.2 Firmar una transacción (PSBT)
Este es el ciclo de trabajo normal, y la parte que la guía de autocustodia no cubre porque es específica del modelo air-gapped:
1. **En Sparrow**, compón la transacción normalmente y pulsa firmar. Sparrow muestra un **QR animado** con la PSBT (la transacción sin firmar).
2. **En la SeedSigner**: carga tu seed (tecleando las palabras, o escaneando tu SeedQR) → `Scan` → apunta a la pantalla del ordenador.
3. La SeedSigner muestra un **repaso detallado de la transacción**: a dónde va, cuánto, la comisión, y —esto es lo importante— **verifica las salidas de cambio**. Léelo. Es tu única defensa contra un ordenador comprometido que te enseñe una cosa y firme otra.
4. Confirma. La SeedSigner muestra la PSBT **firmada** como QR animado.
5. **En Sparrow**: escanea ese QR. Sparrow reconstruye la transacción firmada y ya puedes difundirla.
**En ningún momento se conectan.** Todo pasa por códigos QR y tus ojos.
### 11.3 Verificar direcciones de recepción
`Scan` sobre la dirección que te muestra tu wallet de software: la SeedSigner confirma si esa dirección pertenece de verdad a tu wallet. Es la defensa contra malware que sustituye direcciones al copiar y pegar. **Hazlo siempre antes de recibir una cantidad significativa.**
---
## 12. Pruébalo antes de comprar: el simulador
Existe un **simulador que corre el firmware real de SeedSigner en una pestaña del navegador**: [bitsaga.be/seedsigner-simulator](https://bitsaga.be/seedsigner-simulator/) ([código](https://github.com/bitsagarob/seedsigner-simulator), MIT).
No es un vídeo ni una imitación rehecha para parecerse: es el mismo Python que corre en el aparato, con la pantalla dibujada en un canvas, los botones en tu teclado y la cámara en tu webcam. Puedes recorrer el menú entero, cargar una seed, meter tiradas de dado, poner passphrase, exportar el xpub y firmar una PSBT.
**Para qué sirve:** ver si el flujo te convence antes de gastar 50 €, practicar el procedimiento sin hardware, y enseñárselo a alguien — una pantalla de 1,3 pulgadas no se comparte, una pestaña del navegador sí. Para un taller, es la diferencia entre pasar el aparato de mano en mano y proyectarlo.
### Por qué este sí y no cualquier simulador
Esta guía repite que no te fíes de software que no puedes comprobar, así que toca aplicárselo. Lo que ofrece: está **anclado a un tag de release y no a una rama** (una rama se reescribe, un tag publicado no), su **compilación es reproducible** con el sha256 publicado para que lo rehagas y compares byte a byte, una máquina limpia lo reconstruye en cada cambio, y **corre la batería de tests de los propios autores de SeedSigner**. MIT, con el origen y la licencia de cada dependencia listados.
Vale la pena mirarlo aunque no lo uses, como ejemplo de qué aspecto tiene un proyecto que se deja verificar.
### Tres trampas prácticas
**1. Arranca en el fork de smartcard, no en SeedSigner a secas.** La página abre por defecto el fork de 3rdIteration, que añade menús de tarjetas SeedKeeper y Satochip que tu aparato **no va a tener**. Para ver lo mismo que tendrás en la mano, usa el control de *Firmware* o entra directamente por [`?firmware=stock`](https://bitsaga.be/seedsigner-simulator/?firmware=stock).
**2. Mainnet funciona de verdad.** Arranca en testnet a propósito, pero mainnet está disponible en los ajustes y **deriva claves reales y firma transacciones reales**. Una clave derivada en una pestaña del navegador es una clave real.
> ⚠️ **No metas ahí ninguna seed tuya. Ninguna. Nunca.** Ni "solo para ver". Una pestaña del navegador no es un air gap y el sistema de ficheros de Pyodide no es un elemento seguro — lo dicen ellos mismos. Usa una seed de prueba pública, como la del vector de la Sección 9.1, que existe justo para esto.
**3. Si lo quieres alojar tú** —por ejemplo para tenerlo offline en la sala de un taller— necesita dos cabeceras (`Cross-Origin-Opener-Policy` y `Cross-Origin-Embedder-Policy`) o no arranca, y la cámara exige `https` o `localhost`: por `http` en una IP de la red local no hay API de cámara que valer. Lo tienen documentado en `docs/SELF-HOSTING.md`. Una vez cargada, la página funciona sin conexión.
### Qué no simula
Sin microSD, sin nada que dependa de hilos, sin comportamientos por tiempo. Y sobre todo, **ninguna propiedad de seguridad real**. Es un proyecto independiente, sin relación con SeedSigner, y —palabras suyas— *ejecutarlo no demuestra nada sobre un dispositivo real*.
---
## 13. Resolución de problemas
| Síntoma | Causas, en orden de probabilidad |
|---|---|
| **No enciende el LED de la Pi** | Esperar un minuto · Cable USB en el puerto equivocado (usa el marcado `PWR`) · Volver a grabar la SD · Fuente insuficiente |
| **La pantalla no muestra nada** | Esperar (el arranque tarda ~45 s) · **Alimentación insuficiente** (una pila de 9V no basta: usa red o power bank) · Soldaduras · Pantalla del modelo equivocado (¿240×240?) |
| **Un botón o el joystick no responde** | Test de I/O para identificar cuál · **Soldadura fría** en ese pin |
| **La cámara se reinicia o se cuelga** | **Alimentación insuficiente** · Conexión del cable a la placa verde de la cámara · Test de I/O |
| **La cámara ve pero no detecta el QR** | Ajustar el brillo con el joystick (arriba/abajo) · Bajar la densidad de QR en ajustes · Bajar la densidad en el ordenador · Alejar/acercar · Evitar reflejos en la pantalla |
| **Arranca pero se reinicia solo** | Alimentación · Cable USB de mala calidad · Escritura de la SD no verificada |
| **No arranca tras grabar la SD** | Imagen del modelo equivocado (ver tabla del punto 4) · Escritura fallida: regrabar esperando a que termine la verificación · Probar la otra aplicación de grabado |
| **El QR animado de Sparrow no entra** | Bajar la densidad · Pantalla del ordenador más brillante · Mover despacio |
**El diagnóstico que resuelve la mitad de los casos:** si algo raro pasa, **cambia la fuente de alimentación** antes de tocar nada más. Y si no, revisa soldaduras.
---
## 14. Limitaciones y qué NO hace
Ser honesto sobre esto es parte de la guía:
- **No guarda tu seed.** Si pierdes el papel, se acabó. No hay recuperación posible desde el aparato.
- **No es un producto con soporte.** Es un proyecto de voluntarios, sin empresa detrás y sin ánimo de lucro (licencia MIT). Eso es una virtud —no hay incentivo comercial que corrompa el diseño— y significa que si algo falla, la ayuda es una comunidad de Telegram, no un servicio técnico.
- **No tiene elemento seguro ni protección antimanipulación física.** Si alguien accede al aparato mientras está encendido con tu seed cargada, la ve. Su seguridad viene de ser stateless y air-gapped, no de resistir un ataque físico.
- **La pantalla es pequeña y los controles, básicos.** Escribir 24 palabras a mano es lento. Por eso existen las SeedQR.
- **No sustituye a entender lo que haces.** Es la herramienta que menos confianza pide y la que más atención exige.
**Y lo que hace muy bien:** private key generation trustless, multisig barato (bajar el coste de un quorum de varios cientos de euros a menos de 50 por firmante es su razón de existir), y un modelo de firma donde tú ves cada dato que entra y sale.
---
## 15. Fuentes
- [Repositorio oficial de SeedSigner](https://github.com/SeedSigner/seedsigner) — README (lista de materiales, versión 0.8.7, tabla de imágenes por modelo, procedimiento de verificación).
- [`docs/dice_verification.md`](https://github.com/SeedSigner/seedsigner/blob/dev/docs/dice_verification.md) — vectores de prueba de la sección 9.1, verificados carácter a carácter.
- [`docs/legacy_hardware.md`](https://github.com/SeedSigner/seedsigner/blob/dev/docs/legacy_hardware.md) — modificaciones para Raspberry Pi 1.
- [FAQ oficial](https://seedsigner.com/faqs/) — tabla de resolución de problemas de la sección 12.
- [Página de hardware](https://seedsigner.com/hardware/).
- [Generador de SettingsQR](https://github.com/SeedSigner/seedsigner-settings-generator).
- [seedsigner-os](https://github.com/SeedSigner/seedsigner-os/blob/main/docs/building.md) — compilación reproducible.
- [Desactivar WiFi/BT por hardware](https://github.com/DesobedienteTecnologico/rpi_disable_wifi_and_bt_by_hardware) — DesobedienteTecnologico.
- [Release 0.8.7 "The Summer of SeedSigner"](https://github.com/SeedSigner/seedsigner/releases/tag/0.8.7) (8 jul 2026) — notas de versión, idiomas y cambios.
- [seedsigner-simulator](https://github.com/bitsagarob/seedsigner-simulator) de bitsaga (MIT) — el firmware real en el navegador, con builds reproducibles y atestación. Sección 12.
- Grupo de [Telegram](https://t.me/joinchat/GHNuc_nhNQjLPWsS) del proyecto, para dudas concretas.
---
**Sin garantías.** Material educativo elaborado por usuarios, no un producto oficial de SeedSigner. Verifica cada paso contra la documentación oficial. Practica en una red de pruebas antes de usar fondos reales.
*Última actualización: agosto de 2026 · software v0.8.7. Escrita por Pícaro para Bitcoin Txoko.*