A step-by-step recovery guide using SSH when the Web UI is inaccessible
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
THE PROBLEMAfter upgrading to Apollo OS v2.1 and switching the miner from
Balanced to
Turbo mode via the Web UI, some Apollo BTC MCU1 units get stuck in a continuous reboot loop. The device reaches the Linux login screen briefly (visible over HDMI) before rebooting again — making the Web UI completely inaccessible.
Root cause: The Apollo miner backend reads power mode from TWO separate locations:
- The SQLite database /opt/apolloapi/futurebit.sqlite — used by the Web UI
- A plain text file /opt/apolloapi/backend/apollo-miner/mode — read directly by the miner binary at startup
When Turbo mode causes a crash before the system can cleanly shut down, the
mode file can be left set to
turbo even after you think you've changed it back. Every boot, the miner launches in Turbo, draws too much power or crashes, and the system reboots — creating the loop.
Affected devices: Apollo BTC MCU1 running Apollo OS v2.x
Confirmed on: Apollo OS v2.1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
WHAT YOU NEED- A computer on the same local network as your Apollo
- SSH client (Terminal on Mac/Linux, PuTTY or Windows Terminal on Windows)
- Your Apollo's local IP address (check your router's device list — look for "FutureBit Apollo" or find it via the HDMI screen during the brief boot window)
Default SSH credentials:- Username: futurebit
- Password: futurebit123
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 1 — STOP THE SERVICES BEFORE THEY CRASHThe reboot window is short. You need to SSH in and paste commands
immediately after the prompt appears. Prepare this command in your clipboard before connecting:
sudo systemctl stop apollo-api.service apollo-ui-v2.service && sudo systemctl disable apollo-api.service apollo-ui-v2.service && echo "DONE"
Connect via SSH:
ssh futurebit@YOUR_APOLLO_IP
The moment you see the
$ prompt, paste and hit Enter. You should see:
Removed /etc/systemd/system/multi-user.target.wants/apollo-api.service.
Removed /etc/systemd/system/multi-user.target.wants/apollo-ui-v2.service.
DONE
The machine may still reboot once more if the miner was already running. That's normal — the disable took effect and the services won't auto-start on the next boot.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 2 — WAIT FOR A STABLE SESSIONSSH in again after the next reboot. This time the machine should stay up since the Apollo services are disabled. Kill any lingering miner processes just in case:
sudo pkill -9 -f apollo; sudo pkill -9 -f miner; sudo pkill -9 -f bfg
You should now have a stable SSH session.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 3 — FIX THE MODE FILE (THE REAL FIX)This is the critical step. Check what the miner mode file currently says and overwrite it with
balanced:
cat /opt/apolloapi/backend/apollo-miner/mode && echo "balanced" > /opt/apolloapi/backend/apollo-miner/mode && cat /opt/apolloapi/backend/apollo-miner/mode
The first
cat will show
turbo (the culprit). After the command runs, the second
cat should show
only:
Important: If the output shows
turbobalanced as one word, the file had no trailing newline. Run the command again — the
echo with
> will overwrite it completely:
echo "balanced" > /opt/apolloapi/backend/apollo-miner/mode && cat /opt/apolloapi/backend/apollo-miner/mode
Confirm the output shows
balanced alone on its own line before proceeding.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 4 — FIX THE DATABASE (KEEPS THE UI IN SYNC)Also update the SQLite database so the Web UI reflects the correct mode. Check the current latest entry:
sqlite3 /opt/apolloapi/futurebit.sqlite "SELECT * FROM settings ORDER BY id DESC LIMIT 1;"
If the last row shows
turbo as the 4th column, insert a new balanced row. Copy the values from the last row but change
turbo to
balanced. Based on a standard MCU1 v2.1 install:
sqlite3 /opt/apolloapi/futurebit.sqlite "INSERT INTO settings SELECT (SELECT MAX(id)+1 FROM settings), datetime('now'), datetime('now'), 'balanced', 30, 25, '', 1, 1, 0, 'c', 0, 0, 40, 60, (SELECT col16 FROM settings ORDER BY id DESC LIMIT 1), 0, '', 1, 0, 64, 1, 'mined by Solo Apollo', 'core-28.1', '', 1024;"Verify the new row:
sqlite3 /opt/apolloapi/futurebit.sqlite "SELECT id, created_at, col4 FROM settings ORDER BY id DESC LIMIT 1;"
The output should show
balanced in the third column.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 5 — RE-ENABLE SERVICES AND REBOOTsudo systemctl enable apollo-api.service apollo-ui-v2.service && sudo reboot
Wait 60–90 seconds, then access the Web UI. The Apollo Web UI is served on port 3000 with an iptables redirect from port 80. Try:
Note: If you get ERR_ADDRESS_UNREACHABLE in your browser but the device is reachable via SSH/ping, check if you have a VPN running on your computer — VPNs commonly block access to local network IPs. Disconnect your VPN and try again, or use a phone on the same WiFi to access the UI.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 6 — VERIFYOnce the Web UI loads, confirm:
- The dashboard shows Balanced mode
- Hashrate is climbing (typically 3–3.8 TH/s in Balanced on MCU1)
- The fan is running but not at full blast
- No reboot loop
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ADDITIONAL TIPSDo NOT run apt upgrade — this is a known issue with Apollo OS. Running standard Ubuntu/Armbian package upgrades can break the Apollo software stack and force you to reflash the SD card. The update warnings you see on SSH login are for the base OS and are intentionally blocked by FutureBit.
To free up disk space safely (the root partition fills up over time):
sudo apt clean && sudo journalctl --vacuum-size=200M
If you ever get into a reboot loop again after changing modes, you now know the two files to check first:
- /opt/apolloapi/backend/apollo-miner/mode — fix this first
- /opt/apolloapi/futurebit.sqlite — fix this second
Turbo mode on MCU1 is demanding on the hardware. FutureBit themselves note it is only recommended for expert users with good cooling and monitoring in place. Balanced mode offers a solid compromise between hashrate and stability.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
QUICK REFERENCE — ALL COMMANDS IN ORDER# Step 1 - Stop and disable services (paste immediately after SSH login)
sudo systemctl stop apollo-api.service apollo-ui-v2.service && sudo systemctl disable apollo-api.service apollo-ui-v2.service && echo "DONE"
# Step 2 - Kill any lingering miner processes
sudo pkill -9 -f apollo; sudo pkill -9 -f miner; sudo pkill -9 -f bfg
# Step 3 - Fix the mode file (THE CRITICAL FIX)
echo "balanced" > /opt/apolloapi/backend/apollo-miner/mode && cat /opt/apolloapi/backend/apollo-miner/mode
# Step 4 - Fix the database
sqlite3 /opt/apolloapi/futurebit.sqlite "INSERT INTO settings SELECT (SELECT MAX(id)+1 FROM settings), datetime('now'), datetime('now'), 'balanced', 30, 25, '', 1, 1, 0, 'c', 0, 0, 40, 60, (SELECT col16 FROM settings ORDER BY id DESC LIMIT 1), 0, '', 1, 0, 64, 1, 'mined by Solo Apollo', 'core-28.1', '', 1024;"
# Step 5 - Re-enable services and reboot
sudo systemctl enable apollo-api.service apollo-ui-v2.service && sudo reboot
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Tested on: FutureBit Apollo BTC MCU1 running Apollo OS v2.1 — May 2026If this guide helped you, consider sharing it in the official FutureBit support thread.Official FutureBit Apollo II/BTC Software/Image and Support Thread