Bitcoin Node Stuck on Starting: 'Error opening block database. Please restart with -reindex or -reindex-chainstate to recover.'

Hi All,

This is my fourth time trying to install a Bitcoin Node on Umbrel. Woke up this morning and it is stuck on ‘Bitcoin Node Starting’. I think it’s around 75% complete so far.

After some digging I get: ‘Error opening block database. Please restart with -reindex or -reindex-chainstate to recover.’ ChatGPT been helpful so far but I’m a little bit lost now. This is my fourth time of installing because it just keeps getting stuck, starting to lose faith!

Any help v much appreciated!

Raspberry Pi5
8GB Ram
1TB Samsung SSD

That sucks, sorry to hear. the current blockchain db is about 747 gig. Sucking down the chain is a beating even for a box with more memory. Normal run state is a few gig.

I wonder how much disk space you have at the time of failure? Maybe you need to turn up or down the default memory on the bitcoin node app. I think it runs with ~400 meg, which doesn’t seem like much.

Do you have other services active which are chewing up memory? My only guesses are 1) disk space low, 2) memory exhaustion or 3) suspect disk integrity. What have you looked at so far ? Also, power is stable, i’m assuming.

or… you can get into the weeds.


Why It’s Happening

The Bitcoin blockchain is massive, and syncing it on a Raspberry Pi 5, even with 8GB RAM and a 1TB SSD, is resource-intensive. Your setup is solid, but the Pi’s limited processing power and I/O can choke during the initial block download (IBD). The error suggests the database got mangled, possibly from:

  • Power interruption: A shutdown or crash during sync can corrupt the database.
  • SSD issues: The Samsung SSD is likely fine, but heavy I/O might cause hiccups if not properly configured.
  • Resource contention: Umbrel’s other services (if you’re running apps like Lightning) might be taxing the Pi.
  • Software glitch: Umbrel’s Bitcoin Core instance might have hit a bug or misconfiguration.

The “stuck at 75%” is typical during IBD, as later blocks (post-2017) are denser and slower to process. The -reindex or -reindex-chainstate suggestion means Bitcoin Core is trying to rebuild its database index to recover.

Resolution Steps

Here’s a focused plan to get your node running smoothly. Follow these steps in order, and don’t skip details—this is about precision, not brute-forcing another reinstall.

  1. Stop the Bitcoin Node
  • Log into your Umbrel dashboard (via browser or SSH).
  • Stop the Bitcoin Node app to prevent further database access. If the dashboard is unresponsive, SSH into the Pi (ssh umbrel@umbrel.local and run:

sudo docker stop bitcoin

  • This ensures no processes are writing to the database while we fix it.
  1. Verify SSD Health and Mount
  • Check if your SSD is properly mounted and not read-only (a common issue with corruption). Run:

df -h

Look for your 1TB SSD (likely /dev/sda1 or similar). Ensure it’s mounted at /mnt/data or Umbrel’s default path.

  • Check disk health:

sudo smartctl -a /dev/sda

Look for errors like “Reallocated_Sector_Ct” or “Current_Pending_Sector”. If the drive shows failures, it might be the culprit—replace it. Samsung SSDs are reliable, so this is unlikely but worth checking.
3. Run Bitcoin Core with -reindex

  • The error suggests a reindex to rebuild the database. Edit Umbrel’s Bitcoin Core config to force a reindex.
  • Navigate to the Bitcoin data directory (usually ~/umbrel/app-data/bitcoin/data/bitcoin.conf or similar). Open bitcoin.conf:

nano ~/umbrel/app-data/bitcoin/data/bitcoin.conf

  • Add or modify these lines:

reindex=1 dbcache=2048

The dbcache=2048 allocates 2GB of RAM for caching, easing the load on your Pi. Save and exit (Ctrl+O, Enter, Ctrl+X).

  • Restart the Bitcoin Node via the Umbrel dashboard or:

sudo docker restart bitcoin

  • Monitor progress in the Umbrel dashboard. Reindexing will take time (hours to days), as it reprocesses the blockchain. Check logs for errors:

docker logs bitcoin
4. Optimize Umbrel Settings

  • Disable unnecessary apps: In the Umbrel dashboard, pause apps like Lightning, Electrum, or others to free resources during sync.
  • Increase swap space: The Pi’s 8GB RAM is decent, but IBD can be memory-hungry. Check swap:

free -h

If swap is low (e.g., <2GB), increase it:

sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile

Make it permanent by adding to /etc/fstab:

/swapfile none swap sw 0 0

  • Cool your Pi: Ensure the Pi isn’t overheating, as thermal throttling can slow sync. Use a fan or heatsink if not already.
  1. Monitor and Wait
  • Syncing to 75% means you’re past the hardest part (early blocks). The remaining 25% could take 1-3 days, depending on your Pi’s load and network speed.
  • Check progress periodically via Umbrel’s dashboard or:

bitcoin-cli -rpcconnect=127.0.0.1 -rpcport=8332 getblockchaininfo

Look at blocks vs. headers. If blocks is catching up to headers, you’re progressing.

  • If it stalls again, check logs for specific errors and share them for further diagnosis.
  1. If Reindex Fails
  • If reindexing doesn’t work (e.g., same error persists), the database might be too corrupted. Delete the blockchain data (not the wallet!) and start fresh:

rm -rf ~/umbrel/app-data/bitcoin/data/blocks ~/umbrel/app-data/bitcoin/data/chainstate

  • Restart the node. This forces a full resync, which is painful but sometimes necessary. To avoid this in the future:
    • Use a UPS (uninterruptible power supply) to prevent power cuts.
    • Ensure stable internet during sync.
    • Avoid shutting down the Pi during IBD.
  1. Prevent Future Issues
  • Backup Umbrel: After syncing, back up your Umbrel seed phrase and channel states (if using Lightning) via the dashboard.
  • Regular maintenance: Periodically check disk health and update Umbrel (Settings > Update).
  • Consider pruning: If storage becomes an issue, enable pruning in bitcoin.conf (e.g., prune=550) to keep only recent blocks. This reduces disk usage but limits historical queries.
1 Like

Thanks for the quick response:

  • SSD is currently at 627GB/1TB with 357GB remaining so plenty of space still
  • CPU and Memory look healthy too. No other services using memory
  • No power interruption that I’m aware of
  • SSD is brand new out the box
  • No other Umbrel services running
  • Software glitch - I guess so… Something has gone wonky and I fee like it’s more of a software issue than a hardware issue given the above?

I’m going to follow your steps now:

1) ‘sudo docker stop bitcoin’ did not work work so I used ‘sudo docker stop bitcoin_bitcoind_1’ and then ‘sudo docker ps -a’ to confirm it was not running (it confirmed as ‘exited’)

