Bitcoin knots Status is not showing correctly

BUG REPORT — StartOS v0.4.0-beta.9
Submitted by: Philip
Date: 22 June 2026
Device: Beelink SER5 MAX (AMD Ryzen 7 6800U, 32GB RAM, 4TB SSD)

═══════════════════════════════════════════
ISSUE SUMMARY
═══════════════════════════════════════════

Bitcoin Knots service displays “Starting” status indefinitely in the
StartOS UI despite the node being fully synced and operational. The
health check for “Blockchain Sync” remains stuck in a “Starting” state
and never transitions to green/Running.

═══════════════════════════════════════════
ENVIRONMENT
═══════════════════════════════════════════

  • StartOS Version: v0.4.0-beta.9
  • Bitcoin Knots Version: #knots:29.3.1:10
  • Container Runtime: LXC (confirmed via SSH)
  • Node Hardware: Beelink SER5 MAX Mini PC
  • Network: Local LAN (192.168.20.x)
  • Uptime at time of bug: 7+ hours stuck in “Starting”

═══════════════════════════════════════════
STEPS TO REPRODUCE
═══════════════════════════════════════════

  1. Bitcoin Knots service restarted (cause unknown — likely automatic)
  2. After restart, StartOS UI shows Bitcoin Knots status as “Starting”
  3. Health Check — “Blockchain Sync” shows spinner, never completes
  4. Health Check — “RPC” shows green (ready)
  5. Health Check — “I2P”, “Tor”, “Clearnet” all show green
  6. Stopping and restarting Bitcoin Knots from the UI does not resolve it
  7. Status remains “Starting” indefinitely (confirmed 7+ hours)

═══════════════════════════════════════════
WHAT THE UI SHOWS
═══════════════════════════════════════════

Health Checks:

  • RPC: :white_check_mark: The Bitcoin RPC Interface is ready
  • Blockchain Sync: :counterclockwise_arrows_button: Starting ← STUCK HERE
  • I2P: :white_check_mark: Inbound and outbound connections
  • Tor: :white_check_mark: Inbound and outbound connections
  • Clearnet: :white_check_mark: Inbound and outbound connections

═══════════════════════════════════════════
INVESTIGATION VIA SSH
═══════════════════════════════════════════

SSH access confirmed: ssh start9@192.168.20.215
Container runtime identified as LXC (not Docker/Podman).

Bitcoin Knots LXC container ID:
6ICQ5PJLQRTMCDXMR55EUP25VLAUBHV6 (IP: 10.0.3.243)

bitcoin-cli getblockchaininfo executed directly inside LXC container
confirmed node is FULLY SYNCED:

“blocks”: 954857,
“verificationprogress”: 0.9999995574987486,
“initialblockdownload”: false,
“pruned”: false,
“warnings”:

Bitcoin Knots logs confirmed normal operation throughout:

  • CreateNewBlock() firing every ~30 seconds
  • New peers connecting regularly
  • UpdateTip showing new blocks being received
  • progress=1.000000 confirmed on block 954856

═══════════════════════════════════════════
SECONDARY BUG DISCOVERED
═══════════════════════════════════════════

The Umbrel Bitcoin UI service (LXC container STKISHKLJDI4PL7OH2KSEVKV36G2OFR7,
IP: 10.0.3.183) was configured with:

RPC_COOKIE=/mnt/knots/.cookie

However, after the Bitcoin Knots restart, the /mnt/knots/ mount point
did NOT exist inside the Umbrel Bitcoin UI container:

$ lxc-attach -n STKISHKLJDI4PL7OH2KSEVKV36G2OFR7 – ls -la /mnt/knots/
ls: cannot access ‘/mnt/knots/’: No such file or directory

The actual cookie location was:
/var/lib/lxc/6ICQ5PJLQRTMCDXMR55EUP25VLAUBHV6/rootfs/media/startos/volumes/main/.cookie

This caused Umbrel Bitcoin UI to continuously retry RPC authentication
with a missing/stale cookie, generating repeated warnings in Knots logs:

[warning] ThreadRPCServer incorrect password attempt from 10.0.3.183

