Only this pageAll pages
Powered by GitBook
1 of 52

Bitcoin Tech Tutorials

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Bitcoin Tech Tutorials

On this website you can learn how to:

  • Create a bitcoin wallet [in progress]

  • Setup a bitcoin node

  • Setup a lightning node

  • Mine bitcoin

  • Secure your bitcoins [in progress]

The content is written and maintained by Alex Pecorilla (Twitter / Github).

For in-person workshops checkout Bitcoin Network NYC.

Setup your Bitcoin node from source

Make your own Bitcoin node from source.

This tutorial is for advanced users with good technical skills. For a more guided setup, follow the Umbrel OS tutorial instead.

In this tutorial we setup our own Bitcoin node from scratch! What is covered:

  • Buy, assemble and flash a Raspberry Pi

  • Download, compile and install the original Bitcoin Core software

  • Download, compile and install a modern Electrum server in Rust

  • Connect your wallets to your node through the Tor protocol

We assume the reader might not own their internet connection or have access to the router's admin interface. Therefore, this guide defaults to a Tor-only setup.

Credits

This tutorial would have not been possible without TheRoadToNode and Harry Bawsac.

Hardware List

This page recaps the necessary hardware to run your node from sources.

This is the hardware I use in this tutorial:

  • Raspberry Pi 5 or Raspberry Pi 4 with 8GB of RAM

  • 2TB portable SSD

You'll find that on Amazon or anywhere else.

Unlike the Umbrel method, this approach does not require a separate microSD card for the OS. Everything will be flashed and installed directly onto the portable SSD.

Lock your Jade

Lock your Jade when you're done using it

When you're done you should always lock your Jade.

Simply select Session > Logout:

Now you can power off the Jade by pressing and holding the power button.

Create a Lightning wallet

Get your own bitcoin lightning wallet on your IPhone or Android.

On your phone, install the following apps:

Now back to your phone:

  1. Start Orbot, wait to be successfully connected to Tor

  2. Open BlueWallet, click on the 3 dots at the top right

  3. Got to Network > Lightning Settings

  4. Scan the LNDHub QR code and save the changes

You can now create as many Lightning wallets as you’d like from your phone.

  1. Back on the BlueWallet home screen, click the "+" in the top right.

  2. To create a new wallet, select the Lightning option

  3. You should see your Node URI pre-completed

  4. Click Create and you’re done, you have a new mobile lightning wallet!

You can share the LNDHub QR code with friends and family and they will also be able to create wallets and manage their funds.

Friends and family must be aware that the owner of the Lightning node controls the funds in every wallet. If they close all channels, the funds will be withdrawn on-chain to the owner’s wallet.

Congratulations, you are done!

You are now able to send & receive Bitcoin on the Lightning network through invoices.

Make sure to securely backup the wallet connection string.

In the future I'll document how to get a static lightning address to go beyond using invoices.

: An open source mobile wallet that connects to your Lightning node

: Used to connect to Tor (for BlueWallet to reach your node)

On the Umbrel App Store, download the application. Open the application and at the top right, notice the LNDHub QR code.

BlueWallet
Orbot
BlueWallet Lightning

Setup Umbrel OS

Configure and secure Umbrel OS

Setup

From a computer on the same network, access your node at http://umbrel.local.

Follow the setup steps. Leave all settings at default and choose a strong password.

Remote access

For now, the node is only accessible on your home network. To enable remote access from anywhere, we'll use Tor. In Umbrel OS, go to Settings and turn on Remote Tor access.

A .onion address is generated and you can now access your node from anywhere through Tor.

Use Tor Browser on PC or Orbot on mobile to connect to your node remotely.

Restore

Restore your Jade wallet from your seed phrase

If you had to factory reset your Jade or lost it and had to buy a new one, you can easily restore your wallet as long as you have your seed phrase.

Select Setup Jade > Continue > Begin Setup > Restore Wallet > 12 Words and enter each of your seed works in the correct order.

Then you'll be prompted to pair the Jade with green wallet and setup a new PIN the same way than during the wallet creation step.

Backups

  • Lightning wallets can be recovered with their BlueWallet connection string.

  • Funds in channels can be recovered using Static Channel Backups (SCBs)

    • /umbrel/lnd/data/chain/bitcoin/mainnet/channel.backup

You can also backup the channels through the Lightning node application.

Get outbound liquidity

Enable sending payments on the Lightning network.

To be able to send payments we must open channels on other nodes and lock BTC.

This is called outbound liquidity, where locked funds are on our side of the channel.

I recommend opening 3 channels on 3 different nodes, with 0.01 BTC locked in each.

Open the Lightning Node application. Scroll down and click on + OPEN CHANNEL.

  1. Copy the Node ID (format pubkey@ip:port)

    1. Example, Kraken’s Node ID ⇒ 02f1a8c87607f415c8f22c00593002775941dea48869ce23096af27b0cfdcc0b69@52.13.118.208:9735

  2. Select the amount of BTC to be locked in the channel

  3. Adjust the transaction fee (the higher the fee, the faster the channel opens)

    1. It can take anywhere from ~30 minutes to 24 hours.

Repeat the operation as many times as you wish/can. The more channels you open, the better your integration with the network.

Flash Raspberry Pi OS

Download and flash Raspberry Pi OS onto the SSD.

Download Pi Imager

Choose OS image

Now connect the portable SSD to your computer and launch the Pi Imager. First you have to select 3 options:

  • Raspberry Pi Device: Choose Raspberry Pi 5 or Raspberry Pi 4 depending on the model you use.

  • Operating System: Choose Raspberry Pi OS Lite (64-bit)

  • Storage: Select your portable SSD

Raspberry Pi OS Lite does not include a GUI or extra utilities, allowing us to conserve system resources.

Apply custom settings

Click on Next. The imager will now show a popup to ask you if you want to apply customisation settings. Click on Edit Settings.

General Tab

  • Set a hostname for the Pi on your local network

  • Set a username and password (this will create a new user)

  • Add your Wi-fi settings (that way the Pi will auto-connect at boot)

  • Set locale settings by inputing your timezone and keyboard layout

Services Tab

In the previous tab, we ensured the creation of a new user and automatic Wi-Fi connection at boot. In this tab, we will set up an SSH service to enable direct login to the Pi after it boots.

We won't use password authentication. It's better practice and safer to use public-key authentication.

First we must generate a pair of keys for our user:

Next we must copy the content of the public key (*.pub). Now in the Services tab of the Pi Imager:

  • Click Enable SSH

  • Choose Allow public-key authentication only

  • Copy the content of the public key

Click Save, we are now done with the customizations.

Flash the OS

Back on the customisation popup, click Yes to apply the settings you just inputed. Click Yes again to flash the OS onto the SSD.

