FirmwareAPI DocumentationLUXminer commands

editpool

Edits an existing pool in place

editpool

Description

Changes the URL, user, password or enabled state of an existing pool, in place. The pool keeps its position in its group, so you no longer need to remove and re-add a pool in order to change its settings — addpool always appends to the end of the group, which loses the original priority ordering.

The parameters are the session_id, followed by the pool to edit, followed by a comma-separated list of key-value pairs in the format key=value. The available keys are:

  • url: URL of the stratum server. Validated the same way addpool validates it.
  • user: User for the stratum connection. Cannot be empty.
  • password: Password for the stratum connection. An empty value (password=) clears the stored password.
  • enabled: Either true or false, to enable or disable the pool. This goes through the same path as enablepool and disablepool, including failover.

Only the keys you send are changed; any key you omit is left untouched. This means you never have to re-send a password just to change a URL. At least one key-value pair is required.

The pool itself can be addressed in two ways:

  • id=<n> — the PoolId reported by pools. Prefer this form: a pool keeps its PoolId when another pool is added or removed, so the edit cannot land on a neighbouring pool. A removed pool's ID can, however, be reused by a later addpool, and LUXminer resolves id=<n> to whichever pool holds that ID when the command arrives. It only guards the short window after that: it snapshots the resolved pool's URL and User, and if a concurrent remove and add hand the ID to a different pool before the edit is applied, the edit is refused with code 107 and nothing is changed. A stale ID in your own cache is not detected — re-read pools right before editing if the pool list may have changed since you last read it.
  • <n> — the positional index (POOL in pools), the same value that removepool, enablepool, disablepool and switchpool take. This index is recomputed on every call, so it can point at a different pool if the pool list changes between your pools call and your edit.

One editpool call edits one pool. Every value is validated before anything is applied, so a validation error changes nothing, and an accepted call applies all of its fields together. The one exception is code 443: the edit was applied to the running miner but could not be written to the pool configuration, so it is live now but will not survive a restart. See Errors.

Note: If autosave is disabled, the changes will be lost after a reboot.

Keys are case-sensitive. Only the lowercase url, user, password and enabled keys are accepted; anything else is rejected as an unknown field.

Command

$ echo '{"command": "editpool", "parameter":"tjqw4aNI,id=1,url=stratum+tcp://btc.global.luxor.tech:700,user=account.worker"}' | nc $MINER_IP 4028 | jq

Examples

In this example, we change the URL and the worker name of pool 1, addressed by its PoolId. The stored password is not sent, so it is preserved.

$ echo '{"command": "editpool", "parameter":"tjqw4aNI,id=1,url=stratum+tcp://btc.global.luxor.tech:700,user=account.worker"}' | nc $MINER_IP 4028 | jq
{
  "EDITPOOL": [
    {
      "PoolId": 1,
      "URL": "stratum+tcp://btc.global.luxor.tech:700",
      "User": "account.worker"
    }
  ],
  "STATUS": [
    {
      "Code": 392,
      "Description": "LUXminer 2026.9.18.104512-e2b1262",
      "Msg": "Edited pool 1: 'stratum+tcp://btc.global.luxor.tech:700'",
      "STATUS": "S",
      "When": 1758196800
    }
  ],
  "id": 1
}

The URL and User in the EDITPOOL section reflect the values after the edit, so you can reconcile straight from the reply.

This example disables the pool at position 2, without touching anything else:

$ echo '{"command": "editpool", "parameter":"tjqw4aNI,2,enabled=false"}' | nc $MINER_IP 4028 | jq

And this one clears the stored password of pool 1:

$ echo '{"command": "editpool", "parameter":"tjqw4aNI,id=1,password="}' | nc $MINER_IP 4028 | jq

If the value you need to send contains a comma — a password, most commonly — send parameter as a JSON list instead of a comma-separated string. See Sending a list as the parameter.

$ echo '{"command": "editpool", "parameter":["tjqw4aNI", "id=1", "password=a,b"]}' | nc $MINER_IP 4028 | jq

Parameters

ParameterNotes
session_idA valid session ID. See Session Management for details.
poolThe pool to edit, either as id=<PoolId> or as the positional index shown as POOL in pools.
paramsOne or more key=value pairs to change. Keys that are not sent are left untouched; at least one required.

Behavior

  • Editing a pool that is not currently mining does not interrupt mining.
  • The reply is sent only after the pool list has been updated, so a pools or editpool call issued as soon as the reply arrives already sees the edited values. You can chain edits without polling in between.
  • Editing the active pool's url, user or password drops the stratum session and reconnects with the new values. The reconnect only fires on an actual change — re-sending values the pool already has is a no-op and does not interrupt mining.
  • Re-asserting the enabled state a pool already has (for example enabled=true on an already-enabled pool) succeeds as a no-op. This differs from enablepool and disablepool, which reject the same request with an error (code 49).
  • Changes are applied at runtime and written to the pool configuration. If autosave is enabled they survive a restart; if it is disabled they are lost after a reboot.
  • Passwords are write-only. pools reports HasPassword but never the value itself, so there is no way to read a password back in order to re-send it — which is why omitting the key preserves it.

Errors

As always, check the STATUS field rather than the Code to decide whether a command succeeded. The most common error codes are listed below. All of them except 443 mean the edit was rejected and nothing changed.

CodeReason
400Missing session_id, missing the pool, or no key=value pairs were sent.
401Invalid session_id, or a bad value for the pool, url, user or enabled.
406A parameter had no = in it. Usually a comma inside a value that was sent as a joined string.
408Unknown key. Only url, user, password and enabled are accepted.
107The pool ID or position does not exist, or a concurrent remove and add handed the ID to a different pool while the edit was in flight. The message names the valid range; re-read pools and retry.
443Partial outcome. The edit was applied to the running miner but not written to the pool configuration, because the pool list changed while it was in flight. The new values are live until the next restart, then revert. Re-read pools and re-send the edit to persist it.

On this page