These warnings appeared every 30 seconds for the entire 7+ hour period.
Restarting Umbrel Bitcoin UI did NOT resolve the broken mount.
Issue was resolved by uninstalling Umbrel Bitcoin UI entirely.

Root cause appears to be: inter-container volume mounts for the RPC
cookie are not re-established when Bitcoin Knots restarts, and dependent
services are not notified to remount.

═══════════════════════════════════════════
IMPACT
═══════════════════════════════════════════

  • Mining operations: NOT affected (Datum Gateway runs independently)
  • Node functionality: NOT affected (fully synced and operational)
  • Mempool: Showed warning triangle :warning: during the period, cleared after
    Knots restart
  • Umbrel Bitcoin UI: Broken RPC auth — uninstalled as workaround
  • User experience: Confusing — UI implies node is broken when it is not

═══════════════════════════════════════════
EXPECTED BEHAVIOUR
═══════════════════════════════════════════

  1. After a node restart, “Blockchain Sync” health check should correctly
    reflect sync status — if already synced, it should show green within
    seconds, not remain stuck indefinitely.

  2. When Bitcoin Knots restarts, StartOS should re-establish all
    inter-container volume mounts (including RPC cookie) for dependent
    services automatically, without requiring manual intervention.

═══════════════════════════════════════════
WORKAROUNDS ATTEMPTED
═══════════════════════════════════════════

  • Stop/Start Bitcoin Knots from UI → Did not fix “Starting” label
  • Stop/Start Umbrel Bitcoin UI → Did not fix broken /mnt/knots/ mount
  • Uninstall Umbrel Bitcoin UI → Stopped RPC warnings :white_check_mark:
  • “Starting” label on Knots → No workaround found, node works fine

═══════════════════════════════════════════
ADDITIONAL NOTES
═══════════════════════════════════════════

  • StartOS SSH shows “8/8 running” confirming all services are running
    at the OS level despite the UI misreporting Knots status
  • System uptime: 7 days at time of investigation
  • Memory usage: 11862MB / 27837MB
  • Disk: 31% used (2.6T free)
  • All other services (Datum Gateway, Fulcrum, Mempool, Nostr RS Relay,
    Tor, Nextcloud) running normally throughout

FYI,That 8th Service is Umbrel Bitcoin UI it was installed before and now it is uninstalled

Your Steps to Reproduce aren’t steps that can be used to reproduce anything, they’re just statements of your systems status.

The Knots logs would probably be useful here.

Hi StuPleb, thank you for the feedback. Here are the corrected
Steps to Reproduce, relevant logs, and what appears to be the
root cause:

═══════════════════════════════════════════
ENVIRONMENT
═══════════════════════════════════════════

  • StartOS: v0.4.0-beta.9
  • Bitcoin Knots: #knots:29.3.1:10
  • Hardware: Beelink SER5 MAX (Ryzen 7 6800U, 32GB RAM, 4TB SSD)
  • Node status: Fully synced prior to restart

═══════════════════════════════════════════
CORRECTED STEPS TO REPRODUCE
═══════════════════════════════════════════

  1. Bitcoin Knots running normally, fully synced (progress=1.000000)
  2. Stop service via StartOS UI → Services → Bitcoin Knots → Stop
  3. Wait for full stop
  4. Start service via StartOS UI → Services → Bitcoin Knots → Start
  5. Observe Health Checks panel:
    • RPC → green :white_check_mark: immediately
    • Blockchain Sync → stuck on “Starting” :counterclockwise_arrows_button:
  6. Wait — Blockchain Sync never transitions to green
  7. Repeat Stop → Start multiple times → same result every time
  8. Duration stuck: 19+ hours

═══════════════════════════════════════════
ROOT CAUSE FOUND IN LOGS
═══════════════════════════════════════════

At startup (17:29:49 UTC), StartOS successfully executed the
runtime-info action and received a confirmed 100% sync response.
However, exactly 20 minutes later, startd threw a fatal error
and stopped all health check evaluation silently:

Jun 21 17:49:47 startd: ERROR startos::error: src/error.rs:672:
Network Error: Trying to work with closed connection:
Trying to work with closed connection