Once it's done, safely eject the SSD from your computer.

Make sure to safely backup your user credentials and your SSH private key.

Update the OS

Update the operating system

Do this frequently:

Funds can be recovered using the .

Find a well-connect node

In our example, Kraken has a 0.01 BTC minimum requirement ()

To flash the OS onto the portable SSD we will use a software utility called Raspberry Pi Imager. You can download it .

ssh-keygen -t ed25519 -C "[email protected]"
sudo apt update && sudo apt upgrade -y
wallet seed phrase
here
read more
here

Connect your wallet to your node

Connect your wallet to your Bitcoin node via the Electrum server.

Choose a connection method

Open Electrs, you'll notice 2 methods of connecting: Local Network and Tor.

Local Network

If you connect via local network, your wallet won’t be able to reach your node when you leave home. In addition SSL is disabled by default which means your data transits in clear on your local network.

We can solve this by enabling SSL and setting up port forwarding which I'll cover in the future.

Unless you do the above by yourself, I would recommend to avoid connecting this way. Your ISP and unexpected network guests could spy on you.

Tor

Tor is excellent for security and privacy. Additionally, by having our Electrum server behind an onion hidden service, we benefit from:

  • End-to-end encryption

  • Client and server anonymization

Connect your wallet to your node

Make sure your wallet supports connecting to Electrum servers. Most wallets do.

The setup is simple: just add your Electrum server's address and port to your wallet's node settings.

If you're connecting through Tor, you'll likely need to configure your wallet to use Tor's proxy (127.0.0.1:9050) and ensure Tor is running (unless your wallet comes bundled with it).

I will make a more detailed sections about connecting and configuring wallets in the future.

Assemble the hardware

Assemble the node's hardware.

Plug the portable SSD into a USB 3.0 port on the Pi, then connect the Pi to power. Wait approximately 10 minutes for the installation process and the first boot to complete.

The Pi 4 and Pi 5 should automatically detect and boot from the portable SSD without requiring any manual configuration.

Connect wallets

Connect wallets to your node

To connect your wallet to your node, simply add your Electrum server's address and port in the wallet's network settings.

You will find your Electrum server's address here:

sudo cat /var/lib/tor/electrs_hidden_service/hostname

The port is 50001 unless you specified otherwise.

When connecting your wallet, ensure Tor is enabled (or bundled with your wallet); otherwise, you won’t be able to access your node.

Bitcoin node setup with Umbrel OS

Setup your own Bitcoin node on a raspberry pi the easy way by leveraging Umbrel, a home server OS. This tutorial will also cover the installation of an Electrum server to easily connect your wallets.

This tutorial is ideal for beginners with basic or limited technical skills.

Lightning Node

Setup your own lightning node (bitcoin layer 2) for instant and low cost transactions.

Before setting up Lightning, you need a fully synchronized Bitcoin node up and running. You can find tutorials on how to do this here.

The way you have set up your Bitcoin node will determine which Lightning node tutorial you should follow from the options below.

We will cover two methods of setting up your own Lightning node:

  • The easy way with Umbrel OS

  • The advanced way from sources

Assemble the hardware

Assemble the node's hardware

Make sure you got everything from the Hardware list. Then assemble it as follow:

  1. Insert the microSD card into the Raspberry Pi.

  2. Connect the SSD to the Raspberry Pi via a USB 3.0 port.

  3. Use an RJ45 cable to connect the Raspberry Pi to your modem/router.

  4. Plug in the Raspberry Pi’s power supply.

Once the Pi boots, wait for 10 minutes for Umbrel OS to install.

Umbrel will automatically detect the SSD and configure it as storage.

Hardware list

This page recaps the necessary hardware to setup your node with Umbrel.

This is the hardware I use in this tutorial.

  • Raspberry Pi 4 or 5, with 8GB of RAM

  • 2TB external SSD with USB connectivity

  • 32GB micro SD card

  • micro SD adapter

  • RJ 45 cable

You'll find that on Amazon or anywhere else.

You can also use an old PC instead if you have one. Make sure it has at least 8GB RAM, 1TB disk and 4 CPU cores.

You can use a 1TB SSD instead of 2TB but note that as of Jan 2025 the blockchain is 715GB.

The RJ 45 is optional if we want to input wifi credentials pre-boot.

Eventually you can also buy a protective case for the pi.

Jade Hardware Wallet

Setup a bitcoin hardware wallet with Blockstream's Jade.

Jade wallet is designed and manufactured by Blockstream, a company founded by Adam Back.

The Jade is 100% open source:

  • Firmware

  • Hardware

Get inbound liquidity

Enable receiving payments on the Lightning network.

For us to receive payments, other nodes must open channels to our node & lock BTC.

This is inbound liquidity, where locked funds are on the other side of the channel.

  1. Select how much BTC you want LNBig to lock into the channel

    1. The larger the channel, the higher the opening fee LNBig charges

  2. Make a pre-payment via lightning

  3. Enter your Lightning Node ID, which is exposed via Tor. To find it:

    1. In Umbrel open the Lightning Node application

    2. Click the three dots on the top right side

    3. Click on Node ID

    4. Select Network > Tor and copy the the Node ID

  4. LNBig will now attempt to connect to your node; this may take some time

  5. As soon as you’re done, you’ll see the incoming channel from LNBig opening.

The channel can take from a few minutes to a few hours to finish opening.

You can open a few channels like this until you're balanced. Being balanced means having approximately the same amount of inbound and outbound liquidity.

Update Bitcoin Core

Update Bitcoin Core to newer version

Verify what your current version is:

Fetch the latest changes:

Show the latest version tags:

Switch to the latest stable version:

Clear files and outputs from the previous build process:

Now create the configuration files:

Use one of the following two commands to apply the configuration files:

Compile the source code:

Once the compilation is done, we stop Electrs and bitcoind:

Wait until both programs have exited cleanly. You can monitor the logs for confirmation.

Now we can update the binaries system-wide:

Finally we can restart bitcoind and Electrs:

You can check your new version with:

Flash Umbrel OS

Download and flash Umbrel OS on the micro SD

Download

Download either umbrelos-pi4.img.zip or umbrelos-pi5.img.zip depending on your pi model.

Once it's downloaded, unzip it and find the .img file.

Flash

Connect the micro SD to your computer via the adapter. Next, find your micro SD block device name:

We assume it's /dev/sda for this tutorial but make sure to replace by yours.

If the micro SD was automatically mounted, ensure you unmount it along with any potentially mounted partitions. For example:

Now we can flash the .img into the micro SD:

Wait for the prompt to return, this can take a while. Once finished you can safely eject the micro SD.

Update Rust

Update Rust to newer versions

If Rust and Cargo binaries aren't in your path, run:

Update Rust and Cargo:

Update rustup:

Check the new versions:

Now, update all packages installed with Cargo by running:

If you encounter an error because cargo-update is not installed, install it using:

SSH into the Pi

Login into the Raspberry Pi via SSH.

You can now connect to your Pi via SSH using the private key you created previously:

or

Hardware

List of the necessary hardware.

For this tutorial, we use the original Jade wallet, which can be purchased from Blockstream's shop:

The Jade comes with a battery. To charge it, you can use the provided USB to USB-C cable.

Make sure your Jade has enough battery before starting this tutorial.

Update Node.js

Update Node.js to newer versions

Update Node.js to the latest version:

Update npm to the latest version globally:

Update all globally installed npm packages:

Install an Electrum Server

Setup an Electrum server with Electrs.

An Electrum server is an indexing layer built on top of Bitcoin Core. It enables more efficient blockchain queries and easier wallet connections. Most wallets support Electrum connections.

The electrum server syncs and re-indexes the blockchain to enable more efficient queries. This process will take approximately 12 hours to complete.

Lightning node with Umbrel

Setup your own Lightnin node on a raspberry pi the easy way by leveraging Umbrel, a home server OS. This tutorial will also cover the setup of a mobile

Update Process

Manage the process of updating all programs to their latest stable version

Unless you know other node operators who are willing to open a channel to your node, we’ll use a service called . With LNBig, you can have inbound channels opened to your node in exchange for a small fee.

To purchase am inbound channel, go to and follow the steps below:

LNBig may ask you to to their node first before they open one on yours. This is usually required only the first time.

For more details and context on this process, refer to the .

Download Page ⇒

Windows & MacOS users can use instead and follow .

Alternatively, for more security, you can purchase a or use a to avoid connecting to a PC.

Download on the Umbrel app store. It's a Rust implementation of Electrum server (). Then launch it, leave all settings at default and let it synchronize with the blockchain.

This tutorial assumes you have already set up a fully synchronized Bitcoin node with Umbrel OS with .

bitcoind --version
cd ~/bitcoin
git fetch --all
git describe --tags `git rev-list --tags --max-count=20`
git checkout -f <version-tag>
make clean
./autogen.sh
./configure --without-gui # OPTION 1: Wallet functionalty enabled
./configure --without-gui --disable-wallet # OPTION 2: Wallet functionality disabled
make -j $(nproc)
sudo systemctl stop electrs.service
sudo systemctl stop bitcoind.service
sudo make install
sudo systemctl start bitcoind.service
sudo systemctl start electrs.service
bitcoind --version
lsblk -o NAME,FSTYPE,FSSIZE,FSAVAIL,MOUNTPOINT
sudo umount /dev/sda1
sudo umount /dev/sda2
sudo umount /dev/sda
sudo dd if=/home/alex/Downloads/umbrelos-pi4.img of=/dev/sda bs=1M status=progress
. "$HOME/.cargo/env"
rustup update
rustup self update
rustc --version
cargo --version
rustup --version
cargo install-update -a
cargo install cargo-update
ssh -i your_private_key [email protected]
ssh -i your_private_key username@IP
sudo apt update && sudo apt upgrade -y nodejs
sudo npm install -g npm@latest
sudo npm update -g
LNBig
this page
open a channel
installation step
https://github.com/getumbrel/umbrel/releases
Etcher
this tutorial
Blockstream Jade Hardware Wallet
non-data transfer cable
wall charger
Electrs
sources
this tutorial
Update the OS
Update Bitcoin Core
Update Rust
Update Electrs
Update Node.js
Update BTC RPC Explorer

Install Bitcoin Core

Compile and install Bitcoin Core from sources to spawn your node.

Get latest stable version

First clone the repo:

cd ~
git clone https://github.com/bitcoin/bitcoin.git

Next we need to make sure to use the latest stable version. To find it, list the latest tags:

cd bitcoin/
git describe --tags `git rev-list --tags --max-count=20`

The output will look like this:

v28.1
v28.1rc2-6-g36314b8da2
v28.1rc2-5-g58910279dc
v28.1rc2-4-g6a68ef9bfb
v28.1rc2-3-g5b368f88a9
v28.1rc2-2-g05cd448e33
v28.1rc2-1-g621c634b7f
v28.1rc2
v28.1rc1-10-g5576618152
v28.1rc1-9-g01fe07a2ce
v28.1rc1-8-g7ddfcf32da
v28.1rc1-7-ge0b27b234c
v28.1rc1-6-gbdc6b3e531
v28.1rc1-5-ga0585b6087
v28.1rc1-4-gbbde830b97
v28.1rc1-3-g227642d5af
v28.1rc1-2-gb8112cf422
v28.1rc1-1-g2835158be0
v28.1rc1
v28.0-15-g8fef83a0a0

From top (newest) to bottom (oldest) tags, the latest stable version is v28.1.

Stable versions are easily recognizable by their clean format, vX.Y (e.g., v28.1), with no additional suffixes like rc or commit metadata.

Versions with rc in their names are called release candidates (preliminary versions).

Some versions simply represent intermediate development states, serving as milestones. The tag v28.0-15-g8fef83a0a0 indicates version v28.0 with 15 additional commits, followed by the short commit hash 8fef83a0a0.

Alternatively you can find the latest stable version here and take note of the tag here.

Now we can switch to that version:

git checkout <version-tag> # Example: git checkout v28.1

Compile and Install

Create the configuration files:

./autogen.sh

Use one of the following two commands to apply the configuration files:

./configure --without-gui # OPTION 1: Wallet functionalty enabled
./configure --without-gui --disable-wallet # OPTION 2: Wallet functionality disabled

The wallet functionality lets the node manage its own keys, addresses, and transactions. Disabling it removes these features but still allows connection and use of external wallets for validation and broadcasting.

Now compile the source code:

make -j $(nproc)

On Raspberry Pi the compilation process can take a while to complete.

Finally, copy the binaries to system-wide directories:

sudo make install

Install LND

Setup the Lightning node with LND.

Installation

Go to the Umbrel app store and install the Lightning node application. This app is a GUI for the Lightning Network Daemon (LND), the most common Bitcoin Lightning implementation. Launch the application and leave all settings at default.

Node's wallet

You will get prompted to link a wallet to the node. You can use an existing wallet or create a new one.

The Lightning Node needs a Bitcoin wallet to manage funds and open channels.

If you create a new one, make sure to safely backup your seed.

Update Electrs

Update Electrs to newer versions

For more details and context on this process, refer to the installation step.

Make sure to update Rust first before proceeding.

Fetch the latest changes:

cd ~/electrs
git fetch --all

Show the latest version tags:

git describe --tags `git rev-list --tags --max-count=20`

