# usb-miner

> ```js const IntMiner = require('./src'); const Debug = require('./src/log')(); const fs = require('fs'); const COMP = '[SIPC]';

Latest version **1.1.4** (published 2019-12-10) · MIT license · 0 weekly downloads

## Install

```sh
npm install usb-miner
pnpm add usb-miner
yarn add usb-miner
bun add usb-miner
```

Provides the command `usb-miner`.

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.4 |
| Published | 2019-12-10 |
| First published | 2019-05-27 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=8.0 |
| Dependencies | 27 |
| Unpacked size | 365 KB |
| Known vulnerabilities | 0 (+28 in 3 direct dependencies) |
| Install scripts | yes |
| Maintainers | waterlord |
| Keywords | monero miner, xmr miner, monero, electroneum, xmr, etn, crypto, cryptocurrency, cryptocurrencies, mining, miner, bitcoin, stratum, pool |

## Links

- npm: https://www.npmjs.com/package/usb-miner
- npm.io page: https://npm.io/package/usb-miner

## Dependencies (27)

- [ws](https://npm.io/package/ws.md) ^3.2.0
- [pmx](https://npm.io/package/pmx.md) ^1.5.5
- [sha1](https://npm.io/package/sha1.md) ^1.1.1
- [uuid](https://npm.io/package/uuid.md) ^3.1.0
- [axios](https://npm.io/package/axios.md) ^0.16.1
- [crc32](https://npm.io/package/crc32.md) ^0.2.2
- [locks](https://npm.io/package/locks.md) ^0.2.2
- [watch](https://npm.io/package/watch.md) ^1.0.2
- [moment](https://npm.io/package/moment.md) ^2.19.1
- [pinger](https://npm.io/package/pinger.md) 0.0.5
- [express](https://npm.io/package/express.md) ^4.15.4
- [stratum](https://npm.io/package/stratum.md) ^0.2.4
- [bluebird](https://npm.io/package/bluebird.md) ^3.5.5
- [chacha20](https://npm.io/package/chacha20.md) ^0.1.4
- [minimist](https://npm.io/package/minimist.md) ^1.2.0
- [net-ping](https://npm.io/package/net-ping.md) ^1.2.3
- [@types/ws](https://npm.io/package/@types/ws.md) ^3.2.0
- [tty-table](https://npm.io/package/tty-table.md) ^2.5.5
- [basic-auth](https://npm.io/package/basic-auth.md) ^2.0.0
- [log-update](https://npm.io/package/log-update.md) ^2.1.0
- [serialport](https://npm.io/package/serialport.md) ^7.1.4
- [typescript](https://npm.io/package/typescript.md) ^2.6.1
- [wait-until](https://npm.io/package/wait-until.md) 0.0.2
- [@types/node](https://npm.io/package/@types/node.md) ^8.0.53
- [node-getopt](https://npm.io/package/node-getopt.md) ^0.3.2
- [usb-detection](https://npm.io/package/usb-detection.md) ^4.1.0
- [elegant-spinner](https://npm.io/package/elegant-spinner.md) ^1.0.1

## Alternatives

- [@gemini-wallet/core](https://npm.io/package/@gemini-wallet/core.md) — 515.6K weekly downloads
- [utility](https://npm.io/package/utility.md) — 416.6K weekly downloads
- [@primno/dpapi](https://npm.io/package/@primno/dpapi.md) — 7.2K weekly downloads
- [pi-readseek](https://npm.io/package/pi-readseek.md) — 3.7K weekly downloads
- [@emilia-protocol/verify](https://npm.io/package/@emilia-protocol/verify.md) — 1.1K weekly downloads

## Recent versions

- 1.1.4 (latest) — 2019-12-10
- 1.1.3 — 2019-09-19
- 1.1.2 — 2019-09-09
- 1.1.1 — 2019-09-05
- 1.1.0 — 2019-09-02
- 1.0.9 — 2019-08-21
- 1.0.8 — 2019-08-20
- 1.0.7 — 2019-08-15
- 1.0.6 — 2019-06-25
- 1.0.5 — 2019-06-24
- 1.0.4 — 2019-06-18
- 1.0.3 — 2019-06-05
- 1.0.2 — 2019-05-29
- 1.0.1 — 2019-05-27
- 1.0.0 — 2019-05-27

## README

```js
const IntMiner = require('./src');
const Debug = require('./src/log')();
const fs = require('fs');
const COMP = '[SIPC]';