Jun 21 17:49:47 startd: DEBUG startos::error: src/error.rs:673:
0: Trying to work with closed connection
1: Trying to work with closed connection
Location: src/error.rs:227

After this error at 17:49:47 UTC, there is NO further startd
activity in the logs for the entire remaining window — the health
check evaluation process died and was never restarted or recovered.

The UI remained frozen on “Starting” for 19+ hours as a result.

═══════════════════════════════════════════
STARTUP SEQUENCE LOGS (17:29:49 UTC)
═══════════════════════════════════════════

– runtime-info action called –
startd: DEBUG execute:_execute: rpc_client.rs:117:
method: “execute”
procedure: “/actions/runtime-info/run”
timeout: 120000ms

– subcontainers mounted –
startd: INFO Mounting overlay ZDBX7LYY6MSE5HBA6NSA45HTWZO6LOAK
startd: INFO Mounted overlay ZDBX7LYY6MSE5HBA6NSA45HTWZO6LOAK
startd: DEBUG Unmounting ZDBX7LYY6MSE5HBA6NSA45HTWZO6LOAK
startd: INFO Mounting overlay EKXDOUELNVRL2QICKSOTQAL6Y6THO5PG
startd: INFO Mounted overlay EKXDOUELNVRL2QICKSOTQAL6Y6THO5PG
startd: DEBUG Unmounting EKXDOUELNVRL2QICKSOTQAL6Y6THO5PG

– runtime-info response (node fully synced) –
startd: DEBUG rpc_client.rs:50: result:
{
“Connections”: “12 (1 in / 11 out)”,
“Block Height”: “954724”,
“Synced Block Height”:“954724”,
“Sync Progress”: “100%”
}

– 20 minutes later – FATAL ERROR –
Jun 21 17:49:47 startd: ERROR
Network Error: Trying to work with closed connection
Location: src/error.rs:227

– No further startd activity after this point –

═══════════════════════════════════════════
BITCOIN KNOTS LOGS (node running fine throughout)
═══════════════════════════════════════════

While UI showed “Starting” for 19+ hours, Knots logs confirmed
full operation throughout:

2026-06-22T15:48:47Z UpdateTip: new best=00000000000000000002290504…
height=954856 progress=1.000000 cache=4.6MiB(32749txo)

2026-06-22T15:25:42Z CreateNewBlock(): total size: 299151
block weight: 806118 txs: 610 fees: 1089665

2026-06-22T15:45:37Z New outbound-full-relay v2 peer connected:
version: 70016, blocks=954855, peer=35

Node was actively building block templates, connecting peers,
and processing new blocks throughout the entire 19 hour period.

═══════════════════════════════════════════
SECONDARY BUG: BROKEN INTER-CONTAINER VOLUME MOUNT
═══════════════════════════════════════════

After the Bitcoin Knots restart, the Umbrel Bitcoin UI container
(IP: 10.0.3.183) lost its RPC cookie mount:

Expected inside Umbrel Bitcoin UI container:
/mnt/knots/.cookie ← Did NOT exist after restart

Actual cookie location:
/var/lib/lxc/6ICQ5PJLQRTMCDXMR55EUP25VLAUBHV6/
rootfs/media/startos/volumes/main/.cookie

This caused repeated RPC auth failures every 30 seconds
for the entire 19 hour period:

2026-06-22T15:24:52Z [warning] ThreadRPCServer incorrect
password attempt from 10.0.3.183:56168

Restarting Umbrel Bitcoin UI did NOT restore the mount.
Uninstalling was the only resolution.

═══════════════════════════════════════════
SUMMARY
═══════════════════════════════════════════

Two separate bugs identified:

BUG 1 — Health check frozen on “Starting”:
Root cause: startd throws “closed connection” error 20 minutes
after startup (src/error.rs:227) and silently stops all health
check evaluation with no recovery or retry mechanism.
The UI freezes on “Starting” indefinitely as a result.

BUG 2 — Inter-container volume mount not restored after restart:
Root cause: When Bitcoin Knots restarts, StartOS does not
re-establish volume mounts (RPC cookie) for dependent services.
Dependent services are not notified to remount, causing
continuous failed auth attempts.

Below are the Logs