Switch to the latest stable version:

git checkout -f <version-tag>

Stop Electrs:

sudo systemctl stop electrs.service

Source the env file and compile

. "$HOME/.cargo/env"
cargo build --locked --release

Start electrs:

sudo systemctl start electrs.service

Verify the new version:

~/electrs/target/release/electrs --version

Fund the node

Add bitcoin liquidity to the Lightning node

We must fund our node to enable sending and receiving payments on the Lightning Network.

Open the Lightning Node application. Under the Bitcoin Wallet section, click Deposit. You can now send some bitcoin to the address displayed.

A minimum of 0.03 BTC is recommended.

Green Wallet

Connect your Jade to the Green Wallet mobile application via Bluetooth.

The Jade supports multiple modes:

  • Bluetooth: Wireless connection to the Green Wallet app on your phone.

  • USB: Direct connection to your computer using a cable.

  • QR: Air-gapped communication by scanning QR codes.

  • Micro SD: Air-gapped communication by using microSD cards.

For this tutorial we will focus on the Bluetooth mode because it is the easiest to setup. Future tutorials will cover the other modes.

Before you get started with the tutorial, install Green wallet on your phone:

  • IOS

  • Android

This wallet is fully open source:

  • IOS sources

  • Android sources

Update BTC RPC Explorer

Update BTC RPC Explorer to newer versions.

For more details and context on this process, refer to the installation step.

Make sure to Node.js first before proceeding.

Fetch the latest changes:

cd ~/btc-rpc-explorer
git fetch --all

Show the latest version tags:

git describe --tags `git rev-list --tags --max-count=20`

Switch to the latest stable version:

git checkout -f <version-tag>

Stop BTC RPC Explorer:

sudo systemctl stop btc-rpc-explorer.service

Update the dependencies:

npm update

Install the updates:

npm install

Once it's done, you can start BTC RPC Explorer again:

sudo systemctl start btc-rpc-explorer.service

Install Bitcoin Core

Set up the Bitcoin node with Bitcoin Core

Go to the Umbrel app store and download the Bitoin Node application. This app is pretty much a wrapper of Bitcoin Core with a very nice GUI (sources here).

Launch it and go through the setup by simply leaving all settings at default. Your node will now connect to remote peers to download and verify the entire blockchain.

Processing will take longer as it approaches more recent years due to the larger number of transactions in later blocks.

Even with a great internet connection this will take from a few days to a week to complete. If you sync through Tor-only this can take even longer.

Unlock your Jade

Unlock your Jade to send and receive bitcoins.

Anytime you want to use your wallet to send or receive bitcoins you will have to unlock it.

Press and hold the power button to turn on the Jade. Then select Unlock Jade:

Now on your phone, open Green Wallet and proceed with Bluetooth pairing using the same method as for the wallet creation in the previous step. Once the pairing is complete, you will be prompted to enter your PIN on your Jade.

Once you've entered your PIN, your Jade is unlocked and you can use the mobile app to send and receive BTC.

Controls

Get familiar with the Jade wallet control buttons.

Power Button

Press and hold to turn on / turn off your Jade.

Wheel

Turn left or right to switch between options

Select button

Press to select an option

Receive Bitcoin

Receive bitcoin on your Jade wallet.

To receive Bitcoin, simply hit Receive at the bottom right of Green wallet:

Share the QR code or Bitcoin address to the sender. Once the funds are sent, the incoming transaction should show up pretty quickly in Green wallet.

Setup Electrs

Install an Electrum server with Electrs.

An Electrum server is an indexing layer built on top of Bitcoin Core. It enables more efficient blockchain queries and easier wallet connections. Most wallets support Electrum.

Install Electrs

Clone the repo:

Source the env file to update your $PATH with Rust & Cargo binaries:

The binaries might already be in your PATH if Rust automatically added ."$HOME/.cargo/env" to your .profile, .bashrc, or .zshrc.

You can verify this with the command:

grep -H '.cargo/env' ~/.bashrc ~/.zshrc ~/.profile

Now you can compile electrs:

Once it's done, test the compilation was successful by checking the version:

Configure Electrs

Create the configuration file:

Add the following configuration to the config.toml file we just created:

  • daemon_rpc_addr: Bitcoin JSON-RPC API address and port.

  • daemon_p2p_addr: Bitcoin P2P address and port.

  • db_dir: Directory where Electrs store its index file.

  • electrum_rpc_addr: Electrum will run only on localhost, on port 50001.

Using 127.0.0.1 ensures that only locally running applications and Tor traffic can access our Electrum server.

Create Tor hidden service

We need to create a Tor hidden service to connect our wallets to the Electrum server. Edit the conf file:

Add the following:

Save it then restart tor:

Configure systemd service

Create the service file:

Add the following:

Line 6,7,8 and 9 make sure to replace your_user by your own user. Finally, reload systemd:

Startup

Configure Electrs to automatically start at boot:

Start Electrs:

Electrum will now connect to Bitcoin Core to build its own index of the blockchain.

Indexing is in progress. This operation may take 12 to 24 hours to complete.

Monitoring

Check the logs and monitor progress in real time:

Send Bitcoin

Send bitcoin from your Jade wallet.

To send Bitcoin, hit Send at the bottom left of Green wallet:

Next, enter the recipient's bitcoin address or scan the QR code and hit Next:

Select the amount of bitcoin you wish to send and hit Next:

Slide to send the transaction:

You are now informed that you must confirm the transaction on your Jade:

Review the transaction:

And finally, confirm it:

On Green wallet you should see a confirmation that the transaction has been sent:

Bitcoin Node

In this section we learn how to setup our own bitcoin node with different methods.

We will cover two methods of setting up your own bitcoin node:

Home Mining

In this section we explore different miners you can run at home:

The status at the bottom left now says Initialized with still a grey circle
The bottom left status is now Active with green circle

We're going to use , a Rust implementation of an Electrum Server.

Make sure .

Make sure your node is before proceeding.

With the configuration below the Electrum server will be accessible only on localhost and on the Tor network. Refer to if you wish to also expose your node via IPv4/IPv6.

cookie_file: Electrs can use the Bitcoin JSON-RPC API with .

