[
  {
    "path": "README.md",
    "content": "# Rigel\n\nThis is a cryptocurrency miner for Nvidia GPUs\n\n![rigel screenshot kaspa](https://user-images.githubusercontent.com/119491468/204991320-802a9de8-8a77-4527-b802-846d542eb05e.png)\n\n## Supported algorithms\n\n| Algorithm     | Coin(s)                       | Fee  |\n|---------------|-------------------------------|------|\n| abelian       | ABEL                          | 1.0% |\n| alephium      | ALPH                          | 0.7% |\n| autolykos2    | ERG                           | 1.0% |\n| etchash       | ETC                           | 0.7% |\n| ethash        | ETHW<br/>XPB<br/>OCTA         | 0.7% |\n| fishhash      | IRON                          | 1.0% |\n| karlsenhashv2 | KLS                           | 1.0% |\n| kawpow        | RVN<br/>XNA<br/>QUAI<br/>NEOX | 1.0% |\n| nexapow       | NEXA                          | 2.0% |\n| octopus       | CFX                           | 2.0% |\n| progpowz      | ZANO                          | 1.0% |\n| sha256ton     | GRAM                          | 1.0% |\n| sha3x         | XTM                           | 1.0% |\n| sha512256d    | RXD                           | 1.0% |\n| xelishashv3   | XEL                           | 2.0% |\n| zil           | ZIL                           | 0%   |\n\n### Dual mining\n\n|                   | +alephium | +sha256ton | +sha3x | +sha512256d |\n|-------------------|:---------:|:----------:|:------:|:-----------:|\n| **abelian**       |     X     |     X      |   X    |      X      |\n| **autolykos2**    |     X     |     X      |   X    |      X      |\n| **ethash**        |     X     |     X      |        |      X      |\n| **etchash**       |     X     |     X      |        |      X      |\n| **fishhash**      |     X     |     X      |   X    |      X      |\n| **karlsenhashv2** |           |     X      |   X    |             |\n| **octopus**       |     X     |     X      |   X    |      X      |\n\n* any single or dual algorithm combination + zil\n\n## Features\n\n* Available on Linux and Windows\n* Terminal user interface\n* Failover pool support\n* Temperature, clocks, fan monitoring\n* Built-in GPU overclocking support with an option to apply different settings for ZIL\n* Temperature limits and fan control\n* HTTP API\n\n## Usage\n\n```\n  -a, --algorithm <ALGORITHM>\n          Selects the mining algorithm\n          \n          Currently supported:\n          abelian       (ABEL)\n          alephium      (ALPH)\n          autolykos2    (ERG)\n          etchash       (ETC)\n          ethash        (ETHW, XPB, OCTA, etc.)\n          fishhash      (IRON)\n          karlsenhashv2 (KLS)\n          kawpow        (RVN, QUAI, XNA, NEOX, etc.)\n          nexapow       (NEXA)\n          octopus       (CFX)\n          progpowz      (ZANO)\n          sha256ton     (GRAM)\n          sha3x         (XTM)\n          sha512256d    (RXD)\n          xelishashv3   (XEL)\n          zil           (ZIL)\n          \n          To dual or triple mine pass the algorithm list\n          separated by `+`, e.g. `autolykos2+sha256ton+zil`\n\n      --a1 <ALGORITHM>\n          Sets the primary algorithm (alternative to `-a`)\n\n      --a2 <ALGORITHM>\n          Sets the second algorithm (alternative to `-a`)\n\n      --a3 <ALGORITHM>\n          Sets the third algorithm (alternative to `-a`)\n\n      --coin <COIN>\n          Sets the coin ticker\n          \n          Only applicable to DAG based algorithms used by multiple coins.\n          Unless you're mining to a profit switching pool like Nicehash,\n          setting the coin ticker has the benefit of eliminating DAG rebuilds when\n          the miner switches to dev fee and back to the user job.\n          Note that not all possible coins are recognised by the miner,\n          and the up-to-date list is maintained on the project's webpage.\n          \n          Supported coins (the list is not exhaustive):\n          `autolykos2`: erg\n          `kawpow`: rvn, quai, xna, neox\n          `ethash`: ethw, octa, xpb\n          \n          When dual or triple mining the value should be prepended with\n          the algorithm index `[<index>]`. Primary algorithm has index 1.\n          \n          Examples:\n          --coin rvn\n          --coin quai\n          --coin [1]ethw\n\n  -o, --url <URL>\n          Sets the pool URL\n          \n          Format:\n          <mining protocol>+<transport protocol>://<pool hostname>:<port number>\n          \n          Mining protocols:\n              stratum\n              ethproxy\n              ethstratum\n              zmp (zil only)\n              solo (xelishashv3 only)\n          Transport protocols: tcp, ssl\n          \n          When dual or triple mining the value should be prepended with\n          the algorithm index `[<index>]`. Primary algorithm has index 1.\n          Failover pools are set by using `-o` multiple times.\n          \n          Examples:\n          -o stratum+ssl://pool.woolypooly.com:3112\n          -o zmp+tcp://us1-zil.shardpool.io:3333\n              mine Zilliqa to shardpool using ZMP protocol\n          -o [1]stratum+tcp://eth.f2pool.com:6688 -o [2]stratum+ssl://pool.woolypooly.com:3112\n              mine the primary algorithm to f2pool and the second algorithm to woolypooly\n\n  -u, --username <USERNAME>\n          Sets the username for pool authorisation\n          \n          When dual or triple mining the value should be prepended with\n          the algorithm index `[<index>]`. Primary algorithm has index 1.\n\n  -p, --password <PASSWORD>\n          Sets the password for pool authorisation\n          \n          When dual or triple mining the value should be prepended with\n          the algorithm index `[<index>]`. Primary algorithm has index 1.\n\n  -w, --worker <WORKER>\n          Sets the worker name\n          \n          When dual or triple mining the value should be prepended with\n          the algorithm index `[<index>]`. Primary algorithm has index 1.\n\n  -d, --devices <D1,D2,...>\n          Sets GPU devices to use for mining\n          \n          Must be a comma-separated list of device indices. If not specified,\n          all detected devices will be used. Devices are ordered by their\n          PCI bus addresses. First GPU has index of 0.\n          To display all available devices, use --list-devices.\n          \n          Example:\n          -d 0,2,4,5\n\n      --list-devices\n          List available mining devices and exit\n\n      --kernel <KERNEL1,KERNEL2,...>\n          Sets CUDA kernel for selected algorithm(s)\n          \n          Some algorithms have multiple implementations with different characteristics,\n          for example, one may be more energy efficient and another can achieve\n          higher hashrate at a cost of increased power consumption. In such cases\n          the user can choose the implementation that suits their requirements.\n          \n          Supported algorithms and values:\n          nexapow\n              1 - default kernel\n              2 - some 20xx and 30xx GPUs may benefit from choosing this kernel\n                  as more energy efficient than #1 when targeting low power draw\n          \n          sha256ton\n              1 - default kernel\n              2 - some 40xx GPUs may benefit from choosing this kernel\n                  as more energy efficient than #1 when targeting low power draw\n          \n          Comma-separated list of values can be used to set values per-GPU\n          To skip a GPU, set the corresponding value to underscore `_`.\n          When dual or triple mining the value may be prepended with\n          the algorithm index `[<index>]`. Primary algorithm has index 1.\n          \n          Example:\n          --kernel _,_,2,2\n              GPU#0 and GPU#1 will use their respective default kernels\n              GPU#1 and GPU#2 will use kernel #2\n\n      --tune <TUNE1,TUNE2,...>\n          Sets tuning values for selected algorithm(s)\n          \n          Supported algorithms:\n              None at the moment\n          \n          Comma-separated list of values can be used to set values per-GPU\n          To skip a GPU, set the corresponding value to underscore `_`.\n          When dual or triple mining the value may be prepended with\n          the algorithm index `[<index>]`. Primary algorithm has index 1.\n          \n          Example:\n          --tune 184,_,320\n              GPU#0 will use tuning value 184\n              GPU#1 will be auto-tuned\n              GPU#2 will use tuning value 320\n\n      --dual-mode <MODE1,MODE2,...>\n          Controls GPU behaviour in dual mining mode\n          \n          Format: <algo>:<dual ratio>\n          `<algo>` must be one of the following:\n              a1  - first algorithm\n              a2  - second algorithm,\n              a12 - both\n          \n          `<dual ratio>` is optional, and, if present,\n          must be\n          `rXX` (`dual ratio` coefficient set to `XX`), or\n          `hXX` (first algorithm hashrate will drop to `XX`%)\n          \n          Comma-separated list of values can be used to set values per-GPU\n          To skip a GPU, set the corresponding value to underscore `_`\n          \n          Example:\n          --dual-mode a1,_,a12:r5.2,a12:h92,a2\n              GPU#0 will mine the primary algorithm\n              GPU#1 will dual mine with default settings (primary algorithm at 95%)\n              GPU#2 will dual mine, dual ratio set to 5.2\n              GPU#3 will dual mine, primary algorithm hashrate at 92%\n              GPU#4 will mine the second algorithm\n\n      --temp-limit <LIMIT1,LIMIT2,...>\n          Sets GPU thermal limits\n          \n          Sets the temperatures of GPU core and memory upon reaching which the miner\n          stops the overheated GPU and waits for it to cool down before resuming.\n          \n          Comma-separated list of values can be used to set values per-GPU\n          To skip a GPU, set the corresponding value to underscore `_`\n          \n          Examples:\n          --temp-limit tc[60-70]\n              stops the GPU when its core temperature reaches 70 degrees Celsius\n              and resumes mining when it cools down to 60 degrees\n          \n          --temp-limit tm[105-115]\n              stops the GPU when its memory temperature reaches 115 degrees Celsius\n              and resumes mining when it cools down to 105 degrees\n          \n          --temp-limit tc[60-70]tm[105-115]\n              enables both core and memory temperature limits\n\n      --cpu-check\n          Enables CPU verification of found shares before sending them to the pool\n\n      --hashrate-avg <SECONDS>\n          Hashrate averaging window in seconds. Default is 10.\n\n      --power-avg <SECONDS>\n          Power usage averaging window in seconds. Default is 10.\n\n      --cclock <FREQ1,FREQ2,...>\n          Sets GPU core clock frequency offset in MHz\n          \n          Comma-separated list of values can be used to set values per-GPU\n          To skip a GPU, set the corresponding value to underscore `_`.\n          When dual or triple mining the value may be prepended with\n          the algorithm index `[<index>]`. Primary algorithm has index 1.\n\n      --mclock <FREQ1,FREQ2,...>\n          Sets GPU memory clock frequency offset in MHz\n          \n          Comma-separated list of values can be used to set values per-GPU\n          To skip a GPU, set the corresponding value to underscore `_`.\n          When dual or triple mining the value may be prepended with\n          the algorithm index `[<index>]`. Primary algorithm has index 1.\n\n      --lock-cclock <FREQ1,FREQ2,...>\n          Locks GPU core clock frequency to the given value in MHz\n          \n          Comma-separated list of values can be used to set values per-GPU\n          Set to `X` to reset the locked clock (unlock)\n          To skip a GPU, set the corresponding value to underscore `_`.\n          When dual or triple mining the value may be prepended with\n          the algorithm index `[<index>]`. Primary algorithm has index 1.\n\n      --lock-mclock <FREQ1,FREQ2,...>\n          Locks GPU memory clock frequency to the given value in MHz\n          \n          Comma-separated list of values can be used to set values per-GPU\n          Set to `X` to reset the locked clock (unlock)\n          To skip a GPU, set the corresponding value to underscore `_`.\n          When dual or triple mining the value may be prepended with\n          the algorithm index `[<index>]`. Primary algorithm has index 1.\n\n      --pl <PL1,PL2,...>\n          Sets GPU power limit to the given value in Watts\n          \n          Comma-separated list of values can be used to set values per-GPU\n          To skip a GPU, set the corresponding value to underscore `_`.\n          When dual or triple mining the value may be prepended with\n          the algorithm index `[<index>]`. Primary algorithm has index 1.\n\n      --mt <MT1,MT2,...>\n          Sets memory tweaks for Pascal GPUs with GDDR5/GDDR5X memory\n          \n          Possible values: 1, 2, 3, 4, 5, 6 (REFRESH will be set to `mt * 16`)\n          \n          Comma-separated list of values can be used to set values per-GPU\n          To skip a GPU, set the corresponding value to underscore `_`.\n          When dual or triple mining the value may be prepended with\n          the algorithm index `[<index>]`. Primary algorithm has index 1.\n\n      --fan-control <FAN1,FAN2,...>\n          Sets GPU fan control mode\n          \n          Can either force the GPU fans to work at a given static speed in %,\n          or adjust the fan speed to keep the GPU temperature (core, memory, or both)\n          at a desired level (auto-fan mode)\n          \n          Format:\n              --fan-control N\n                  set fan speed to `N`%\n              --fan-control t:[Tc;Tm][Finit;Fmin-Fmax]\n                  enables auto-fan with `Tc` and `Tm` core and memory temperatures\n                  respectively, set initial fan speed to `Finit`% and limit the\n                  fan speed range to [`Fmin`%,`Fmax`%] range.\n                  every value is optional and can be set to underscore `_`\n                  meaning the default value should be used.\n              --fan-control X\n                  let the driver/OS manage the fan speed (auto)\n          \n          Comma-separated list of values can be used to set values per-GPU\n          To skip a GPU, set the corresponding value to underscore `_`.\n          When dual or triple mining the value may be prepended with\n          the algorithm index `[<index>]`. Primary algorithm has index 1.\n          \n          Examples:\n          --fan-control 30\n              sets GPU fan speed to 30%\n          --fan-control t:[60;_][50;30-95]\n              target core temp is 60 degrees, initial fan speed is 50%, 30%-95% range\n          --fan-control t:[_;90][_;_-95]\n              target memory temp is 90 degrees, max fan speed 95%\n          --fan-control t:[70;100][_;_-_]\n              adjust fan so that core temperature <= 70, memory temperature <= 100,\n              with no restrictions on the fan speed\n\n      --dag-reset-mclock <on/off>\n          Enables or disables resetting memory overclock during DAG generation. Default is \"on\".\n          \n          If enabled, the miner sets the GPU memory clock offset to 0 MHz before\n          building the DAG to avoid its corruption, and re-applies the original offset\n          after the DAG has been built.\n          \n          Example:\n          --dag-reset-mclock off\n              disables memory OC reset (useful when OC is controlled by an external tool)\n\n      --reset-oc\n          Reset all overclock (including fan control) to default settings and exit\n\n      --autolykos2-prebuild <on/off>\n          Enables or disables autolykos2 dataset prebuild. Default is \"on\".\n          \n          If the prebuild is enabled for a GPU but there is not enough free\n          memory to hold two datasets, the miner will fall back to using a single\n          dataset and prebuild will be disabled.\n          \n          Comma-separated list of values can be used to set values per-GPU\n          To skip a GPU, set the corresponding value to underscore `_`\n          \n          Example:\n          --autolykos2-prebuild on,off,on\n              enables prebuild for GPU#0 and GPU#2 and disables for GPU#1\n\n      --ethash-cache-dag <on/off>\n          Enables or disables ethash DAG caching. Default is \"on\".\n          \n          If enabled, the miner attempts to keep DAGs for different epochs in\n          memory to avoid rebuilding them in the future if another job with the same\n          epoch is received again.\n          The only limiting factor of how many DAGs can be kept is the amount of\n          memory on the GPU.\n          \n          Comma-separated list of values can be used to set values per-GPU\n          To skip a GPU, set the corresponding value to underscore `_`\n          \n          Example:\n          --ethash-cache-dag on,off,on\n              enables DAG cache for GPU#0 and GPU#2 and disables for GPU#1\n\n      --kawpow-cache-dag <on/off>\n          Enables or disables kawpow DAG caching. Default is \"on\".\n          \n          If enabled, the miner attempts to keep DAGs for different epochs in\n          memory to avoid rebuilding them in the future if another job with the same\n          epoch is received again.\n          The only limiting factor of how many DAGs can be kept is the amount of\n          memory on the GPU.\n          \n          Comma-separated list of values can be used to set values per-GPU\n          To skip a GPU, set the corresponding value to underscore `_`\n          \n          Example:\n          --kawpow-cache-dag on,off,on\n              enables DAG cache for GPU#0 and GPU#2 and disables for GPU#1\n\n      --nexapow-small-lut <on/off>\n          Enforces using small LUT for Nexa. Default is \"off\".\n          \n          Comma-separated list of values can be used to set values per-GPU\n          To skip a GPU, set the corresponding value to underscore `_`\n          \n          Example:\n          --nexapow-small-lut on,off,on\n              enforces small LUT for GPU#0 and GPU#2\n\n      --zil <on/off>\n          Enables or disables mining Zilliqa per GPU. Default is \"on\".\n          \n          Useful for disabling ZIL mining for individual GPUs\n          \n          Example:\n          --zil off,on,on\n              disables ZIL mining for GPU#0\n\n      --zil-cache-dag <on/off>\n          Enables or disables caching Zilliqa DAG. Default is \"on\".\n          \n          If enabled, ZIL DAG is generated when the miner starts up and\n          is kept in GPU memory at all times even if it means lower performance\n          for the primary algorithm in dual/triple mining mode.\n          If disabled, the DAG is built on-demand when a ZIL round starts\n          and then destroyed after it's finished.\n          \n          Comma-separated list of values can be used to set values per-GPU\n          To skip a GPU, set the corresponding value to underscore `_`\n          \n          Example:\n          --zil-cache-dag on,off,on\n              enables DAG cache for GPU#0 and GPU#2 and disables for GPU#1\n\n      --zil-countdown\n          Enables Zilliqa countdown timer\n\n      --zil-retain-hashrate <on/off>\n          Enables or disables displaying ZIL hashrate between rounds. Default is \"on\".\n\n      --zil-test\n          Enables Zilliqa mining test mode\n          \n          In this mode the miner will connect to a virtual Zilliqa pool which initiates\n          short ZIL mining sessions more frequently than a normal pool (every 30s).\n          Useful for making sure the overclock settings are stable when switching\n          from the primary algorithm to `zil` and back - no need to wait for the next\n          ZIL window which may start in an hour.\n\n      --zil-test-intervals <ZIL_TEST_INTERVALS>\n          Sets durations of primary algorithm and Zilliqa sessions in test mode\n          \n          Default value: `[30;30]`\n          \n          Format:\n              --zil-test-intervals [D1;D2]\n                  set primary algo duration to `D1` seconds\n                  set ZIL duration to `D2` seconds\n          \n          Example:\n          --zil-test-intervals [10;60]\n              the miner will mine the primary algorithm for 10 seconds, switch to ZIL,\n              mine ZIL for 60 seconds, switch back, and so on\n\n      --enable-fork\n          Enables algorithm switch for hard forks\n\n      --activate-fork\n          Activates algorithm switch for hard forks\n          \n          Can be used to simulate post-hard fork behaviour and test\n          overclock settings, stratum connectivity etc. before the fork\n\n  -l, --log-file <LOG_FILE>\n          Enables logging output of the miner to the specified log file\n          \n          If the log file already exists it will be appended.\n          The miner uses log rotation keeping maximum of 5 log files,\n          size limit is 5MB.\n          \n          Supports the following template parameters:\n              `{algo}` - algorithm name\n              `{ts}` - timestamp in the format \"yyyyMMdd_HHmmss\"\n                       note when using this option the miner will be creating\n                       a new log file every time it is launched\n          \n          Example:\n          --log-file rigel_{algo}_{ts}.log\n          \n          Files created:\n              rigel_kawpow_20240115_123240.log\n              rigel_kawpow_20240116_185402.log\n              rigel_kawpow_20240116_190938.log\n\n      --log-network\n          Enables logging network traffic (useful for debugging)\n\n      --api-bind <IP:PORT>\n          Enables HTTP API and binds it to the specified socket address\n          \n          Examples:\n          --api-bind 127.0.0.1:5000\n          --api-bind 0.0.0.0:5000\n\n      --proxy <PROXY>\n          Sets SOCKS5 proxy for all network connections including DNS lookups\n          \n          Format:\n          No auth: <host>:<port>\n          Auth: <username>:<password>@<host>:<port>\n          \n          Examples:\n          --proxy 127.0.0.1:8091\n          --proxy admin:qwerty@myproxy.server.com:8080\n\n      --dns-over-https\n          Enables pool DNS resolution using DNS-over-HTTPS (Cloudflare)\n\n      --no-strict-ssl\n          Disables SSL/TLS certificate verification\n          \n          Useful with self-hosted mining solutions where the mining pool\n          provides a self-signed certificate.\n          However, adding the certificate to the system's trust store\n          should be preferred (see https://github.com/rigelminer/rigel/issues/130).\n\n      --stats-interval <SECONDS>\n          GPU stats reporting interval in seconds. Default is 20.\n          Set to `X` to disable periodic reports.\n\n      --long-timestamps\n          Enables milliseconds timestamps in the miner output\n\n      --no-pool-url\n          Hides pool URL from the share submissions log\n          and displays the algorithm name instead\n\n      --no-colour\n          Disables colour in the miner output (TUI would still display colours)\n\n      --no-tui\n          Disables terminal user interface (TUI)\n\n      --multi-device-arg-mode <MULTI_DEVICE_ARG_MODE>\n          Defines argument validation in multi-GPU mode. Default is \"match\".\n          \n          Applicable to all per-GPU arguments (`--cclock`, `--mclock`, `--temp-limit`,\n          `--kernel` etc.) when the number of supplied values is more than one and\n          doesn't match the number of GPUs - this usually occurs when one of the GPUs\n          disappears from the system (taken out for maintenance, PCIE connectivity loss\n          and so on) but the miner is run with the same config.\n          \n          Accepted values:\n              match - display an error and exit if the number of values doesn't match\n                      the number of GPUs exactly\n              first - ignore any extra values if too many, and use the first value in the list\n                      for the GPUs that don't have a value\n              last  - ignore any extra values if too many, and use the last value in the list\n                      for the GPUs that don't have a value\n          \n          Example (assuming 3 GPUs available):\n              --multi-device-arg-mode first\n                  \"--lock-cclock 1100,1200,1300,1400\" will result in\n                      GPU#0 1100\n                      GPU#1 1200\n                      GPU#2 1300\n                  \"--lock-cclock 1100,1200\" will result in\n                      GPU#0 1100\n                      GPU#1 1200\n                      GPU#2 1100\n\n      --no-watchdog\n          Disables miner watchdog\n\n  -h, --help\n          Print help information (use `-h` for a summary)\n\n  -V, --version\n          Print version information\n```\n\n## Support\n\nDiscord: https://discord.gg/zKTgcGgc6k  \nBitcoinTalk: https://bitcointalk.org/index.php?topic=5424675.0\n\nOfficial website: https://rigelminer.com\n"
  }
]