Last login: Mon Jun 22 16:58:59 2026 from 192.168.20.117
start9@cphilipbitknot:~$ sudo journalctl -u “start9-bitcoin-knots*” --since “2026-06-22 00:00:00” --until “2026-06-22 01:00:00” | tail -100
Failed to add filter for units: No data available
start9@cphilipbitknot:~$ sudo journalctl --since “2026-06-21 16:00:00” --until “2026-06-21 17:00:00” | grep -i “bitcoin|knots|bitcoind|start9” | tail -100
start9@cphilipbitknot:~$ sudo journalctl --since “2026-06-21 15:00:00” --until “2026-06-21 18:00:00” | grep -i “bitcoin|knots|bitcoind” | tail -100
Jun 21 17:29:49 cphilipbitknot startd[1086]: 2026-06-21T17:29:49.754645Z INFO create_subcontainer_fs: startos::service::effects::subcontainer: src/service/effects/subcontainer/mod.rs:122: Mounting overlay ZDBX7LYY6MSE5HBA6NSA45HTWZO6LOAK for bitcoind
Jun 21 17:29:49 cphilipbitknot startd[1086]: 2026-06-21T17:29:49.805917Z INFO create_subcontainer_fs: startos::service::effects::subcontainer: src/service/effects/subcontainer/mod.rs:175: Mounted overlay ZDBX7LYY6MSE5HBA6NSA45HTWZO6LOAK for bitcoind
Jun 21 17:29:49 cphilipbitknot startd[1086]: 2026-06-21T17:29:49.895775Z INFO create_subcontainer_fs: startos::service::effects::subcontainer: src/service/effects/subcontainer/mod.rs:122: Mounting overlay EKXDOUELNVRL2QICKSOTQAL6Y6THO5PG for bitcoind
Jun 21 17:29:49 cphilipbitknot startd[1086]: 2026-06-21T17:29:49.902526Z INFO create_subcontainer_fs: startos::service::effects::subcontainer: src/service/effects/subcontainer/mod.rs:175: Mounted overlay EKXDOUELNVRL2QICKSOTQAL6Y6THO5PG for bitcoind
start9@cphilipbitknot:~$ sudo journalctl --since “2026-06-21 17:25:00” --until “2026-06-21 17:45:00” | grep -i “bitcoin|knots|bitcoind|startd|health|sync|blockchain” | tail -200
Jun 21 17:29:49 cphilipbitknot startd[1086]: 2026-06-21T17:29:49.748619Z DEBUG execute:_execute: startos::util::rpc_client: src/util/rpc_client.rs:117: [src/util/rpc_client.rs:117:29] serde_json::to_string(&request) = Ok(“{“id”:113,“method”:“execute”,“params”:{“id”:“SQJVYPAWUWJ5JGCG263PI3PRNBGBACXL”,“procedure”:“/actions/runtime-info/run”,“input”:{“input”:null},“timeout”:120000}}”)
Jun 21 17:29:49 cphilipbitknot startd[1086]: 2026-06-21T17:29:49.754645Z INFO create_subcontainer_fs: startos::service::effects::subcontainer: src/service/effects/subcontainer/mod.rs:122: Mounting overlay ZDBX7LYY6MSE5HBA6NSA45HTWZO6LOAK for bitcoind
Jun 21 17:29:49 cphilipbitknot startd[1086]: 2026-06-21T17:29:49.805917Z INFO create_subcontainer_fs: startos::service::effects::subcontainer: src/service/effects/subcontainer/mod.rs:175: Mounted overlay ZDBX7LYY6MSE5HBA6NSA45HTWZO6LOAK for bitcoind
Jun 21 17:29:49 cphilipbitknot startd[1086]: 2026-06-21T17:29:49.883864Z DEBUG destroy_subcontainer_fs:unmount: startos::disk::mount::util: src/disk/mount/util.rs:83: Unmounting /var/lib/lxc/6ICQ5PJLQRTMCDXMR55EUP25VLAUBHV6/rootfs/media/startos/subcontainers/ZDBX7LYY6MSE5HBA6NSA45HTWZO6LOAK.
Jun 21 17:29:49 cphilipbitknot startd[1086]: 2026-06-21T17:29:49.895775Z INFO create_subcontainer_fs: startos::service::effects::subcontainer: src/service/effects/subcontainer/mod.rs:122: Mounting overlay EKXDOUELNVRL2QICKSOTQAL6Y6THO5PG for bitcoind
Jun 21 17:29:49 cphilipbitknot startd[1086]: 2026-06-21T17:29:49.902526Z INFO create_subcontainer_fs: startos::service::effects::subcontainer: src/service/effects/subcontainer/mod.rs:175: Mounted overlay EKXDOUELNVRL2QICKSOTQAL6Y6THO5PG for bitcoind
Jun 21 17:29:49 cphilipbitknot startd[1086]: 2026-06-21T17:29:49.950193Z DEBUG destroy_subcontainer_fs:unmount: startos::disk::mount::util: src/disk/mount/util.rs:83: Unmounting /var/lib/lxc/6ICQ5PJLQRTMCDXMR55EUP25VLAUBHV6/rootfs/media/startos/subcontainers/EKXDOUELNVRL2QICKSOTQAL6Y6THO5PG.
Jun 21 17:29:49 cphilipbitknot startd[1086]: 2026-06-21T17:29:49.957446Z DEBUG startos::util::rpc_client: src/util/rpc_client.rs:50: [src/util/rpc_client.rs:50:61] &l = “{“jsonrpc”:“2.0”,“id”:113,“result”:{“version”:“1”,“title”:“Node Runtime Info”,“message”:null,“result”:{“type”:“group”,“value”:[{“type”:“single”,“name”:“Connections”,“description”:“The number of peers connected (inbound and outbound)”,“value”:“12 (1 in / 11 out)”,“copyable”:false,“masked”:false,“qr”:false},{“type”:“group”,“name”:“Blockchain Info”,“description”:null,“value”:[{“type”:“single”,“name”:“Block Height”,“value”:“954724”,“description”:“The current block height for the network”,“copyable”:false,“masked”:false,“qr”:false},{“type”:“single”,“name”:“Synced Block Height”,“value”:“954724”,“description”:“The number of blocks the node has verified”,“copyable”:false,“masked”:false,“qr”:false},{“type”:“single”,“name”:“Sync Progress”,“value”:“100%”,“description”:“The percentage of the blockchain that has been verified”,“copyable”:false,“masked”:false,“qr”:false}]}]}}}”
start9@cphilipbitknot:~$ sudo journalctl --since “2026-06-21 17:29:00” --until “2026-06-21 18:30:00” | grep -i “health|sync|check|bitcoind|startd” | tail -200
Jun 21 17:29:49 cphilipbitknot startd[1086]: 2026-06-21T17:29:49.748619Z DEBUG execute:_execute: startos::util::rpc_client: src/util/rpc_client.rs:117: [src/util/rpc_client.rs:117:29] serde_json::to_string(&request) = Ok(“{“id”:113,“method”:“execute”,“params”:{“id”:“SQJVYPAWUWJ5JGCG263PI3PRNBGBACXL”,“procedure”:“/actions/runtime-info/run”,“input”:{“input”:null},“timeout”:120000}}”)
Jun 21 17:29:49 cphilipbitknot startd[1086]: 2026-06-21T17:29:49.754645Z INFO create_subcontainer_fs: startos::service::effects::subcontainer: src/service/effects/subcontainer/mod.rs:122: Mounting overlay ZDBX7LYY6MSE5HBA6NSA45HTWZO6LOAK for bitcoind
Jun 21 17:29:49 cphilipbitknot startd[1086]: 2026-06-21T17:29:49.805917Z INFO create_subcontainer_fs: startos::service::effects::subcontainer: src/service/effects/subcontainer/mod.rs:175: Mounted overlay ZDBX7LYY6MSE5HBA6NSA45HTWZO6LOAK for bitcoind
Jun 21 17:29:49 cphilipbitknot startd[1086]: 2026-06-21T17:29:49.883864Z DEBUG destroy_subcontainer_fs:unmount: startos::disk::mount::util: src/disk/mount/util.rs:83: Unmounting /var/lib/lxc/6ICQ5PJLQRTMCDXMR55EUP25VLAUBHV6/rootfs/media/startos/subcontainers/ZDBX7LYY6MSE5HBA6NSA45HTWZO6LOAK.
Jun 21 17:29:49 cphilipbitknot startd[1086]: 2026-06-21T17:29:49.895775Z INFO create_subcontainer_fs: startos::service::effects::subcontainer: src/service/effects/subcontainer/mod.rs:122: Mounting overlay EKXDOUELNVRL2QICKSOTQAL6Y6THO5PG for bitcoind
Jun 21 17:29:49 cphilipbitknot startd[1086]: 2026-06-21T17:29:49.902526Z INFO create_subcontainer_fs: startos::service::effects::subcontainer: src/service/effects/subcontainer/mod.rs:175: Mounted overlay EKXDOUELNVRL2QICKSOTQAL6Y6THO5PG for bitcoind
Jun 21 17:29:49 cphilipbitknot startd[1086]: 2026-06-21T17:29:49.950193Z DEBUG destroy_subcontainer_fs:unmount: startos::disk::mount::util: src/disk/mount/util.rs:83: Unmounting /var/lib/lxc/6ICQ5PJLQRTMCDXMR55EUP25VLAUBHV6/rootfs/media/startos/subcontainers/EKXDOUELNVRL2QICKSOTQAL6Y6THO5PG.
Jun 21 17:29:49 cphilipbitknot startd[1086]: 2026-06-21T17:29:49.957446Z DEBUG startos::util::rpc_client: src/util/rpc_client.rs:50: [src/util/rpc_client.rs:50:61] &l = “{“jsonrpc”:“2.0”,“id”:113,“result”:{“version”:“1”,“title”:“Node Runtime Info”,“message”:null,“result”:{“type”:“group”,“value”:[{“type”:“single”,“name”:“Connections”,“description”:“The number of peers connected (inbound and outbound)”,“value”:“12 (1 in / 11 out)”,“copyable”:false,“masked”:false,“qr”:false},{“type”:“group”,“name”:“Blockchain Info”,“description”:null,“value”:[{“type”:“single”,“name”:“Block Height”,“value”:“954724”,“description”:“The current block height for the network”,“copyable”:false,“masked”:false,“qr”:false},{“type”:“single”,“name”:“Synced Block Height”,“value”:“954724”,“description”:“The number of blocks the node has verified”,“copyable”:false,“masked”:false,“qr”:false},{“type”:“single”,“name”:“Sync Progress”,“value”:“100%”,“description”:“The percentage of the blockchain that has been verified”,“copyable”:false,“masked”:false,“qr”:false}]}]}}}”
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: Sent NTP request to [2001:ac8:81:65:0:2:0:3]:123 (2.pool.ntp.org).
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: NTP response:
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: leap : 0
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: version : 4
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: mode : 4
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: stratum : 2
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: precision : 0.000000 sec (-23)
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: root distance: 0.091820 sec
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: reference : n/a
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: origin : 1782064181.753
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: receive : 1782064181.762
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: transmit : 1782064181.762
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: dest : 1782064181.772
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: offset : -0.001 sec
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: delay : +0.020 sec
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: packet count : 467
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: jitter : 0.002
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: poll interval: 2048
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: adjust (slew): -0.001 sec
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: status : 8193 sync
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: time now : 1782064181.772
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: constant : 7
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: offset : -0.001 sec
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: freq offset : +3230231 (+49 ppm)
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: interval/delta/delay/jitter/drift 2048s/-0.001s/0.020s/0.002s/+49ppm
Jun 21 17:49:41 cphilipbitknot systemd-timesyncd[541]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/timesync1 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=469 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
Jun 21 17:49:47 cphilipbitknot startd[1086]: 2026-06-21T17:49:47.935734Z ERROR startos::error: src/error.rs:672: Network Error: Trying to work with closed connection: Trying to work with closed connection
Jun 21 17:49:47 cphilipbitknot startd[1086]: 2026-06-21T17:49:47.935761Z DEBUG startos::error: src/error.rs:673: Network Error:
Jun 21 17:49:47 cphilipbitknot startd[1086]: 0: Trying to work with closed connection
Jun 21 17:49:47 cphilipbitknot startd[1086]: 1: Trying to work with closed connection
Jun 21 17:49:47 cphilipbitknot startd[1086]: Location:
Jun 21 17:49:47 cphilipbitknot startd[1086]: src/error.rs:227
Jun 21 17:49:47 cphilipbitknot startd[1086]: Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Jun 21 17:49:47 cphilipbitknot startd[1086]: Run with RUST_BACKTRACE=full to include source snippets.
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: Sent NTP request to [2001:ac8:81:65:0:2:0:3]:123 (2.pool.ntp.org).
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: NTP response:
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: leap : 0
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: version : 4
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: mode : 4
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: stratum : 2
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: precision : 0.000000 sec (-23)
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: root distance: 0.087791 sec
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: reference : n/a
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: origin : 1782066230.002
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: receive : 1782066230.018
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: transmit : 1782066230.018
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: dest : 1782066230.030
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: offset : +0.002 sec
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: delay : +0.027 sec
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: packet count : 468
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: jitter : 0.002
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: poll interval: 2048
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: adjust (slew): +0.002 sec
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: status : 24577 sync
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: time now : 1782066230.029
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: constant : 7
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: offset : +0.002 sec
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: freq offset : +3285302 (+50 ppm)
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: interval/delta/delay/jitter/drift 2048s/+0.002s/0.027s/0.002s/+50ppm
Jun 21 18:23:50 cphilipbitknot systemd-timesyncd[541]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/timesync1 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=470 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
start9@cphilipbitknot:~$