2) The SSD looks mounted correctly:

umbrel@umbrel:~$ df -h

Filesystem Size Used Avail Use% Mounted on
overlay 18G 1.8G 15G 11% /
tmp 4.0G 8.3M 4.0G 1% /run
/dev/mmcblk0p7 18G 1.8G 15G 11% /run/rugpi/mounts/data
/dev/mmcblk0p5 4.0G 3.4G 347M 91% /run/rugpi/mounts/system
/dev/mmcblk0p1 256M 956K 255M 1% /run/rugpi/mounts/config
/dev/mmcblk0p2 128M 100M 29M 78% /boot
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 4.0G 0 4.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda1 916G 584G 286G 68% /mnt/data
tmpfs 806M 0 806M 0% /run/user/1000

Checking disk health shows:

umbrel@umbrel:~$ sudo smartctl -a /dev/sda sudo: smartctl: command not found

Chat GPT says it’s because I need to ‘Install smartmontools (which includes smartctl):’ by using the command ‘Install smartmontools (which includes smartctl):’. This seemed to install something.

I then tried it again and got this response:

umbrel@umbrel:~$ sudo smartctl -a /dev/sda

smartctl 7.3 2022-02-28 r5338 [aarch64-linux-6.6.74+rpt-rpi-2712] (local build)

Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org

/dev/sda: Unknown USB bridge [0x04e8:0x4001 (0x100)]

Please specify device type with the -d option.

Use smartctl -h to get a usage summary

3) The file was blank so I added the the two lines, saved, and exited.

I then restarted the node by right clicking > restart. I’ve gone into the app and it still looks like it did before, stuck on starting:

  1. No other unnecessary apps running. ‘free -h’ says:

Swap is 4GB so think that’s okay. Have not entered any other commands. Pi has an active cooling fan. Currently at 46C/115F.

  1. Not sure if I did not command it to reindex properly or did not restart but it still seems stuck on ‘starting’ . When checking progress it says:

umbrel@umbrel:~$ bitcoin-cli -rpcconnect=127.0.0.1 -rpcport=8332 getblockchaininfo

-bash: bitcoin-cli: command not found

  1. I’ll wait on further advice from you before trying to delete the blockchain data and starting fresh.

I also have a 2024 Macbook Pro, 24GB Memory, M4 Pro chip. I wonder whether I am better off plugging my SSD in to this and downloading the IBD first, and then popping it into the Pi. Would there be anything wrong with this or does it all need to be done via the Pi?

Really appreciate the help, would love to get a node up and running but just can’t quite get there.

The file location might not be right… esp since it was empty. :slight_smile:

Use gui to stop the app. or the cli like you did before. :+1:

See if you find this file, and if it has stuff in it:

Edit umbrel-bitcoin.conf for Reindex

  • Navigate to the config file:

cd ~/umbrel/app-data/bitcoin-knots/data/bitcoin

  • Open umbrel-bitcoin.conf:

nano umbrel-bitcoin.conf

  • Add these lines at the end (or under [core] if you prefer):

reindex=1
dbcache=2048

The reindex=1 triggers database rebuilding to fix the corruption. The dbcache=2048 allocates 2GB RAM, reducing strain on your 8GB Pi during reindexing.

  • Save (Ctrl+O, Enter, Ctrl+X).
  • Verify the file:

cat umbrel-bitcoin.conf

Confirm reindex=1 and dbcache=2048 are present.


Try the restart… and fingers crossed!!

If Reindex Fails

  • See disk check below and then come back here if needed…

  • If logs show the same “Error opening block database” after 24 hours or no progress, try -reindex-chainstate:

nano ~/umbrel/app-data/bitcoin-knots/data/bitcoin/umbrel-bitcoin.conf

Replace reindex=1 with:

reindex-chainstate=1 dbcache=2048

Restart It…

  • If both fail, the database is likely beyond repair. Clear blockchain data (not the wallet):

rm -rf ~/umbrel/app-data/bitcoin-knots/data/bitcoin/blocks ~/umbrel/app-data/bitcoin-knots/data/bitcoin/chainstate

Or, if on the SSD:

rm -rf /mnt/data/bitcoin/blocks /mnt/data/bitcoin/chainstate

Restart to resync.


Check The Disk W/ Smartctl

The smartctl command queries a drive’s SMART (Self-Monitoring, Analysis, and Reporting Technology) data to check for errors like reallocated sectors, wear leveling, or pending failures. The error /dev/sda: Unknown USB bridge [0x04e8:0x4001 (0x100)] means:

  • USB Bridge Issue: Your Samsung SSD is likely in a USB enclosure or connected via a USB-to-SATA adapter. The bridge (vendor ID 0x04e8, Samsung) isn’t recognized by smartctl’s database, preventing SMART data access.
  • Impact: Without SMART data, we can’t confirm if SSD errors (e.g., bad sectors, write failures) are causing or worsening the database corruption. This is critical because IBD writes ~600GB of data, stressing the drive.
  • Risk: If the SSD or USB connection is faulty (e.g., loose cable, failing enclosure), reindexing might fail again, or new corruption could occur.

The df -h output (/dev/sda1 at /mnt/data, 584GB used, 286GB free) shows the SSD is working, but we need to bypass the smartctl limitation or mitigate hardware risks indirectly. The vendor ID 0x04e8 confirms a Samsung device, so it’s likely a reliable SSD (e.g., Samsung T7 or 870 EVO), but the USB bridge is a common hurdle with external drives on Linux.

