Hardware and software, built by one team.

3D model of a populated circuit board with a 37-pin and a 15-pin D-sub connector, four trimmers and two power connectors.
Fig. 1 Pressure and vacuum board, B/R Instrument

We design the board, write its firmware, and build the software it talks to.

Client work B/R Instrument PowerPool

Products that need both usually fail in one place: the seam between two vendors.

\n SOFTWARE HARDWARE NOT OUR LAYER WORKS ON OUR BENCH
Fig. 2 The seam

We remove that seam. The people who lay out the board also write its firmware and the service it reports to.

Everything between the idea and the shipped unit.

SOFTWARE SIDE HARDWARE SIDE REV A U1 MCU U2 U3 Y1 U4 J1 J2 SWD ANT1 SERIAL 115200 8N1 [0.000] reset power-on [0.012] clocks ok [0.019] flash ok [0.027] radio up [0.431] app fw 1.4.2 BREAK SERVICE { "temp_c": 41.8, "fw": "1.4.2" } GET /units 200 GET /units/0042/telemetry 200 POST /units/0042/ota 202 [ota] fw 1.4.3 applied
Fig. 3 One device, both sides of the break
  1. Hardware

    Board design

    From block diagram to a board that works on the bench.

    • Schematic capture
    • Multi-layer layout
    • DFM review
    • Bring-up
  2. Hardware

    Firmware

    Written by the people who routed the board.

    • Bare-metal and RTOS
    • ARM and RISC-V
    • Test fixtures
  3. Both sides

    Connected devices

    Devices that report in and stay reachable.

    • Provisioning
    • Telemetry
    • Over-the-air updates
  4. Software

    Web apps and APIs

    The software on the other end of the wire.

    • Web apps and internal tools
    • REST and GraphQL services
    • Network servers in C++
    • Versioned, typed, observable

Three systems, two clients.

B/R InstrumentBoth sidesLaboratory instrumentation

Control system for laboratory distillation units

One platform for B/R Instrument's laboratory stills, running ASTM D2892, D5236 and D1160 methods.

Boards
Pressure and vacuum board. Four-channel isolated thermocouple board.
Firmware
Sensor drivers, calibration, failsafes.
Server
Device server on a Raspberry Pi. Multi-stage run logic.
Operator app
Process diagram, run control, history, CSV export.
Compliance
User roles and a read-only audit log, for GMP.
  • Raspberry Pi
  • C
  • BMP280
  • ASTM D2892
  • ASTM D5236
  • ASTM D1160
3D model of a board with four thermocouple connectors along one edge and four isolated input channels. The silkscreen reads B/R Instrument, M690 Quad ISO TC, Rev 02.
Fig. 4 Four-channel isolated thermocouple board
The pressure and vacuum board in the layout editor, part routed, with both D-sub footprints on the left edge.
Fig. 5 Pressure board in layout
Top view of the pressure and vacuum board model: two D-sub connectors on the left edge and three matched sensor front ends.
Fig. 6 The same board, top view
Schematic sheet of test points: supply rails from minus 15 to plus 24 volts, and the drop, level and foam sensor signals.
Fig. 7 Test points and supply rails

PowerPoolSoftwareMining infrastructure

Solo mining pool, from stratum server to dashboard

Miners point their machines at it and are paid directly in the block they find. Live at solo.powerpool.io.

Stratum
C++20. One process per coin, four algorithms.
Merge mining
Dogecoin alongside Litecoin and DigiByte.
Payouts
Solo or team, paid in the block itself.
Operations
Two regions over WireGuard. Rolling upgrades.
Dashboard
Per-miner statistics. Public REST API.
  • C++20
  • ASIO
  • Redis
  • Vue 3
  • Docker
  • WireGuard
The solo.powerpool.io home page. Headline: Solo Mine Bitcoin. Below it a table of seven supported coins, each with its algorithm, a stratum address on ports 3333 to 3339, and a live status.
Fig. 8 solo.powerpool.io, in production
FULL NODES ONE PER CHAIN getblocktemplate submitblock API /api/coins DASHBOARD Vue 3 REDIS shares, blocks SECOND REGION WireGuard sync STRATUM ONE PROCESS PER COIN BTC SHA-256 :3333 LTC Scrypt :3334 + DOGE DGB Scrypt :3335 + DOGE DGB SHA-256 :3336 BCH SHA-256 :3337 ZEC Equihash :3338 BTCB2 Blake2b :3339 SOFTWARE SIDE HARDWARE SIDE ASIC ASIC ASIC MINERS BREAK
Fig. 9 One pool, both sides of the break

PowerPoolSoftwareMining infrastructure

Zcash and failover for the main pool's stratum fleet

Two additions to PowerPool's existing stratum fleet: a service for Zcash, and failover for when an upstream pool stops responding.

Zcash
Equihash stratum service. Every solution verified.
Endpoints
Backup endpoints per pool, retried on a cooldown.
Pools
A priority list. The next pool takes over.
Failback
Miners return in stages once the first pool recovers.
Coverage
Failover in all six stratum services.
  • C++
  • Redis
  • Docker
  • HAProxy
  • Equihash
POOL 2 NEXT IN PRIORITY standing by POOL 1 FIRST IN PRIORITY primary no jobs, cooling down backup carrying the miners REDIS PRIORITY LIST pool 1, then pool 2 STRATUM ONE SERVICE PER ALGORITHM SHA-256 Scrypt X11 Equihash + Zcash kHeavyHash Eaglesong SOFTWARE SIDE HARDWARE SIDE ASIC ASIC ASIC MINERS BREAK
Fig. 10 Backup endpoint first, then the next pool

Three stages. Same order every time.

  1. 01

    Scope

    We map the system, find the hard parts, and write down what we don't know yet.

  2. 02

    Build

    A demo every two weeks, on real hardware. Code in your repository from the first commit.

  3. 03

    Hand over

    Notes, test fixtures, runbooks. Done when your team can ship the next version without us.

Small on purpose.

A small team that reads datasheets and writes production code.

One team on both sides means a short path from a symptom to its cause.

The name is \n, the escape sequence for a new line.

Demos
14days apart, on real hardware
Your repository
Day 1code lands from the first commit
Replies
1working day

Contact

Tell us what you're building.

Leave your email and we'll write back. A line about the problem helps, and is optional.

Replies within one working day

Your email is used only to reply to you.

Sent. We'll reply within one working day.

Or write to [email protected]