I can’t reproduce this behavior… and the LLM you’re using is struggling to understand StartOS and how to explain what you’re seeing. The logs aren’t complete or particularly relevant. You can download logs from the UI in StartOS, and these a better. Also FWIW, I haven’t looked at this Umbrel community service at all. If you’re sure there’s something wrong with it, you should probably tell them.

When this happens again, I’ve created this guide for you to follow:



Step 1 — While it’s stuck, query the node directly

Open a shell in the bitcoind container:

start-cli package attach bitcoind

Run the same RPC the health check runs, and keep just the field that matters:

bitcoin-cli -conf=/root/.bitcoin/bitcoin.conf -rpccookiefile=/root/.bitcoin/.cookie -rpcport=8332 -rpcconnect=127.0.0.1 getblockchaininfo | grep initialblockdownload

Check the exit code, then leave the container:

echo $?exit

Reading the result:

  • echo $? = 0 and you see "initialblockdownload": false → the node is fully synced and RPC works. If the UI still says “Starting,” StartOS isn’t acting on a good result → points at start-os, not the package.
  • Exit code is non-zero, or you get an error instead of false → the RPC call itself is failing → a different problem (RPC/exec), worth chasing in that direction.

Step 2 — Read the package logs, not the host journal

bitcoind’s output goes to the container logs, not the host journalctl. Read them from the Logs tab for Bitcoin Knots in the StartOS UI and scroll to the stuck period.

