Firmware (LuxOS)
API Docs
LUXMiner commands
frequencyset

frequencyset

Description

Sets a target frequency for one or more chips of a given board.

This command returns immediately, but internally the frequency is slowly changed, either up or down, to reach the target value. This is done to avoid hardware damage or board failures when the difference between the "current" and the "new" frequency is to big.

⚠️

While frequencies can be set per chip, for miner safety they should be set per board.

If you are setting the frequency for scripting purposes, it is recommended to use this command and then check the frequencies every 1-2s (with frequencyget) until the target is reached before continuing with the script. Alternatively, you can also check for the IsRamping flag on devs command for that specific board.

Notes:

  • This command will always fails if the curtailment mode is sleep. See the curtail command for details.
  • This command will always fails if the curtailment mode is idle or sleep. See the curtail command for details.

S9 limitations

On S9 machines, frequency change has a set of fixed points, instead of supporting all arbitrary values. In this case, the returned Frequency field in the output will be the closest of the allowed frequencies acceptable for S9 machines. If your script requires precision frequency values, always double check the returned Frequency field.

Command

$ echo '{"command": "frequencyset", "parameter":"yJN2nlj1,1,650"}' | nc $MINER_IP 4028 | jq

Examples

Setting all chips to the same frequency.

$ echo '{"command": "frequencyset", "parameter":"yJN2nlj1,1,650"}' | nc $MINER_IP 4028 | jq
{
  "RAMP": [
    {
      "Board": 1,
      "Frequency": 650,
      "FrequencyStep": 5,
      "TargetChip": "all"
    }
  ],
  "STATUS": [
    {
      "Code": 302,
      "Description": "LUXminer 0.1.0-15436f7140",
      "Msg": "Set Frequency",
      "STATUS": "S",
      "When": 1667917531
    }
  ],
  "id": 1
}

Sets a specific chip:

$ echo '{"command": "frequencyset", "parameter":"yJN2nlj1,1,650,10"}' | nc $MINER_IP 4028 | jq
{
  "RAMP": [
    {
      "Board": 1,
      "Frequency": 650,
      "FrequencyStep": 5,
      "TargetChip": "10"
    }
  ],
  "STATUS": [
    {
      "Code": 302,
      "Description": "LUXminer 0.1.0-15436f7140",
      "Msg": "Set Frequency",
      "STATUS": "S",
      "When": 1667917538
    }
  ],
  "id": 1
}

You can also set the step size of the frequency ramping. This can be used to speed up the ramping process dramatically, at the cost of miner health, and can be used in critical scenarios, when you need speed over safety.

️🚫

Do not use this option unless you know what you're doing; this can cause permanent damage to the chip and/or board, as well as a decrease in hashrate over time.

Use at your own risk.

The example below will set all chips to 650MHz, but will use step sizes of 25Mhz in each iteration:

# Note the use of '*' to specify all chips; you could, of course, use
# a specific chip number instead
$ echo '{"command": "frequencyset", "parameter":"yJN2nlj1,1,650,*,25"}' | nc $MINER_IP 4028 | jq
{
  "RAMP": [
    {
      "Board": 1,
      "Frequency": 650,
      "FrequencyStep": 25,
      "TargetChip": "all"
    }
  ],
  "STATUS": [
    {
      "Code": 302,
      "Description": "LUXminer 0.1.0-15436f7140",
      "Msg": "Set Frequency",
      "STATUS": "S",
      "When": 1667917531
    }
  ],
  "id": 1
}

Parameters

ParameterNotes
session_idA valid session ID. See Session Management for details.
board_idBoard ID, starting from zero.
frequencyThe frequency value to set.
chip_idOptional. The chip number, starting from zero.
stepOptional. The step size of the ramping. The default value is 5, and the max is 1000.

Field details

FieldNotes
BoardBoard ID, starting from zero.
FrequencyThe new frequency value. This is the real target frequency, already adjusted for S9 miners.
FrequencyStepThe step of the frequency ramp.
TargetChipThe target chip, or "all" for all chips.