cd ~
git clone https://github.com/romanz/electrs.git
. "$HOME/.cargo/env"
cd electrs
cargo build --locked --release
~/electrs/target/release/electrs --version
mkdir ~/.electrs && mkdir ~/.electrs/db && touch ~/.electrs/config.toml
cookie_file = "/home/alex/.bitcoin/.cookie"
daemon_rpc_addr = "127.0.0.1:8332"
daemon_p2p_addr = "127.0.0.1:8333"
db_dir = "/home/alex/.electrs/db"
network = "bitcoin"
electrum_rpc_addr = "127.0.0.1:50001"
log_filters = "INFO"
sudo vim /etc/tor/torrc
HiddenServiceDir /var/lib/tor/electrs_hidden_service/
HiddenServicePort 50001 127.0.0.1:50001
sudo systemctl restart tor
sudo vim /etc/systemd/system/electrs.service
[Unit]
Description=electrs
Requires=bitcoind.service
After=bitcoind.service
[Service]
WorkingDirectory=/home/your_user/electrs
ExecStart=/home/your_user/electrs/target/release/electrs
User=your_user
Group=your_user
Type=simple
Restart=on-failure
TimeoutSec=120
RestartSec=30

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable electrs.service
sudo systemctl start electrs.service
journalctl -u electrs.service -f
Electrs
Rust and Cargo are installed
100% synchronized
the configuration file on this page
cookie authentication
The easy way with Umbrel OS
The advanced way from sources
Bitaxe miners

Prepare the system

Update the system and install dependencies before compiling Bitcoin Core.

Update the system

sudo apt update && sudo apt upgrade -y

Disable SSH Password Login

In the SSH configuration, make sure password login is disabled (PasswordAuthentication no)

sudo cat /etc/ssh/sshd_config | grep PasswordAuthentication

Setup a firewall

We need to setup a firewall to restrict inbound traffic for our node.

First we install it:

sudo apt install ufw

By default ufw denies all incoming traffic so we must allow inbound SSH traffic before we enable it:

sudo ufw allow 22/tcp

Now we can enable the firewall:

sudo ufw enable

We can check the status with those commands:

sudo ufw status
sudo ufw status verbose

Install Tor

Install Tor:

sudo apt install tor

Add your user:

sudo usermod -a -G debian-tor your-user

You must log out and log back in for the changes to take effect.

Finally we can enable Tor at boot and start it:

sudo systemctl enable tor
sudo systemctl start tor

Install Bitcoin Core dependencies

The following packages will be needed to install Bitcoin Core:

sudo apt install git automake autoconf autotools-dev build-essential cmake make pkg-config protobuf-compiler libminiupnpc-dev libprotobuf-dev libdb++-dev libzmq3-dev libsqlite3-dev libboost-thread-dev libboost-test-dev libboost-all-dev libevent-dev libtool libssl-dev libboost-system-dev libboost-filesystem-dev

Install Node.js

This is only required if you plan to install BTC RPC Explorer (not covered in this tutorial yet).

The steps to install Node.js 23 are detailed here.

Install curl:

sudo apt install curl

Download the setup script:

curl -fsSL https://deb.nodesource.com/setup_23.x -o nodesource_setup.sh

Run it:

sudo -E bash nodesource_setup.sh

Install node:

sudo apt install nodejs

Verify the installation:

node -v

And also update npm to the latest version:

sudo npm install -g npm@latest

Install Rust and Cargo

This will be needed by the Electrum server if you plan on installing it.

Install dependencies:

sudo apt install -y clang cmake

Install Rust and Cargo:

curl https://sh.rustup.rs -sSf | sh

Start Bitcoin Core

Start your Bitcoin node and download the blockchain.

Startup

Configure bitcoind to automatically start at boot:

sudo systemctl enable bitcoind.service

Start bitcoind:

sudo systemctl start bitcoind.service

Initial Synchronization

Your node will now connect to other peers to download and verify the entire blockchain, block by block, starting from the genesis block on January 3, 2009.

Sync is in progress. This operation may take 3 to 7 days to complete.

Monitoring

Logs

To view the Bitcoin Core logs:

tail -f ~/.bitcoin/debug.log

You can monitor progress live by checking for height= or progress=.

bitcoin-cli

bitcoin-cli is part of Bitcoin Core and serves as a command-line interface for the JSON-RPC API.

Node Status

You can use it to monitor the status of your node and the synchronization progress:

bitcoin-cli -getinfo

Network Info

You can use it to check your integration with the P2P network:

bitcoin-cli getnetworkinfo

If you're using Tor, note in the output how Bitcoin used the Tor control port to create an onion service for P2P on port 8333.

