Monedero hardware barato por menos de 15€ – Guía “DIY (Do-It-Yourself)”

Gran monedero hardware para Bitcoin a un precio reducido

En esta publicación, presentamos una guía sobre cómo tener un monedero hardware por menos de 15 €, completamente funcional y fácil de usar, sin ser voluminoso ni de mala calidad. El proceso es bastante accesible. Solo necesitarás una placa de desarrollo Arduino fácilmente disponible y, siguiendo las instrucciones paso a paso, podremos crear con éxito nuestro propio dispositivo.

La placa recomendada es una TTGO T-Display, que cuesta menos de 15 € en AliExpress, pero con ofertas, puede llegar tan bajo como 10 € (o incluso alrededor de 5 € en AliExpress para nuevos usuarios). La versión de 4 MB es adecuada; hemos utilizado el CH9102F, pero ambos deberían funcionar, incluido el TELEC.

Monedero hardware barato

Bien, con esta pequeña placa y nada más, flashemos el software Blockstream JADE. Es un monedero SOLO PARA BITCOIN, pero es uno de nuestros favoritos. Hay una opción para agregar una cámara y una batería, pero para minimizar costos y complejidades, esta guía lo utiliza sin cámara ni batería, similar a un Ledger Nano S.

Es fundamental señalar que el software que impulsa este monedero hardware (JADE) es de código abierto, lo que nos permite instalarlo en cualquier dispositivo compatible. Como recomendación específica, el TTGO T-Display resulta ser una excelente elección, ofreciendo un equilibrio óptimo entre rendimiento y practicidad para este propósito.

Flasheo y firma de software:

En primer lugar, accede a la página de GitHub de Blockstream Jade: https://github.com/Blockstream/Jade. Todos los pasos se explican en este post, pero es posible que desee consultar también la fuente oficial. Se recomienda utilizar sistemas basados en Linux, pero también es posible con Windows o macOS, se utilizan los mismos comandos. Se prefiere Linux debido a problemas anteriores con el generador de números aleatorios de Windows.

Asegúrese de que git y python están instalados, si no está seguro, ejecute el siguiente comando:

sudo apt install git python3-pip python3-venv

A continuación, cree la carpeta “esp” si aún no existe:

mkdir esp

Ahora ejecute los siguientes comandos:

cd ~/esp git clone -b v5.1.1 --recursive https://github.com/espressif/esp-idf.git

cd ~/esp/esp-idf && git checkout e088c3766ba440e72268b458a68f27b6e7d63986 && ./install.sh esp32

Por último, ejecute este comando para configurar las variables de entorno:

. $HOME/esp/esp-idf/export.sh

Compilar el firmware:

Ahora es el momento de compilar el firmware. Clone el repositorio de Jade:

git clone --recursive https://github.com/Blockstream/Jade.git $HOME/jade

Ahora debemos asegurarnos de conocer el dispositivo que estamos utilizando y configurar el archivo sdkconfig.defaults en consecuencia. Debemos buscar nuestro archivo dentro de esta carpeta:

sdkconfig

Busque el siguiente archivo y cópielo de la subcarpeta configs de la carpeta JADE a la carpeta raíz (/jade/).

sdkconfig2

Ahora debemos eliminar (o renombrar de manera diferente) el archivo sdkconfig.defaults original, y renombrar el que acabamos de copiar, nombrándolo “sdkconfig.defaults”.

A continuación, ejecute el siguiente comando en el terminal:

cd $HOME/jade

Ahora, si no tienes instalado cmake, ejecuta también este comando:

sudo apt install cmake

Finalmente, ejecuta este comando para flashear el firmware:

idf.py flash monitor

Ahora se flasheará el firmware, y el dispositivo estará operativo. Puede conectarlo a Sparrow, Electrum o Blockstream Green.

Pero… como puede ver, no aparece como un JADE normal al usar Blockstream Green; muestra DEV en rojo. En teoría, se puede usar de esta manera, pero le falta el Secure Boot. Para agregar una capa adicional de seguridad, se recomienda habilitar el Secure Boot.

jade dev

Arranque seguro

Para implementar el Secure Boot y configurar el dispositivo como un JADE regular, debemos modificar el archivo sdkconfig.defaults. Primero, debemos agregar esta línea al archivo:

CONFIG_LOG_DEFAULT_LEVEL_NONE=y

config1