How

1. Stop the Bitcoin Node

*Gui or
*System command

2. Work Around the smartctl USB Bridge Issue

Why: We need to check SSD health or detect I/O errors to rule out hardware issues. The smartctl error blocks direct SMART access, so we’ll try alternative device types and system logs. Steps:

  • Try Alternative Device Types: smartctl may work if we specify the correct device type for the USB bridge.

sudo smartctl -a -d sat /dev/sda

If it fails, try other types:

sudo smartctl -a -d usb /dev/sda sudo smartctl -a -d scsi /dev/sda

If one works, look for:

  • Reallocated_Sector_Ct: Non-zero values indicate bad sectors.
  • Wear_Leveling_Count: High values (near 100%) suggest a worn SSD.
  • Current_Pending_Sector: Non-zero values mean potential data loss. Share the output for analysis. If all fail, proceed but note the risk.
  • Check System Logs for I/O Errors: If smartctl fails, inspect kernel logs for SSD or USB issues:

dmesg | grep -i error

Look for:

  • USB errors (e.g., “usb 1-1: reset high-speed USB device”).
  • Disk errors (e.g., “I/O error, dev sda”).
  • Filesystem issues (e.g., “ext4-fs error”). If errors mention /dev/sda or USB, test the USB cable/enclosure or replace them.
  • Physical Inspection: Ensure the SSD’s USB cable and enclosure are secure. A loose connection can cause I/O errors, mimicking corruption. If possible, test the SSD in another enclosure or directly via SATA (if it’s a 2.5" drive).
  • Fallback: If no SMART data is accessible, assume the SSD is functional (per df -h) but monitor logs during reindexing for new errors.

3. Check File System Integrity

Why: File system errors on the SSD could cause or hide database corruption. We’ll verify /dev/sda1 before reindexing. Steps:

  • Unmount the SSD:

sudo umount /mnt/data

If it fails (e.g., “device is busy”), ensure no processes use it:

lsof /mnt/data

Stop any listed processes or reboot if needed.

  • Check and repair the file system:

sudo fsck /dev/sda1

Answer y to repair prompts. If major errors are found, note them.

  • Remount:

sudo mount /dev/sda1 /mnt/data

  • Verify:

df -h

Ensure /dev/sda1 is at /mnt/data with ~286GB free.

Monitor Reindex Progress

  • Check logs for reindex activity:

docker logs bitcoin_bitcoind_1

Look for “Reindexing block file,” “Processing blocks,” or errors like “Corruption: block checksum mismatch.” Share any errors.

  • Verify sync status:

bitcoin-cli -rpcconnect=127.0.0.1 -rpcport=8332 getblockchaininfo

Check blocks vs. headers. If blocks is increasing or initialblockdownload: true appears, reindexing is working. If the command fails, the node might still be initializing—wait 15-30 minutes and retry.

  • If the dashboard stays stuck but logs/CLI show progress, the UI is lagging, which is common during reindexing.

  • Secure power: Use a UPS to prevent power cuts, as corruption likely stems from ungraceful shutdowns.

  • Check USB SSD: Your smartctl failure (Unknown USB bridge) suggests a USB enclosure issue. Test:

sudo smartctl -a -d sat /dev/sda

If it fails, check for I/O errors:

dmesg | grep -i error

Look for USB or /dev/sda issues. Ensure the USB cable/enclosure is secure.


Post-Reindex Cleanup - Assuming you succeed

  • Once sync progresses past 75% or completes, disable reindexing to avoid overhead:

** Remove the lines you added or… try a substitution command to edit

sed -i "s/reindex=1//g;" ~/umbrel/app-data/bitcoin-knots/data/bitcoin/umbrel-bitcoin.conf

Or, if using -reindex-chainstate:

sed -i "s/reindex-chainstate=1//g;" ~/umbrel/app-data/bitcoin-knots/data/bitcoin/umbrel-bitcoin.conf

  • Restart the app…

Followed all of these steps and verified the file, restarted the program by right clicking on the app. Still stuck on ‘starting’

Yes it’s a brand new Samsung T7 SSD. Its plugged in securely via USB cable, USB C into the SSD and USB3.0 into the Raspberry Pi.

Checking the disk w/ smartctl seems to give me some errors for review:

Unmounting says target is busy but I cannot unmount it:

umbrel@umbrel:~$ lsof /mnt/data

-bash: lsof: command not found

Super keen to get this up and running, I really appreciate your help & advice.

From what i’m gathering from research, looks like a possible hardware issue… maybe have a full read through first. I might try to upgrade the firmware since that could be the culprit for the other issues. See if you agree… Also check the SSD that you got and see if it’s recommended for this applicatioin. The read/write speeds, etc…


What This Means for the Disk Issue

The smartctl failures suggest:

  • USB Bridge Incompatibility: The SSD’s USB enclosure (or cable) uses a bridge (0x04e8:0x4001) that doesn’t fully support SMART passthrough. This is a known issue with some Samsung SSDs (e.g., T5, T7) when used via USB on Linux.
  • Potential I/O Issues: While the SSD is mounted and writable, the bridge’s limitations might cause intermittent I/O errors, especially during high-load operations like Bitcoin IBD (~584GB of data). This could corrupt the LevelDB database, leading to your “Error opening block database.”
  • No Direct Evidence of SSD Failure: We can’t see SMART attributes (e.g., reallocated sectors), but the SSD’s functionality (df -h shows 286GB free) suggests it’s not dead. The issue is likely the USB connection, not the SSD itself.

Step 1: Diagnose the dmesg Errors

The dmesg output provides more clues about hardware issues:

[ 3.805769] rp1-firmware: probe of rp1-firmware failed with error -110 [ 4.095847] rp1-pio 1f00178000.pio: error -ENOENT: failed to contact RP1 firmware [ 4.095855] rp1-pio: probe of 1f00178000.pio failed with error -110

  • Error Breakdown:
    • rp1-firmware: probe of rp1-firmware failed with error -110: Error -110 is ETIMEDOUT (connection timed out). The Raspberry Pi 5’s RP1 chip (a southbridge handling I/O like PCIe, USB, and GPIO) couldn’t initialize its firmware.
    • rp1-pio 1f00178000.pio: error -ENOENT: failed to contact RP1 firmware: Error -ENOENT means “No such file or directory.” The RP1’s Programmable I/O (PIO) subsystem couldn’t contact the firmware, likely because the firmware failed to load.
    • rp1-pio: probe of 1f00178000.pio failed with error -110: Another timeout error during PIO initialization.
  • What This Means:
    • RP1 Chip Issue: The RP1 chip on your Pi 5 manages USB (among other things). These errors indicate the RP1 firmware failed to load, which could affect USB stability, including communication with your SSD.
    • Impact on SSD: If the RP1 chip is flaky, it might cause USB disconnects or I/O errors, corrupting the Bitcoin database during IBD. This aligns with your recurring “Error opening block database” across four install attempts.
    • Not SSD-Specific: These errors are about the Pi’s hardware/firmware, not the SSD itself. However, they indirectly affect the SSD by potentially disrupting USB communication.

Key Takeaway

The smartctl failures and dmesg errors point to a USB connectivity issue, likely caused by:

  1. Incompatible USB Bridge: The SSD’s enclosure doesn’t fully support SMART passthrough, blocking health checks.
  2. RP1 Firmware Issue: The Pi 5’s RP1 chip failed to initialize properly, which might cause USB instability, leading to I/O errors and database corruption.

Step 2: Steps to Resolve the Disk Issue

We need to confirm the SSD’s health, stabilize the USB connection, and ensure the RP1 issue isn’t breaking things. These steps will help diagnose and fix the disk issue while supporting your node’s reindexing (already configured with reindex=1 in umbrel-bitcoin.conf).

1. Fix smartctl to Check SSD Health

Since -d sat failed, let’s try other device types to access SMART data:

  • Try -d scsi:

sudo smartctl -a -d scsi /dev/sda

Some USB bridges work better with scsi instead of sat.

  • Try -d auto:

sudo smartctl -a -d auto /dev/sda

Let smartctl auto-detect the device type.

  • Try --scan to Identify Device Type:

sudo smartctl --scan

This lists devices and suggests -d types. Look for /dev/sda and note the recommended type (e.g., sat, usb, scsi). Then retry:

sudo smartctl -a -d <recommended-type> /dev/sda

  • If All Fail: If no -d type works, the USB bridge doesn’t support SMART passthrough. We’ll rely on other methods to monitor SSD health (see below).

What to Look For: If smartctl works, check:

  • Reallocated_Sector_Ct: If >0, the SSD is failing.
  • Wear_Leveling_Count: For SSDs, indicates remaining life (lower is worse).
  • Current_Pending_Sector: If >0, sectors are pending reallocation—bad sign.

2. Monitor for I/O Errors

Since smartctl is limited, check for USB/SSD errors in logs:

  • Check dmesg Again:

dmesg | grep -i error

Look for new errors mentioning /dev/sda, USB, or I/O (e.g., “I/O error”, “disconnected”). Share any new findings.

  • Check System Logs:

sudo journalctl -u systemd-udevd | grep -i error

This logs USB device events. Look for SSD-related errors (e.g., “failed to reset”, “device descriptor read error”).

3. Address the RP1 Firmware Issue

The RP1 errors suggest a Pi 5 hardware or firmware issue affecting USB stability:

  • Update Raspberry Pi Firmware:

sudo rpi-update

This updates the Pi’s firmware, potentially fixing RP1 issues. Reboot after:

sudo reboot

Post-reboot, check dmesg:

dmesg | grep -i rp1

If RP1 errors persist, it might be a hardware issue (see below).

  • Check for Overheating: The RP1 chip can fail if the Pi overheats. Ensure you have a fan or heatsink. Check temps:

vcgencmd measure_temp

If >70°C, add cooling (fan, heatsink).

  • Test USB Port: The RP1 manages USB. Plug the SSD into a different USB port on the Pi (preferably USB 3.0 for speed). Reboot and check dmesg for RP1/USB errors.

4. Stabilize USB Connection

The RP1 issue and smartctl failure suggest USB instability, which could corrupt the database during IBD:

  • Check Cable/Enclosure:
    • Use a different USB cable (ensure it’s high-quality, USB 3.0).
    • If using an enclosure, test the SSD directly (if possible) with a USB-to-SATA adapter.
  • Power Supply: Ensure the Pi’s power supply is sufficient (5V, 3A recommended). A weak PSU can cause USB issues. Check for under-voltage:

vcgencmd get_throttled

If throttled=0x0, you’re good. If not, upgrade the PSU.

  • USB Hub: If the SSD is on a hub, connect it directly to the Pi. Hubs can introduce instability.

5. Alternative SSD Health Check

If smartctl keeps failing, use these methods to infer SSD health:

  • Check File System:

sudo umount /mnt/data sudo fsck /dev/sda1 -f

Look for errors (e.g., “bad blocks”). If many errors appear, the SSD might be failing. Remount:

sudo mount /dev/sda1 /mnt/data

  • I/O Stress Test:

sudo hdparm -tT /dev/sda

This tests read speed. If speeds are very low (<50MB/s) or errors occur, the SSD or USB connection is problematic.

  • Write Test (careful, this writes data):

sudo dd if=/dev/zero of=/mnt/data/testfile bs=1M count=100 oflag=direct

If this fails with I/O errors, the SSD or connection is faulty. Delete the test file:

rm /mnt/data/testfile

6. If SSD Is Failing

If smartctl, fsck, or tests indicate SSD failure (e.g., bad blocks, I/O errors):

  • Replace SSD: Get a new SSD (e.g., Samsung T7, known to work with Pi). Copy the blockchain data to save your 75% sync:

sudo rsync -av /mnt/data/bitcoin /path/to/new/ssd/bitcoin

Update Umbrel’s config to point to the new SSD (edit ~/umbrel/docker-compose.yml if needed).

  • Reindex on New SSD:

nano ~/umbrel/app-data/bitcoin-knots/data/bitcoin/umbrel-bitcoin.conf

Ensure reindex=1 and dbcache=2048 are set. Restart:

~/umbrel/scripts/app restart bitcoin

Step 3: Impact on Bitcoin Node

The disk issue directly affects your node:

  • USB Instability: The RP1 errors and USB bridge issues likely caused I/O errors during IBD, corrupting the LevelDB database.
  • Reindexing: You’ve set reindex=1 in umbrel-bitcoin.conf, but if the SSD or USB fails during reindexing, it’ll stall again. Stabilizing the USB connection is critical.
  • Prevention: A UPS (to avoid power cuts) and a reliable USB setup will prevent future corruption.

Thoughts

The smartctl failures and RP1 errors are a pain, but they’re not a death sentence for your SSD. The USB bridge issue is common with Samsung SSDs on Pi, and the RP1 errors suggest a firmware or hardware glitch on the Pi 5. Your SSD is likely fine (286GB free, no direct I/O errors), but the USB connection is the weak link, causing corruption during IBD. Fixing the USB setup and RP1 issue will let your reindexing finish and get the node past 75%.

Recommended 1TB SSD Option A: Samsung T7 Portable SSD (1TB)

After reviewing hardware compatibility and performance for Raspberry Pi Bitcoin nodes, the Samsung T7 Portable SSD (1TB) stands out as a top choice. Here’s why:

  • Performance: The T7 delivers up to 400MB/s read/write speeds over USB 3.0 (Gen 1), as noted in testing by Jeff Geerling (2020). This matches the Pi 5’s USB 3.0 ceiling, ensuring fast blockchain syncing. Random 4K IOPS are also high (~15,000-20,000), critical for IBD’s random access patterns.
  • Compatibility: The T7 is widely reported to work seamlessly with Raspberry Pi 4 and 5, including for USB booting and Bitcoin nodes. Unlike your current SSD, the T7’s USB bridge (likely a newer Samsung proprietary chip) supports SMART passthrough better, avoiding the smartctl issues you’re facing.
  • Power Efficiency: The T7 draws ~0.3A at 5V (~1.5W), well within the Pi 5’s USB power budget (1.2A total across ports with a 5V/3A PSU). Your dmesg RP1 errors suggest power or USB instability—using a low-power SSD like the T7 minimizes this risk.
  • Reliability: The T7’s metal case dissipates heat better than plastic enclosures (unlike the Arcanite USB drives that overheat at 60°C per Geerling’s tests), reducing thermal throttling during long syncs. It’s also shock-resistant, ideal for 24/7 node operation.
  • Capacity: 1TB ensures you have a tiny bit of headroom for the blockchain (700GB now, growing ~50GB/year) and Umbrel’s other apps (e.g., Lightning).

Recommended 2TB SSD Option B: SanDisk Extreme Portable SSD (2TB)

The SanDisk Extreme Portable SSD (2TB) is a strong choice for your Bitcoin node on the Pi 5. Here’s why it fits your requirements:

  • Capacity: 2TB, giving you ample headroom for the blockchain (700GB now, potentially 1TB+ in a decade) and Umbrel apps like Lightning.
  • Performance: Up to 1050MB/s read/write speeds via USB 3.2 Gen 2, but on the Pi 5’s USB 3.0 (Gen 1) ports, you’ll get ~350-400MB/s, per Jeff Geerling’s testing (2020). Random 4K IOPS are solid (~15,000-20,000, typical for high-end portable SSDs), crucial for Bitcoin IBD’s random access patterns. This ensures faster syncing than your current SSD, which is likely bottlenecked by I/O errors.
  • Compatibility: The SanDisk Extreme works seamlessly with Raspberry Pi 5 via USB 3.0, avoiding the SMART passthrough issues your current SSD faces (Unknown USB bridge [0x04e8:0x4001]). Users on X report success with this model for Pi setups, and it’s recommended for Bitcoin nodes due to its reliability (e.g., @HumbleAttitude1, 2025).
  • Power Efficiency: Draws ~0.4A at 5V (~2W), within the Pi 5’s USB power budget (1.2A total across ports with a 5V/3A PSU). Your dmesg RP1 errors suggest USB instability—SanDisk’s low power draw reduces this risk compared to NVMe drives (3W+).
  • Durability: IP65 water/dust resistance and a rugged design handle 24/7 node operation. It runs cooler than NVMe drives (stays under 50°C during heavy use, per Silicon Power PX10 review), avoiding thermal throttling.
  • Price: ~$150, as noted in X posts (e.g., @BitPaine, 2025), making it a cost-effective 2TB option for future-proofing.

Why Not Other 2TB Options?

  • Samsung T7 (2TB): Also a good choice (up to 400MB/s on Pi 5’s USB 3.0), but slightly more expensive (~$170). Its USB bridge is better than your current SSD but less proven for SMART passthrough on Pi compared to SanDisk Extreme.
  • NVMe SSDs (e.g., Lexar NM790 2TB): Offers 7400MB/s reads (per @technewsonweb, 2025), but on Pi 5’s PCIe Gen 3 x1 (via M.2 HAT), you’re capped at ~700MB/s. NVMe drives draw more power (~3W) and run hotter, risking RP1-related issues (your dmesg errors). USB 3.0 is safer and sufficient for Bitcoin syncing (IBD is I/O-bound, not bandwidth-bound, per Reddit user FieserKiller, 2019).
  • SanDisk Extreme PRO (2TB): Faster (2000MB/s, per @DealRadarX, 2025), but overkill for Pi 5’s USB 3.0 (capped at 400MB/s). Higher power draw (~2.5W) and cost (~$200) make it less ideal.
  • SATA SSDs (e.g., Crucial MX500 2TB): Cheaper (~$120), but requires a USB-to-SATA adapter, which often causes SMART issues (like your current setup). Slower IOPS (~10,000) than SanDisk Extreme.

Ideal Connection: Direct USB 3.0 (Gen 1)

Connect the SanDisk Extreme 2TB directly to one of the Pi 5’s USB 3.0 ports (blue ones) using its USB-C to Type-A cable (included). Here’s why this is optimal:

  • Speed: Pi 5’s USB 3.0 delivers ~400MB/s, ideal for IBD (200-300MB/s sustained reads). NVMe via PCIe offers marginal gains for Bitcoin (capped by CPU/IOPS), per Stephen Smith’s blog (2024).
  • Stability: Direct USB 3.0 avoids hubs, which can cause power backfeed (per James Chambers, 2021). Your RP1 errors (rp1-firmware: probe failed with error -110) suggest USB instability—SanDisk’s low power draw and direct connection minimize this.
  • Power: Ensure your Pi 5 uses a 5V/3A PSU (official 27W recommended). Check for under-voltage:

vcgencmd get_throttled

If throttled=0x0, you’re good. If not, upgrade the PSU.

Cool. Let’s give it a go :slight_smile:

1. Fix smartctl
‘sudo smartctl -a -d scsi /dev/sda’ resulted in

so I tried ‘sudo smartctl -a -d auto /dev/sda’ which states ‘unknown USB bridge’

‘sudo smartctl --scan’ didn’t work so I tried ‘sudo smartctl -scan’ (with 1x - before scan)

I didn’t think it would work as the scan didn’t work but ‘sudo smartctl -a -d /dev/sda’ resulted in ’

2. Monitor for I/O Errors

‘dmesg | grep -I error’ and ‘sudo journalctl -u systemd-udevd | grep -I error’ both resulted in nothing happening

image

3. Address the RP1 Firmware issue
Trued ‘sudo rpi-update’ but got a few errors:

rebooted anyway and got the following after ‘dmesg | grep -I rp1’

umbrel.local isn’t working now, chatGPT states the following, think I messed up the firmware in the update?

Rebooted the raspberrypi and umbrel is working again, though I’m not sure if the firmware install properly and is now slightly corrupt?

I’ve got an active fan, temperatures have always been fine:

4. Stabilize USB Connection
I don’t think I have another USBC > USB3.0 cable, will check in the morning. This one was also brand new and came with the SSD so very surprised if it’s faulty.

When checking power supply:

image

It is not connected to a hub, just USBC to USB3.0 directly.

5. Alternative SSD Health Check

Tried to unmount but don’t think it was successful:

IO Stress Test command not found

image

Write test seems okay & confirm removed

6. If SSD is Failing
Confirming it is a brand new T7 as recommended. Hesitant to pay another £150 on an alternative SSD if it won’t guarantee a fix as I won’t be able to send it back for a refund and could end up with £250 worth of redundant SSDs - especially as the T7 was already recommended as a top choice for the Raspberry Pi.

Eek! Starting to run out of ideas. Guess I can just install and try again, but this is the fourth time of doing that now so I’m not convinced it’ll work the 5th time.

Hey man, so sorry to see the errors continue. I’ve been busy and didnt’ have time to further study and research for you. Here’s a full reply that I hope helps.

Quick Observations from your previous reply

Please pay careful attention to your command inputs, as some were not typed exactly as requested. Where you see two dashes like this – make sure you use 2 of them. :slight_smile:
Also, I kinda blew it by not seperating multiple commands on diff lines so you could see where one started and stopped. Rule of thumb; where you see something like sudo, that’s the start of a new command. I haven’t tried this stuff so your mileage may vary.


Revised Step-by-Step

Step 1: Prepare a Recovery Environment to Fix the SSD

The read-only /boot partition and rp1 chip failure mean we can’t boot directly into umbrelOS. We’ll use a temporary SD card with Raspberry Pi OS Lite to repair the SSD without wiping it.

  1. Power Off and Gather Materials:

    • Power off your Raspberry Pi 5 by unplugging it.
    • Remove all peripherals except the SSD (Samsung T7, connected via USB-C USB 3.0).
    • Gather: a spare microSD card (8GB+), a computer, an official Pi 5 power adapter (5.1V, 3A), a high-quality USB-C USB 3.0 cable, and optionally a powered USB hub.
  2. Flash Raspberry Pi OS Lite to the SD Card:

    • On your computer, download the Raspberry Pi Imager from the official Raspberry Pi website.
    • Open the Imager, click “Choose OS,” select “Raspberry Pi OS (other),” and pick “Raspberry Pi OS Lite (64-bit).”
    • Insert the microSD card into your computer, select it under “Storage,” and click “Write.” This will take a few minutes.
    • Before ejecting, enable SSH: click the gear icon, check “Enable SSH,” set username pi and password raspberry, and save. Optionally, configure Wi-Fi.
  3. Boot the Pi 5 with the SD Card:

    • Eject the SD card, insert it into the Pi 5’s SD card slot, and connect the SSD via USB.
    • Power on the Pi 5. It will boot from the SD card into Raspberry Pi OS Lite. Wait 1-2 minutes.
  4. Access the Pi via SSH:

    ssh pi@<pi-ip-address> # so you will fill in the blank where you see <blah blah blah>, not literally type the stuff in between the <>.
    

    Replace <pi-ip-address> with the actual IP (e.g., ssh pi@192.168.1.100). Enter the password raspberry.

  5. Mount and Repair the SSD:

    • List connected disks to identify the SSD (likely /dev/sda):
      lsblk
      
      You’ll see /dev/sda with two partitions: /dev/sda1 (FAT32, /boot) and /dev/sda2 (ext4, root filesystem with blockchain data at /home/umbrel/umbrel/app-data/bitcoin-knots/data/bitcoin/blocks).
    • Create mount points and mount the partitions:
      sudo mkdir -p /mnt/boot
      sudo mkdir -p /mnt/root
      sudo mount /dev/sda1 /mnt/boot
      sudo mount /dev/sda2 /mnt/root
      
    • If mounting fails with a “read-only” error, repair the filesystem:
      sudo fsck.vfat -f /dev/sda1
      sudo fsck.ext4 -f /dev/sda2
      
      Answer “yes” to repair prompts. Remount if repairs were made:
      sudo umount /mnt/boot
      sudo umount /mnt/root
      sudo mount /dev/sda1 /mnt/boot
      sudo mount /dev/sda2 /mnt/root
      
    • Verify the /boot partition is writable:
      touch /mnt/boot/testfile
      rm /mnt/boot/testfile
      
      If this succeeds, the /boot partition is fixed.

Step 2: Revert or Fix the Firmware and Kernel

The failed rpi-update installed a possibly incompatible kernel (rpi-6.12.y), causing the rp1 chip failure. We’ll restore the original umbrelOS kernel and firmware and see if we can make it work.

  1. Check for Backups of the Original Kernel and Firmware:

    • Navigate to the /boot partition:
      cd /mnt/boot
      ls -l
      
      Look for files like kernel8.img, start4.elf, bcm2712-rpi-5-b.dtb, and backups (e.g., kernel8.img.bak).
    • If backups exist, restore them:
      sudo mv kernel8.img.bak kernel8.img
      sudo mv start4.elf.bak start4.elf
      sudo mv bcm2712-rpi-5-b.dtb.bak bcm2712-rpi-5-b.dtb
      
      This reverts to the umbrelOS-compatible kernel and firmware.
  2. If No Backups Exist, Try umbrelOS Update First:

    • Instead of extracting from a fresh umbrelOS image (which is complex), we’ll try booting into umbrelOS after fixing /boot and use its update system to restore the correct kernel. If this fails, we’ll fall back to manual extraction (detailed later).
  3. Update the Bootloader Firmware:

    • Update the Pi 5’s EEPROM bootloader firmware:
      sudo apt update
      sudo apt install rpi-eeprom
      sudo rpi-eeprom-update
      
    • If an update is available, apply it:
      sudo rpi-eeprom-update -d -a
      
    • Reboot:
      sudo reboot
      
    • SSH back in after the reboot.

Step 3: Boot umbrelOS and Verify SSD Stability

Now that /boot is writable and the bootloader is updated, let’s boot umbrelOS and ensure the SSD (Samsung T7) is stable.

  1. Boot from the SSD:

    • Power off the Pi 5:
      sudo poweroff
      
    • Remove the SD card.
    • Ensure the SSD is connected via USB-C USB 3.0, and power on the Pi 5. Wait 2-3 minutes for umbrelOS to boot.
  2. Access umbrelOS:

    • Navigate to http://umbrel.local in a browser on the same network. If it doesn’t load, find the Pi’s IP address via your router and access http://<pi-ip-address>.
    • Alternatively, SSH in:
      ssh umbrel@<pi-ip-address> # same as before ^^^ up top 
      
      Password: moneyprintergobrrr. # or whatever you set it as
  3. Verify SSD Mount Points:

    • Confirm the SSD partitions are mounted:
      lsblk
      
      Ensure /dev/sda1 is mounted at /boot and /dev/sda2 at /. Check blockchain data:
      ls /home/umbrel/umbrel/app-data/bitcoin-knots/data/bitcoin/blocks
      
      If the directory exists, the blockchain data is accessible.
  4. Check SSD Health and Stability:

    • Fix smartctl for the Samsung T7:
      sudo smartctl -a -d sat /dev/sda
      
      If it fails, try:
      sudo smartctl -a -d sat,12 /dev/sda
      

OR

Try Different Device Types Run smartctl with various -d options to find the one that works. Start with these commands, one at a time:

sudo smartctl -a -d scsi /dev/sda

sudo smartctl -a -d sat /dev/sda

sudo smartctl -a -d sntasmedia /dev/sda
sudo smartctl -a -d sat -T permissive /dev/sda

And

dmesg | grep usb

And

Verify USB 3.0 Connection Since you’re using a new USB 3.0 cable and port, the connection should be solid, but let’s confirm the SSD is running at USB 3.0 speeds (up to 5Gbps) rather than falling back to USB 2.0 (480Mbps). Run:

lsusb -t

Look for /dev/sda or the Samsung device. It should show 5000M (USB 3.0) rather than 480M (USB 2.0). If it’s USB 2.0, check the cable, port, or try a different USB 3.0 port on the Pi 5. A weak connection could cause issues, though it’s unlikely to trigger the bridge error directly.

If none of the -d options work, the bridge chip might be unsupported by your smartmontools version, or the T7’s firmware is being stubborn. And… we’d hope the drive is working fine since it’s new. But to repeatedly fail to build the chain seems like maybe something’s up.

I’m just concerned about the bridge error, as it blocks insight into the SSD’s health, which is critical for a 1TB drive storing 584GB of data (68% full). A failing SSD could lead to data loss, especially on a system like Umbrel, which might be running a Bitcoin node or other data-heavy apps. The fact that the drive is mounted and accessible is reassuring, but without SMART data, you’re flying blind. We really need some info to rule in/out the setup.

 Look for “PASSED” and low error counts (e.g., `Reallocated_Sector_Ct`, `Wear_Leveling_Count`). If failing, back up:
 ```
 sudo cp -r /home/umbrel/umbrel/app-data/bitcoin-knots/data/bitcoin/blocks /path/to/external/drive
 ```
  • Check Power and Connections:
    dmesg | grep -i voltage
    
    If undervoltage warnings appear, use a powered USB hub for the SSD.
  • Test SSD Stability with fio:
    sudo apt update
    sudo apt install fio
    fio -name=write_test -filename=/tmp/testfile -rw=write -bs=4k -size=1G -numjobs=1 -iodepth=1 -runtime=60 -time_based -group_reporting
    
    If this fails, use a powered USB hub or different USB port.
  • Disable UAS for Compatibility:
    lsusb -t
    
    Look for /dev/sda driver (e.g., uas). Find the SSD’s IDs:
    lsusb
    
    IDs are 04e8:4001. Disable UAS:
    sudo nano /boot/cmdline.txt
    
    Add usb-storage.quirks=04e8:4001:u to the end (space-separated). Save, exit, reboot:
    sudo reboot
    
    Verify:
    lsusb -t
    
  1. Verify rp1 Fix:
    • Check for rp1 errors:
      dmesg | grep -i rpi
      
      If the error (-110) is gone, the firmware fix worked. If it persists, test with a stable kernel:
      • Reboot with the Raspberry Pi OS Lite SD card, install a stable kernel (e.g., 6.6.y), and recheck:
        sudo apt install linux-image-6.6.0-1-arm64
        sudo reboot
        dmesg | grep -i rpi
        
      If the error disappears, the issue is software-related; if not, the rp1 chip may be faulty.

Step 4: Optimize Bitcoin Knots Configuration

Address ZMQ communication errors from the post.

  1. Edit Bitcoin Knots Configuration:

Make Backup because I DON’T KNOW IF THIS WILL WORK!

cd ~/umbrel/app-data/bitcoin-knots/data/app   
cp bitcoin-config.json bitcoin-config.json.bak
nano bitcoin-config.json

Update as:

{
"clearnet": true,
"torProxyForClearnet": false,
"tor": true,
"i2p": true,
"incomingConnections": true,
"peerblockfilters": true,
"peerbloomfilters": false,
"bantime": 86400,
"maxconnections": 125,
"maxreceivebuffer": 5000,
"maxsendbuffer": 1000,
"maxtimeadjustment": 4200,
"peertimeout": 60,
"timeout": 5000,
"maxuploadtarget": 0,
"cacheSizeMB": 512,
"zmqpubrawblock": "tcp://127.0.0.1:28332",
"zmqpubrawtx": "tcp://127.0.0.1:28333",
"zmqtimeout": 60000,
"mempoolFullRbf": false,
"prune": {
 "enabled": false,
 "pruneSizeGB": 300
},
"blockfilterindex": true,
"maxmempool": 300,
"mempoolexpiry": 336,
"persistmempool": true,
"datacarrier": true,
"datacarriersize": 42,
"permitbaremultisig": false,
"rejectparasites": true,
"rejecttokens": false,
"minrelaytxfee": 0.00001,
"bytespersigop": 20,
"bytespersigopstrict": 20,
"limitancestorcount": 25,
"limitancestorsize": 101,
"limitdescendantcount": 25,
"limitdescendantsize": 101,
"permitbarepubkey": false,
"maxscriptsize": 1650,
"datacarriercost": 1,
"acceptnonstddatacarrier": false,
"dustrelayfee": 0.00003,
"blockmaxsize": 3985000,
"blockmaxweight": 3985000,
"blockreconstructionextratxn": 1000000,
"maxorphantx": 100,
"reindex": true,
"rest": false,
"rpcworkqueue": 128,
"network": "main"
}

Save and exit.

Step 5: Reindex Bitcoin Knots Plan B (if the step 4 fails)

  1. Navigate to the Bitcoin Knots Directory:

    cd /home/umbrel/umbrel/app-data/bitcoin-knots
    
  2. Modify docker-compose.yml:

    nano docker-compose.yml
    

    Find the bitcoind service, add -reindex:

bitcoind -datadir=/data/.bitcoin -reindex.

Example:

Save and exit.

  1. Restart the Bitcoin Node:
    **Use the GUI / Stop, Start is good.

  2. Monitor Reindexing:

    • Check logs:
      sudo docker logs bitcoin-knots_bitcoind_1 | tail -n 100

      Look for “Reindexing block files.” Periodically check for errors every hour until complete.

    • Monitor via the Umbrel dashboard (http://umbrel.local).

Step 6: Final Stability Checks

  1. Verify Docker:

    sudo systemctl status docker
    docker ps
    

    If Docker isn’t running:

    sudo systemctl start docker
    
  2. Monitor System Load:

    top
    

    If overloaded, pause other apps via the dashboard.


Notes

  • Commands are separated for clarity and are copy-paste-ready.
  • Replace placeholders like <pi-ip-address> with actual values (e.g., 192.168.1.100).
  • The plan uses Bitcoin Knots paths (/home/umbrel/umbrel/app-data/bitcoin-knots).
  • If the rp1 error persists, the additional kernel test helps diagnose hardware issues.

This revised plan should get your Umbrel node stable on the Pi 5 with the Samsung T7 SSD. If you encounter issues then it’s time for a formal ticket to get some help. ;). I’m at the of my rope… :slight_smile:

Once again thanks so much for the help and advice. Flashed with Raspberry Pi OS Lite all fine, and then booted the Pi. However, ‘lsblk’ gave me this:

I’m guessing ‘sda>sda1’ is the 1TB SSD and ‘mmcblk0’ is the SD card with Pi OS installed.

As I don’t quite see what I was expecting, just wanted to double check with you before I started bashing in the sudo mkdir+mount commands!

Thanks,

After:

sudo mkdir -p /mnt/sda1 
sudo mount /dev/sda1 /mnt/sda1

I did sudo fsck.ext4 -f /dev/sda1 but it came back saying error as sda1 is mounted

got it, check the big instruction block, and look for how to unmount. :wink:

You have the patience of a saint…

try to pick back up under this section from above…

Mount and Repair the SSD:

    • Answer “yes” to repair prompts. Remount if repairs were made:
sudo umount /mnt/boot
sudo umount /mnt/root < <<<<<<<<<<<<< you already unmounted
sudo mount /dev/sda1 /mnt/boot <<< time to remount
sudo mount /dev/sda2 /mnt/root <<< skip this 
  • Verify the /boot partition is writable:
touch /mnt/boot/testfile
rm /mnt/boot/testfile

If this succeeds, the /boot partition is fixed.

Step 2: Revert or Fix the Firmware and Kernel

… pick all this up from above.


and for what it’s worth, it looks like the ssd is happy, and no repairs were made.

see what you can do to rule in/out power after you fix the firmware.

Okay

Step 2: Revert or Fix the Firmware and Kernel

I didn’t see any files such as kernel8, start4 or backups etc…

cd /mnt/boot
ls -l

3. Update the Bootloader Firmware :

Did this successfully.

Boot from the SSD

Removed SD card, ensured SSD was connected and powered on. Waited 5 minutes.

neither umbrel.local or 192.168.68.111 work, but I didn’t think it would as I have never flashed Umbrel to my SSD, only to the microSD?