(CLI alternative: start-cli package logs bitcoind — verify the exact subcommand before relying on it; I’m not certain of the spelling.)


Step 3 — Check whether the error repeats

Count occurrences of the error across the whole stuck window. -F = match literal text (no regex), which avoids the quoting/| trap:

sudo journalctl -u startd --since "2026-06-21 17:00:00" --until "2026-06-22 13:00:00" | grep -aiFc "closed connection"

Prints a count.

  • 1 → one-off; weaker as a root cause.
  • Large number → recurring; much stronger suspect.

To see the lines instead of the count, drop the c:

sudo journalctl -u startd --since "2026-06-21 17:00:00" --until "2026-06-22 13:00:00" | grep -aiF "closed connection"

Step 4 — Check determinism

No command — just repeat Stop → Start a few times and watch the Blockchain Sync check. Note whether it hangs every time or intermittently. “Every time” is the stronger, more reproducible signal for a report.

Hi,

Sorry about the LLM cause this report.As per your instruction ,I am copying and Pasting it from my Terminal.

Regard’s Philip

Last login: Tue Jun 23 02:37:35 2026 from 192.168.20.117
start9@cphilipbitknot:~$ start-cli package attach bitcoind
Invalid Request: package.attach: multiple subcontainers found for bitcoind ONKIFQQUESTZ55YTUQW3VKLQQ4HDP7M3 => Name: bitcoind-sub; Image: bitcoind
root@6ICQ5PJLQRTMCDXMR55EUP25VLAUBHV6:/#
<port=8332 -rpcconnect=127.0.0.1 getblockchaininfo | grep initialblockdownload
“initialblockdownload”: false,
root@6ICQ5PJLQRTMCDXMR55EUP25VLAUBHV6:/# echo $?exit
0exit
<2026-06-21 17:00:00" --until “2026-06-22 13:00:00” | grep -aiFc “closed connection”
bash: sudo: command not found
0
root@6ICQ5PJLQRTMCDXMR55EUP25VLAUBHV6:/# exit
exit
start9@cphilipbitknot:~$ sudo journalctl -u startd --since “2026-06-21 17:00:00” --until “2026-06-22 13:00:00” | grep -aiFc “closed connection”
21
start9@cphilipbitknot:~$ sudo journalctl -u startd --since “2026-06-21 17:00:00” --until “2026-06-22 13:00:00” | grep -aiF “closed connection”
Jun 21 17:49:47 cphilipbitknot startd[1086]: 2026-06-21T17:49:47.935734Z ERROR startos::error: src/error.rs:672: Network Error: Trying to work with closed connection: Trying to work with closed connection
Jun 21 17:49:47 cphilipbitknot startd[1086]: 0: Trying to work with closed connection
Jun 21 17:49:47 cphilipbitknot startd[1086]: 1: Trying to work with closed connection
Jun 22 08:00:28 cphilipbitknot startd[1086]: 2026-06-22T08:00:28.642753Z ERROR startos::error: src/error.rs:672: Network Error: Trying to work with closed connection: Trying to work with closed connection
Jun 22 08:00:28 cphilipbitknot startd[1086]: 0: Trying to work with closed connection
Jun 22 08:00:28 cphilipbitknot startd[1086]: 1: Trying to work with closed connection
Jun 22 09:25:46 cphilipbitknot startd[1086]: 2026-06-22T09:25:46.030389Z ERROR startos::error: src/error.rs:672: Network Error: Trying to work with closed connection: Trying to work with closed connection
Jun 22 09:25:46 cphilipbitknot startd[1086]: 0: Trying to work with closed connection
Jun 22 09:25:46 cphilipbitknot startd[1086]: 1: Trying to work with closed connection
Jun 22 10:11:37 cphilipbitknot startd[1086]: 2026-06-22T10:11:37.043717Z ERROR startos::error: src/error.rs:672: Network Error: Trying to work with closed connection: Trying to work with closed connection
Jun 22 10:11:37 cphilipbitknot startd[1086]: 0: Trying to work with closed connection
Jun 22 10:11:37 cphilipbitknot startd[1086]: 1: Trying to work with closed connection
Jun 22 10:20:50 cphilipbitknot startd[1086]: 2026-06-22T10:20:50.445764Z ERROR startos::error: src/error.rs:672: Network Error: Trying to work with closed connection: Trying to work with closed connection
Jun 22 10:20:50 cphilipbitknot startd[1086]: 0: Trying to work with closed connection
Jun 22 10:20:50 cphilipbitknot startd[1086]: 1: Trying to work with closed connection
Jun 22 10:41:40 cphilipbitknot startd[1086]: 2026-06-22T10:41:40.042141Z ERROR startos::error: src/error.rs:672: Network Error: Trying to work with closed connection: Trying to work with closed connection
Jun 22 10:41:40 cphilipbitknot startd[1086]: 0: Trying to work with closed connection
Jun 22 10:41:40 cphilipbitknot startd[1086]: 1: Trying to work with closed connection
Jun 22 12:44:55 cphilipbitknot startd[1086]: 2026-06-22T12:44:55.809936Z ERROR startos::error: src/error.rs:672: Network Error: Trying to work with closed connection: Trying to work with closed connection
Jun 22 12:44:55 cphilipbitknot startd[1086]: 0: Trying to work with closed connection
Jun 22 12:44:55 cphilipbitknot startd[1086]: 1: Trying to work with closed connection
start9@cphilipbitknot:~$