(async () => {
  var devState = []
  var mode = 0
  const miner = await IntMiner({
    algoname: 'scrypt',
    minername: 'simplenode',
    cryptoname: 'sipc',
    protocolname: 'stratum'
  });

  // init Mining
  await miner.initMining();
  // set pool
  miner.setMiningConfig('pool', {
    host: `sipc.ss.dxpool.com`,
    port: 8008,
    user: `sunwei.b2`,
    pass: 'x'
  })
  // start Mining
  await miner.connectMining();
  await miner.startMining(null);

  miner.on('plug-in', async (data) => {
    Debug.IbctLogDbg(COMP, 'plug-in: ', data.devID);
    await miner.connectMining();
    miner.startMining({
      'devID': data.devID
    });
  });

  miner.on('plug-out', data => {
    Debug.IbctLogDbg(COMP, 'plug-out: ', data.devID);
    // miner.stopMining({ 'devId': data.devID });
  });

  miner.on("error", function (devID, data) {
    if (devID)
      Debug.IbctLogErr(COMP, 'Miner' + devID + ':', data);
    else
      Debug.IbctLogErr(COMP, data);
  });

  miner.on("warning", function (devID, data) {
    if (devID)
      Debug.IbctLogDbg(COMP, 'Miner' + devID + ':', data);
    else
      Debug.IbctLogDbg(COMP, data);
  });

  setTimeout(function() {
    if (mode === 1) {
      Debug.IbctLogDbg(COMP, 'Burn Image')
      fs.readFile('./v0.0.3r.bin', (err, data) => {
        if (err) {
          Debug.IbctLogErr(COMP, err)
        } else {
          miner.BurnMiningFirmware(null, data, function (err, data) {
            if (err) {
              Debug.IbctLogErr(COMP, err)
              return
            }

            Debug.IbctLogDbg(COMP, 'Burn ', (data * 100).toFixed(1), '%')
            if ((data * 100).toFixed(1) === '100.0') {
              Debug.IbctLogDbg(COMP, 'Burn Complete')
            }
          })
        }
      })
    } else if (mode === 2) {
      Debug.IbctLogDbg(COMP, 'Reboot')
      miner.RebootMining(null)
    } else if (mode === 3) {
      Debug.IbctLogDbg(COMP, 'Set led on')
      miner.SetMiningLed(null, true)
      setTimeout(function() {
        Debug.IbctLogDbg(COMP, 'Set led off')
        miner.SetMiningLed(null, false)
      }, 5000)
    } else if (mode === 4) {
      Debug.IbctLogDbg(COMP, 'Stop Miner')
      miner.stopMining(null)
    } else if (mode === 5) {
      Debug.IbctLogDbg(COMP, 'Exit Miner')
      miner.exitMining()
    }
  }, 10000)

  setInterval(function () {
    devState = miner.getMiningStatus();
    Debug.IbctLogDbg(COMP, JSON.stringify(devState));
  }, 10000);
})();
```
1. startMining()
input:
  null:  所有设备开始挖矿
  或: 指定设备开始挖矿
  {
    “devID”: 0,
  }
Output: null

2. stopMining()
input:
  null: 关闭所有设备
  或: 关闭指定设备
  {
    “devID”: 0
  }
Output: null

3. getMiningStatus()
input: 
  null: 输出所有设备的状态
  或: 输出指定设备的状态
  {
    “devID”: 0,
  }
Output:
  [
    {
      “devID”: 0,
      “miningName”:“simplenode”,
      “miningSN”:“X10B92451F3EE7”,
      “miningType”:“sipc”,
      “state”: “on”,
      “version”: “V0.0.1”,
      “hashrate”: “845KH/s”,
      “avHashrate”: “820KH/s”,
      “hardwareErr”: 300,
      “rejected”: 100,
      “nonces”: 100,
      “accepted”: 100,
      “temperatue”: “50℃”,
      “elapsed”: “10h15m6s”,
      “pools”: {
          “host”: “sipc.ss.dxpool.com”,
          “port”: 8008,
          “user”: “sunwei.b2”,
          “pass”: “x”
      }
    }
  ]

4. RebootMining()
input
  null: 关闭所有设备
  或: 关闭指定设备
  {
    “devID”: 0,
  }
Output: null

5. SetMiningLed(Device, Enable)
input
  Device:
    null: 关闭所有设备
    或: 关闭指定设备
    {
      “devID”: 0,
      “enable”: true
    }
  Status:
    true: 某种灯状态
    或
    false: 还原置灯之前的灯状态

6. BurnMiningFirmware(Device, Image, Callback)
input
  Device
    null: 关闭所有设备
    或: 关闭指定设备
    {
      “devID”: 0,
    }
  Image
    烧入镜像
  烧入实例：
    burnFirmware() {
      fs.readFile('./head.bin', (err, data) => {
        if (err) {
          Debug.IbctLogErr(COMP, err);
        } else {
          miner.BurnMiningFirmware(null, data, function (err, data) {
            if (err) {
              Debug.IbctLogErr(COMP, err);
              return;
            }

            Debug.IbctLogDbg(COMP, 'Burn ', (data * 100).toFixed(1), '%');
            if ((data * 100).toFixed(1) === '100.0') {
              Debug.IbctLogDbg(COMP, 'Burn Complete');
            }
          });
        }
      });
    }
  烧入完成请重新插拔矿机

7. setMiningConfig(setName, settings)
input:
  setName: 可以设置矿机的类型，目前只支持'pool'
  settings: 设置值。
    如果是pool：
      {
        host: `sipc.ss.dxpool.com`,
        port: 8008,
        user: `sunwei.b2`,
        pass: 'x'
      }

8. exitMining()
input: null 释放miner相关资源
Output: null

9. connectMining(Device)
input
  Device:
    null: 连接所有设备
    或: 连接指定设备
    {
      “devID”: 0,
    }

---
_Source: https://npm.io/package/usb-miner · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
