Bitaxe – Invalid Worker: Lightning Address / Username Pasted Instead of BTC
Informational — Monitor and address as needed
Symptoms
- Stratum User field in AxeOS Settings contains an `@` symbol (Lightning address like `user@walletofsatoshi.com`)
- Stratum User starts with `lnbc`, `lnurl`, `lntb`, `LNURL`, or contains `lightning:` (Lightning invoice / LNURL)
- Stratum User looks like an exchange username, an email, or a handle with no `bc1/3/1` prefix
- AxeOS Logs tab shows `mining.authorize` followed by `{"result": false}` or explicit `bad-user-name` / `invalid worker` / `invalid wallet` error
- Pool dashboard (public-pool.io, solo.ckpool.org, etc.) shows 0 workers online / zero shares submitted despite hours of Bitaxe uptime
- Home screen cycles between `Pool: Disconnected` and `Pool: Connected` every 5-30 seconds
- Hashrate counter ticks up briefly after boot, resets to `0 Gh/s` on every reconnect cycle
- Wall-side power draw near nameplate (ASIC is clocked) but no shares ever submitted — chip never receives work
- mempool.space returns 404 / no address info when the Stratum User string is pasted into its search bar
- NerdQAxe++ against Kano pool: silent socket close after `mining.authorize` with no visible error string (GitHub shufps/ESP-Miner-NerdQAxePlus #501)
Step-by-Step Fix
Open AxeOS Settings at the Bitaxe's IP. Copy the Stratum User field into a plaintext notepad to inspect it at full size. Look for any `@` symbol, any `lnbc`/`lnurl`/`lightning:` prefix, or any string that does not start with `bc1`, `3`, or `1`. If you find any of those, the field contains something that is not a BTC address. Delete the entire contents of the field.
Open your current Bitcoin wallet. If it's Wallet of Satoshi, Phoenix, Breez, Blink, Cash App, or Strike, find the toggle labelled `On-chain`, `Bitcoin network`, `Base layer`, or `L1`. Some of these wallets bury the on-chain option; some offer none at all. If no on-chain receive is available, skip to step 4 and install a different wallet.
If your wallet supports on-chain: tap Receive, select Bitcoin/On-chain/L1, copy the resulting `bc1...`, `3...`, or `1...` address. Paste into the AxeOS Stratum User field, Save, power-cycle the Bitaxe (10 seconds off). Within 60 seconds the home screen should flip to `Pool: Connected`, hashrate should climb to nameplate, and the pool's own dashboard should show your worker in its online table.
If your current wallet doesn't do on-chain receives, install one that does. Sparrow Wallet (desktop, recommended) at https://sparrowwallet.com/, or Electrum (desktop), or Blue Wallet (mobile, on-chain mode). Create a new wallet, write the seed words on paper and store offline — this seed now controls any sats you mine. Generate a fresh bech32 receive address. One-time setup; the address is reusable indefinitely.
Cross-validate every new address on mempool.space BEFORE pasting into AxeOS. Paste the string into mempool.space's search bar; a valid but unused address loads a zero-balance address page, a malformed string returns 404. This one-minute check prevents re-entering the same mistake.
Verify the network path to the pool from a laptop on the same network: `ping public-pool.io` for sub-200 ms responses, then `nc -v public-pool.io 21496` (macOS/Linux) or `Test-NetConnection public-pool.io -Port 21496` (Windows PowerShell). You should see `Connected to...` or `TcpTestSucceeded: True`. This isolates the Stratum User value as the fault vs. a router/firewall/ISP problem.
Run a raw stratum handshake to test your new address. In `nc public-pool.io 21496`, paste: `{"id": 1, "method": "mining.subscribe", "params": ["BitaxeTest"]}` then newline, then `{"id": 2, "method": "mining.authorize", "params": ["YOUR_NEW_BC1_ADDRESS", "x"]}` then newline. You should see `{"id": 2, "result": true}` — the pool accepting the address at the protocol level.
If your preferred pool rejects even a known-valid address, switch to `public-pool.io:21496` as the canonical reference — it accepts any valid mainnet address with no registration and no special policy. Stratum URL `public-pool.io`, Port `21496`, User your `bc1...`, Password `x`. If auth succeeds there, your original pool had a policy mismatch (address flagged, username-auth required, geo-blocked), not a format problem.
If worker shows online on the pool but hashrate stays at 0, your auth fix worked and you now have a different class of issue (stale shares, clogged stratum, or frozen ASIC). That is Bitaxe — Pool Rejected Shares High Rate, not this error. Close this diagnosis and open that one.
Paste-sanity check. If you originally copied the bad string from a PDF, a support email, or a website, re-paste it into a plain monospace editor (VSCode, Notepad++, vim) and look for non-ASCII characters, zero-width joiners, curly quotes, or non-breaking hyphens. Retype by hand from your wallet's QR/display if you suspect hidden characters are surviving the copy-paste.
For advanced users: build ESP-Miner from source with DEBUG-level Stratum logging. Clone `github.com/bitaxeorg/ESP-Miner`, raise log level in `main/tasks/stratum_task.c` and `components/stratum/stratum_api.c`, flash over USB. Serial log exposes the exact bytes sent in `mining.authorize` and the exact pool reply — catches UTF-8/ASCII encoding bugs, trailing newlines, and escape-character issues that the AxeOS web UI hides.
NerdQAxe++ against Kano pool or any username-authenticated pool: stock ESP-Miner assumes address-auth solo-pool semantics and will always fail on username pools. Either switch to an address-auth pool (public-pool.io, solo.ckpool.org, Ocean), or fork the firmware and modify the `mining.authorize` builder to send `registered_username.worker`. Issue #501 in `shufps/ESP-Miner-NerdQAxePlus` tracks the auth-style toggle feature.
Read the pool's open-source handler if the pool is ckpool or public-pool. `github.com/benjamin-wilson/public-pool` and ckpool source both expose their `mining.authorize` parse routines; reading the code tells you exactly which address formats the pool accepts (bech32, P2SH, legacy, Taproot, mainnet-only, etc.). Useful when you suspect a pool-specific edge case.
Tier 4 escalation: only when you've validated the address on two explorers, `public-pool.io:21496` also rejects, and raw `nc` confirms a well-formed `mining.authorize`. Open a D-Central support ticket at https://d-central.tech/contact/ with the raw handshake capture, address, and pool hostnames tested. This class of escalation is <1% of tickets for this error; most resolve from a screenshot of Settings.
D-Central bench process for Bitaxe config: as the pioneer manufacturer of Bitaxe accessories (original Mesh Stand, first Bitaxe + Hex heatsinks, full lineup stocked), we diagnose the bad Stratum User value in under 60 seconds from a screenshot. Free with any Bitaxe purchased from us. We'll tell you which wallet to switch to, which address format to use, and which pool to start on — typical end-to-end resolution under 10 minutes.
When to Seek Professional Repair
If the steps above do not resolve the issue, or if you are not comfortable performing these repairs yourself, professional service is recommended. Attempting advanced repairs without proper equipment can cause further damage.
Related Error Codes
Still Having Issues?
Our team of Bitcoin Mining Hackers has been repairing ASIC miners since 2016. We have seen it all and fixed it all. Get a professional diagnosis.
