DeroStorm 1.5.9 - HiveOS, and a status file to run it from
Tooling, not speed. Hashes, kernels and hashrate are identical to 1.5.8 — 142,400 H/s on an RTX 5080, 175,400 with the CPU beside it — and the whole of this release is about running the miner on a rig you do not sit in front of.
A miner you can watch from something else
--stats-file=<path> writes a JSON document every five seconds and nothing else:
derostorm --no-tui --stats-file=/run/derostorm.json
{
"version": "1.5.9", "state": "mining", "uptime": 3671,
"hashrate": 175154, "hashrate_cpu": 33120, "hashrate_gpu": 142034,
"miniblocks": 47, "blocks": 1, "rejected": 0,
"devices": [
{ "label": "CPU", "is_gpu": false, "hashrate": 33120, "temp_c": 61.5 },
{ "label": "GPU 0", "is_gpu": true, "hashrate": 142034, "temp_c": 55,
"fan_pct": 42, "power_w": 225.1, "name": "NVIDIA GeForce RTX 5080" }
]
}It exists because the alternative is parsing a console that was laid out for a person, and that breaks the first time a column is widened.
Two details that are the whole point of it. The file is written to a temporary name and renamed into place, so a monitor polling it gets the previous document or the next one and never half of one — a truncated read is how a shell script reports a hashrate of zero and wakes somebody at 3am. And the file is deleted when the miner exits, so a monitor can tell a stopped miner from one running at zero.
A missing sensor reads null, not 0. A card at 0% fan and a card with no fan sensor are different things, and only one of them is worth an alarm.
HiveOS
hiveos/derostorm-1.5.9.tar.gz is attached to this release: a HiveOS custom miner package built on the stats file. Point a flight sheet's Installation URL straight at it.
| field | value |
|---|---|
| Miner | Custom |
| Miner name | derostorm |
| Installation URL | the tarball URL from this release |
| Wallet | your dero1… address |
| Pool URL | your derod node, e.g. 10.0.0.5:10100 |
| Extra config arguments | --mining-threads=12 --gpu=all, or empty |
DeroStorm is a solo miner. It speaks derod's getwork, so the "Pool URL" field holds a node address and there is no pool, no pool account and no pool share accounting. HiveOS's accepted column counts miniblocks and blocks instead. A URL with a scheme or a path is accepted and reduced to host:port.
The rig total includes the CPU; the per-card figures are GPUs only, so on a machine mining on both the cards will not add up to the total. The difference is the processor.
Three bugs found by testing the wrapper rather than reasoning about it, all of which would have shipped:
h-stats.shis sourced, not executed, so$0is the caller and acdin it moves HiveOS's own working directory. It now resolves paths fromBASH_SOURCEand changes no directory.exec cmd | teedoes not exec anything — a pipeline is forked, so$!wastee's pid and a stop signal went to the wrong process. The miner was then killed hard, without running its own shutdown, and left a stats file behind that looked like a running rig for a minute. The miner is now the direct child.bus_numberscould disagree with the card count, which happens whenever--gpunames a subset. HiveOS lines the per-card arrays up by that list, so the wrong length shows each card's hashrate against a different card. It is now one per card or empty.
The build refuses to ship stale kernels
1.4.0's Linux archives carried the previous CUDA kernels. nvcc cannot build a .so under Windows, the machine cutting that release had no Linux toolchain, and nothing objected because the stale file was sitting exactly where go:embed wanted it — Linux mined at 1.3.0 speed for a whole release while Windows had everything, and 1.4.1 exists only to undo it.
build.ps1 and build.sh checked that the four embedded libraries existed. They now check that each is newer than the sources it is compiled from, and stop the build if not:
cmd/derostorm/libderostorm_gpu.so is older than the source it is built from
(gpu/desc.cuh) -- rebuild it with gpu/buildlib.sh, on Linux
It is a timestamp comparison and it will occasionally fire on a file that changed nothing. Rebuilding is cheap; shipping the wrong kernels is not.
Unchanged
The hash, the kernels and the hashrate. gpu/hash_parallel_test.exe matches all 512 reference vectors, gpu/desc_test.exe is correct on all 512 suffix arrays, go test ./cmd/derostorm/ is green, and the miner still re-verifies each device against the CPU before it will submit anything from it. The Linux archive was unpacked and benchmarked on the reference machine before release, which is the check 1.4.1 taught us to do.