[...]
"localaddresses": [
    {
        "address": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.onion",
        "port": 8333,
        "score": 4
    }
[...]

You can find the full list of bitcoin-cli commands here.

Blockchain Data

Get the current block height:

bitcoin-cli getblockcount

Get some blockchain statstics:

bitcoin-cli getblockchaininfo

Post Synchronization

Once fully synchronized, edit Bitcoin's config file located at ~/.bitcoin/bitcoin.conf, and lower the value of dbcache to 500. Then, restart Bitcoin:

sudo systemctl restart bitcoind.service

Bitcoin Wallets

Create your own Bitcoin wallet to store, send and receive bitcoins.

Bitcoin wallets:

  • Jade Hardware Wallet

Bitcoin Mining

Get started with mining Bitcoin

You can learn how to mine bitcoin remotely using managed solution or how to mine at home using open source miners.

  • Remote mining

  • Home mining

Setup BTC RPC Explorer

Install BTC RPC Explorer on your Bitcoin node.

BTC RPC Explorer is essentially a web GUI for the Bitcoin JSON-RPC API. It is highly useful for node monitoring, management, and as a blockchain explorer.

Before you start make sure you've installed Node.js.

Install BTC RPC Explorer

Get the latest stable release

Clone the repo:

cd ~
git clone https://github.com/janoside/btc-rpc-explorer.git
cd btc-rpc-explorer/

Show the latest version tags:

git describe --tags `git rev-list --tags --max-count=20`

Switch to the latest stable version:

git checkout -f <version-tag>

Install

Update local dependencies within version ranges specified in package.json:

npm update

Install:

npm install

If you get an error try updating the following packages to their latest version instead:

npm install zeromq@latest
npm install nan@latest

Then try installing again:

npm install

Configure

Create the config file:

touch .env

Add the following:

BTCEXP_HOST=192.168.1.52
BTCEXP_PORT=3002
BTCEXP_BITCOIND_HOST=127.0.0.1
BTCEXP_BITCOIND_PORT=8332
BTCEXP_BITCOIND_COOKIE=/home/your_user/.bitcoin/.cookie
BTCEXP_BITCOIND_RPC_TIMEOUT=5000
BTCEXP_PRIVACY_MODE=true
BTCEXP_BASIC_AUTH_PASSWORD=your_secure_password
BTCEXP_ADDRESS_API=electrum
BTCEXP_ELECTRUM_SERVERS=tcp://127.0.0.1:50001
  • BTCEXP_HOST: Replace with your Pi's local IP to make BTC RPC Explorer accessible on your LAN.

  • BTCEXP_BITCOIND_COOKIE: Update the path with your own user.

  • BTCEXP_BASIC_AUTH_PASSWORD: Set a strong password to secure access.

With this setup, BTC RPC Explorer is accessible from any machine on our LAN, is password-protected, and also connected to our Electrum server.

Configure systemd service

Create the service file:

sudo cat /etc/systemd/system/btc-rpc-explorer.service

Add the following:

[Unit]
Description=BTC-RPC-Explorer
Requires=electrs.service
After=electrs.service
[Service]
WorkingDirectory=/home/your_user/btc-rpc-explorer
ExecStart=npm run start
User=your_user
Group=your_user
Type=simple
Restart=on-failure
TimeoutSec=120
RestartSec=30
[Install]
WantedBy=multi-user.target

Line 6,8 and 9 make sure to replace your_user by your own user.

See .env-sample to discover more options.

Finally, reload systemd:

sudo systemctl daemon-reload

Startup

Configure BTC-RPC Explorer to automatically start at boot:

sudo systemctl enable btc-rpc-explorer.service

Start BTC-RPC Explorer:

sudo systemctl start btc-rpc-explorer.service

Access BTC RPC Explorer at http://NODE-IP:3002 from any device on your LAN.

You'll see a popup asking you to enter a username and password. The username doesn't matter; just use the password you set up in the .env file.

Issue with Node Details page

The page /node-details of BTC RPC Explorer throws an error. I suck at coding but I was able to fix it with ChatGPT.

Edit the below file:

vim views/node-details.pug

At line 29, replace this block of code:

if (getblockchaininfo.warnings && getblockchaininfo.warnings.trim().length > 0)
	+contentSection("Active Warnings")
		if (getblockchaininfo.warnings && getblockchaininfo.warnings.trim().length > 0)
			span.text-danger #{getblockchaininfo.warnings}
		else
			span.text-success None

By this one:

if (getblockchaininfo.warnings)
	+contentSection("Active Warnings")
		if (getblockchaininfo.warnings)
			span.text-danger #{getblockchaininfo.warnings}
		else
			span.text-success None

(Basically I removed getblockchaininfo.warnings.trim().length > 0 in both if statements).

This is a dirty DIY way of patching it, but it does the job lol.

Make sure to restart BTC RPC Explorer and the page should be working:

sudo systemctl restart btc-rpc-explorer.service

Tor

I personally wouldn't risk exposing this app to the outside world. It has some bugs, is vulnerable to brute-force attacks, and stores the password in a plain text .env file.

If I ever do, I will ensure that the features enabling manual Bitcoin JSON-RPC API calls are disabled.

Create a new wallet

Create a new Bitcoin wallet with the Jade

Press and hold the power button to start the Jade.

Select Setup Jade > Continue > Begin Setup:

Next select Create Wallet > Continue:

Write down your seed words on a piece of paper or another non-digital medium.

The seed consists of 12 words, with 4 displayed per screen. Use the arrows at the top to navigate between pages and verify that you've correctly written down your seed. Your seed phrase is your only way to recover your funds if you lose your Jade.

Next, go through the seed verification process by confirming a few words:

Next we must select the connection mode we will use with the Jade. Choose Bluetooth:

Notice your device name, here Jade 800E88:

Now open Green wallet on your phone, accept the terms & conditions and choose On Hardware Wallet:

Next click on Connect Jade:

Select your Jade wallet:

If prompted, allow bluetooth pairing and take note of the code:

On your Jade, make sure that the code is the same and confirm authentication:

Your Jade and Green wallet should now be paired. Hit Continue:

You should now see a screen prompting you to create a PIN. Hit Continue:

On your Jade you should now be prompted to choose a PIN:

Take note of this PIN and store it safely, you won't be able to unlock your Jade without it.

Back on Green wallet, you should see a success screen. Now Hit Create Account:

If this screen doesn't show up, just hit Back and Continue again and it should show up.

Choose Standard:

Your Bitcoin wallet is now ready to send and receive BTC!

At the bottom left notice the Uninitialized state with the grey circle

Remote Mining

Mine Bitcoin remotely with no hardware setup or maintenance, using managed solutions.

Introduction

With remote mining you can get into Bitcoin mining without worrying about hardware installation and maintenance.

Benefits of mining Bitcoin

For short term ROI, you're better of buying Bitcoin directly. Long term, I believe it has 2 benefits:

  1. Diversification: In terms of energy flow, I like the idea of a small continuous amount of Bitcoin flowing into my wallet. I believe in redundancy and I don't want 100% of my Bitcoin sitting in cold storage.

  2. Acquisition: Getting your hands on new Bitcoins could become much harder as countries fomo into it. The available supply of BTC on exchanges is continuously decreasing:

Mining costs

Below are the most important costs to consider before you start mining Bitcoin remotely:

  1. Hardware cost (A single miner costs thousand of dollars)

  2. Energy cost (expressed in dollar per kilowatt-hour, or in short $/kWh)

  3. Management fee (mining farms can charge you an extra fee for hardware maintenance)

Choosing the right miner

When buying a new Bitcoin miner, there are 2 important things you must consider.

Hashrate

The computational power of a Bitcoin miner is measured by its hasharate. The hashrate indicates how many hashes per second the miner can compute.

The higher the hashrate, the more BTC your miner yields.

In 2025, the hashrate is commonly expressed in terahashes per second (TH/s).

1 TH/s = 1 trillion hashes per second

For example, the Antminer S21 Pro has a hashrate of 234 TH/s.

Efficiency

The efficiency of a miner is measured by how much energy the miner needs to consume to compute 1 terahash (TH). It's usually expressed in joules per terahash (J/TH) or watt per terahash (W/TH).

Efficiency (J/TH or W/TH) = Power (W) / Hashrate (TH/s)

The better the efficiency, the higher your profitability from the BTC you mine.

Example, the S21 Pro has a hashrate of 234 TH/s and a power of 3510 W

3510 / 234 = 15

The S21 Pro has an efficiency of 15J/TH which is Tier 1 (excellent).

Efficiency is critical because the amount of electricity you consume impacts your profitability.

Conclusion

You need to find the best combination of hashrate and efficiency for your budget.

Mining Fluctuations

This is a more complex topic for which I will make a dedicated section. Roughly speaking, 3 key factors will impact your day to day profitability:

  • Fluctuations in the price of Bitcoin

  • Fluctuations in your electricity bill

  • Flucutations in the mining difficulty

As more miners join the network, the global hashrate (the total computational power of all miners) increases. In response, the mining difficulty adjusts upward, making it harder to find a valid block and reducing individual miners' yields.

Miners must also consider halvings, which occur approximately every four years and reduce the block reward by half.

How to start mining Bitcoin remotely

To start mining Bitcoin remotely you need to find a farm where you can buy or rent Bitcoin miners. You must also make sure that they offer managed services (miners setup & maintenance).

So far I found one reliable farm but I will update this page when I find more.

Cyberian Mine

Cyberian Mine is a german company with mining farms located in Siberia (Russia).

Pros

  • Cheap cost per kWh (as I write this, $0.0608/kWh)

  • Recent hardware

  • Quick onboarding (same-day)

  • Powered by sustainable energy

  • Lifetime hosting contract (you don't pay for hardware repair or replacement)

  • Stable hashrate (you keep earning during repairs/replacements)

  • Almost all cryptos are accepted for payment

  • New farm locations opening in Ethiopia and USA

  • No management fee

  • Awesome team and fast support

  • You can buy partial miners (e.g. 1/10 of an Antminer T21)

  • You can resell your hardware instantly (at a discount) or on their marketplace

Cons

  • Miners are more expensive (to cover for the lifetime warranty, automatic failover & 0 mngmt fees)

  • They only mine on F2Pool and the minimum payout is 0.005 BTC

  • You have a claim to the miner but do not own it physically (it cannot be shipped to you)

  • Location (Russian laws & regulations can be unstable and change quickly)

How to start mining with Cyberian Mine

  1. Create an account

  2. Fund your account with crypto or fiat

  3. Go to the store

  1. Buy a full or partial miner

  2. Wait a few hours for your miner to go live

Cyberian charges daily for the electricity (called the hosting fee). Make sure you keep enough cash in your balance to avoid interruptions.

Once your miner is live, you're able to see your performance metrics:

Notice the Open F2Pool button. It opens your dedicated F2Pool page where you can view you hashrate performances live.

More metrics are also available on your Cyberian Dashboard, such as the hashrate report, Bitcoin earnings and pool payout schedule. You will also find your invoices for the electricity (hosting fee) with a daily breakdown in your profile's settings.

In your profile's personal data, make sure to add your Bitcoin wallet address for the payouts.

Bonus

  • If you keep more than 500 euros in your balance, you get hosting discounts.

  • Cyberian has a great telegram channel for support and updates.

Configure Bitcoin Core

Configure Bitcoin Core before starting your node.

Configure Bitcoin Core

Base Configuration

Let's create the needed files:

Add the following configuration to the bitcoin.conf file we just created:

JSON-RPC API

Bitcoin provides a control interface via a JSON-RPC API on port 8332. We enabled with server=1 in the bitcoin.conf file.

Other locally running applications that need to interact with Bitcoin's JSON-RPC API will use the cookie located at ~/.bitcoin/.cookie.

If you ever want to connect remotely running applications to the JSON-RPC API, you can create a set of credentials with the command below:

Verify the output and append the mentioned line to the bottom of the bitcoin.conf file.

Save the plain text password securely because the line added to bitcoin.conf contains only the hash.

Configure Tor

Bitcoin Core and other applications you install will heavily rely on Tor to connect with peers and ensure our wallets remain accessible. Proper configuration is critical.

Base Configuration

Edit the configuration file:

Add the following lines:

  • SocksPort ⇒ SOCKS proxy, routes traffic through the Tor network

  • ControlPort ⇒ Allows other programs to interact with the Tor daemon

  • CookieAuthentication ⇒ Requires local cookie authentication to access the control port (/run/tor/control.authcookie)

  • CookieAuthFileGroupReadable ⇒ Only users in the debian-tor group can authenticate with the cookie

This configuration restricts Tor's control port to only local programs launched by our user.

Hidden Onion Service for the JSON-RPC API

Exposing the RPC API is not recommended unless you fully understand the risks. It is a prime target for brute-force attacks and zero-day exploits. If compromised, an attacker could steal your Bitcoin.

Configure systemd service

Bitcoin Core's main program is bitcoind (short for Bitcoin Daemon). We will configure it as a systemd service to simplify management:

Add the following:

  • In User=, replace your_user with your own user

  • Do the same in the path of PIDFile=

  • Verify the path of ExecStart= by running the command which bitcoind

Finally, reload systemd:

My S21 Pro Bitcoin miners, running remotely at Cyberian Mine. January 2025.
Cyberian Mine is facing minor challenges in Russia. To balance the risk, they're expanding to Ethiopia and the USA.
The most recent Antminers are availble for purchase.
My mining performance metrics in January 2025. Notice I kept enough in my balance for 1 year of electricity.

With the configuration below the node will be accessible only on localhost and on the Tor network. Refer to if you wish to also expose your node via IPv4/IPv6.

As configured, the JSON-RPC API is accessible only from localhost. To expose this port externally, you can , but as mentioned above it's not recommended.

cd ~
mkdir ~/.bitcoin
touch ~/.bitcoin/bitcoin.conf
# Enable JSON-RPC API on port 8332
server=1
# Restrict JSON-RPC API to localhost only
rpcbind=127.0.0.1
rpcallowip=127.0.0.1
# Run Bitcoin Core as a background daemon
daemon=1
# Accept incoming P2P traffic (port 8333) to be a full participant in the network 
# If set to 0, other nodes can't sync from us, but we can still sync from them
listen=1
# Keep full index of all transactions, not just those of the node's wallet.
# Uses more space but allows querying any transaction by its txid
# We need it if we want to run an Electrum Server or a blockchain explorer
txindex=1
# Cache size in MBs. Lower it to 500 after the first blockchain sync is complete. 
dbcache=3000
# Run the node **only** on the Tor network
onlynet=onion
proxy=127.0.0.1:9050
bind=127.0.0.1
# Use native segwit addresses by default
addresstype=bech32
changetype=bech32
python3 ~/bitcoin/share/rpcauth/rpcauth.py <username-of-your-choice>
sudo vim /etc/tor/torrc
SocksPort 9050
ControlPort 9051
CookieAuthentication 1
CookieAuthFileGroupReadable 1
sudo vim /etc/systemd/system/bitcoind.service
[Unit]
Description=Bitcoin Daemon
After=network.target

[Service]
User=your_user
PIDFile=/home/your_user/.bitcoin/bitcoind.pid
ExecStart=/usr/local/bin/bitcoind
Restart=always
TimeoutSec=120
RestartSec=30

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
the configuration file on this page
create a Tor service for it
Bitcoin Exchange Reserve

Bitaxe miners

Bitaxe miners are quiet, cool, low-power, and fully open-source Bitcoin miners that you can run at home.

What are Bitaxe miners

The official website explains it perfectly ⇒ https://bitaxe.org/

Bitaxe is a Bitcoin miner based on an open-source design and a modern mining ASIC, offering efficiency and customization for users.

The open-source nature allows users to inspect, modify, and enhance the hardware and software to optimize performance based on specific needs or mining environments. Bitaxe is ideal for miners looking for greater control over their operations while contributing to the decentralization of the Bitcoin network.

To me, this project is all green lights. Both the hardware and firmware are open source. You can run them at home, they won't take much space, won't consume much power and won't make much noise.

Initiatives like this help the fight against mining centralization. You can make a donation here.

Bitaxe models

There are several Bitaxe models:

Model Series
ASIC Chip
Hash Rate
Used on

1 x BM1370

~ 1.2 TH/s

Antminer S21 Pro

1 x BM1368

~ 700 GH/s

Antminer S21

1 x BM1366

~ 500 GH/s

Antminer S19XP

1 x BM1397

~ 300 GH/s

Antminer S17

6 x BM1368

~ 4.2 TH/s

Antminer S21

6 x BM1366

~ 3 TH/s

Antminer S19XP

Some of those models are still under development and receiving revisions. You can find more details on Bitaxe's official website.

Where to buy Bitaxe miners

You can find a list of vendors here.

Remember: Bitaxe miners are 100% open source. Performances should remain consistent regardless of the vendor, though slight variations in assembly and design may occur.

You are also free to purchase all the parts and assemble your miner yourself.

Setting up your Bitaxe miner

Once you've received or assembled your Bitaxe, you can set it up and start mining.

Step 1 - Find your model version

Bitaxe is under active development, with new features and bug fixes frequently released. In addition to your model, you must also note your version/revision number to ensure you flash the correct firmware in the next steps.

In my case, my model is a Bitaxe Supra. My version/revision number is 401. It can be found on the Bitaxe's motheboard:

Step 2 - Download the firmware

Go to this page and download the latest stable firmware for your model and version. In my case:

esp-miner-factory-401-v2.5.0.bin

This file contains:

  • The bitaxe firmware

  • The web UI (to interact with and configure your Bitaxe)

  • A default configuration

Step 3 - Connect to your PC

Plug your Bitaxe into power, then connect it to your PC using a USB-A to USB-C cable.

When I use a USB-C to USB-C cable (since my PC also has USB-C ports), the Bitaxe is not detected. I'm forced to connect it to my PC with USB-A for it to be detected.

To identify your Bitaxe's device file, run the following command in your terminal:

sudo dmesg | grep tty

You should see an output similar to this:

[66383.261520] cdc_acm 3-3.2:1.0: ttyACM0: USB ACM device

In my case, this indicates that the miner's device file is /dev/ttyACM0

Step 4 - Flash the firmware

Install bitaxetool

Create a working directory for the flashing process:

mkdir flashing_bitaxe && mv ./esp-miner-factory-401-v2.5.0.bin flashing_bitaxe/ && cd flashing_bitaxe

Next we install the flashing software bitaxetool in a python virtual environment:

python3 -m venv venv
source venv/bin/activate
pip install --upgrade bitaxetool

Create config file

We must also create a config file. You can find templates with default values for each model here.

Here is the template for the Supra 401, also shown below:

key,type,encoding,value
main,namespace,,
hostname,data,string,my-super-bitaxe
wifissid,data,string,wifi-name
wifipass,data,string,wifi-password
stratumurl,data,string,public-pool.io
stratumport,data,u16,21496
stratumuser,data,string,replace-this-with-your-btc-address.my_super_bitaxe.my-super-bitaxe
stratumpass,data,string,password1234
fbstratumurl,data,string,solo.ckpool.org
fbstratumport,data,u16,3333
fbstratumuser,data,string,replace-this-with-your-btc-address.my_super_bitaxe.my-super-bitaxe
fbstratumpass,data,string,password1234
asicfrequency,data,u16,490
asicvoltage,data,u16,1166
asicmodel,data,string,BM1368
devicemodel,data,string,supra
boardversion,data,string,401
rotation,data,u16,0
autofanspeed,data,u16,1
fanspeed,data,u16,100
selftest,data,u16,1
overheat_mode,data,u16,0

Let's look into some of the parameters.

First we got the network config for the Bitaxe to connect automatically to your wifi:

  • hostname : It will identify the bitaxe on your local network instead of having to remember its IP

  • wifissid : Your Wi-Fi name

  • wifipass : Your Wi-Fi password

The Supra 401 model only supports 2.4GHz Wi-Fi. Verify whether this applies to your model.

Then we got the hardware config:

  • devicemodel: Model name

  • boardversion: Revision number

  • asicmodel: The ASIC chip model used by the miner (as detailed here)

  • asicfrequency: ASIC cycles per second, expressed in MHz

  • asicvoltage: ASIC voltage, expressed in mV

You'll find your ASIC frequency and voltage by looking it up online. It's a range, so you can play a bit with the values to see what works best for performances and reliability. You can also simply remove those 2 lines from the config file for the default values to be used automatically instead.

Then we got the pools config. This is for the main pool (here we're using public-pool.io):

  • stratumurl

  • stratumport

  • stratumuser

  • stratumpass

And this is for the fallback pool in case the main fails (here we're using ckpool):

  • fbstratumurl

  • fbstratumport

  • fbstratumuser

  • fbstratumpass

Make sure to replace replace-this-with-your-btc-address.my-super-bitaxe with your Bitcoin address and a custom name for your miner to help you identify it.

Flash the firmware

Save the config file in the same working directory. We're now ready to flash with this command:

sudo venv/bin/bitaxetool --port /dev/ttyACM0 --firmware ./esp-miner-factory-401-v2.5.0.bin --config ./config.csv

Once its done, unplug the miner from your PC and from power.

Step 5 - Access the web UI

Once your miner is up and running, you can manage it via its web UI at http://your-miner-IP.

You can also monitor your miners and hashrate on Public Pool by entering the BTC address used in the stratumuser.

Update your Bitaxe

When a new firmware version is released, you can flash it the same way as before.

Alternatively, you can manually update the esp-miner.bin (the firmware) and the ww-bin (the frontend) from the Bitaxe web UI. Just go to Settings and scroll to the very bottom.

If you choose this update method, do it from a modern up to date web browser and disable your ad blocker. I've had issues with Firefox failing during the update process so now I do it from Chrome.

If you flash it from CLI, esp-miner-factory-xxx.bin already combines esp-miner.bin and ww-bin.

Troubleshooting

This link is a good base ⇒ https://d-central.tech/troubleshooting/bitaxe-troubleshooting-guide/

On my 401s I constantly have issues with the display screens not working so I've stopped using them.

My two Bitaxe Supra 401 miners running at home.

Bitaxe Supra v401
Bitaxe Gamma (600 Series)
Bitaxe Supra
(400 Series)
Bitaxe Ultra (200 Series)
Bitaxe Max (100 Series)
Bitaxe SupraHex (700 Series)
Bitaxe UltraHex (300 Series)