A continuación, debemos eliminar el modo de depuración:

config2

Además, si desea eliminar la funcionalidad Bluetooth (lo cual puede tener sentido para este tipo de monedero hardware, sin batería), agregue estas líneas:

CONFIG_APP_NO_BLOBS=y
CONFIG_MBEDTLS_ECP_RESTARTABLE=y
CONFIG_MBEDTLS_CMAC_C=yCO

Y borra lo siguiente:

CONFIG_BT_ENABLED=y
CONFIG_BT_NIMBLE_ENABLED=y
CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y
CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1
#CONFIG_BT_NIMBLE_ROLE_CENTRAL is not set
#CONFIG_BT_NIMBLE_ROLE_BROADCASTER is not set
#CONFIG_BT_NIMBLE_ROLE_OBSERVER is not set
CONFIG_BT_NIMBLE_NVS_PERSIST=y
#CONFIG_BT_NIMBLE_SM_LEGACY is not set
CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j"
CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11
CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517
CONFIG_BTDM_CTRL_BLE_MAX_CONN=1
#CONFIG_BTDM_CTRL_FULL_SCAN_SUPPORTED is not set

A continuación, para la configuración de Secure Boot, añada estas líneas:

CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE=y
CONFIG_SECURE_DISABLE_ROM_DL_MODE=y
CONFIG_SECURE_BOOT_SIGNING_KEY="PATH TO YOUR SIGNING KEY"
CONFIG_SECURE_BOOT=y
CONFIG_SECURE_FLASH_ENC_ENABLED=y
CONFIG_SECURE_FLASH_ENCRYPTION_MODE_RELEASE=y
CONFIG_ESP32_REV_MIN_3=y

Y borra este:

CONFIG_EFUSE_VIRTUAL=y

También make sure that CONFIG_ESP32_REV_MIN_3=y is not already present with REV_MIN_1, en tal caso, elimínelo y deje sólo la opción REV_MIN_3.

En la línea “Ruta a su clave de firma”, debe poner la ruta a una clave de firma que aún no se haya generado:

CONFIG_SECURE_BOOT_SIGNING_KEY="hideyourkeys-v2.pem"

Guarde y cierre el archivo.

Ahora es el momento de generar las claves de firma. En la terminal, ejecute el siguiente comando (tenga en cuenta que debe nombrar su archivo de la misma manera que en el archivo sdkconfig.defaults modificado anteriormente, lo llamamos hideyourkeys-v2):

espsecure.py generate_signing_key --version 2 ~/jade/hideyourkeys-v2.pem

El archivo de clave estará ubicado en la misma carpeta jade. Si eligió otra ruta, asegúrese de que sea coherente con el archivo sdkconfig.defaults y que la ruta relativa sea correcta en dicho archivo. Ahora, ejecute el siguiente comando para configurar la construcción:

idf.py menuconfig

Aparecerá el siguiente menú:

menu1

En el menú, vaya a configuración de seguridad, active el Secure Boot de hardware en el cargador de arranque, elija la versión, guarde y cierre. Las otras funciones (Activar el cifrado de la flash al arrancar o Verificar si el cifrado de la flash está activado al inicio) también deben estar marcadas. Todas estas opciones deben estar marcadas de forma predeterminada. En caso de que no lo estén, descargue nuestro Manual de la Cartera de Hardware y copie el archivo de configuración del ANEXO A, reemplácelo en el archivo sdkconfig.defaults y elimine cualquier archivo sdkconfig anterior dentro de la carpeta jade.

menuconfigV2

Tenga en cuenta que, dependiendo del dispositivo que esté utilizando, podría ser posible elegir Secure Boot V1 o V2. Es preferible utilizar V2, en caso de que esté disponible. Nuestros dispositivos admiten Secure Boot V2 (como un Blockstream Jade estándar), pero en caso de que esté siguiendo esta guía con otro dispositivo ESP32 que solo admita Secure Boot V1.

menuconfigV2 2

Ahora es el momento de conectar el dispositivo. Una vez conectado el dispositivo, ejecútelo:

idf.py bootloader

Obtendrá un resultado similar a éste:

bootloader

Pero el cargador de arranque también proporcionará un comando que debemos ejecutar. Debería ser similar a este. Elimine el puerto (-p (PORT)) y la información sobre la velocidad de baudios (-b (460800)) antes de ejecutarlo:

/home/xxx/.espressif/python_env/idf5.1_py3.10_env/bin/python ../esp/esp-idf/components/esptool_py/esptool/esptool.py -p (PORT) -b 460800 --before default_reset --after hard_reset --chip esp32 write_flash --flash_mode dio --flash_size 2MB --flash_freq 40m 0x1000 build/bootloader/bootloader.bin

Nota: Hemos observado que en algunos casos es posible que no vea la indicación anterior; en ese caso, podría intentar el proceso ejecutando el siguiente comando: idf.py bootloader bootloader-flash

Ahora, sin desconectar el dispositivo, ejecuta lo siguiente:

idf.py build

Si tiene éxito, el terminal proporcionará dos comandos para flashear la compilación (tenga en cuenta que la ruta marcada en negrita variará en su ordenador):

/home/xxx/.espressif/python_env/idf5.1_py3.10_env/bin/python ../esp/esp-idf/components/esptool_py/esptool/esptool.py -p (PORT) -b 460800 --before default_reset --after no_reset --chip esp32 write_flash --flash_mode dio --flash_size 4MB --flash_freq 40m 0x9000 build/partition_table/partition-table.bin 0xe000 build/ota_data_initial.bin 0x10000 build/jade.bin

or run "idf.py -p (PORT) flash

Ahora debería ejecutar cualquiera de los dos comandos anteriores desde la salida de la compilación. Recomendamos usar el primero y eliminar el puerto y la velocidad de baudios manualmente (marcados en negrita), a menos que conozca esos valores:

/home/xxx/.espressif/python_env/idf5.1_py3.10_env/bin/python ../esp/esp-idf/components/esptool_py/esptool/esptool.py -p (PORT) -b 460800 --before default_reset --after no_reset --chip esp32 write_flash --flash_mode dio --flash_size 4MB --flash_freq 40m 0x9000 build/partition_table/partition-table.bin 0xe000 build/ota_data_initial.bin 0x10000 build/jade.bin

Ahora el dispositivo será flasheado, pero permanecerá en modo bootloader:

flash

Para reiniciar el dispositivo y salir del estado bootloader, ejecute:

idf.py monitor

El dispositivo se reiniciará y ya no debería aparecer como dispositivo de desarrollo en Blockstream Green. Es muy importante esperar hasta que el dispositivo se reinicie antes de desconectarlo, de lo contrario, el dispositivo quedará inutilizable. Esto puede llevar algunos minutos.

jade definitive

Ventajas y desventajas

INCONVENIENTES:

  • Es tedioso, requiere retoques, pero seguir los pasos lleva menos de 5 minutos.
  • Sin funcionalidad de cámara ni batería, funciona como un Ledger Nano S, sólo que enchufado.
  • La actualización es más tediosa que la original (aunque sólo hay que teclear cuatro comandos).

VENTAJAS:

  • Cartera de hardware muy compacta y barata, que no se estropea al usar una funda.
  • Un excelente monedero sólo para Bitcoin, por un precio muy reducido.
  • Es una buena alternativa como dispositivo de reserva.

Para mejorar la apariencia, hay disponibles varios estuches en AliExpress, que van desde 4 € hasta 8 €. Si tiene una impresora 3D, hay modelos en línea buscando “ttgo t-display case”.

Actualizar el Firmware

En caso de que necesites actualizar el firmware, conecta el dispositivo y ejecuta los siguientes comandos:

cd $HOME/jade

git pull

idf.py build

python jade_ota.py --noagent

El dispositivo presentará un mensaje de actualización que deberá confirmarse, igual que un JADE normal.

Restablecimiento de fábrica

En caso de que desee realizar un restablecimiento de fábrica (para configurar una nueva billetera y eliminar la actual instalada, por ejemplo), cuando aparezca el logotipo de Blockstream JADE, presione ambos botones y obtendrá la opción de realizar un restablecimiento de fábrica.

Conclusiones

En nuestra opinión, esta es la forma más accesible de tener un monedero hardware totalmente funcional para Bitcoin. No es la solución más fácil, pero es un enfoque razonable a un precio justo.

Si tiene alguna pregunta o problema, no dude en ponerse en contacto a través de correo electrónico en [email protected]. También puede consultar nuestro Manual de la Cartera de Hardware y nuestra Cartera de Hardware, en caso de que desee omitir toda esta guía.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Consentimiento de Cookies con Real Cookie Banner