---
url: /braiins-deck/about.md
---
# About Braiins Deck
[Braiins Deck](https://braiins.com/hardware/braiins-deck) is a next-generation hardware display designed to provide
a clear, intuitive view of the data that matters most.
Built with a large touch display in the form factor of a modern digital clock, Braiins Deck brings real-time insights all in one glanceable, customizable interface.
The device is powered by a modular widget system that allows users to choose exactly what information is shown on the screen and each widget delivers a focused snapshot without clutter. The layout is optimized for always-on visibility, ensuring that the displayed data remains stable and readable without intrusive UI changes.
In addition to local widgets running directly on the device, Braiins Deck supports remote widgets sourced from the Braiins cloud platform. This enables continuous expansion of the ecosystem with new visualizations and data sources, without requiring firmware updates on the device.
## Key Features
### Customizable Widget System
Braiins Deck displays information through modular widgets that users can freely arrange on the touch screen - display a full view of one widget or combine several to make a custom dashboard.
### Local and Remote Widgets
The device supports both locally rendered widgets and remotely generated widgets served from the Braiins platform. Remote widgets allow continuous ecosystem growth and instant access to new visualizations without requiring a firmware update.
### Always-On, Glanceable Display
The large touch display is optimized for static, always-visible data. Widget dimensions remain fixed, ensuring a clean, predictable layout that avoids any disruptive UI changes when information updates or becomes temporarily unavailable.
### Touch Interaction and Navigation
The touch display allows intuitive interaction: changing the brightness and sound level, interacting with night mode and more. The device is designed to be simple to set up and effortless to operate.
### Hardware Designed for Everyday Spaces
The device’s form factor resembles a modern digital clock, enabling it to sit naturally on a desk, nightstand, or shelf. Its design supports long-term always-on operation with low power consumption and a focus on reliability.
### Extendable and Open
Braiins Deck is built with openness and extensibility in mind. Developers and soon the community can create new widgets or integrate the device into broader mining setups, leveraging open-source components and a scalable remote-widget infrastructure maintained by Braiins.
Recommended next step
### Want to boost your miner hashrate?
With Braiins Hashpower you can rent hashrate using Bitcoin. Your hashrate, your choice: use it for solo mining, boost your BMM chance to mine a block, or use it on the pool you prefer.
[See Braiins Hashpower](https://hashpower.braiins.com/)[Ask in Telegram](https://t.me/braiinshashpower)
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-deck/alarms.md
---
# Alarms
Braiins DECK has a separate section dedicated to alarms. You can set as many alarms as you want with custom sounds labels.
All alarms require a time setting in 24h format and can scheduled to repeat every day or just on selected days of the week.
There is of course a Snooze button as well and you can set a custom duration for the snooze for each alarm.

---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-deck/connected-accounts.md
---
# Connected Accounts
Some of the widgets on Braiins Deck are displaying personalized data, for example now you can add a dashboard for Braiins Pool monitoring of your account. To connect your pool account to Braiins Deck, you need to add an API token of that account to the Deck.
Here are the steps to do so:
- Open your Braiins Pool account and go to [Access Profiles](https://pool.braiins.com/settings/access).
- Create new Access Profile with Read-only permission.
- Select Allow access to web APIs and generate API key.
- Copy your API key into the form below.
**Get an API token from an Access profile in Braiins Pool**
**Add the token in the Connected Accounts section and select the profile in Braiins Pool widget settings**
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-deck/display-widgets.md
---
Learn how to add and edit widgets, that you want to display on your DECK.
This is the section where you can Add or Edit all of the widgets that are displayed on the device screen.
The DECK comes with several pre-configured widgets for your convenience.
You can leave them as is, edit, disable or delete them completely.

## Widget List and Cycling Settings
Here you can disable widgets from being displayed on the screen, change order in which they will be rotated, clone, edit and delete them from the list.
Braiins DECK rotates widgets on its screen that are added to the list in a given interval. You can turn the cycling off and on and also change the default duration of the cycling interval.
It is possible to setup a custom screen cycling duration as well by rewriting the default values for each widget. When this is done, global value for time interval will not take effect anymore. To go back to the default value, simply delete the custom number you have set.
## Adding Full-screen Widgets
You can add new widgets to the list by clicking in the **Add New** button. Every widget has a full screen version and also smaller version, that can be a part of the **Combined scene**.
Some widgets are local and some are remote. The difference is in the way the displayed image is created and will not affect how widgets are displayed in any significant way. Local widgets are previewed on the screen of the Deck as you add and customize them, for remote ones you need to save the settings to see the preview.
Local widgets are processed directly on the device and images for remote widgets are created in the cloud. You can chose any widget from both lists and mix them into a Combined scene in any way you please.
Most of the widgets do not require any additional steps to be added to the Deck besides some basic configuration that is requested during the setup and so the whole process is very intuitive.
Some widgets, like the one for Braiins Pool monitoring, need a Connected account, to pull the relevant data. See the [Connected accounts](https://academy.braiins.com/en/braiins-deck/connected-accounts) section to learn how to do that.
Another widget that asks for additional steps is Image. Here are the simple steps that explain everything is detail.
# Image Widget
The custom image has to fulfill the following requirements to be displayed on the Deck:
- Wi-Fi connection is working
- HTTP(s) server (specified by URL) is working (e.g. endpoint is accessible, no HTTP errors)
- Image has PNG or JPEG format
- Image has exact resolution for chosen widget size:
- small: 317x238px
- medium: 638x238px
- large: 638x480px
- fullscreen: 1280x480px
You can use any of the many free online tools available to change the image format and corp it to the right size. After that, upload the image to an online storage and paste the link to that image into the widget settings on the Deck.
We suggest you to choose the highest value of refresh duration which makes sense for your usecase. If your image is static, it’s not necessary to refresh it every 10 seconds. This way you can avoid unnecessary server load and network traffic.
## Adding a Combined scene
You can display several remote and local widgets at the same time in a Combined scene to create customs dashboards that fit your needs the best. Each widget has the same settings and behavior as in the full-screen mode and the data displayed are adjusted to fit the smaller size.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-deck/getting-started.md
---
# Getting Started with Braiins Deck
Please follow these simple steps to set up your Braiins DECK.
## Hardware Setup
### 1. Unbox and plug in the DECK
- Carefully take the DECK out of the box.
- Plug the power supply adapter into a power socket and connect the USB-C power cord to the input socket on the back of the DECK.
### 2. Check the Power Supply Adapter compatibility
Dual color LED on the back side of the DECK tells you if your power chain is compatible or not.
- Continuous RED light: incompatible power adapter or cable (possibly USB-A to USB-C cable).
- Continuous GREEN light: compatible power adapter and cable.
Green will turn off after 2 seconds to bring you the best user experience.
### 3. Wait for the boot
Once everything is plugged in, you should see a purple light under the deck and the device will boot in just several seconds.
After the boot, you should see the Initial Setup screen along with a loading animation of the LEDs.
## Connecting Braiins DECK to WiFi
### 1. Connect to Braiins DECK WiFi
Grab your phone or laptop and open your Wi-Fi settings. Look for a network called Braiins Deck.
Tap on the DECK network, and you’ll be redirected to the setup wizard.
If the automatic redirect doesn’t work, the DECK screen displays a QR code you can scan to access the setup wizard. Alternatively, open `http://10.0.0.21/` in your browser.
### 2. Go through the setup wizard
Start by selecting your WiFi network, type in your password and wait for the device to connect.
You will see a confirmation screen and green LED light once it is connected.
### 3. Access DECK graphical interface
Once the DECK is connected to your WiFi, you can now access the interface on an IP address shown on the screen of the device.
Type the address into your browser or scan the QR code shown on the screen of the device and open the link.
### 4. Finish the initial setup
Finish the last step of the setup by configuring a few basics, you can also set up a password, and your DECK will be ready!
## If You See a Wi-Fi Setup Issue
If the DECK shows an issue screen during Wi‑Fi setup, it means the device can’t communicate with the Wi‑Fi module. In this case, the setup will time out after about 2 and a half minutes, and the DECK will automatically reboot.
Recommended next step
### Want to boost your miner hashrate?
With Braiins Hashpower you can rent hashrate using Bitcoin. Your hashrate, your choice: use it for solo mining, boost your BMM chance to mine a block, or use it on the pool you prefer.
[See Braiins Hashpower](https://hashpower.braiins.com/)[Ask in Telegram](https://t.me/braiinshashpower)
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-deck/system-settings.md
---
# System Settings & Network Configuration
These sections present global system settings for the device and are divided into several sub-categories.


### General
- Time Format: choose between 12 or 24 hours format, it will affect the clock but bear in mind that all the alarms have to be set in 24h format.
- Timezone: you can configure the right timezone for you by searching for a city or an appropriate UTC timezone.
- Date Format: global setting for all the display scenes.
- First Day of the Week: global setting for all the display scenes.
- Number Format: global setting for all the display scenes.
- Reboot: will reboot the device.
- Download Support Archive: this action will download logs, that our support team needs to help you troubleshoot any issues with the device.
- Reset to factory defaults: performs a soft reset - wipes all settings and data but keeps the currently installed firmware.
### Reset Button
The physical reset button is located on the back of the device. It can be used in two scenarios:
- **From a running device**: A quick press (less than 2 seconds) will reboot the device. Holding for 5 seconds or more triggers a soft reset (same as the web UI - wipes user data but keeps the current firmware).
- **During power-up (factory reset)**: Hold the button while plugging in the power cable. After 5 seconds, a red LED will indicate that factory reset mode is ready. Release the button to perform the factory reset. This restores the device to its original factory state, including the initially flashed firmware.
### Display
- Screen Brightness: default brightness level of the device.
- Night mode: you can select a time interval when the display will use different levels of brightness, also during this time only the first display scene in the list will be displayed on the device
- screen cycling will be off.
### Sound & Light
- Select default sound volume and sound volume during the night mode.
- Enable or Disable LED signals (notifications and alerts will be available in future releases).
### Security
- Set up a password for your DECK for better security.
- This password will also be your SSH password.
### Upgrades
Upgrades are downloaded automatically right now and you can always check which version you are on in this section.
### Network Configuration
- Check your DECK's IP address, hostname and MAC address in this section.
- To select a new WiFi trigger the network scan, the device will be offline while the scan is in progress and you won't be able to change any settings.
## WiFi Reconfiguration via Display
You can reconfigure your WiFi network directly from the device's display without performing a factory reset. There are two ways to enter WiFi reconfiguration mode:

### Reset WiFi Button
- Located in the bottom controls of the display.
- Hold the "Reset WiFi" button for 3 seconds (a progress ring will show the hold progress).
### Reconfigure WiFi Button
- If WiFi connection fails, a "Reconfigure WiFi" button appears on the failure screen.
- This screen appears when the Deck fails to connect to a network. This is usually triggered shortly after boot if the Deck cannot detect the previously configured network, or when it unsuccessfully tries to reconnect to an existing network.
- Tap the button to enter reconfiguration mode.
### What Happens in Reconfiguration Mode
- The device broadcasts an Access Point and opens a captive portal where you can configure a new WiFi network.
- The reconfiguration mode has an 8-minute timeout, but the AP remains active in the background so you can still connect.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-hashpower/about.md
---
# What is Braiins Hashpower?
[Braiins Hashpower](https://hashpower.braiins.com) is a real-time marketplace for buying Bitcoin mining hashrate (SHA-256 algorithm). It supports various buying strategies, including programmatic API access and automated trading bots.
## Overview
Braiins Hashpower is a SHA-256 hashrate marketplace where buyers can acquire Bitcoin mining power on demand. The platform provides **real-time trading** as well as **long-term guaranteed delivery**, **transparent pricing**, and **near-instant delivery** of hashrate.
The marketplace operates with an order book model, allowing users to place bids (buy orders) at their preferred prices. When orders are matched, hashrate is delivered directly to the buyer's specified mining pool.
## How Braiins Hashpower Works
The marketplace trades **Bitcoin for hashrate** — no other currencies are currently available. There are two ways to buy, depending on how much commitment you want:
- **[Spot market](/braiins-hashpower/trading.md)** — if you want to **bid for a price with no commitment**, place a bid in the live order book and receive hashrate for as long as your bid stays matched, paying as you go.
- **[Contracts](/braiins-hashpower/contracts.md)** — if you prefer **steady, guaranteed delivery with a commitment**, buy a fixed amount of hashrate for a fixed period at a price agreed up front.
After completing onboarding and depositing BTC, buying on the **spot market** is straightforward:
1. **Browse** the live order book to see current market prices
2. **Place a bid** specifying your price, budget, and destination pool
3. When your bid is matched, the **delivery executes automatically**
4. Hashrate is **delivered directly** to your mining pool of choice as long as the bid is matched
5. Payments are settled in Bitcoin through the platform during the life of an order in regular intervals (hourly)
The platform displays real-time market data including:
- Live order book with aggregated asks and bids
- Price chart with candlestick visualization
- Current hashprice and basic market statistics
Buying a **contract** is even simpler — set your terms, check the price, and schedule the delivery. See the [Contracts guide](/braiins-hashpower/contracts.md).
## Ways to buy hashrate
Braiins Hashpower offers a few ways to buy, depending on your goal:
- **[Spot market](/braiins-hashpower/trading.md)** — bid for a price in the live order book and receive hashrate for as long as your bid stays matched, paying as you go. No commitment.
- **[Solo Package](/braiins-hashpower/solo-mining.md)** — a predefined solo-mining package placed on top of the order book for easy setup and instant thrill. The quickest way to point hashrate at a solo target and try your luck at finding a block.
- **[Contracts](/braiins-hashpower/contracts.md)** — buy a fixed amount of hashrate for a fixed period with guaranteed delivery and a price agreed up front. A commitment for predictable, planned capacity.
## Market Parameters
### Spot market
| **Parameter** | **Value** |
| -------------------- | --------------------------------------------------------------- |
| Minimum speed | 1 PH/s |
| Maximum speed | Unlimited (limited by available hashrate on the market) |
| Minimum bid budget | 10,000 sats (with speed limit) / 100,000 sats (unlimited speed) |
| Maximum bid budget | 1 BTC |
| Default pricing unit | sats/EH/day |
### Contracts
| **Parameter** | **Value** |
| ------------------------ | ----------------------------------------------- |
| Minimum speed | 1 PH/s |
| Maximum speed | 2,000 PH/s |
| Minimum duration | 7 days (1 week) |
| Maximum duration | 62 days (\~2 months) |
| Earliest start | 5 minutes after creation |
| Latest start | Up to 30 days ahead |
| Minimum cancellation gap | 1 minute |
| Up-front reservation | 3.5 days of delivery cost, plus the prepaid fee |
## Order Matching
The marketplace uses a dynamic matching algorithm designed to maximize yield. Bids are prioritized by **price** (highest first), then by **age** (oldest first). Any modification to a bid resets its age, making it younger in the queue.
Matching runs continuously, and bids are re-evaluated as market conditions change. This means hashrate delivery can shift between bids if a higher-priced or older bid becomes available. For detailed information about how matching works, see the [FAQ](/braiins-hashpower/faqs/basics.md).
## Target Users
Braiins Hashpower is designed for individuals and organizations who want to acquire mining power without owning hardware:
- **Miners seeking additional capacity**: Supplement your own mining operation during profitable periods
- **Industrial miners**: Cover temporary outages or maintenance periods with replacement hashrate
- **Investors**: Gain exposure to Bitcoin mining without infrastructure investment
- **Solo mining enthusiasts**: Try your luck at finding a block without owning ASICs
- **Testing and research**: Acquire hashrate for development or research purposes
## Key Features
| **Feature** | **Description** |
| -------------------- | ------------------------------------------------------------------------------------------------------------- |
| Real-time Order Book | Live view of buy and sell order volumes aggregated by price level |
| Contracts | Buy a fixed amount of hashrate for a fixed period, with guaranteed delivery |
| Price Charts | Interactive candlestick charts showing historical price movements |
| Flexible Pricing | Multiple currency display options (BTC/EH, sats/PH, USD/EH) |
| Custom Destination | Direct hashrate to any [compatible](/braiins-hashpower/faqs/basics.md#pool-compatibility) Stratum mining pool |
| Solo Mining | "Try Your Luck" feature for quick solo mining attempts |
| Telegram 2FA | Secure bid confirmation via Telegram bot |
| API Access | Full programmatic access for automated trading |
| Deposit Screening | All BTC deposits are screened for compliance; suspicious funds are not credited and may be seized |
## Key Limitations
Braiins Hashpower is currently in **BETA**. While we strive for reliability, outages, performance issues, or bugs may occur.
- **Pool compatibility**: Major Bitcoin pools are compatible, but many non-BTC SHA-256 coins are not supported due to insufficient `extranonce2_size` offered by the mining pools. See [Pool Compatibility](/braiins-hashpower/faqs/basics.md#pool-compatibility) for details.
- **No withdrawals**: The platform is non-custodial. You are expected to spend your funds on buying hashrate. In case you wish to exit the platform completely contact our Support for arrangements.
- **Delivery momentum**: Hashrate delivery has inherent latency. Ramp-up takes some time when a bid starts matching, and when a bid is terminated or runs low on budget, delivery slows down before the budget is fully consumed. When canceled, it takes a minute or two to end delivery and settle.
Braiins Hashpower is available at [hashpower.braiins.com](https://hashpower.braiins.com).
The public API documentation is available at [hashpower.braiins.com/api](https://hashpower.braiins.com/api).
Recommended next step
### Ready to mine?
Do you need a large amount of hashpower? Talk to our sales team and rent OTC hashrate at the scale your operation requires.
[Rent hashrate at scale](https://hashpower.braiins.com/)[Ask in Telegram](https://t.me/braiinshashpower)
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-hashpower/account.md
---
# Account Management
## Creating Your Account


To start using Braiins Hashpower, you need to create an account. The registration process uses Telegram for verification.
### Registration Steps
1. Navigate to [hashpower.braiins.com](https://hashpower.braiins.com)
2. Click **Sign Up** button
3. Complete Telegram verification
4. Verify your email address
5. You will receive two API tokens: **Owner** (full access) and **Read-only** (view only)
Save your API tokens securely — they cannot be displayed again after initial creation. If you lose your tokens, you will need to contact support.
### Telegram Verification
The Telegram bot (@BraiinsBotOfficial) is used for:
- Account verification during registration
- Two-factor authentication for bid confirmations
- Security notifications
The official Braiins bot will never ask you for your API token or request you to send BTC funds. Any such attempts may be fraud from fake accounts impersonating our bot. Always verify you are communicating with @BraiinsBotOfficial.
### Logging In
To access your account:
1. Navigate to [hashpower.braiins.com](https://hashpower.braiins.com)
2. Enter your Owner API token
3. Click **Log in**
4. Your dashboard will refresh with user details in the header and application tabs will appear
You can also use the **demo** token to explore the platform with simulated data.
## Account Tab
The Account tab displays your account information, balance, and transaction history. It is accessible after logging in with your API token.
## Basic Information
The Basic Information section shows your account details:
- **Account Name**: Your account identifier
- **Email**: Your verified email address
- **Deposit Address**: Your assigned Bitcoin address for depositing funds to the market
- **Applicable Fees**: Current fee structure for your account
## Account Balance
### Balance Display
Your account balance section shows:
- **Available Balance**: Funds ready for trading
- **Reserved Balance**: Funds committed to active bids
- **Total Balance**: Available + Reserved funds
- **Spent on bids and fees**: Funds spent for hashrate and on market fees
- **Total deposited**: Sum of all deposits
Amounts are displayed in selected currency unit.

### Depositing Bitcoin
To fund your account:
1. Navigate to the Account tab
2. Copy your assigned Bitcoin deposit address or scan the QR code
3. Send BTC to this address from your wallet
4. Deposit more than the minimum bid amount to avoid ending up with an unspendable balance if your bid gets canceled
5. Wait for 3 blockchain confirmations before funds are credited
6. We screen all incoming transactions for compliance purposes, and deposits flagged as suspicious may be withheld for manual review. Manual review is performed only on working days and can take up to 48 hours.
**Important:** Only deposit coins with clear origin. Funds from questionable sources may be subject to additional verification, which may take even longer. In rare cases, funds may be returned to the sender address. Always deposit from your own wallet, not from an exchange or other custodial service.
## Transaction History

The Transaction History section shows all financial activities in your account.
### Transaction Types
| **Type** | **Description** |
| -------- | -------------------------------------------------- |
| Deposit | Bitcoin received at your deposit address |
| Lock | Funds reserved when a bid is created |
| Unlock | Funds released when a bid is canceled or completed |
| Market | Settlements for bid hashrate delivery |
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-hashpower/api.md
---
# Public API
The Braiins Hashpower API provides programmatic access to market data and trading functionality. The full interactive API reference is available in Scalar at [hashpower.braiins.com/api](https://hashpower.braiins.com/api).
## Overview
The Braiins Hashpower API is a RESTful API that allows you to:
- Access real-time market data (order book, trades, charts)
- Manage bids (create, modify, cancel)
- View account information and balances
- Monitor bid status and history
- Access transaction records
### API Documentation
Interactive API documentation generated from the public `OpenAPI` specification is available in Scalar:
**[https://hashpower.braiins.com/api](https://hashpower.braiins.com/api)**
The Scalar API reference provides:
- Complete endpoint descriptions, including access requirements and rate limits
- Request parameters and request/response schemas
- API token authentication
- A built-in **Test Request** client that calls the `/v1` API in the same Hashpower environment
Scalar keeps the API token you enter in browser storage for this site. Remove the saved authentication after testing on a shared browser.
## Authentication
### API Token
Authenticated endpoints require an API token passed via the `apikey` header:
```
apikey: your-api-token-here
```
### Token Types
| **Token Type** | **Access Level** |
| --------------- | ---------------------------------------------- |
| Owner Token | Full access to all endpoints including trading |
| Read-only Token | Access to market data and account viewing only |
### Obtaining API Tokens
1. Visit [hashpower.braiins.com](https://hashpower.braiins.com)
2. Click **Sign Up** and complete registration
3. Your API tokens are displayed after successful registration
4. Store the tokens securely — they are only shown once
Never expose your API tokens in client-side code, public repositories, or logs. Use environment variables or secure secret management.
## Base URL
All API requests should be made to:
```
https://hashpower.braiins.com/v1/
```
### Example Request
```bash
curl -X GET "https://hashpower.braiins.com/v1/spot/orderbook" \
-H "Content-Type: application/json"
```
## Public Endpoints
Public endpoints do not require authentication and provide market data.
| **Endpoint** | **Method** | **Description** |
| ----------------- | ---------- | ------------------------------------------------- |
| `/spot/orderbook` | GET | Current order book with bids and asks |
| `/spot/trades` | GET | Recent trade history |
| `/spot/bars` | GET | OHLCV candlestick data for charts |
| `/spot/stats` | GET | Market statistics (volume, best prices, hashrate) |
## Authenticated Endpoints
Authenticated endpoints require the `apikey` header.
### Account
| **Endpoint** | **Method** | **Description** |
| ------------------------------- | ---------- | -------------------------------------------- |
| `/account/balance` | GET | Current balance (available, reserved, total) |
| `/account/transaction` | GET | Transaction history |
| `/account/transaction/on-chain` | GET | List on-chain account transactions |
### Market
| **Endpoint** | **Method** | **Description** |
| ---------------- | ---------- | ----------------------------------------------- |
| `/spot/settings` | GET | Market configuration (tick size, limits, units) |
| `/spot/fee` | GET | Current fee structure |
### Bid Management
| **Endpoint** | **Method** | **Description** |
| ------------------------------- | ---------- | ------------------------------------- |
| `/spot/bid` | GET | List all bids (historical and active) |
| `/spot/bid` | POST | Create a new bid |
| `/spot/bid` | PUT | Update an existing bid |
| `/spot/bid` | DELETE | Cancel a bid |
| `/spot/bid/current` | GET | List active bids only |
| `/spot/bid/detail/{order_id}` | GET | Get detailed bid information |
| `/spot/bid/speed/{order_id}` | GET | Get speed history time series |
| `/spot/bid/delivery/{order_id}` | GET | Get delivery history time series |
For complete endpoint details, request/response schemas, and interactive testing, see the [Scalar API reference](https://hashpower.braiins.com/api).
## Error Handling
### HTTP Status Codes
| **Code** | **Description** |
| -------- | ------------------------------------------------------------------- |
| 200 | Success |
| 400 | Bad Request — Invalid parameters |
| 401 | Unauthorized — Invalid or missing API token |
| 403 | Forbidden — Insufficient permissions or bid belongs to another user |
| 404 | Not Found — Resource doesn't exist |
| 429 | Too Many Requests — Rate limit exceeded |
| 500 | Internal Server Error |
### Error Response Format
For some errors (e.g., Bad Request), the error details are returned in the `grpc-message` header:
```
grpc-message: Bid%20duration%20too%20short%20(estimate:%209.29,%20limit:%201800)
```
The message is URL-encoded and should be decoded to get the human-readable error description.
## Best Practices
1. **Check `/spot/settings` first**: Understand pricing units, limits, and cooldowns before placing bids
2. **Cache market data**: Order book and trades update frequently; cache appropriately
3. **Handle errors gracefully**: Implement retry logic with exponential backoff
4. **Validate inputs client-side**: Prevent unnecessary API calls with invalid data
5. **Monitor your rate limits**: Track usage to avoid hitting limits
6. **Secure your tokens**: Use environment variables, never hardcode
7. **Use `cl_order_id`**: Assign your own IDs to bids for easier tracking and idempotency
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-hashpower/contracts.md
---
# Contracts
## What is a Contract?
A **contract** lets you buy a **fixed amount of hashrate for a fixed period of time**, delivered to your chosen mining pool at a price agreed up front. Unlike a [spot bid](/braiins-hashpower/trading.md) — which competes in the live order book and delivers a variable amount of hashrate only while it stays matched — a contract **guarantees a set speed for its entire duration**.
Contracts are the right choice when you need **predictable, guaranteed capacity**: covering a defined period, planning your costs in advance, or securing hashrate without having to watch the market.
### Contracts vs. spot bids
| | **Contract** | **Spot bid** |
| -------- | ------------------------------------------ | -------------------------------------------------- |
| Delivery | Fixed speed, guaranteed for the whole term | Variable — only while matched in the order book |
| Duration | Fixed (you choose the length) | Open-ended until the budget runs out or you cancel |
| Price | Fixed fee above FPPS rate, settled daily | Market price, pay-as-you-go |
| Effort | Passive — monitor the contract as it runs | Active — manage your bids as the market moves |
| Best for | Predictable, planned capacity | Flexible, opportunistic buying |
## How a Contract works
1. **Define** the contract — speed, duration, and destination pool.
2. **Review the quote** — it shows the hashrate cost plus the fee (see [Pricing](#pricing)).
3. **Confirm** — the funds needed for the initial part of the contract (currently 3.5 days of delivery) are reserved from your balance.
4. **Delivery runs** for the agreed term, sending hashrate to your pool.
5. **Settlement** happens daily against the hashrate actually delivered.
6. A **daily reservation** tops up the locked funds so the contract always keeps enough runway to keep delivering.
7. The contract **completes** at the end of its term. You can also **cancel it early** (a reservation fee may apply — see [Canceling a contract](#canceling-a-contract)).
Contract hashrate has delivery priority — a contract keeps receiving its agreed speed regardless of spot-market competition.
## Creating a Contract
**Test your target on the spot market first.** Before committing to a contract, place a small [spot bid](/braiins-hashpower/trading.md) pointed at the same pool URL and worker, and confirm hashrate is delivered and accepted as expected. Automatic pool validation catches most problems, but it isn't foolproof — and discovering an incompatibility only after the contract has started would mean canceling it and paying the reservation fee.
Open the **New contract** dialog from the Contracts tab and set the contract's parameters:
| **Field** | **Description** |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Speed | The hashrate to be delivered, in PH/s |
| Duration | How long the contract runs.
Pick a **predefined length** or set your **own custom duration** (7 days up to \~2 months). |
| Start | When delivery begins. A contract can't start immediately — it begins after a short lead time
(at least 5 minutes from creation) and can be scheduled up to 30 days ahead. |
| Pool URL | Your mining pool's Stratum address (choose from the list or enter a custom one) |
| Worker Identity | Your worker name at the pool (e.g. `username.worker1`) |
As you adjust the speed and duration, the price updates automatically so you can see the effect before committing.

The same pool compatibility rules as spot bids apply — your pool must support `extranonce2_size >= 7`. See [Pool Compatibility](/braiins-hashpower/faqs/basics.md#pool-compatibility) for details.
Before the contract is created, you confirm it via **Telegram 2FA** — just like spot bids. The contract is only placed once you approve the prompt in Telegram.
### Contract parameters
| **Parameter** | **Value** |
| -------------------- | ----------------------------------------------- |
| Speed | 1 – 2,000 PH/s |
| Duration | 7 days – 62 days (\~1 week to \~2 months) |
| Start | From 5 minutes up to 30 days ahead |
| Up-front reservation | 3.5 days of delivery cost, plus the prepaid fee |
### Understanding the quote
Before you confirm, the contract shows a **quote** — a **pricing estimate** for the whole contract, plus the amounts locked from your balance up front: the **initial reservation** and the **reservation fee buffer**.
Because the hashrate cost tracks the FPPS rate, which changes daily, the totals are an **estimate**: the amount actually settled depends on the FPPS rate on each delivery day. The fee **percentage** is fixed for the life of the contract (see [Pricing](#pricing)).
| **Item** | **What it is** |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Speed & duration | The hashrate and length you selected — together they set the total shares to be delivered |
| Fee rate | The fixed fee percentage applied to this contract (lower for larger / longer contracts) |
| Hashrate cost (est.) | Estimated value of the hashrate to be delivered = shares × the current FPPS rate. This is the
pass-through cost, not our margin |
| Fee (est.) | Our charge = hashrate cost × fee rate |
| Total (est.) | Hashrate cost + fee — the estimated all-in cost over the contract's life |
| Initial reservation | Locked from your balance up front: about **3.5 days of hashrate cost**, with the fee for that initial
period already **prepaid**. The rest of the delivery cost is reserved gradually via the daily reservation
as the contract runs (see the Funds & settlement section below) |
| Reservation fee buffer | The fee for the **remaining** (not-yet-delivered) part of the contract, held in reserve. It is used up as
the contract delivers — or, if you cancel, what remains is charged as the **reservation fee** (see
[Canceling a contract](#canceling-a-contract)) |
### Pricing
Your contract price is the **hashrate cost** plus a **fee**. The **fee** is our premium on top of the **FPPS rate** — the pay-per-share rate that sets the underlying hashrate cost. It is shown as a percentage and follows a **volume discount**: the more a contract delivers overall (speed × duration → total shares), the **lower the percentage**. A short, small contract pays a higher rate than a large, long one.
The fee rate is **frozen when the contract is created** and stays fixed for its entire term. Any later changes to our pricing do **not** affect contracts that are already running.
Pricing is based on the total number of shares a contract will deliver, which is a function of both speed and duration — so a longer or faster contract earns a lower fee percentage.
The terms shown in the pricing window are only examples for the most common durations. Once you enter your exact contract duration, you'll get customized speed brackets.

## Contract list
The **Contracts** tab shows a **funding outlook** for all your contracts, followed by the **contract list**.
### Funding outlook
A summary of how well your contracts are funded:
- **Reserved** — funds currently reserved across all your running or scheduled contracts
- **Balance** — your available balance
- **Total available** — the sum of the two above; the maximum funds available for your contracts
- **Remaining cost** — an estimate of how much is needed to cover the yet-unsettled cost of all running or scheduled contracts
- **Top-up estimate** — the estimated amount to deposit in order to fulfill all running or scheduled contracts
- **Balance coverage** — a graphical view of your daily coverage
With multiple contracts, or gaps between them, the balance-coverage graphic can sometimes be confusing to read.
### Contract list
For each contract the list shows:
- **Contract ID** — unique contract identifier
- **Status** — the contract's current status
- **Term** — how long the contract runs
- **Progress** — how much of the term has been delivered
- **Ordered speed** — the contracted hashrate
- **Average speed** — the actual average hashrate delivered so far
- **Fee (rate)** — the fixed fee percentage applied to the contract
- **Total price (estimate)** — the estimated all-in cost (hashrate cost + fee)
- **Settled amount** — how much has been settled (paid) so far
- **Remaining (estimate)** — the estimated cost still to be settled
- **Coverage** — how much of the contract's remaining cost is currently covered by reserved funds
From the list you can **create a new contract** or **open a contract's detail** — there is no cancel action here.

## Contract detail
Selecting a contract opens its detail view, organised into four sections.

### Overview
Key metrics for the contract at a glance:
- **Progress** — how much of the term has been delivered
- **Balance coverage** — how much of the contract's remaining cost is currently covered by reserved funds
- **Reserved funds** — the amount currently locked on the contract
- **Daily cost (current)** — the current estimated cost per day at the latest FPPS rate
- **Total contracted value (estimate)** — the estimated all-in cost over the whole contract
- **Average speed (overall)** — the actual average hashrate delivered so far
- **Ordered speed** — the contracted hashrate
### Delivery chart
Hashrate delivered over time.
A longer chart span uses longer time slots, which smooths out the short-term oscillations in delivery.
### Contract details
The parameters used to create the contract — speed, duration, start, destination pool and worker, and the agreed fee.
### Daily overview
A day-by-day breakdown of **settlements**, **reservations**, and **contract events**. The daily overview can be **exported**.
## Funds & settlement
Contracts are funded from your available balance and settled as they deliver.
### Initial reservation
When you create a contract, the funds for its **initial period** — currently the first **3.5 days** of delivery — are **reserved** (locked) from your available balance, with the fee for that period prepaid. The **reservation fee buffer** for the rest of the contract is reserved as well (see [Understanding the quote](#understanding-the-quote)). The remaining delivery cost is not locked all at once — it is reserved over time as the contract runs.
### Daily settlement
Once a day, the previous day's delivery is **settled**: the hashrate actually delivered is charged (hashrate cost + fee) and drawn from the locked funds. Settlement runs at **02:00 UTC** — it needs the previous day's **FPPS rate to be final** first, so it cannot run at midnight.
### Keeping the contract funded
After settling, the system tops the reservation back up toward its full target (currently **3.5 days** of runway). If your available balance can't cover the full top-up on a given day, the system **keeps looking for funds continuously** and reserves them as soon as they arrive — so topping up your balance refills the contract automatically.
### Auto-termination
If the funds on a contract fall below a safety threshold — currently enough to cover the next **2 hours** of delivery — the contract is **terminated immediately**. Keep enough available balance so the daily reservation can maintain the contract and avoid an early end.
## Canceling a contract
You can cancel a contract before it finishes. What happens — and how quickly your funds come back — depends on whether delivery has already started.
**Before the contract starts** (not yet delivering): the contract is canceled, the **reservation fee** is charged, and the **remaining** reserved funds are **released back to your available balance right away**.
**After delivery has started:**
- Delivery **winds down** — it takes a short time for hashrate to fully stop.
- The hashrate already delivered is **settled** as normal.
- A **reservation fee** applies to the undelivered part of the contract (charged from the reservation fee buffer).
- The **remaining funds are released on the next settlement**, not immediately.
## Limitations
Braiins Hashpower is currently in **BETA**. While we strive for reliability, outages, performance issues, or bugs may occur.
- **Pool compatibility**: the same requirements as spot bids apply — see [Pool Compatibility](/braiins-hashpower/faqs/basics.md#pool-compatibility).
- **Delivery momentum**: hashrate delivery has inherent latency. Ramp-up takes some time at the start of a contract, and delivery slows before fully stopping at the end or on cancellation.
- **No low-balance notifications yet**: the platform does not currently alert you when a contract is running low and needs a deposit. Keep an eye on your funding to avoid auto-termination. Notifications are planned for a future release.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-hashpower/faqs/account.md
---
# FAQ's: Account & Security
## Account & Security
How do I create an account?
To create a Braiins Hashpower account:
1. Navigate to [hashpower.braiins.com](https://hashpower.braiins.com)
2. Click **Sign Up** button
3. Complete Telegram verification via @BraiinsBotOfficial
4. Verify your email address
5. You will receive two API tokens: **Owner** (full access) and **Read-only** (view only)
Save your API tokens securely — they cannot be displayed again after initial creation.
How do I deposit Bitcoin?
To fund your account:
1. Log in to Braiins Hashpower with your API token
2. Navigate to your Account section
3. Copy your Bitcoin deposit address or scan the QR code
4. Send BTC from your wallet to this address
5. Deposit more than the minimum bid amount to avoid ending up with an unspendable balance if your bid gets canceled
6. Wait for 3 blockchain confirmations before funds are credited
7. We screen all incoming transactions for compliance purposes, and deposits flagged as suspicious may be withheld for manual review. Manual review is performed only on working days and can take up to 48 hours.
**Important:** Only deposit coins with clear origin. Funds from questionable sources may be subject to additional verification, which may take even longer. In rare cases, funds may be returned to the sender address. Always deposit from your own wallet, not from an exchange or other custodial service.
What if my funds did not arrive?
Deposits require 3 blockchain confirmations before appearing in your balance. We screen all incoming transactions for compliance purposes, and deposits flagged as suspicious may be withheld for manual review. If your funds still haven't arrived after the required confirmations, please contact our support team for assistance.
Why are withdrawals not supported?
Braiins Hashpower is designed for purchasing hashrate, not as a wallet or custody service. All deposited funds are meant exclusively for buying hashrate on the market.
Before depositing, we recommend studying the platform and starting with small amounts to familiarize yourself with how it works.
If you wish to exit the platform completely, please contact our support team to discuss available arrangements.
Why do I need Telegram for 2FA?
Telegram 2FA adds a security layer to protect your funds and prevent unauthorized trades if your API token is compromised. Without Telegram 2FA, you cannot create or update bids.
Quick Solo bids are an exception where we favour simplicity over security. You'll be informed about those on Telegram when they are created.
What if I lose access to Telegram?
If you lose Telegram access:
1. You won't be able to confirm new bids
2. Existing bids will continue running and can be canceled without 2FA
3. Contact Braiins support to update your verification method
**Recommendation**: Keep your Telegram account secure and maintain backup access methods.
What's the difference between Owner and Read-only tokens?
API tokens have different permission levels:
**Owner Token:**
- Full trading capabilities
- Create, modify, cancel bids
- View all account data
**Read-only Token:**
- View market data
- View account balance and bids
- Cannot trade
Use read-only tokens for monitoring applications and owner tokens only where trading is required.
My API token was compromised - what do I do?
If you suspect your token is compromised and you have balance you don't want to risk losing, contact our support immediately.
1. Monitor the running bids
2. Cancel any suspicious bids
3. Check your transaction history for unauthorized activity
Because of Telegram 2FA, an attacker with just your token cannot complete trades or withdrawals without access to your Telegram. But they are able to cancel existing bids and create Quick Solo bids.
Where can I see my transaction history?
Transaction history is available in the Account View, organized into tabs:
- **On-chain**: Deposits
- **Market**: Trading settlements and costs
- **Locks**: Bid budget locks and unlocks
Click **Load More** to view additional history. Each transaction shows amount, timestamp, and relevant details.
Why is my balance locked?
Locked balance represents funds committed to active bids:
- When you create a bid, the budget is locked
- As the bid fills, locked funds move to spent
- If you cancel, remaining locked funds return to available
- When the bid completes, any unused budget is unlocked
Your total balance = available + locked.
Is my data secure?
Braiins Hashpower implements multiple security measures:
- **No tokens in URLs**: API tokens are never passed in query strings
- **HTTPS encryption**: All communication is encrypted
- **Content Security Policy**: Protects against XSS attacks
- **Token hashing**: Tokens are stored as hashes, not plaintext
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-hashpower/faqs/basics.md
---
# FAQ's: Basics
## Basics
What is Braiins Hashpower market?
Braiins Hashpower market is a real-time marketplace for buying Bitcoin mining hashrate (SHA-256 algorithm). It allows buyers to acquire mining power without owning physical hardware.
The platform operates as a supply / demand marketplace with an order book model where buyers place bids at their preferred prices. When orders are matched, hashrate is delivered directly to the buyer's specified mining pool.
How does buying hashrate work?
When you buy hashrate on Braiins Hashpower:
1. You place a bid specifying your price (BTC/EHs/day), budget, and destination pool
2. Your bid enters the order book
3. When your bid is matched, hashrate delivery begins at the specified cost
4. Hashrate is delivered directly to your specified mining pool
5. Your pool receives shares as if you owned the mining hardware
6. Order budget is gradually consumed and once depleted, the order is fulfilled.
What are the different ways to buy hashrate?
There are three ways to buy:
- **Spot market** — place a bid in the live order book and receive a variable amount of hashrate for as long as your bid stays matched, paying as you go. No commitment.
- **[Contracts](/braiins-hashpower/contracts.md)** — buy a fixed amount of hashrate for a fixed period with guaranteed delivery, for a fee agreed up front. A commitment for predictable, planned capacity.
- **[Solo Package](/braiins-hashpower/solo-mining.md)** — a predefined solo-mining package placed on top of the order book for a quick, easy solo attempt.
Can miners sell their hashrate on the marketplace?
Currently, Braiins Hashpower is a buying platform only. Miners cannot directly list their hashrate for sale on the marketplace.
How does order matching work?
The marketplace uses a dynamic matching algorithm designed to maximize yield:
**Bid Priority:**
- **Price**: Higher-priced bids are matched first
- **Age**: Among bids at the same price, older bids have priority
- **Updates reset age**: Any modification to a bid (price, budget, speed limit) makes it younger in the queue
**Continuous Re-matching:**
- The matching algorithm runs continuously as market conditions change
- Bids are constantly re-evaluated against available hashrate
- Hashrate delivery can shift between orders if a higher-priced or older bid becomes eligible
- An order currently receiving hashrate may lose delivery if outbid
**Practical Implications:**
- To maintain delivery priority, avoid unnecessary order modifications
- Higher prices secure more reliable delivery
- Orders are not guaranteed continuous hashrate - delivery depends on ongoing market conditions
What is hashrate and how is it measured?
Hashrate is the computational power used to mine Bitcoin. It's measured in hashes per second:
- **TH/s** - Terahashes per second (10¹² hashes)
- **PH/s** - Petahashes per second (10¹⁵ hashes)
- **EH/s** - Exahashes per second (10¹⁸ hashes)
On Braiins Hashpower, prices are typically quoted in **sats/PH/day** (satoshis per Petahash per day) or **BTC/EH/day** (Bitcoin per Exahash per day). It's not completely precise, but it's current market standard how to display hashrate units on marketplaces. Entirely correct would be **BTC / EH/s / day** meaning how many bitcoins does it cost to receive hashrate at 1 EH/s speed per 1 day.
What is last price?
Last price is the market price for mining hashrate. It represents how much buyers pay in average for a unit of hashrate over a period of time.
On Braiins Hashpower, the price is displayed in multiple formats:
- **sats/PH/day** - Satoshis per Petahash/second per day
- **BTC/EH/day** - Bitcoin per Exahash/second per day
- **USD/EH/day** - US Dollars per Exahash/second per day
You can toggle between these display formats in the platform header.
What is hashprice or hashvalue and how does it relate to market price?
**Hashvalue** is the theoretical mining income for 1 PH/s per day, expressed in BTC. It is calculated from the current network difficulty and average transaction fees, typically using a 24-hour fee average.
**Hashprice** is the same value converted to fiat currency (e.g., USD) based on the current BTC exchange rate.
Comparing hashvalue or hashprice to the market price can be useful for arbitrage strategies.
What mining pools can I use?
You can direct purchased hashrate to any Stratum-compatible mining pool that meets the platform's compatibility requirements:
- Pool must support Stratum protocol
- Pool must have `extranonce2_size` of at least 7
- Pool URL format: `stratum+tcp://pool.example.com:port`
Popular compatible pools include Braiins Pool, and many other major Bitcoin mining pools. The platform validates pool connectivity before order creation.
For detailed compatibility information, see [Pool Compatibility](#pool-compatibility) below.
Pool Compatibility
### `extranonce2_size` Requirement
Braiins Hashpower requires destination pools to have an **`extranonce2_size` of at least 7**. This technical requirement ensures proper work distribution across the hashrate being delivered.
### How Compatibility Is Checked
When you enter a pool URL in the Braiins Hashpower UI, the platform automatically checks two things:
1. **`extranonce2_size`**: Must be 7 or higher (required for all pools)
2. **Worker authorization**: Uses `mining.authorize` to verify your username is valid
**Important:** Authorization checking only works on pools that support it, including Braiins Pool, F2Pool, Luxor, CK Pool, and SBI. Other pools may accept any username during the check but reject it during actual mining. Be careful to enter the correct username format for your target pool.
### Manual Compatibility Check
You can manually check a pool's `extranonce2_size` using `nc` and `jq`:
```bash
(echo '{"id":1,"method":"mining.subscribe","params":[]}'; sleep 1) | nc stratum.example.com 3333 | head -1 | jq -r '.result[2]'
```
Replace `stratum.example.com` and `3333` with your pool's host and port. The output must be **7 or higher** for compatibility.
Note: The public `stratum.braiins.com` endpoint returns `extranonce2_size` of 6, but Braiins Hashpower uses a dedicated node with the required size.
### Known Incompatible Pools
The following major pools or services are **not compatible** due to insufficient `extranonce2_size`:
- Nicehash
- Miningrigrentals
- Public Pool
### Known Compatible Pools
The following pools are confirmed compatible (at the time of writing):
- Braiins Pool, Braiins Solo
- All other major pools (Antpool, Binance, CK pool, Cloverpool, EMCD, F2pool, Foundry, Lincoin, Luxor, Ocean, Poolin, SBI, Ultimus, ViaBTC)
If your pool is not listed, use the script above to verify compatibility or contact Braiins support.
What are the bid limits?
Key bid parameters:
| **Parameter** | **Value** |
| -------------- | --------------------------------------------------------------- |
| Minimum speed | 1 PH/s |
| Maximum speed | Unlimited (limited by available hashrate on the market) |
| Minimum budget | 10,000 sats (with speed limit) / 100,000 sats (unlimited speed) |
| Maximum budget | 1 BTC |
Additional parameters like price tick size are available via the `/spot/settings` API endpoint or displayed in the trading interface.
Is there a demo mode?
Yes! You can explore Braiins Hashpower using demo mode:
1. Go to [hashpower.braiins.com](https://hashpower.braiins.com)
2. Click **Account View**
3. Enter `demo` as your API token
Demo mode provides simulated data including:
- Mock account balance
- Sample current and historical orders
- Simulated transaction history
- Full interface functionality
This allows you to learn the platform without risking real funds.
What are the platform fees?
During the BETA period, the **spot bid fee is 0%**. This rate may change after the platform exits BETA status. Spot fees are deducted from the settled amount during hourly settlement as hashrate is delivered to your pool.
**Contracts** carry a **fee** — a premium on top of the FPPS rate — that decreases with contract size (a volume discount). The exact percentage is shown in the [contract quote](/braiins-hashpower/contracts.md#pricing) before you confirm, and is charged through the contract's daily settlement.
For more details, see the [Fees](/braiins-hashpower/fees.md) page.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-hashpower/faqs/contracts.md
---
# FAQ's: Contracts
## Contracts
What is a contract and how is it different from a bid?
A contract buys a **fixed amount of hashrate for a fixed period**, delivered to your pool for a **fee agreed up front**, with **guaranteed delivery** for the whole term. A [spot bid](/braiins-hashpower/trading.md) instead competes in the live order book and delivers a variable amount of hashrate only while it stays matched.
Choose a contract when you want predictable, planned capacity; choose a bid when you want flexible, opportunistic buying. See the [Contracts guide](/braiins-hashpower/contracts.md) for a full comparison.
What speed and duration can I choose, and when can it start?
- **Speed:** 1 to 2,000 PH/s
- **Duration:** 7 days up to \~2 months — pick a predefined length or set your own custom duration
- **Start:** a contract can't start immediately — it begins after a short lead time (at least 5 minutes) and can be scheduled up to 30 days ahead
How is a contract priced?
A contract's price has two parts:
- **Hashrate cost** — the value of the hashrate to be delivered, based on the FPPS rate. This is the underlying cost, not our margin.
- **Fee** — our premium on top of the FPPS rate, shown as a percentage.
The fee follows a **volume discount**: pricing is based on the total shares a contract delivers (speed × duration), so larger and longer contracts pay a **lower percentage** than small, short ones. The full breakdown (hashrate cost, fee, and total) is shown before you confirm.
Is the quoted price final?
The **fee percentage** is fixed for the life of the contract, but the **total is an estimate**. The hashrate cost is based on the FPPS rate, which changes daily, so the amount actually settled each day depends on that day's FPPS rate. The quote shows this estimate together with the funds reserved from your balance up front.
Is delivery guaranteed?
Yes. Contract hashrate has **delivery priority**, so a contract keeps receiving its agreed speed for its entire term regardless of spot-market competition. Your contracted hashrate amount is reserved for you for the whole duration of the contract. Note that delivery still has inherent ramp-up and wind-down latency at the start and end.
How are contracts funded and settled?
When you create a contract, the funds for its **initial period** (currently the first **3.5 days** of delivery) are **reserved** from your available balance, with the fee for that period prepaid; the **reservation fee buffer** for the rest of the contract is reserved as well.
Each day, the previous day's delivery is **settled** — the hashrate actually delivered is charged (hashrate cost + fee) and drawn from the locked funds. Settlement runs at **02:00 UTC**, because it needs the previous day's **FPPS rate to be final**.
After settling, the reservation is topped back up toward its target. If your balance can't cover the full top-up, the system keeps trying and reserves funds as soon as they arrive. See [Funds & settlement](/braiins-hashpower/contracts.md) for the full logic.
What happens if my balance runs low?
The system keeps the contract topped up from your available balance. If it can't reserve enough on a given day, it **keeps looking for funds** and reserves them as soon as you deposit. But if the funds on the contract fall below a safety threshold — currently enough for the next **2 hours** of delivery — the contract is **terminated immediately**. Keep enough available balance to avoid an early end.
What is the reservation fee?
When you create a contract, the fee for its initial period is prepaid, and the fee for the **remaining** (not-yet-delivered) part is held in reserve as the **reservation fee buffer**. As the contract delivers, this buffer is used up. If you **cancel**, what remains of the buffer is charged as the **reservation fee** on the undelivered part. The reservation fee is charged **regardless of whether the contract's delivery has started**.
Can I change a contract after creating it?
No. A contract's terms — speed, duration, start, and destination pool — are **fixed once it's created** and cannot be adjusted. If you need different terms, cancel the contract and create a new one (note that canceling charges the reservation fee — see below).
Can I cancel a contract early?
Yes — what happens depends on whether delivery has started:
- **Before it starts:** the contract is canceled, the **reservation fee** is charged, and the **remaining** funds are released back to your available balance right away.
- **After delivery has started:** delivery winds down, the delivered hashrate is settled, a **reservation fee** applies to the undelivered part (charged from the reservation fee buffer), and the remaining funds are released on the next settlement.
Which pools can I use for a contract?
The same compatibility rules as spot bids apply: your pool must support `extranonce2_size >= 7`. Most BTC pools qualify. See [Pool Compatibility](/braiins-hashpower/faqs/basics.md#pool-compatibility) for details.
Should I test my pool before creating a contract?
Yes — we strongly recommend it. Before committing to a contract, place a small [spot bid](/braiins-hashpower/trading.md) pointed at the **same pool URL and worker** and confirm that hashrate is delivered and accepted correctly. Automatic pool validation runs when you enter a pool, but it can't catch every misconfiguration. Verifying on the spot market first avoids the worst case: finding out about an incompatibility only **after** the contract has started, when fixing it means canceling the contract and paying the reservation fee.
Do I pay for rejected hashrate on a contract?
Yes. As with bids, the buyer is responsible for the configuration of their target pool. If your pool rejects shares due to misconfiguration or low difficulty, the delivered hashrate is still settled. A small inherent rejection rate (\~0.05%) is normal even under optimal conditions.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-hashpower/faqs/trading.md
---
# FAQ's: Trading
## Trading
How do I create a bid?
To create a bid:
1. Log in with your API token in the Account View
2. Click **Create Bid**
3. Enter your **price** (BTC/EH/day)
4. Enter your **budget** (total amount to spend)
5. Optionally set a **speed limit** (max EH/s)
6. Enter your **pool URL** and **worker identity**
7. Confirm via Telegram 2FA
Your bid will appear in the order book and begin receiving hashrate when matched.
What is the speed limit option?
The speed limit lets you cap the maximum hashrate delivered to your pool at any given time. Note that the actual average speed will be slightly lower than the limit.
- **Set to 0 or leave empty**: No limit (unlimited), receive as much hashrate as available
- **Set a value (e.g., 10 PH/s)**: Maximum 10 PH/s delivered at once
This is useful if:
- Your pool has hashrate limits
- You want more consistent hashrate over time rather than bursts
- You're testing with limited capacity
Note: Minimum budget requirements differ based on speed limit — bids with a speed limit require 10,000 sats minimum, while unlimited speed bids require 100,000 sats minimum.
How is price calculated?
Prices on Braiins Hashpower are quoted in BTC/EH/day (default):
- **BTC** = Bitcoin
- **EH** = Exahash (1,000 PH), or more precisely it should be EH/s = Exahash per second
- **day** = 24 hours of hashrate
For example, if the price is 0.45 BTC/EH/day:
- Buying 1 EH/s for 24 hours costs 0.45 BTC (45,000,000 sats)
- Buying 1 PH/s for 24 hours costs 45,000 sats (0.00045 BTC)
The platform also displays equivalent values in sats/PH/day (retail-friendly) and USD/EH/day (fiat reference). You can switch between these formats in the header.
What happens when my bid is matched?
When your bid is matched:
1. Hashrate delivery begins automatically
2. Hashrate flows to your specified pool
3. Your pool receives mining shares
4. Your budget is consumed based on hashrate delivered and price (settled hourly)
5. You can monitor progress in the bid details
The bid continues until your budget is exhausted or you cancel it. Note that matching is continuous — your bid may lose or regain delivery as market conditions change.
Can I modify an existing bid?
Yes, you can modify active bids using the **Edit** action:
- Change the **price** (may affect matching priority)
- Increase the **budget**
- Modify the **speed limit**
You can also use **Move Bid** to quickly update price based on surrounding bids.
**Important:** Any modification to a bid resets its age in the matching queue, making it younger. This can affect your matching priority among bids at the same price.
All modifications require Telegram 2FA confirmation.
How do I cancel a bid?
To cancel a bid:
1. Find the bid in your Current Bids list or the order book
2. Click the **Cancel** action
**Note:** There is a cooldown period after bid creation before it can be canceled.
After cancellation:
- The bid enters "Pending Cancel" status while delivery ends and financial settlement completes (typically 1-2 minutes)
- Unspent budget is returned to your available balance
- Partially filled bids keep the hashrate already delivered
What is the Overbid feature?
There are two overbid features:
**Place Overbid** (from order book): Creates a new bid with a price one tick higher than the selected row.
**Move Bid** (from your bids): Quickly updates your bid price relative to other bids:
- Overbid the next higher price level
- Overbid the next lower price level
- Overbid the bid with the lowest price currently receiving hashrate
Higher prices are matched first, so overbidding can help your bid receive hashrate faster in competitive markets. Note that there is a limit on price decreases (1 change every 10 minutes).
Why was my pool URL rejected?
The platform validates pool URLs before accepting bids. Common rejection reasons:
- **Connection failed**: Pool URL is incorrect or pool is offline
- **Timeout**: Pool did not respond in time
- **Incompatible pool**: extranonce2\_size is less than 7
- **Invalid worker name**: Invalid usernames will be rejected for pools that correctly authorize them. Make sure the username is correct — some pools will consume the hashrate even for invalid usernames without warning.
Verify your pool URL format: `stratum+tcp://hostname:port`
For more details on pool compatibility, see [Pool Compatibility](/braiins-hashpower/faqs/basics.md#pool-compatibility). If your pool is valid but being rejected, contact Braiins support.
What bid statuses exist?
Bids can have the following statuses:
- **Created**: Bid was created and is waiting for activation
- **Active**: Bid is ready for matching; may or may not be receiving hashrate depending on market conditions
- **Paused**: Bid is paused and cannot receive hashrate (usually due to target pool error)
- **Pending Cancel**: Cancellation requested, waiting for delivery end and settlement
- **Fulfilled**: Budget fully consumed
- **Canceled**: Bid was canceled before completion
You can view current bids and bid history separately in the interface.
Why is my bid stuck in a Paused/Active loop?
If your bid keeps switching between **Paused** and **Active** status, the most common cause is that your target pool is providing too low mining difficulty.
Braiins Hashpower works optimally with a pool difficulty of **65,536** (65k). While lower difficulties may work, delivery is not guaranteed.
**Why the loop happens:** The system repeatedly attempts to deliver hashrate to your pool. When the pool provides difficulty below the minimum threshold, delivery fails and the bid is paused. The system then retries, switching the bid back to Active, only to encounter the same issue. In rare cases, delivery may succeed briefly if the pool temporarily assigns higher difficulty.
**Solutions:**
- Check if your pool allows configuring a minimum difficulty (often via worker name suffix, e.g., `username.worker+65536`)
- Contact your pool operator to request higher difficulty for your worker
- If you're running your own pool, reconfigure it to provide higher difficulty (65k recommended)
- Try a different pool that supports higher difficulty settings
If the issue persists, contact Braiins support with your bid ID and pool details.
Do I pay for rejected hashrate?
Yes. The buyer takes responsibility for the quality and configuration of their target pool. If your pool rejects shares due to misconfiguration, stale work, or other issues, you still pay for the hashrate delivered.
There is typically an inherent rejection rate of approximately 0.05% even under optimal conditions, which is normal and expected.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-hashpower/fees.md
---
# Fees
Braiins Hashpower applies fees to trading activity on the marketplace.
## Fee Structure
| **Fee Type** | **Rate** | **Description** |
| ------------ | --------------- | ------------------------------------------------------------------- |
| Spot Bid Fee | 0%\* | Charged continuously from the settled amount during order execution |
\*
_During the beta period, the Spot Bid Fee is set to 0%. This rate may change after the platform exits beta status._
## How Fees Are Applied
The Spot Bid Fee is deducted from the settled amount as hashrate is delivered to your pool. Fees are calculated and applied during the regular settlement intervals (hourly).
**Example:**
- You place a bid with a 1,000,000 sats budget
- Your order is matched and hashrate is delivered
- At each settlement, the fee is calculated on the amount being settled
- With the current 0% BETA rate, no fees are deducted
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-hashpower/quick-start.md
---
# Quick Start
## Overview
This guide will help you quickly set up and begin using Braiins Hashpower to buy Bitcoin mining hashrate.
## Key Terms
📖Vocabulary
Pool MiningMining where multiple miners combine their computational power and share rewards proportionally. Provides consistent, smaller payouts rather than rare large rewards.
Solo MiningMining independently where you receive the entire block reward if you find a block, but nothing otherwise. High variance but potentially high reward. Solo mining services are often called "pools" even though it's not pooled mining.
Pool URLThe Stratum server address of your mining pool (e.g., `stratum+tcp://stratum.braiins.com:3333`). This is where purchased hashrate will be directed.
Worker IdentityYour unique identifier at the mining pool, typically in the format `username.worker_name`. Used to track your mining contributions. For solo mining, the `username` is your BTC wallet address and any rewards will be credited to this address.
Extranonce2 SizeA technical parameter in the Stratum protocol. Pools must support `extranonce2_size >= 7` for compatibility with Braiins Hashpower's hashrate routing. Most BTC pools meet this requirement. Most non-BTC SHA256 pools (BCH, BSV, etc.) have `extranonce2_size=4` and are therefore incompatible.
HashrateThe computational power used for mining, measured in hashes per second. Common units: TH/s (terahash), PH/s (petahash), EH/s (exahash).
ShareA proof of work submitted by a miner to the pool. Shares demonstrate mining effort and are used to calculate reward distribution. Pools estimate miner hashrate by counting all shares over a given time period. One share equals roughly 2³² hashes.
## Prerequisites
Before starting, ensure you have:
- **Telegram**: Required for account verification and bid confirmations
- **Email Address**: For account verification
- **Bitcoin**: BTC funds to deposit for purchasing hashrate
## Quick Steps
### 1. Access the Platform
- Visit [hashpower.braiins.com](https://hashpower.braiins.com)
- The **Market View** displays the live order book and price charts
- You can explore market data without logging in
### 2. Create Your Account
- Click **Sign Up** button
- Complete Telegram verification
- Verify your email address
- You will receive two API tokens: **Owner** (full access) and **Read-only** (view only)
Save your API tokens securely - they cannot be displayed again after initial creation.
### 3. Log In with Your API Token
- Enter your owner token to authenticate and click **Log in**
- Your dashboard will refresh with user details and application tabs will appear
### 4. Deposit Bitcoin
- Copy your assigned Bitcoin deposit address from the Account dashboard
- Send BTC to this address from your wallet
- Deposit more than the minimum bid amount to avoid ending up with an unspendable balance if your bid gets canceled
- Wait for 3 blockchain confirmations before funds are credited
- We screen all incoming transactions for compliance purposes, and deposits flagged as suspicious may be withheld for manual review. Manual review is performed only on working days and can take up to 48 hours.
**Important:** Only deposit coins with clear origin. Funds from questionable sources may be subject to additional verification, which may take even longer. In rare cases, funds may be returned to the sender address. Always deposit from your own wallet, not from an exchange or other custodial service.
### 5. Place Your First Bid
**To buy hashrate on the spot market:**
- Click **Create** in the Orders tab
- Specify your **price** (BTC/EH/day), **budget** (BTC), and optional **speed limit** (PH/s)
- Select or enter a custom **Mining pool URL** (e.g., `stratum+tcp://stratum.braiins.com:3333`)
- Enter the pool's **worker identity** (e.g., `username.worker1`)
- Confirm the bid creation via Telegram when prompted
- Monitor your bid in the **Orders** tab
### 6. Get a Contract Running
**For guaranteed, fixed-term capacity:**
- Open the **Contracts** tab and click **New contract**
- Set the **speed** (PH/s) and **duration**
- Select or enter your **Mining pool URL** (e.g., `stratum+tcp://stratum.braiins.com:3333`) and **worker identity** (e.g., `username.worker1`)
- Review the **quote** — **hashrate cost + fee** — before confirming
- Confirm the contract; the required funds are **reserved** from your balance and delivery starts at the scheduled time
- Track delivery and finances in the **Contracts** tab
- Keep enough funds on your balance to cover the contract's duration — it is topped up from your balance as it runs
A contract is a commitment — make sure you understand the reservation fee before placing the order. If you cancel early, the fee is charged on the undelivered part of the contract. See [canceling a contract](/braiins-hashpower/contracts.md#canceling-a-contract).
See the [Contracts guide](/braiins-hashpower/contracts.md) for full details.
### 7. Try Demo Mode (Optional)
- Use `demo` as the API token to explore the platform
- Demo mode provides simulated data for testing
## Next Steps
Once you're comfortable with the basics:
- Learn about the [Trading Interface](/braiins-hashpower/trading.md) for advanced bid management
- Buy fixed-term, guaranteed capacity with [Contracts](/braiins-hashpower/contracts.md)
- Explore [Solo Mining](/braiins-hashpower/solo-mining.md) with the "Try Your Luck" feature
- Set up [API Integration](/braiins-hashpower/api.md) for automated trading
- Review [Account Management](/braiins-hashpower/account.md) for balance and transaction history
Need help? Contact Braiins support or visit our [FAQ section](/braiins-hashpower/faqs/basics.md) for common questions.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-hashpower/solo-mining.md
---
# Solo Mining
The "Try Your Luck" feature on Braiins Hashpower allows you to quickly purchase hashrate for solo Bitcoin mining, giving you a chance to find an entire block reward.
## What is Solo Mining?
Solo mining means mining Bitcoin independently without sharing rewards with a pool. When solo mining:
- **You keep the entire block reward** if you find a block (currently 3.125 BTC + transaction fees)
- **You receive nothing** if you don't find a block
- **High variance**: Long periods without rewards, but potentially large payouts
Solo mining is essentially an ongoing lottery where your hashrate determines your number of "tickets." It is typically pursued by miners with low-powered hardware, where regular pool mining would not be profitable anyway.
### Solo Mining vs Pool Mining
| **Aspect** | **Solo Mining** | **Pool Mining** |
| ---------------- | ------------------------------------- | ------------------------------- |
| Reward per block | Full block reward (\~3.125 BTC) | Proportional share |
| Payout frequency | Very rare (if ever) | Regular, consistent |
| Variance | Extremely high | Low |
| Best for | Enthusiasts seeking occasional thrill | Miners seeking long-term income |
## Try Your Luck Feature
Braiins Hashpower includes a "Try Your Luck" feature that simplifies solo mining through the hashrate marketplace. Instead of setting up your own solo mining infrastructure, you can purchase hashrate that mines directly to a solo mining destination. The best part is that you can try your luck with much higher hashrate than you could afford to own.
### Context
To put the odds in perspective:
- Operating a [Braiins Mini Miner](https://braiins.com/hardware/mini-miner-bmm-101) (\~1 TH/s) for an entire year gives approximately 0.005% chance of finding a block. At the time of writing, this is roughly equivalent to spending $15 on "Try Your Luck."
- If you spend $10 per week on Try Your Luck, your yearly chance of finding a block is approximately 0.17%.
### Lottery Comparison
How does Try Your Luck compare to traditional lotteries? Assuming \~$500/year spend:
| **Game** | **Years to win** | **Prize** |
| ----------------------- | ---------------- | --------- |
| EuroMillions (jackpot) | \~700,000 | \~$65M |
| Powerball (jackpot) | \~1,170,000 | \~$150M |
| Try Your Luck (1 block) | \~625 | \~$300K |
| Try Your Luck (\~$100M) | \~208,000 | \~$100M |
Finding one Bitcoin block takes roughly **1,000x fewer years** than winning a lottery jackpot, though the prize is smaller.
For similar-sized prizes (\~$300K), the comparison is even more striking:
| **Game** | **Prize** | **Odds per play** |
| ------------------------ | --------- | ----------------- |
| EuroMillions (5+1 Stars) | \~$200K | 1 in 7,000,000 |
| Powerball (Match 5) | $1M | 1 in 11,700,000 |
| Try Your Luck (10k sats) | \~$300K | 1 in 34,500 |
Try Your Luck offers **200-340x better odds** for a comparable prize.
### Solo Mining Tiles
The Market View displays pre-configured solo mining options:
| **Budget Option** | **Approximate Cost** | **Block Find Chance** |
| ----------------- | -------------------- | --------------------- |
| 10,000 sats | \~$9 | \~0.0029% |
| 50,000 sats | \~$45 | \~0.0146% |
_Prices and chances shown are approximate and vary with market conditions._
You can also configure a **custom tile** with your own budget amount.
### Visual Indicators
Solo mining bids have distinct visual elements:
- **Gradient backgrounds** on tiles for easy identification
- **"Solo" badge** indicator on bid listings
- **Block find probability** displayed in real-time
- **Best share found** shown for active and historical solo bids
## How It Works
### Solo Mining Bid Flow
1. **Select Budget**: Choose from pre-configured amounts or create a custom bid
2. **Enter BTC Address**: Provide your Bitcoin address where block rewards will be sent. `Use last` to repeat last address.
3. **Automatic Configuration**: The system configures everything else automatically
4. **Telegram Confirmation**: Confirm the bid via 2FA
5. **Hashrate Delivery**: Purchased hashrate is directed to solo mining
6. **Block Monitoring**: Watch for block discoveries during your session

### Behind the Scenes
When you create a solo mining bid:
- You provide only your **BTC address** — the system handles the rest
- A **worker suffix** is auto-generated for tracking
- Hashrate is sent to **solo.braiins.com** (Braiins Solo mining endpoint) where you can validate the delivery
- **Speed limit** is set for an approximate duration of 2 hours
- **Price** is set one tick above the top of the orderbook (1 sat/PH/day) to ensure fast matching
- If a block is found, the reward goes directly to your BTC address
- After the budget is exhausted, the session ends
Since the price is set one tick above the current top bid, your bid may lose priority if the market moves. You can manually update or cancel the bid at any time.
## Understanding Your Chances
### Probability Calculation
Your chance of finding a block is calculated as:
\text{Chance} = \frac{\text{Total Shares}}{\text{Network Difficulty}}
Where:
-
- = Current Bitcoin network difficulty
### Calculation Example
For a 2.8 PH/s delivery lasting 2 hours at network difficulty of 148T:
\text{Total Shares} = \frac{2.8 \times 10^{15}}{2^{32}} \times (2 \times 3600) = 4{,}693{,}865{,}776
\text{Chance} = \frac{4{,}693{,}865{,}776}{148 \times 10^{12}} = 0.00317\%
### Example Probabilities
These are approximate examples. Actual probabilities vary with network conditions.
| **Hashrate** | **Duration** | **Approximate Chance** |
| ------------ | ------------ | ---------------------- |
| 1 PH/s | 2 hours | \~0.001% |
| 10 PH/s | 2 hours | \~0.011% |
| 100 PH/s | 2 hours | \~0.11% |
| 1 EH/s | 2 hours | \~1.1% |
### The Reality of Solo Mining
- The Bitcoin network has over 1000 EH/s of total hashrate
- Even large solo miners face very low probabilities
- **Treat solo mining as entertainment, not investment strategy**
## Best Share
When solo mining, the platform shows your **best share** — the highest-difficulty share found during your mining session. This gives you a sense of how "close" you came to finding a block. Best shares are displayed as long as the respective worker is tracked by Braiins Solo.
### What is Share Difficulty?
Every hash submitted by a miner has a difficulty value. Most shares have very low difficulty (millions), but occasionally you'll find shares with higher difficulty (billions or even trillions). A share that meets or exceeds the network difficulty would be a valid block.
### Difficulty Scale
Share difficulties are measured in standard SI prefixes:
| **Prefix** | **Value** | **% of 150T Network Difficulty** |
| ---------- | -------------------- | -------------------------------- |
| 1M (Mega) | 1,000,000 | 0.0000007% |
| 1G (Giga) | 1,000,000,000 | 0.0007% |
| 1T (Tera) | 1,000,000,000,000 | 0.67% |
| 10T | 10,000,000,000,000 | 6.7% |
| 100T | 100,000,000,000,000 | 67% |
| 150T+ | ≥150,000,000,000,000 | **100% = Block found!** |
### Interactive Scale
Best ShareNetwork: 150T
MGT150TP
1T(Tera)
0.6667%of network difficulty
1M1G1T150T1P
Great share - significantly above average.
#### Interpreting Your Best Share
- **M range (Mega)
**: Common shares, nothing special
- **G range (Giga)
**: Good shares, above average
- **T range (Tera)
**: Excellent shares! Getting close to block territory
- **10T+
**: Exceptional — within striking distance
- **≥150T
**: Congratulations, you found a block!
Finding a high-difficulty share doesn't increase your future chances — each hash is independent. But it's exciting to see how close you came!
## Creating a Solo Mining Bid
### Using Quick Tiles

1. Navigate to the "Try Your Luck" section (available on Market page, Orders page, or the dedicated Try Your Luck page)
2. Click on your preferred budget tile (10k or 50k sats)
3. Enter your **BTC address** where block rewards will be sent
4. Review the displayed block find chance
5. Confirm via Telegram 2FA
6. Monitor your bid in the Orders tab
### Custom Solo Mining Bid
You can configure a custom tile with your own budget:
1. Click **Custom** in the Try Your Luck section of Orders tab
2. Set your **budget** (total sats to spend)
3. Enter your **BTC address**
4. The system automatically configures price, speed limit, and pool settings
5. Confirm via Telegram 2FA
### Managing Solo Mining Bids
Solo mining bids work like regular bids — you can:
- **Edit** the bid to adjust price or budget
- **Cancel** the bid at any time (unspent budget is returned)
- View **bid details** including best share found and hashrate delivery
### Tips for Solo Mining
1. **Set realistic expectations**: Winning is rare — treat it as a lottery
2. **Use disposable budgets**: Only spend what you're comfortable losing
3. **Monitor market price**: A lower price means more hashrate for the same budget, increasing your chances
4. **Consider timing**: When transaction fees are high, the potential block reward is higher too
5. **Have fun**: The excitement is part of the appeal
6. **Do it yourself**: Create a solo bid manually for full control over price, speed, and duration. Note that the chance to find a block depends only on the total number of shares submitted — whether you mine with 2 PH/s for 10 hours or 20 PH/s for 1 hour, the chances are exactly the same.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-hashpower/trading.md
---
# Trading Interface
## Market View
The Market View is the main dashboard displaying real-time market data. It provides an overview of the current hashrate market without requiring authentication.
Key components of the Market View:
- **Header Bar**: Displays current BTC price, hashprice, and your balance (when logged in). Contains currency switcher for your convenience.
- **Market Statistics**: Current market metrics
- **Solo Tiles**: Quick link to [try your luck](/braiins-hashpower/solo-mining.md) and find your block
- **Order Book**: List of bids and asks aggregated to price levels
- **Price Chart**: Historical price movements in candlestick format

### Order Book
The order book displays all active buy orders (bids) and sell orders (asks) in the market.
#### Understanding the Order Book
| **Column** | **Description** |
| ---------- | ----------------------------------------------------------------------------------------------------------- |
| Price | The price per unit of hashrate (displayed in your selected currency) |
| Limit | Aggregated sum of speed limits of orders on this price |
| Current | Aggregated sum of real hashrate speeds of orders on this price |
| ETA | Estimate after how long the delivery ends based on the remaining order amount, price and current
speed |
#### Order Book Features
- **Price Levels**: Orders are grouped by price level
- **Real-time Updates**: The order book refreshes automatically every 2 seconds as orders are placed and filled
- **Individual bids**: Logged-in users will see their individual bids and quick action icons. Bids are displayed either as sub-rows when the price is shared with others, or as a highlighted row if there is only one bid at that price
- **Bid actions**:
- **Place overbid**: Create a new bid with a price higher than the current row
- **Edit**: Edit the bid (same action as from Orders view)
- **Move Bid**: Quick update of bid price — overbid the next higher, overbid the next lower, or overbid the order with the lowest price currently receiving hashrate. Note: there is a limit on price decreases (1 change every 10 minutes)
- **Cancel**: Cancel the bid

### Price Charts
The trading interface includes interactive price charts for market analysis.
#### Chart Features
- **Candlestick Display**: OHLCV (Open, High, Low, Close) data visualization
- Open - price at the start of the interval
- High - highest price during the interval
- Low - lowest price during the interval
- Close - price at the end of the interval
- **Time Intervals**: Select different time periods for analysis
- **Volume Bars**: Trading volume displayed below the price chart
#### Reading the Chart
- **Green Candles**: Price increased during the period (close > open)
- **Red Candles**: Price decreased during the period (close \< open)
- **Wicks**: Show the high and low prices during the period
- **Volume**: Height of bars indicates trading activity

## Orders View
The Orders View is where you create and manage your bids. It requires authentication.

### Creating Bids
To create a bid for hashrate:
#### Bid Parameters
| **Field** | **Description** | **Example** |
| --------------- | ------------------------------------------------------------------------------- | ---------------------------------------- |
| Price | Price you're willing to pay per 1 EH/s delivery lasting 1 day (EH/day) | 0.45 BTC/EH/day |
| Budget | Total amount you want to spend | 0.01 BTC |
| Speed Limit | Maximum hashrate speed to receive (actual average speed will be slightly lower) | 10 PH/s (0 or empty for unlimited) |
| Pool URL | Your mining pool's Stratum address. You can choose from a list or enter custom | `stratum+tcp://stratum.braiins.com:3333` |
| Worker Identity | Your worker name at the pool | `username.worker1` |
#### Bid Creation Process

1. Click **Create Bid** in the Account View
2. Fill in the bid parameters (use the quick links for faster filling)
3. Review the USD conversion values displayed inline
4. The system validates your pool URL connectivity
5. Confirm the bid via Telegram 2FA
6. Your bid appears in the order book
Price values are automatically rounded to the market's tick size. You'll be notified if your entered price is adjusted.
#### Pool Validation
When creating a bid, the platform validates your pool URL by:
- Testing Stratum connection to the specified pool
- Checking protocol compatibility (`extranonce2_size` >= 7 required)
- Displaying validation results before bid submission
### Listing Bids
#### Current Bids
List of bids in Created, Active, Paused, or Pending Cancel status. Shows:
- Bid ID — unique bid identifier
- Optional SOLO identifier (when mining to Braiins Solo) and best share found
- Price — price user is willing to pay for a unit of hashrate
- Budget — amount user is willing to spend
- Limit/Speed — defined speed limit / actual speed of the delivery
- Created — when the bid was created
- ETA — estimate of remaining duration calculated from price, current speed, and remaining budget
- Progress — percentage of budget already spent on delivered hashrate
- Actions — quick actions in context of the selected bid
#### Bid History
List of bids in Fulfilled or Canceled status. Shows the same attributes as Current Bids, except:
- Bid ID — unique bid identifier
- Optional SOLO identifier (when mining to Braiins Solo) and best share found
- Price — price user is willing to pay for a unit of hashrate
- Budget — amount user is willing to spend
- Speed — average speed throughout the duration of the bid
- Status — terminal status of the bid
- Created — when the bid was created
- Duration — time difference between terminal status (Fulfilled or Canceled) and Created status
- Progress — how much of the budget was spent. Note: even a fulfilled bid can show e.g. 95% as the remaining funds are too small to be reasonably spent
- Actions — quick actions in context of the selected bid
### Managing Bids
#### Bid Quick Actions
From the order book or your bids list, you can perform quick actions:
| **Icon** | **Action** | **Description** | **Available in** |
| ---------------------------------------- | ------------- | ---------------------------------------------------------------- | ------------------------------------------ |
|
| Edit | Modify price, speed limit, or increase budget of an existing bid | Market (Order Book), Orders (Current Bids) |
|
| Move | Quickly update price based on surrounding bids | Market (Order Book) |
|
| Cancel | Cancel the bid | Market (Order Book), Orders (Current Bids) |
|
| Place Overbid | Place a bid one tick higher than the selected row | Market (Order Book) |
|
| Copy | Duplicate the bid configuration to create a new bid | Orders (Current Bids, Bid History) |
#### Bid Statuses
- **Created**: Bid was created and is waiting for activation
- **Active**: Bid is ready for the matching algorithm; once matched, it will receive hashrate
- **Paused**: Bid is paused and cannot receive hashrate (usually due to target pool error)
- **Pending Cancel**: Cancellation requested, waiting for end of hashrate delivery and financial settlement
- **Fulfilled**: Bid has been completely filled
- **Canceled**: Bid was canceled before completion
#### Bid Details
For active and historical bids, you can view:
- **Speed Chart**: Visualization of hashrate delivery over time, including rejected hashrate
- **Basic information**: Current status, timestamps
- **Hashrate**: All hashrate-related data, including accepted and rejected shares
- **Financials**: All finance-related data, including spent and remaining budget
- **History**: Status history. Bold text marks attributes that changed from the previous status.
## Currency Display Options
The platform supports three currency display modes, accessible via the toggle in the header:
| **Mode** | **Price Display** | **Use Case** |
| -------- | ------------------------------ | ----------------------------------------------------- |
| BTC/EHs | Bitcoin per Exahash per day | Large-scale operations, default pricing of the market |
| sats/PHs | Satoshis per Petahash per day | Retail friendly pricing |
| USD/EHs | US Dollars per Exahash per day | Fiat reference pricing |
Your currency preference is saved and persists across sessions. Order creation and update mixes pricing in BTC/EHs and speed in PH/s. USD prices are for reference only.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/agent/agent-migration.md
---
# Migrate Braiins Manager Agent to the Newest Generation
## Overview
Braiins Manager Agent **v4.0.0+** introduces a new **Rust-based architecture** with significantly improved performance, reduced resource usage, and better stability. Follow the steps below to migrate your existing Node.js-based Agent to the latest version.
## Migrate Braiins Manager Agent
Linux
Windows
### Update Braiins Manager Agent on Linux
Make sure you have access to the server where the Agent is installed.
1. Open the terminal on your server.
2. Copy and execute the migration script:
```bash
curl -sSL https://dev-manager.braiins.com/agent/migrate-agent.sh -o migrate-agent.sh && sudo bash ./migrate-agent.sh
```
3. Follow the interactive steps in the terminal. The script will:
- Stop the Node.js agent.
- Uninstall it safely.
- Install the Rust-based agent.
- Preserve your settings and configuration.
4. Once migration is complete:
- Open the Agent UI to verify that it's running.
- In Braiins Manager, go to the [Locations page](https://dev-manager.braiins.com/provider-view/locations), click "Confirm Update", and verify that the Agent version has changed to v4.0.0+.
### Update Braiins Manager Agent on Windows
Make sure you have access to the server where the Agent is installed.
1. Open PowerShell as Administrator on your server.
2. Run the migration script:
```powershell
powershell -ExecutionPolicy Bypass -Command "& {iwr https://dev-manager.braiins.com/agent/migrate-agent.ps1 -UseBasicParsing | iex}"
```
3. Follow the guided instructions in PowerShell. The script will:
- Stop the Node.js agent.
- Uninstall it safely.
- Install the Rust-based agent.
- Preserve your settings and configuration.
4. Once migration is complete:
- Open the Agent UI to verify that it's running.
- In Braiins Manager, go to the [Locations page](https://dev-manager.braiins.com/provider-view/locations), click "Confirm Update", and verify that the Agent version has changed to v4.0.0+.
## Troubleshooting & Support
If you encounter any issues during the migration, please [contact our support team directly](/braiins-manager/support.md).
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/agent/linux-installation.md
---
# Braiins Manager Agent - Linux Installation
## Overview
This guide covers the installation of the **Braiins Manager Agent** on **Linux** to manage communication between your mining devices and Braiins Manager.
## Prerequisites
Before starting, ensure the following:
- **Server**: A server running Ubuntu/Debian or another Linux distribution. For hardware details, visit our [prerequisites page](/braiins-manager/prerequisites.md).
- **Admin Access**: Root or sudo privileges to install and configure the agent.
- **Agent ID**: Generated when creating a location in Braiins Manager.
- **Secret Key**: A unique key created when a new Location is added, used to authenticate the Agent with Braiins Manager.
The Secret Key is displayed only once during the creation of a Location. After that, it is hidden for security reasons. If you lose access to the key, you will need to **reset the Secret Key** in the Location details to generate a new one.
## Installation Steps
To install the Braiins Manager Agent on **Linux**, follow these steps:
### 1. Create a New Location
Create a new Location in the Braiins Manager UI.
### 2. Download the Installer
Download the installer from the Locations page in the Braiins Manager UI.
or directly from the Braiins [downloads portal](https://downloads.braiins.com/braiins-manager-agent/).
### 3. Install the Agent
We recommend using the terminal for installation to ensure you're prompted to enter the **Agent ID** and **Secret Key**.
```bash
sudo apt install ./DEB_FILE
```
Replace `DEB_FILE` with the actual `.deb` file name. During installation, the terminal will prompt you to enter your **Agent ID** and **Secret Key**.
Installing via **Linux Software Install (GUI)** may sometimes skip the credential prompts. To avoid incomplete configuration, use the terminal method shown above.
### 4. Verify That the Agent Is Online
Verify that the agent is online by checking its status on the Locations page in the Braiins Manager UI.
## Troubleshooting and Support
If you encounter any issues during installation, refer to our [troubleshooting guide](/braiins-manager/troubleshooting.md) or [contact Braiins support](/braiins-manager/support.md) for further assistance.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/agent/locations.md
---
# Locations
## Overview
The **Locations** component in Braiins Manager serves as a digital representation of the physical sites where mining operations occur. It helps organize miners by geographic location for more effective monitoring and management. Users can assign a **base rate per kilowatt hour** and a **security percentage** to track power consumption and integrate this data into [energy reports](/braiins-manager/energy-reports.md). This ensures detailed energy monitoring, efficient resource allocation, and location-specific reporting, optimizing both operational visibility and billing accuracy.
Each location also generates a **Braiins Manager Agent ID** for agent setup.
## Location Details
When creating a location, you'll be prompted to provide:
- **Name of the location**: Descriptive label for easy identification.
- **Geographical region**: Location of the facility (Optional).
- **Base rate per kilowatt-hour (kWh)**: Energy cost associated with the facility (Optional).
- **Capacity**: Maximum power capacity of the location in MW (Optional).
- **Power security percentage**: A customizable percentage used to account for energy measurement accuracy, explained below (Optional).
- **Internal description**: Optional details for internal use (Optional).
## Power Security Percentage
The **Power Security Percentage** is a unique feature of Braiins Manager that helps account for potential discrepancies in measured energy consumption. This percentage adjusts the kWh numbers generated by Braiins Manager's energy reports to improve accuracy. It can also be used to include power used for non-mining components, like cooling systems, in the overall energy calculation.
## Location and Braiins Manager Agent
When you create a location, it automatically generates an associated instance of the **Braiins Manager Agent ID**, which is tied to that location and you are prompt to install **Braiins Manager Agent**, see [here](/braiins-manager/agent/linux-installation.md).
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/agent/management.md
---
# Braiins Manager Agent - Management
## Overview
Agent management differs based on the version you are using:
- **Agent v4.0.0+** includes a built-in Graphical User Interface (GUI) for convenient configuration and control directly from the desktop.
- Agent **v3.x** is managed via the command line using PM2 process manager commands.
Refer to the appropriate section below based on your installed agent version.
## Agent Management
Agent v4.0.0+ (Rust)
Agent v3.x (Node.js)
Update Agent ID & Secret Key
If you need to reassign the agent to a different location or reconfigure its credentials.
Stop Agent Service
Use the **State** toggle in the GUI to temporarily stop the agent. You can reactivate it later using the same switch. Activation and deactivation are persistent. Make sure to reactivate the agent when needed.
Disable Autostart
Toggle **Autostart** off in the GUI to prevent the agent from starting automatically on system boot. For a good experience, we do not recommend disabling it.
Download Logs
Click the **Download Logs** button in the GUI to export a ZIP archive containing the agent's logs for diagnostic purposes.
Agent Auto-Update
If a newer version of the agent is available, the GUI will notify you. Click the **Update** button to download and apply the latest version.
See more in the [Upgrade & Uninstallation Guide](/braiins-manager/agent/upgrade-uninstallation/index.md#upgrade-on-linux).
Commands Concurrency
Starting with **Agent v4.3.0**, you can fine-tune how many commands are processed in parallel to optimize speed and stability.
### What is Concurrency?
Concurrency controls how many commands the agent executes simultaneously. Adjusting these values helps balance:
- Fast execution (higher concurrency)
- Gradual execution (lower concurrency), useful for staged resumes or reducing power spikes
### Default Values
```yaml
pause_concurrency: 250 # For pause commands
resume_concurrency: 50 # For resume commands
concurrency: 250 # For all other commands
```
These defaults work well for up to 5,000 miners in typical environments.
### Configuring Concurrency
To customize, edit the agent's `daemon.yml` config file and add the `commands` section:
```yaml
commands:
pause_concurrency: 250
resume_concurrency: 50
concurrency: 250
```
### Estimate Execution Time
T = \frac{N}{k} \cdot \frac{X}{1000}Where:
- **N** = number of miners
- **k** = concurrency
- **X** = average execution time (ms)
- **T** = estimated total duration (seconds)
**Example:**
For 5,000 miners, 1s per command, and `resume_concurrency = 50`:
T = \frac{5000}{50} \cdot \frac{1000}{1000} = 100 \text{ seconds}### Or calculate needed concurrency
If you want to determine the **concurrency required** to complete execution within a target time **T**:
k = \frac{N \cdot X}{T \cdot 1000}### Quick Reference
| Concurrency | Execution Time (5,000 miners @ 1s) |
| ----------- | ---------------------------------- |
| 50 | 100 s |
| 100 | 50 s |
| 250 | 20 s |
| 500 | 10 s |
| 1000 | 5 s |
### Best Practices
- Stick with defaults unless specific use cases require tuning.
- Lower `resume_concurrency` for smoother, but slower, startup.
The **Braiins Manager Agent** in version **Agent v3.x or lower** is a NodeJS application that acts as an interface between Braiins Manager's backend and your mining hardware. It runs as a service managed by [PM2](https://pm2.io/docs/runtime/overview/), a process manager that ensures the agent operates smoothly. Although Braiins Manager automates the management of PM2, users can still control the agent using PM2 commands for troubleshooting or maintenance.
**Key PM2 Commands:**
- **Start the Agent**:
```bash
pm2 start /path/to/pm2.config.js
```
Starts the Braiins Manager Agent from within the installation folder represented in the command as `/path/to/`.
- **List Running Processes**:
```bash
pm2 list
```
Lists all running processes managed by PM2.
- **Restart a Process**:
```bash
pm2 restart /path/to/pm2.config.js
```
Restarts the PM2 process and forces an Agent configuration update from within the installation folder represented in the command as `/path/to/`.
- **Stop and Delete a Process**:
```bash
pm2 delete [id]
```
Stops and removes the specified process from the PM2 list.
- **Save Process State**:
```bash
pm2 save
```
Saves the current state of all PM2 processes to be restored after a reboot.
- **Restore Saved Processes**:
```bash
pm2 resurrect
```
Restores all processes saved by pm2 save.
- **Enable PM2 at Startup**:
```bash
pm2 startup
```
Ensures PM2 and the saved processes start automatically on system boot.
- **View Logs**:
```bash
pm2 logs --lines [numberOfLines] [id]
```
View logs for a specific process, with `[id]` being the process ID and `[numberOfLines]` specifying how many lines of logs you want to view.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/agent/overview.md
---
# Braiins Manager Agent Overview
## Overview
The **Braiins Manager Agent** is a crucial part of the system, serving as the communication link between your mining hardware and the Braiins Manager backend. The agent runs locally, offering real-time monitoring, control, and automation for your miners.
In **April 2025**, Braiins introduced a new generation of the Agent (version **4.0.0**), written in **Rust**. This version replaces the legacy Node.js-based Agent (**3.x.y**), offering improved performance, stability, simple installation, and native Agent GUI support.
**Download Braiins Manager Agent v4.0.0+** and view changelog at:
[https://downloads.braiins.com/braiins-manager-agent/](https://downloads.braiins.com/braiins-manager-agent/)
## Key Features
- **Data Collection**: Periodically collects important statistics data from all miners for monitoring and reporting purposes.
- **Miner Management**: Enables bulk [management of miners](/braiins-manager/workers/workers-list.md), including actions such as rebooting, changing pool configurations, and pausing or resuming mining activities.
- **Single Location Support**: Each agent is associated with one [location](/braiins-manager/agent/locations.md) within Braiins Manager.
## Location and Agent Setup
Before installing the agent, you must create a [Location](/braiins-manager/agent/locations.md) in Braiins Manager. Once the location is created, a unique **Agent ID** is generated for that location. This ID is used to link the agent during installation.
## Setup Steps
1. **Create a Location**: Go to the [Locations](/braiins-manager/agent/locations.md) section to create a new location.
2. **Obtain Agent ID and Secret Key**: After the location is created, you'll receive the **Agent ID** and **Secret Key**. Agent ID and Secret Key are used in Braiins Manager installation to securely authenticate and link the mining device to your Braiins account for remote management.
3. **Install the Agent**: Use the Agent ID and Secret Key during installation to configure the agent for the location. For server prerequisites, refer to [Prerequisites page](/braiins-manager/prerequisites.md#1-hardware-requirements). Linux is preferred for running agent, see Linux [installation guide](/braiins-manager/agent/linux-installation.md). In case you prefer Windows, see Windows [installation guide](/braiins-manager/agent/windows-installation.md).
## Status Monitoring
Once installed, monitor the agent's status in the [Locations menu](https://manager.braiins.com/provider-view/locations). If the **Last Online** time is less than 5 minutes, the agent is operating correctly. If it exceeds 5 minutes, there may be a connectivity issue.
## Running Multiple Agents
While you can technically run multiple agents on a single server, we **recommend** running **one agent per server** to avoid server overload and ensure stable performance.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/agent/upgrade-uninstallation.md
---
# Upgrade & Uninstall Braiins Manager Agent
## Overview
This guide provides steps to upgrade or uninstall the Braiins Manager Agent on both Linux and Windows. Follow the appropriate commands for your operating system.
## Upgrade on Linux
Agent v4.0.0+ (Rust)
Agent v3.x (Node.js)
When a new version of the Agent is available, you'll be notified in two places:
- In the **Braiins Manager UI** on the **Locations** page.
- In the **Braiins Manager Agent GUI** on your server.
You can upgrade the Agent either from the GUI or via the CLI.
### Upgrade from the GUI
1. Go to the server where the Agent is installed.
2. Open the **Braiins Manager Agent** app.
3. Click the **Upgrade** button when prompted.
4. Wait for the upgrade to complete.
5. Once finished, return to the **Locations** page in Braiins Manager and **refresh the page** to see the updated version.
### Upgrade from the CLI
1. Download the latest Agent package for your Linux device architecture:
```bash
wget https://downloads.braiins.com/braiins-manager-agent/assets/latest/braiins-manager-agent-linux-x86_64.deb
```
or
```bash
wget https://downloads.braiins.com/braiins-manager-agent/assets/latest/braiins-manager-agent-linux-aarch64.deb
```
2. Install the downloaded package:
```bash
sudo apt install ./braiins-manager-agent-linux-x86_64.deb
```
or
```bash
sudo apt install ./braiins-manager-agent-linux-aarch64.deb
```
3. Return to the [Locations](https://manager.braiins.com/provider-view/locations) page in Braiins Manager and refresh the page. The new version will be displayed on the Agent card.
To upgrade the Agent on Linux, run the following command in your terminal:
```bash
bash <(curl -sSL https://manager.braiins.com/agent/update.sh)
```
This will download and apply the latest version of the Agent.
## Upgrade on Windows
Agent v4.0.0+ (Rust)
Agent v3.x (Node.js)
When a new version of the Agent is available, you'll be notified in two places:
- In the **Braiins Manager UI** on the **Locations** page.
- In the **Braiins Manager Agent GUI** on your server.
To upgrade the Agent:
1. Go to the server where the Agent is installed.
2. Open the **Braiins Manager Agent** app.
3. Click the **Upgrade** button when prompted.
4. Wait for the upgrade to complete.
5. Once finished, return to the **Locations** page in Braiins Manager and **refresh the page** to see the updated version.
To upgrade the Agent on Windows, open PowerShell as an Administrator and execute the following command:
```powershell
powershell -ExecutionPolicy Bypass -Command "& {iwr https://manager.braiins.com/agent/update.ps1 -UseBasicParsing | iex}"
```
This will download and apply the latest version of the Agent.
## Uninstall from Linux
Agent v4.0.0+ (Rust)
Agent v3.x (Node.js)
To uninstall the Agent from Linux, open your terminal and execute the following command:
```bash
sudo apt purge braiins-manager-agent
```
Confirm with `Y` when prompted.
To uninstall the Agent from Linux, open your terminal and execute the following command:
```bash
bash <(curl -sSL https://manager.braiins.com/agent/uninstall.sh)
```
This command will remove the Braiins Manager Agent and all related files from your Linux server.
## Uninstall from Windows
Agent v4.0.0+ (Rust)
Agent v3.x (Node.js)
To uninstall the Agent:
1. Open **File Explorer**.
2. Navigate to the folder where the Agent is installed. It is usually in: `C:\Program Files\BraiinsManagerAgent`.
3. Double-click the file named **uninstall.exe**.
4. Follow the prompts in the uninstaller to complete the removal.
For Windows, run the following command in PowerShell with Administrator privileges:
```powershell
powershell -ExecutionPolicy Bypass -Command "& {iwr https://manager.braiins.com/agent/uninstall.ps1 -UseBasicParsing | iex}"
```
This PowerShell command will uninstall the Braiins Manager Agent from your Windows machine, removing all associated files.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/agent/windows-installation.md
---
# Braiins Manager Agent - Windows Installation
## Overview
This guide covers the installation of the **Braiins Manager Agent** on **Windows 11** to manage communication between your mining devices and Braiins Manager.
Windows versions
**older than Windows 11**
are not recommended.
## Prerequisites
Make sure you have:
- **Server**: A server running complete version **Windows 11** (no stripped-down editions). For hardware details, visit our [prerequisites page](/braiins-manager/prerequisites.md).
- **Agent ID**: Created when you set up a location in Braiins Manager.
- **Secret Key**: A unique key created when a new Location is added, used to authenticate the Agent with Braiins Manager.
The Secret Key is displayed only once during the creation of a Location. After that, it is hidden for security
reasons. If you lose access to the key, you will need to **reset the Secret Key** in the Location details to
generate a new one.
## Installation Steps
To install the Braiins Manager Agent on **Windows**, follow these steps:
### 1. Create a New Location
Create a new Location in the Braiins Manager UI.
### 2. Download the Installer
Download the installer from the Locations page in the Braiins Manager UI.
or directly from the Braiins [downloads portal](https://downloads.braiins.com/braiins-manager-agent/).
### 3. Run the Installer
Extract the downloaded file and run the installer by double-clicking the downloaded file and follow the on-screen instructions.
### 4. Enter Agent ID and Secret Key
When prompted, enter your **Agent ID** and **Secret Key**.
### 5. Complete the Installation
Choose the installation location (or leave the default path) and complete the installation process.
### 6. Verify the Agent Is Running
After installation, the Agent GUI should launch automatically. The agent will also appear in the apps list and system tray.
### 7. Check the Agent Status
Verify that the agent is online by checking its status on the Locations page in the Braiins Manager UI.
## Troubleshooting and Support
If you encounter any issues during installation, refer to our [troubleshooting guide](/braiins-manager/troubleshooting.md) or [contact Braiins support](/braiins-manager/support.md) for further assistance.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/controlflow.md
---
# Controlflow
## Overview
**Controlflow** is the rule-based automation engine in Braiins Manager. You define rules that combine **targets**, optional **conditions**, and an **action**. Controlflow evaluates rules on a schedule or on a polling interval and applies the action to every qualifying worker.
Controlflow supports two rule types:
- **Scheduled Rules**: Time-based. Run once or recur on a daily, weekly, or monthly schedule. Conditions are optional.
- **Trigger Rules**: Interval-based. Poll on a fixed cadence (15, 30, 45, 60 minutes, or a custom 2 to 12 hour interval). Conditions are optional for most actions and required for the **Do Nothing** action.

Common automation patterns include scheduled curtailment, thermal protection, pool-drift correction, and automated customer assignment after onboarding.
## Access and Permissions
Controlflow is part of the Pro Plan. Providers without an active subscription see a promotional page instead of the Controlflow UI.
- **Provider Admin** can self-start a time-limited trial and has full access to Controlflow across the provider account.
- **Provider Account with access to the Controlflow component** can use Controlflow within their permitted Locations. Some users are restricted to a single Location; those users can only target that Location and the Groups and Racks inside it.
| Action | Provider Admin | Provider |
| -------------------------------------------- | -------------- | -------------------------------- |
| View rules, history, upcoming events | Yes | Yes |
| Create / edit / delete rules | Yes | Yes (within permitted Locations) |
| Enable / disable a rule | Yes | Yes (within permitted Locations) |
| Reorder rule priorities | Yes | Only if not Location-restricted |
| Skip or re-enable an individual upcoming run | Yes | Yes |
| Start Pro Plan trial | Yes | No (must contact admin or sales) |
If a rule targets a Location you do not have access to, editing and status changes for that rule are blocked.
## Key Concepts
- **Rule**: The top-level automation object. Has a name (max 48 characters), an active flag, one or more targets, an optional timezone, and a priority.
- **Event**: A sub-unit of a rule that pairs a start time (Scheduled) or polling slot (Trigger) with an action and optional conditions. A rule may have **up to 5 events**.
- **Target**: The set of workers the rule applies to. Multiple target types on a single rule are intersected: a worker must match all target criteria to be eligible.
- **Condition**: An optional filter applied at execution time. Workers that fail the conditions are excluded from the action.
- **Action**: The operation Controlflow performs on qualifying workers.
- **Priority**: A numeric rank from **1 to 1000** that determines execution order when multiple rules fire in the same polling window. **Lower numbers run first.**
- **Execution Window**: The look-back used when evaluating numeric conditions. **Immediate** uses the most recent value (up to 7 minutes old); a rolling window of **10 to 60 minutes** (in 5-minute steps) supports Average, Median, Min, or Max aggregation.
- **Invalid Configuration**: A flag set automatically on a rule when a Location, Customer, Group, Rack, or license preset it references is deleted. The rule is auto-disabled. The flag does not clear automatically; you must edit and re-save the rule.
- **Rule History**: An immutable log of executions. Retained for **2 months**.
## Create a Rule
1. Open **Controlflow** from the main navigation.
2. Click **Add Trigger Rule** or **Add Scheduled Rule**.
3. Enter a **name** (up to 48 characters).
4. Select one or more [targets](/braiins-manager/controlflow.md#targets).
5. For a Scheduled Rule, pick a **timezone**. For a Trigger Rule, pick a **polling frequency**.
6. Add up to **5 events**. Each event has its own [action](/braiins-manager/controlflow.md#actions), optional [conditions](/braiins-manager/controlflow.md#conditions), and (for Scheduled Rules) a start time and optional recurrence.
7. Optionally configure [aggregation gating, per-device execution limits, and notifications](/braiins-manager/controlflow.md#aggregation-limits-and-notifications) per event.
8. Review the **Targeted Device Count** preview - the form shows a live count of workers that match the current target configuration.
9. Save the rule. It becomes active immediately.
### Trigger Rules
Trigger Rules poll on a fixed cadence and act when the targets (and any conditions) match at that moment. Available frequencies:
- **15, 30, 45, or 60 minutes**
- **Custom interval from 2 to 12 hours** (must be a multiple of 60 minutes when above 60)
Trigger run slots are pre-generated **2 days ahead** and replenished daily by a background job.
### Scheduled Rules
Scheduled Rules execute at specific calendar times. Each event can be:
- **One-time** at a specific date and time, or
- **Recurring** daily, weekly on chosen weekdays, or monthly on a chosen day, with a configurable repeat interval.
Scheduled run slots are pre-generated **31 days ahead** and replenished daily.
Each event in a rule must have a unique start time, and Scheduled events must have a start time in the future at save time.
### Duplicate Detection
Two rules with the same type, targets, action, and timing are treated as duplicates. The second save is rejected.
## Targets
A rule must have at least one target. When multiple target types are added, they are **intersected** - a worker must satisfy all criteria to be eligible.
Available target types:
- **Locations**
- **Customers**
- **Sitemap Groups** (from the [Sitemap](/braiins-manager/sitemap.md))
- **Sitemap Racks**
- **Device Models**
- **IP Ranges**
- **Firmware Type** (Braiins OS or stock)

A **location-restricted Provider** has their Location automatically injected into the target calculation, so the preview always reflects only their permitted scope.
## Actions
The available actions are:
- **Pause Mining**
- **Resume Mining**
- **Reboot Device**
- **Set Performance Mode** (stock firmware only)
- **Set Power Target (BraiinsOS)** (Braiins OS only)
- **Set Pool Configuration**
- **Assign Customer**
- **Apply License (BraiinsOS)** (license-based, Braiins OS only)
- **Check License (BraiinsOS)** (Braiins OS only)
- **Do Nothing** (notification-only - requires at least one condition)
**Firmware-specific actions** auto-append a firmware filter to the target list. For example, **Set Power Target (BraiinsOS)** forces a Braiins OS firmware target even if you set a different firmware type as a target. Picking a stock-firmware action against a Braiins OS-only target set will leave no eligible workers.
A **location-restricted Provider** can only use license presets assigned to their Location.
## Conditions
Conditions filter workers at execution time so the action runs only against the subset you want. Conditions are optional for normal actions; the **Do Nothing** action requires at least one condition.
### Numeric Conditions
Apply thresholds to live telemetry. Available metrics:
- **Power** (W)
- **Temperature** (degrees)
- **Hashrate** (TH/s)
For each numeric condition, you choose:
- **Operator** (greater than, less than, between, etc.)
- **Threshold** value
- **Execution Window** - **Immediate** (last reported value, up to 7 minutes old) or a rolling window of **10 to 60 minutes** in 5-minute steps, with **Average**, **Median**, **Min**, or **Max** aggregation.
If no telemetry point exists within the look-back window, the worker is treated as **no match** and excluded from the action.
Avoid the **Equals** operator for numeric conditions - it evaluates to TRUE only when the metric matches the threshold exactly. Use inequality operators (greater than, less than, between) for real-world scenarios.
### Status and Lifecycle Conditions
- **Is Under Curtailment** - workers currently in an active [Curtailment](/braiins-manager/curtailment.md) window.
- **Customer Is Not** - excludes one or more specific customers.
- **Agent Is Offline** - workers attached to a Location whose [Agent](/braiins-manager/agent/overview.md) is currently offline.
- **Pool Configuration Is Different** - workers whose active pool configuration does not match a specified desired pool set.
- **Hashing Status Transition** - workers that have transitioned from a chosen "from" status to one of the chosen "to" statuses within the evaluation window, with no intermediate transitions in between.
- **License State** (Braiins OS only) - workers in a specific Braiins OS license state.
### Time Range (Trigger Rules only)
The **Time Range** condition gates the entire trigger run by a daily window relative to the rule's timezone. If the current time is outside the window, the run is skipped entirely; workers are not individually filtered.
## Aggregation, Limits, and Notifications
These three controls are configured per event and shape _when_ and _how often_ an action runs.
### Aggregation Gating
Aggregation gating evaluates after conditions have been applied. The action runs only if the matching worker set satisfies a threshold:
- **Count** - the number of matching workers meets a threshold.
- **Percentage** - the ratio of matching workers to all targeted workers meets a threshold.
- **Load** - the combined power draw (MW) of matching workers meets a threshold.
If the gate fails, the run still moves to history with an affected-worker count of zero. If zero workers match the conditions, the action is not executed.
### Per-Device Execution Limit
Limit how many times a worker can receive the action per day, from **1 to 96**. A worker that has already received the action the allowed number of times in the current day is excluded from further runs until the daily reset.
### Notifications
You can attach a **Telegram bot** recipient to an event. Notifications fire only when at least one worker was affected. Configure recipients in **Settings > Integrations** before referencing them here.
Telegram is currently the only supported notification channel.
## Priority and Conflict Resolution
When multiple rules fire in the same polling cycle, Controlflow resolves overlap as follows:
1. Sort rules by priority (lowest number first), then by rule creation timestamp, then by event index.
2. Execute rules in that order.
3. A worker acted on by a higher-priority rule is **excluded** from lower-priority rules in the same cycle. (Other workers in the lower-priority rule's set are still processed.)
This avoids double-execution while still letting independent rules act on disjoint worker sets.
### Reorder Priorities
To change the order:
1. Click **Change Priority** on the Rules tab.
2. A drag-and-drop modal lists all rules ordered by current priority.
3. Reorder and save. Priorities update atomically; duplicate priorities are rejected.
Reordering is available to Provider Admins and to Providers who are not Location-restricted.
## Manage Rules
The **Rules** tab is the main place to view and manage your automations.

From the Rules tab you can:
- Search and filter rules by state, type, frequency, action, Location, or Customer.
- Toggle a rule **active** or **inactive** (a confirmation modal appears for the disable direction).
- Edit, clone, or remove rules.
- Open a quick-view panel with full rule details.
### Enabling and Disabling
- On **enable**: future runs are regenerated for Trigger Rules; existing future runs are re-activated for Scheduled Rules. Re-enabling a Trigger Rule **discards** any pre-generated stale runs and regenerates them from the current moment, avoiding backlog catch-up.
- On **disable**: all future runs are marked inactive and will not execute.
### Invalid Configuration
If a rule references a resource that is later deleted (Location, Customer, Sitemap Group or Rack, license preset), Controlflow:
1. Auto-disables the rule.
2. Sets the **Invalid Configuration** flag.
3. Writes a warning event to the provider event log.
The flag does not clear when the underlying issue is fixed - edit the rule, adjust the broken reference, and re-save to clear it.
## Upcoming Events
The **Upcoming Events** tab is a calendar view of pending Scheduled and Trigger run slots.

- The view spans a date range of **up to 5 days** (past or future).
- Click a run to see its rule, targets, action, and conditions in a quick-view panel.
- **Skip** an individual upcoming run to prevent it from executing without disabling the whole rule. A skipped run stays visible in the calendar and can be **re-enabled** before it fires.
## History
The **History** tab logs every rule execution.

Each entry records the rule name, action, affected-worker count, frequency, and timestamp. From the tab you can:
- Filter by date range, action type, Location, Customer, rule type, or affected-workers flag.
- Search by rule name.
- Open the **per-worker drilldown** to see the individual workers acted on for recent runs (worker ID, IP, and MAC for each).
History records are retained for **2 months**, after which a background job removes them.
## Real-World Examples
Common patterns customers run with Controlflow:
- **Scheduled curtailment**: Pause and resume mining around known energy-tariff windows; combine with [Curtailment](/braiins-manager/curtailment.md) for price-driven shutdowns.
- **Reactive thermal protection**: A Trigger Rule that pauses mining or reduces power when temperature exceeds a threshold, with a per-device daily execution limit to avoid loops.
- **Underperforming worker reboot**: A Trigger Rule that reboots workers whose hashrate is below target _and_ whose temperature is within safe limits, capped at a daily execution count.
- **Pool-drift correction**: A Trigger Rule using the **Pool Configuration Is Different** condition with **Set Pool Configuration** as the action.
- **Automated customer assignment**: A Scheduled Rule that runs once after onboarding to assign workers to a Customer by IP range or Location.
- **Coordinated maintenance**: Scheduled Rules that pause and resume mining for a targeted Group or Rack during a maintenance window.
More patterns on the Braiins blog:
- [Introducing Controlflow: Advanced Automation in Braiins Manager](https://braiins.com/blog/introducing-controlflow-in-braiins-manager)
- [Controlflow Update: New Trigger Rules](https://braiins.com/blog/braiins-manager-controlflow-new-trigger-rules)
## Best Practices
- **Start small.** Build a rule against one Location or a single Group, watch it run for a cycle or two, and then widen the scope.
- **Use conditions to prevent unnecessary work.** A Trigger Rule with no conditions will act on every targeted worker each cycle.
- **Set per-device execution limits** on Trigger Rules that issue heavy actions (reboot, set power target) to avoid runaway loops.
- **Check firmware compatibility.** Some actions are firmware-specific and will short-circuit if your target set has no matching workers.
- **Watch priorities.** Two rules that target overlapping worker sets should have meaningful priority ordering, otherwise execution within a cycle is determined by creation timestamp.
- **Re-save rules after deletions.** When you remove a Location, Customer, Group, Rack, or license preset, any rule referencing it is auto-disabled with an Invalid Configuration flag - edit and re-save to clear it.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/curtailment.md
---
# Curtailment
## Overview
**Curtailment** in Braiins Manager enables users to pause mining activity to manage energy consumption, either during planned maintenance, high energy price periods, or in response to signals from Curtailment Service Providers (CSPs).
Curtailments are managed through the [Curtailment page](https://manager.braiins.com/curtailment), where users can view upcoming and previous dispatches.
There are four main types of curtailment:
- **Immediate Actions**: Users can manually pause or resume mining.
- **Scheduled Curtailment**: Users define specific time periods for curtailment.
- **CSP API Dispatch**: Curtailment triggered by third-party CSP signals.
- **Strike Price**: Curtailment is triggered when the day-ahead energy price exceeds the defined strike price. See more [here](/braiins-manager/strike-price.md).
## Immediate Action
This type of curtailment allows users to trigger an immediate **Pause** or **Resume** of mining activities. To apply this, go to the [Curtailment page](https://manager.braiins.com/curtailment) and click the "Action" button. From there, miners can be selected using filters such as **Location** or **Customer**. This option provides flexibility to pause or resume mining based on real-time needs, like energy price spikes or maintenance events.
## Scheduled Curtailment
With scheduled curtailment, users can define their own custom schedules to automatically pause or reduce mining activity during specified times. This feature allows you to set start and end times for curtailment events, enabling precise control over when curtailment will occur. By pre-planning these schedules, you can ensure that energy consumption is minimized during peak periods or when electricity prices are high, all while maintaining operational flexibility.
### How to Use Scheduled Curtailment:
1. Click the "Create Schedule" button.
2. Name the curtailment event.
3. Select the miners from the Workers list that will participate.
4. Choose the start date and time for the curtailment.
5. Choose the end date and time for the curtailment.
## Curtailment API Integration
**API Integration** enables seamless communication with Curtailment Service Providers (CSPs). Through the **Curtailment API**, miners receive real-time signals from CSPs, automating load adjustments based on demand.
### How to Use Curtailment API Integration:
1. Navigate to the **Curtailment** tab and click **Connect API**.
2. Select your CSP from the list or request integration with a new CSP.
3. Input the required credentials, and the system will automate curtailment based on API signals.
### Supported Curtailment Service Providers
Braiins Manager supports integration with the following CSPs:
- [Enel](https://www.enelnorthamerica.com)
- [CPower](https://cpowerenergymanagement.com)
- [Voltus](https://www.voltus.co)
- [Scioto](https://scioto.com)
## Strike Price Curtailment
Strike Price Curtailment in Braiins Manager automatically pauses mining when electricity prices exceed a user-defined threshold (strike price), and resumes mining when prices fall below that threshold. This helps miners avoid high energy costs while maintaining profitability. See [this page](/braiins-manager/strike-price.md) for more information.
## Monitoring Curtailment Events
The **Curtailment Dashboard** allows you to track all curtailment activities, including upcoming, active, and historical events. The dashboard provides insights such as:
- Curtailment type (manual, via [CSP API](https://manager.braiins.com/curtailment/api), or via [Strike Price](https://manager.braiins.com/provider-view/strike-price/energy-price))
- Start and end times
- Duration of curtailment
- Affected location(s)
- Customer participation
In addition, the **Power Graph** in the [Dashboard page](/braiins-manager/dashboard.md#4-time-series-data) shows power consumption over time, highlighting periods of curtailment. Active curtailments are indicated by a notification in the top-right corner of the user interface.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/customers.md
---
# Hosting Customer
## Overview
A **Hosting Customer** is a client of a [Provider](/braiins-manager/overview.md#1-providers) hosting their mining hardware. These customers can request an account and access from the provider. Once granted access, they can monitor and manage their fleet through various features in Braiins Manager. The full range of available features is detailed below.
The availability of features depends on the permissions set by the hosting provider. This page describes features
with full permissions; actual access may vary.
## Customer Features
### 1. **Monitoring & Control**
Through the [Dashboard](/braiins-manager/dashboard.md), customers can monitor real-time and historical data about their mining fleet's performance, including metrics like **hashrate**, **power consumption**, and **worker statuses**.
### 2. **Fleet Management**
The [Workers](/braiins-manager/workers/workers-list.md) section provides a comprehensive overview of all your devices. If allowed by your hosting provider, you can also perform essential actions on your miners, such as restarting, changing pools, or enabling/disabling hash power.
### 3. **Energy & Billing**
View detailed [Energy Reports](/braiins-manager/energy-reports.md) to understand energy consumption costs. Your hosting provider's [Price Tiers](/braiins-manager/price-tiers.md) may also apply, allowing you to benefit from discounted rates based on consumption.
### 4. **Team Management**
Customers can create accounts for colleagues to help monitor and manage the fleet. With **account permissions**, you control who has access to specific features or miners.
## How to Create A Customer?
Before enabling any hosting features, providers must first create customers in Braiins Manager. Here's how to create a new customer:
1. Navigate to **Customers** in the left-hand panel.
2. Click **Add Customer**.
3. Enter the required information: first name, last name, username, email, and password.
Once completed, you can provide the customer with their login credentials, allowing them to access Braiins Manager in **Hosting Customer** mode.
## Permissions for Customers
[Hosting providers](/braiins-manager/overview.md#1-providers) can configure permissions for each customer, including:
- **Energy Reports**: Allow or prevent daily automated [energy reports](/braiins-manager/energy-reports.md).
- **Commands**: Allow or restrict customers from [performing actions on their workers](/braiins-manager/workers/workers-list.md), such as pool changes or restarting miners.
Disabling energy reports only stops automatic generation of reports. It does not prevent customers from viewing
energy data on the dashboard.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/dashboard.md
---
# Dashboard
## Overview
The **Dashboard** in Braiins Manager serves as the **overview page**, displaying critical **KPIs** (Key Performance Indicators) and **time-series stats** that provide near real-time insights into the performance of your mining fleet. Data is refreshed **every 5 minutes** to ensure you have the most up-to-date information.
## Key Features
### 1. Monitoring
Track key metrics such as **hashrate**, **power consumption**, **temperatures**, and **uptime** for your miners, with data refreshed **every 5 minutes**.
### 2. Worker Status Overview
- Identify issues like offline miners or performance drops.
- Review miner status, modes, and models.
- The Dashboard is interactive: clicking on a miner model, status, or mode redirects you to the [Workers list](/braiins-manager/workers/workers-list.md) with pre-filtered devices.
### 3. Notifications
Receive notifications from scan results (see [Scanner](/braiins-manager/scanner.md) component) and [Controlflow](/braiins-manager/controlflow.md), displayed directly in the dashboard.
### 4. Time-Series Data
- Zoom in to analyze specific time periods for detailed metrics.
- Compare daily performance for operational insights.
- Note: Time-series data has a 20-minute delay for data freshness.
## How to Use the Dashboard
1. **Navigation**: Access the Dashboard from the left-hand panel.
2. **Filters**: Customize your view using filters to focus on specific mining algorithms or locations.
3. **Interactivity**: Click on miner models, statuses, or modes to view the corresponding filtered [Workers list](/braiins-manager/workers/workers-list.md).
4. **Zoom-in**: Select sections of the statistics graphs to zoom in on specific details.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/energy-reports.md
---
# Energy Reports
## Overview
**Energy reports** provide near real-time data on mining hardware's power consumption, refreshing every 5 minutes. This is crucial for managing energy efficiency in mining operations. Reports are automatically generated and include detailed metrics such as **nominal vs. actual power consumption**, **uptime**, and **energy costs**.
## Provider Energy Reports
As a [provider](/braiins-manager/overview.md#1-providers), you receive **daily** and **monthly energy reports** that track energy consumption for all hardware under your management. Reports include:
- **Aggregated data** for customers.
- Filters for **type** (Daily, Monthly, or Custom) and **status** (Generated, Outdated, or New).
- Power consumption comparisons (**nominal** vs. **actual**) and energy cost breakdowns.
Providers can access energy data under the **Power** section of each customer's profile.
## Customer Energy Reports
[Hosting customers](/braiins-manager/overview/index.md#2-hosting-clients) can view energy consumption data for their fleet under the **Energy Reports** tab. Key features include:
- **Uptime** tracking per miner.
- Overview of **nominal** vs. **actual** energy consumption.
- Export options for generating **CSV or PDF reports**.
- Filters for report **type**, **status**, and time periods.
Customers receive tailored reports detailing the energy consumption of their miners, helping to maintain operational transparency.
## Energy Reports and Payments
Energy reports also serve as the foundation for **automated Web3 payments**, generating invoices based on the energy used by each miner. These reports ensure accurate billing for energy costs and directly relate to [Price Tiers](/braiins-manager/price-tiers.md) and **kWh rates** within Braiins Manager.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/issue-tracker.md
---
# Issue Tracker
## Overview
The Issue Tracker is a component in Braiins Manager designed to manage and track issues efficiently within mining data centers. It allows to create, monitor, and resolve issues, ensuring smooth daily operations.
Issues can be viewed and managed exclusively by [Providers](/braiins-manager/overview/index.md#1-providers). The component is accessible from the left navigation bar.

## Issue Creation
To create a new issue, click the "Add New Issue" button. The user needs to provide the following information:
- **Title**: A brief name for the issue
- **Description**: A detailed explanation of the issue (Optional)
- **Devices**: List of devices affected by the issue, with links to those devices (Optional)
- **Category**: Category of the problem, aiding in the easy navigation and segmentation of issue types
- **Diagnosis**: Issue diagnosis to pinpoint the problem's source (Optional)
- **Assignee**: Issue assignment to a Provider (account) responsible for the issue
- **Due Date**: Due date for resolving the issue (Optional)
- **Priority**: Priority level of the issue
- **Status**: Current status of the issue
- **Add Attachment**: Option to attach files to the ticket, maximum 10 files, up to 50MB each (Optional)
## Issue List
The main page of the Issue Tracker displays a list of all issues. Users can sort issues by other attributes and apply filters as needed.
## Viewing and Editing Issues
Users can view an issue by clicking on its _Title_ or _ID_, which opens the issue in a detailed view.
In the detailed view, users can edit the issue by double-clicking on the relevant fields. This allows for quick edits to the following fields:
- Title,
- Description,
- Assignee,
- Priority,
- Category,
- Diagnosis,
- Assignee,
- Due Date.
Users can also attach files or modify assigned Workers post-creation.
## Commenting on Issues
Users can add comments to issues by entering text in the comment section while the issue is open. Submitted comments are displayed at the bottom of the ticket, along with the commenter's information and a timestamp. All comments can be scrolled through for review.
## Issue Tracker Integration with Workers
On the Worker detail page, a notification bar at the top of the screen displays all associated active issues. Active issues are those with a status other than Draft, Cancelled, or Done.

## Permissions
The Main Provider can manage team members' permissions, including access to the Issue Tracker feature. If enabled, the account holder can create, view, comment on, and edit issues. If disabled, the account holder cannot access or interact with issues.

---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/limitations.md
---
# Compatibility and Platform Scope
## Compatibility and Platform Scope
Braiins Manager is designed for flexibility and scalability across a wide range of mining operations. This page outlines the current compatibility of supported devices, systems, and features.
### Supported Devices
- **Manufacturers**:
- Bitmain Antminers (Bitcoin and altcoin miners)
- MicroBT Whatsminers (Bitcoin miners)
- Avalons (Bitcoin miners)
- IceRivers (altcoin miners)
Altcoin miners are supported on a **best-effort basis**. While Braiins Manager provides basic functionality for
these devices, full compatibility and stability **are not guaranteed** due to the lower overall demand for altcoin
miner support.
- **Firmware**:
- Stock Firmware
- [Braiins OS](https://braiins.com/os-firmware)
Devices and firmware outside of the listed manufacturers and versions are currently unsupported.
### Supported Operating Systems
- **Recommended**:
- Linux (Ubuntu/Debian-based distributions) for stable and efficient operations.
- Windows 11 is also supported.
- **Not Recommended**:
- Windows versions older than Windows 11.
- Stripped-down versions of Linux distributions that lack essential utilities.
### Feature Compatibility
- **Custom Firmware**:
- Currently supports only Stock Firmware and Braiins OS. Other custom firmware is not supported.
- **Curtailment (CSP Integration)**:
- Limited to Curtailment Service Providers (CSPs) with API support:
- Enel
- CPower
- Voltus
- Scioto
- Additional CSP integrations are planned but not yet available.
- **Strike Price Curtailment**:
- Currently supports **Day-Ahead Market (DAM)** prices for the following energy markets:
- ERCOT
- PJM
- Nord Pool
- If you're looking for support for a different energy market, please fill out the request form [here](https://help.braiins.com/en/support/tickets/new).
- **Automated Worker Addition**:
- Requires properly configured Scanner settings for auto-detection. Manual intervention may be needed for devices with unrecognized variants.
### Performance and Scalability
- **Server Requirements**:
- Ensure server specifications align with the number of miners. For details, see [Prerequisites](/braiins-manager/prerequisites.md).
- **Device Capacity Guidelines**:
- Current recommendations:
- Up to 1,000 miners: Raspberry Pi or equivalent.
- 5,000+ miners: Dedicated mid-range servers.
### Platform Transition Notes
- **Sitemap**:
- Old Sitemap remains available but will be deprecated in upcoming months.
### Future Improvements
We are actively working to expand support for additional manufacturers, firmware, and CSPs.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/overview.md
---
# What is Braiins Manager?
## Overview
Braiins Manager offers an all-in-one solution for managing both small and large mining operations. It provides **real-time monitoring**, **batch management**, **curtailment solutions**, **automation** of routine tasks, and **energy reporting**, simplifying the complexities of data center management.
With an intuitive interface, it supports automated processes, power optimization, and fleet management across various locations, ensuring seamless and efficient mining operations.

## How Braiins Manager Works
Braiins Manager operates through integration with the [Braiins Manager Agent](/braiins-manager/agent/overview.md), a complementary software installed locally at the mining data center. The Agent collects real-time data from mining hardware and relays it to the Braiins Manager web application. This setup enables users to remotely monitor and manage their mining fleet, ensuring efficient operation and performance. Through the app, users can manage everything from fleet monitoring to power management and routine tasks automation, keeping full control over their infrastructure remotely.

## Target Users of Braiins Manager
Braiins Manager is a comprehensive platform designed for two key user types:
- Providers
- Hosting Clients
### 1. Providers
Providers are datacenter operators who either:
- **Self-Mine**: Managing their own mining devices.
- **Host Customers**: Offering services for third-party [customers](/braiins-manager/customers.md) who own mining hardware.
#### Benefits for Providers:
- **Centralized Management**: Easily manage thousands of devices with [batch management](/braiins-manager/workers/workers-list.md), [monitoring](/braiins-manager/dashboard.md), [automation](/braiins-manager/controlflow.md), and [issue tracking](/braiins-manager/issue-tracker.md).
- **Scalability**: Manage operations from small farms to enterprise-level datacenters with features like [Sitemap](/braiins-manager/sitemap.md).
- **Energy and Cost Efficiency**: Monitor [energy consumption](/braiins-manager/energy-reports.md), optimize uptime, and reduce costs via [curtailment](/braiins-manager/curtailment.md) integration, which minimizes energy costs during peak demand times by working with Curtailment Service Providers (CSPs). Maximize profitability with [Price Adapt](/braiins-manager/price-adapt.md), which automatically keeps miners running at the most profitable power target based on energy prices.
- **Client Management**: Easily manage [customers](/braiins-manager/customers.md) and their [mining devices](/braiins-manager/workers/workers-list.md) with seamless [account](/braiins-manager/customers.md#how-to-create-a-customer) tools.
- **Team Management**: [Set up accounts](/braiins-manager/user-interface/index.md#3-settings) for team members with specific permissions.
### 2. Hosting Clients
Hosting clients are customers of a **Provider** hosting their mining hardware.
#### Benefits for Hosting Clients:
- **Performance Monitoring**: Access [near real-time data](/braiins-manager/dashboard.md) on the health and performance of hosted devices.
- **Device Management**: [Manage hosted devices](/braiins-manager/workers/workers-list.md) (if permissions are granted), including actions like rebooting and pausing.
- **Energy and Financial Transparency**: View detailed [energy reports](/braiins-manager/energy-reports.md) for operational costs.
- **Pool Reporting**: Verify that pool payouts align with actual performance.
- **Team Management**: [Create accounts](/braiins-manager/sign-up/index.md#creating-hosting-client-accounts) for colleagues to allow them to access Braiins Manager with equal permissions.
## Key Capabilities of Braiins Manager
Braiins Manager includes a wide range of features tailored to both **Providers** and **Hosting Clients**:
| **Capability** | **For Providers** | **For Hosting Clients** |
| ------------------------------------------------------------------------------ | -------------------------------------------- | ------------------------------------- |
| [Monitoring](/braiins-manager/dashboard.md) | Monitor total/individual performance | Monitor performance of hosted devices |
| [Batch Management](/braiins-manager/workers/workers-list.md) | Bulk manage devices | Manage hosted devices, if allowed |
| [Sitemap](/braiins-manager/sitemap.md) | Visualize device locations across facilities | N/A |
| [Curtailment](/braiins-manager/curtailment.md) | Automate downtime, reduce energy costs | N/A |
| [Price Adapt](/braiins-manager/price-adapt.md) | Mine at the most profitable power target | N/A |
| [Strike Price Curtailment](/braiins-manager/strike-price.md) | Avoid mining when energy prices surge | N/A |
| [Issue Tracking](/braiins-manager/issue-tracker.md) | Track and resolve worker issues | N/A |
| [Triggers](/braiins-manager/triggers.md) | Automate routine tasks | N/A |
| [Controlflow](/braiins-manager/controlflow.md) | Automate routine tasks | N/A |
| [Scanner](/braiins-manager/scanner.md) | Automatically scan and add miners | N/A |
| [Account Management](/braiins-manager/sign-up/index.md#managing-team-accounts) | Manage teams and hosting clients | Create team accounts |
| [Energy Reports](/braiins-manager/energy-reports.md) | Detailed energy usage management | Monitor energy consumption |
## Key Use Cases
Braiins Manager is adaptable to a wide range of mining operations:
1. **Large-Scale Self-Mining Operations**: Providers benefit from tools like [batch management](/braiins-manager/workers/workers-list.md), [Sitemap](/braiins-manager/sitemap.md), and [Curtailment](/braiins-manager/curtailment.md) or [Issue Tracking](/braiins-manager/issue-tracker.md) and more for efficiency.
2. **Large-Scale Self-Mining Operations**: Providers benefit from tools like [batch management](/braiins-manager/workers/workers-list.md), [Sitemap](/braiins-manager/sitemap.md), [Curtailment](/braiins-manager/curtailment.md), [Price Adapt](/braiins-manager/price-adapt.md), and [Controlflow](/braiins-manager/controlflow.md) automation or [Issue Tracking](/braiins-manager/issue-tracker.md) and more for efficiency.
3. **Hosting Providers**: Manage [client](/braiins-manager/overview.md#2-hosting-clients) devices and operations with full real-time control and customer management tools.
4. **Small to Medium-Sized Operations**: Use Braiins Manager [automation](/braiins-manager/triggers.md) and [monitoring features](/braiins-manager/dashboard.md) to improve efficiency without a large team.
5. **Small to Medium-Sized Operations**: Use Braiins Manager [automation](/braiins-manager/controlflow.md) and [monitoring features](/braiins-manager/dashboard.md) to improve efficiency without a large team.
6. **Hosting Clients**: Monitor device performance, operational costs, and energy consumption through Braiins Manager [monitoring](/braiins-manager/dashboard.md) and [energy reports](/braiins-manager/energy-reports.md) features.
Recommended next step
### Want to validate the setup before you move forward?
Talk to sales if you are choosing products for a larger site, comparing rollout options, or deciding how this should fit into the rest of your mining stack.
[Talk to sales](https://braiins.com/contact-sales)[See Braiins OS](https://braiins.com/os-firmware)
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/prerequisites.md
---
# Prerequisites
Before using Braiins Manager, ensure the following requirements are met:
## 1. Hardware Requirements
The [**Braiins Manager Agent**](/braiins-manager/agent/overview.md) is lightweight and efficient, running on various hardware, including single-board computers and MiniPCs. It supports both ARM and AMD64 architectures. Use the following specifications as a guideline based on the number of machines managed by a single agent:
Up to 1,000 Machines
- **Raspberry Pi 5** or similar
- 4GB RAM
- 32GB SSD
Up to 5,000 Machines
- **Raspberry Pi 5 with ZRAM compression enabled**
- 4GB RAM (upgrade to 8GB for larger IP range scans) - 32GB SSD
Up to 15,000 Machines
- **2-Core Mid-Range CPU with Hyperthreading**
- 8GB RAM
- 32GB SSD
Up to 35,000 Machines
- **4-Core Mid-Range CPU with Hyperthreading**
- 16GB RAM
- 32GB SSD
50,000 Machines or More
- **6-Core Mid-Range CPU with Hyperthreading**
- 24GB RAM
- 32GB SSD
## 2. Network Requirements
- **Network**: A stable internet connection with at least **1 Mbps per 100 miners** is required.
- **Device Communication**: Ensure all mining devices can communicate with the Braiins Manager Agent over the network.
## 3. Software Requirements
- **Operating System**: Linux-based systems are recommended; however, Windows 11 is also supported.
- **Braiins Manager Agent Installation**: Install the agent on your server following the appropriate [Linux](/braiins-manager/agent/linux-installation.md) or [Windows](/braiins-manager/agent/windows-installation.md) installation guide.
## 4. Permissions
- Ensure you have administrative access to install the Braiins Manager Agent and modify network configurations.
For any questions, join our community on [Telegram](https://t.me/BraiinsManager) or submit a support request [here](https://help.braiins.com/en/support/tickets/new).
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/price-adapt.md
---
# Price Adapt
## Overview
**Price Adapt** is a profitability optimization engine in Braiins Manager. It dynamically evaluates each miner's net mining profitability and automatically applies the most profitable action available for that miner at the time.
Price Adapt bases these decisions on:
- **Hashprice**
- **Energy price**
- **Miner efficiency**
Price Adapt uses this profitability logic to pause mining when no profitable setting is available and automatically resume mining when economic conditions improve. With supported Braiins OS miners, it can also evaluate each miner model's efficiency curve and select the most profitable **power target** for each hour.
This dynamic power targeting is a large part of Price Adapt's value and requires the granular power control provided by Braiins OS firmware. For this reason, Price Adapt works best with supported miners running [Braiins OS](https://braiins.com/os-firmware).
Price Adapt is currently under active development. The interface, supported capabilities, and recommended workflows may change as the feature improves.
## How Price Adapt Works
Price Adapt evaluates profitability per hour and per miner using a **Net Profit** model:
```text
Margin (USD/MWh) = Mining Revenue + Tolerance − Energy Price
Net Profit (USD/hour) = Margin × Power Draw (MW)
```
For each hour, Price Adapt evaluates each miner model's efficiency curve against energy price and hashprice, computes each power setting's **hourly Net Profit** (its per-MWh margin multiplied by its power draw), and selects the setting with the highest hourly Net Profit. If no setting is profitable, the miner is curtailed (paused) for that hour.
Multiplying by power draw is what makes the decision price-aware: in cheap hours, higher power settings win even though they are less efficient per MWh; as the energy price rises, the optimum walks down the efficiency curve, and near breakeven the most efficient setting wins. Comparing the per-MWh margin alone would always favor the most efficient setting regardless of price.
### Breakeven and Tolerance
Price Adapt estimates mining revenue from the 7-day average hashprice and miner efficiency. The **breakeven energy price** is the energy price where that estimated revenue exactly matches the miner's electricity cost:
```text
Breakeven Energy Price (USD/MWh) =
(hashprice_usd_per_th_per_day * 3.6 * 10^9) / (efficiency_j_per_th * 24 * 3600)
```
**Tolerance** shifts the profitability threshold Price Adapt uses across **both** curtailment and power-target decisions. (Tolerance was previously labeled "Breakeven Energy Price Adder"; the sign convention is unchanged.)
- **Positive Tolerance**: biases Price Adapt to **mine more aggressively** -> curtails later (useful when you accept more mining exposure, e.g., expecting BTC appreciation).
- **Negative Tolerance**: biases Price Adapt to be **more conservative** -> curtails earlier (useful to account for additional site operating costs beyond miner power consumption). A practical example: if your site pays X USD/MWh of volumetric delivery charges (e.g., TDSP charges in ERCOT) on top of the energy price, set Tolerance to −X so all decisions reflect your all-in energy cost instead of the wholesale price alone.
### Day-ahead scheduling
Price Adapt uses **Day-Ahead Market (DAM)** pricing. A daily planning cycle builds the next day's plan: for each hour, Price Adapt computes the most profitable power target for every supported miner model and schedules pauses, resumes, and power-target changes accordingly.
## Device Support and Available Actions
The available actions Price Adapt can take depend on the miner's firmware and model:
- **Supported Braiins OS miners:** miners running Braiins OS whose model is supported by the physics-based efficiency model. Price Adapt can overclock, underclock, pause, or resume these miners to find the most profitable operating point each hour.
- **Stock firmware and unsupported models:** stock-firmware miners, or Braiins OS miners whose model is not yet supported. Price Adapt can pause and resume these miners based on profitability, but does not adjust their power target.
The Add/Edit Price Adapt Profile modal shows a Braiins OS / Stock FW breakdown of the targeted devices so you can see how many of your selected miners support power-target optimization.
Power-target optimization applies to supported miners running Braiins OS. Stock firmware devices can still use Price Adapt for automatic pause and resume actions based on profitability.
## How Price Adapt Improves Mining Economics
Bitcoin mining economics are increasingly sensitive to both mining revenue and electricity price volatility. While hashprice may remain relatively stable, power markets can move sharply within a very short time. In markets such as **ERCOT**, scarcity events can push electricity prices to extreme levels, quickly erasing mining margins or turning mining unprofitable.
Price Adapt helps protect those margins by automatically aligning hashing runtime — and, for supported miners, power draw — with expected profitability. It uses Day-Ahead Market pricing together with miner efficiency and hashprice to identify hours when mining is no longer economically justified. When the expected power price rises above the profitability threshold, Price Adapt curtails mining or reduces power. When economics improve again, it resumes or increases power automatically.
This is especially valuable for fleets that include older-generation miners such as the **Antminer S19j Pro**, where profitable operating windows can be much narrower during high-price events. More efficient models, such as newer **Antminer S21** units, can benefit as well, because intelligent curtailment and power-target tuning improve overall fleet efficiency and reduce exposure to the most expensive hours.
In internal analysis covering **October 2024 to October 2025**, Price Adapt was projected to improve profit by approximately **$26,400 per MW** for an **Antminer S19j Pro** in the analyzed scenario.
Price Adapt is not designed to maximize uptime at any cost. Its goal is to maximize economically justified uptime.
The graph below shows the energy price from October 2024 to October 2025. The blue line represents the `ERCOT LZ_WEST` day-ahead energy price, while the dashed red line indicates the breakeven energy price for an Antminer S19j Pro. Mining is unprofitable when the energy price is above the dashed red line.

## Set Up Price Adapt
### 1. Connect Market Prices
Price Adapt currently supports Day-Ahead Market prices for **ERCOT** and **PJM**. Follow these steps to connect market prices for each location before creating a Price Adapt profile:
1. Open **Price Adapt** in Braiins Manager.
2. Go to the **Energy Prices** tab.
3. Click **Add Energy Price Configuration**.
4. Select:
- **Location**
- **Energy Market** (ERCOT or PJM)
- **Market Type** (Day-Ahead)
- **Region** or **pNode ID** (based on market selection)
5. Set the **Location Capacity \[MW]** if your site has a power cap. This field is pre-filled from the Location if it is already defined, and is saved back to the same Location record.
6. Save the configuration.
- One Energy Price configuration is allowed per location.
- If a location already has Market Prices configured in **Strike Price Curtailment**, the same configuration is automatically available in **Price Adapt**.
- **Location Capacity** is shared with the Location page — editing it in either place updates the same value. Price Adapt uses it as a hard cap on the total scheduled power draw for the site and applies changes from the next scheduling cycle.
- If you select an unsupported market or market type, the form switches to **Submit Request** mode so you can request support.

### 2. Create a Price Adapt Profile
1. Open the **Price Adapt Profiles** tab.
2. Click **Add Price Adapt Profile**.
3. Configure:
- **Name**
- **Location**
- **Tolerance (USD/MWh)**
- **Price Adapt Targets** (Customer, Device Models, IP Range, Group, Rack, Firmware Type)
4. Review the **Targeted Devices** count and the Braiins OS / Stock FW breakdown shown next to it.
5. Save and enable the profile.
- Profile names must be unique within the selected location.
- At least one target is required, and each target type can be used once per profile.
- When multiple profiles target the same device, the profile with the **lower Tolerance** (more conservative) applies.
- Profile changes affect the **next planning cycle** and do not retroactively change already planned/running curtailments.

### 3. Enable or Disable a Profile
- Use the profile toggle in the list view.
- Disabling a profile does **not** cancel already planned or currently running curtailments. Remove those manually in **Curtailment** if needed.
## Price Adapt Chart
The Price Adapt chart helps you understand when and why curtailments happen.
Main series and markers:
- **Energy Price (USD/MWh)**: The Day-Ahead Market electricity price used for evaluation.
- **Active profit threshold**: The currently active profitability threshold (breakeven adjusted by Tolerance).
- **Next-cycle threshold**: The threshold prepared for the upcoming planning cycle after recent profile changes.
- **7-Day Hashprice Average (USD/PH/Day)**: Smoothed hashprice input used in the profitability calculation.
- **Curtailment periods**: Time windows where the energy price is above the active threshold and Price Adapt plans pause actions.
- **Curtailment planning marker**: Vertical marker showing the next scheduler run that plans new curtailments.
Chart filters:
- **Location**
- **Price Adapt Profile**
- **Miner Model**
The curtailment chart shows **curtailment events only** — pause and resume decisions. Power-target adjustments (overclock/underclock) are **not** reflected here. To review power-target adjustments, see the **Events History** tab.

## Upcoming Events and Skipping Hours
The **Upcoming Events** tab shows the next day's plan produced by the day-ahead scheduler — one row per scheduled future hour per profile, up to roughly 34 hours of lookahead.
Each row includes the date/time, location, energy market, region, market type, profile, hashprice, energy price, Tolerance, **Estimated Impact**, and **Status**:
- **Estimated Impact** summarizes the planned action counts for the hour — for example `↑13 ↓244 ⏸100 ▶12` (overclock, underclock, pause, resume). Hover to see the labeled breakdown. Estimated Impact reflects the day-ahead plan and does not reconcile later runtime state changes.
- **Status** is one of **Scheduled**, **To Skip**, or **Ongoing** (the currently running hour).
### Skipping an hour
Use **Skip Event** on a future hour to stop Price Adapt from issuing **any** planned commands (pause, resume, or set power target) for that hour. Skipped miners simply stay in the state they were in at the end of the previous hour. Skipping an hour also deactivates the corresponding planned Curtailment entry so both surfaces stay consistent, and is recorded in Events History as "Skipped by user."
You can undo a skip with **Resume Event** any time before the hour begins. Once the hour is running or has passed, the action is hidden and the status can no longer be changed.
Skip is scoped to Price Adapt's own day-ahead plan. It does not cancel manual worker commands, Controlflow curtailments, or actions from other sources. Skipping is per-hour, per-profile — not per-miner.
## Events History
The **Events History** tab is an audit log of **realized** scheduled hours — one row per realized hour per profile. Future hours are not shown here (use Upcoming Events for those).
Columns include date/time (in your account timezone), location, energy market, region, market type, profile, 7-day average hashprice, energy price, Tolerance, and **Impact**. Impact counts only the miners whose state **changed** relative to the previous realized hour, broken down into overclocked, underclocked, paused, and resumed; hover the cell to see the labeled counts.
Filters include **Location** and **Price Adapt Profile** (multi-select with search) and an **Impact** filter offering "With Affected Workers" and "Without Affected Workers." The table is sortable and paginated (20 rows by default, with 10 and 50 options).
Events History records are retained for **2 months**. Older records are removed automatically by a daily cleanup job.
## Monitoring and Logs
Price Adapt actions are visible across Braiins Manager:
- **Worker Details -> Logs -> Executed Commands**
- `Pause Mining`, `Resume Mining`, and `Set Power Target: X W` entries, each shown with `Executed by: Price Adapt`.
- Each entry records the time, the miner state after the command, the command text, the executor, and the response (success/failure).
- When a miner already matches the scheduled target, the redundant command is suppressed and no log entry is created for that hour.

- **Curtailment tables**
- Price Adapt-triggered entries appear in the list, history, and next-runs tables.

This gives full visibility into planned, running, and finished Price Adapt actions.
## Access and Permissions
Price Adapt visibility and usage depend on permissions:
- The **Price Adapt** page-access permission controls whether Price Adapt appears in navigation for sub-accounts.
- Users also need access to the relevant **Locations** to configure Energy Prices and Price Adapt Profiles, and to set Location Capacity.
- Viewing Curtailment tables, worker logs, and Events History follows your existing **Curtailment** and **Workers** access.
If Price Adapt is not visible, verify account-level page access and location permissions.
## Best Practices and Limits
- Start with one location and a limited number of selected devices (via targets), and validate the behavior before scaling.
- Set an accurate **Location Capacity** so power-target optimization respects your site's real power limit.
- Review chart behavior and the Upcoming Events plan after each profile update.
- Remember that Price Adapt planning is forward-looking (next cycle), not retroactive.
- If required data (market prices or hashprice) is temporarily unavailable, planning may be deferred until data is available.
For operational help, see [Troubleshooting](/braiins-manager/troubleshooting.md) and [Support](/braiins-manager/support.md).
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/price-tiers.md
---
# Price Tiers
## Overview
Price Tiers in **Braiins Manager** allow [hosting providers](/braiins-manager/overview.md#1-providers) to set flexible energy rates for their [customers](/braiins-manager/customers.md) based on energy consumption. This feature encourages customers to expand their hardware fleet by offering incentives tied to their energy usage.
## Creating Price Tiers
When setting up a **Location**, you define a base kWh rate (e.g., $0.04/kWh). Afterward, you can create multiple price tiers under the **Price Tiers** section. Each tier represents a specific rate per kWh, incentivizing higher consumption by offering discounted rates for higher usage.
### Example Tiers:
- **Bronze**: $0.08/kWh
- **Silver**: $0.07/kWh
- **Gold**: $0.065/kWh
## Assigning Price Tiers to Customers
You can assign Price Tiers based on customers' energy consumption levels. For example:
- **Bronze**: 0-300 kW consumption
- **Silver**: 300-1000 kW consumption
- **Gold**: 1000-3000 kW consumption
These tiers apply only to the customers they are assigned to, allowing for customized pricing strategies.
## Managing Price Tiers
To effectively manage your pricing strategy, regularly review customer assignments and tier allocations to ensure accurate billing and incentivization.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/quick-start.md
---
# Quick Start
## Overview
This guide will help you quickly set up and begin using Braiins Manager, from creating your account to installing the agent and adding miners.
## Prerequisites
Before starting, ensure the following:
- **Server Requirements**: Check our [prerequisites page](/braiins-manager/prerequisites.md) for hardware specifications based on your miner count.
- **Network**: Stable internet with at least **1 Mbps per 100 miners**.
- **Permissions**: Admin access to install and configure the Braiins Manager Agent.
## Quick Steps
### 1. Sign Up and Sign In
- Visit the [Sign-Up page](https://manager.braiins.com/sign-up) to create your Braiins Manager account.
- Sign in using your new credentials.
### 2. Create Location
- Use the onboarding wizard to create your first [location](/braiins-manager/agent/locations.md).
- Your **Agent ID** will be generated, necessary for the agent installation.
### 3. Installing the Agent
**For [Linux](/braiins-manager/agent/linux-installation.md)**
- Update your server:
```bash
sudo apt-get update && sudo apt-get upgrade
```
- Download the `.deb` package from the Braiins Manager UI or from the [official downloads page](https://downloads.braiins.com/braiins-manager-agent/).
- Install the package via terminal (recommended):
```bash
sudo apt install ./DEB_FILE
```
- You will be prompted to enter your **Agent ID** and **Secret Key** during installation.
**For [Windows](/braiins-manager/agent/windows-installation.md)**
- Download the installer from the Braiins Manager UI or [official downloads page](https://downloads.braiins.com/braiins-manager-agent/).
- Run the installer and follow the on-screen instructions.
- Enter your **Agent ID** and **Secret Key** when prompted.
- After installation, the Agent will be accessible via the GUI and listed in the System Tray.
### 4. Adding Miners
- Navigate to [Scanner](/braiins-manager/scanner.md) and click **Add New Scan**.
- Set the IP range, location, and credentials.
- Run the scan and click **Add Workers** after completion.
### 5. Using Key Components
- Once miners are added, explore features such as monitoring, automation, and energy reports.
- Refer to [Key Components](/braiins-manager/using-components.md) for more details.
Recommended next step
### Want to validate the setup before you move forward?
Talk to sales if you are choosing products for a larger site, comparing rollout options, or deciding how this should fit into the rest of your mining stack.
[Talk to sales](https://braiins.com/contact-sales)[See Braiins OS](https://braiins.com/os-firmware)
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/scanner-automation.md
---
# Scanner Automation
## Overview
Braiins Manager includes a **Scanner** tool to detect miners within your network automatically. For a comprehensive guide, refer to the [Getting Started section](/braiins-manager/scanner.md).
This page highlights the **automatic resync** functionality, which ensures that your miner list is continuously updated.
## Automatic Resync
By default, **Automatic Resync** is disabled but can be enabled in the scanner settings. This feature allows periodic scans at intervals of **1 hour**, **2 hours**, **4 hours**, **6 hours**, or **12 hours**, ensuring that new or relocated miners are automatically detected without manual re-scanning.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/scanner.md
---
# Scanning and Adding Devices
## Overview
The **Scanner** feature in Braiins Manager simplifies adding workers to your system by scanning your network for mining devices. Follow this guide to configure and use the Scanner.
## How to Set Up a Scan
1. **Go to the Scanner Component**: In the Braiins Manager interface, navigate to **Scanner**.
2. **Add a New Scan**: Click **Add New Scan** to set up a new scan.
3. **Configure the Scan**:
- **Scan Name**: Provide a descriptive name for the scan.
- **Location**: Select the location you want to scan.
- **IP Range**: Define the IP range where the miners are located (supports Nmap notation).
- **Custom Password**: Set a custom password if your miners are protected.
- **Assigned Customer**: Select a customer to whom the detected miners should be assigned (useful for hosting providers).
- **Comment**: Add internal comments about the scan.
4. **Advanced Options**:
- **Automatic Resync**: Optionally, set a time interval for [automatic resync](/braiins-manager/scanner-automation.md).
- **Add Workers**: Automatically add a device to the worker list if its MAC address is not found in Braiins Manager.
- **Update IP**: Automatically update IP addresses for existing MAC addresses if they change.
- **Set to Maintenance**: Set a worker to maintenance mode if it remains offline at a listed IP for more than 10 days.
5. **Miner Manufacturers/Firmware**: Choose miner models and firmware to scan. Supported models include **Braiins OS**, **Whatsminer Stock FW**, **Antminer Stock FW**, **Avalon**, **Minerva**, and **Iceriver**.
6. **Save the Scan**:
- After configuring the settings, click **Save** to start the scan.
- A spinning icon will appear, indicating the scan is running. Wait for the scan to finish (time varies depending on the IP range).
## Viewing and Adding Workers
If the scanner is not configured to automatically add workers, you can manually add them after the scan is complete. The scanned devices will be displayed in a list, and for any miners that Braiins Manager couldn't identify correctly, you can select the appropriate variant from a dropdown menu. This ensures accurate identification and management of the devices within Braiins Manager.
## Scan Management
- View previous scans by clicking **Scanner History**.
- Edit or delete defined scans.
- Manually trigger a resync of a scan.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/sign-up.md
---
# Creating an Account
## Step-by-Step Guide to Signing Up
To start using Braiins Manager, you first need to create an account. Follow these steps to sign up.
### 1. Visit the Sign-Up Page
Go to Braiins Manager Sign-Up page at [https://manager.braiins.com/sign-up](https://manager.braiins.com/sign-up).
### 2. Enter Your Details
Fill in your email address, create a password, and agree to the terms of service.
### 3. Email Verification
Check your inbox for a verification email and click the link to activate your account.
### 4. Sign In
Once activated, sign in at Braiins Manager page [https://manager.braiins.com/sign-in](https://manager.braiins.com/sign-in).
### 5. Complete Onboarding
Follow the onboarding wizard to create your first location and add miners.
## Managing Team Accounts
As a [Provider](/braiins-manager/overview.md#1-providers), you can create accounts for your team members in the **Accounts** page. This allows team members to have individual logins with different access permissions, enabling collaborative management of mining operations.
## Creating Hosting Client Accounts
If you are a [Hosting Provider](/braiins-manager/overview.md#1-providers), you can also create accounts for your [customers (hosting clients)](/braiins-manager/customers.md). This enables them to monitor their miners, access reports, and manage their individual hosting services through Braiins Manager.
## Troubleshooting Sign-Up Issues
- If you don't receive the verification email, check your spam or junk folder.
- For further assistance, visit our [Support & Contact](/braiins-manager/support.md) docs.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/sitemap.md
---
# Sitemap
## Overview
The **Sitemap** is a structured, visual representation of how your workers are physically organized within a [Location](/braiins-manager/overview.md). You map hardware to **Racks** and **Groups** (buildings, rooms, rows, containers), monitor per-rack telemetry at a glance, and target specific groups or racks when applying [Controlflow](/braiins-manager/controlflow.md) rules or [Curtailment](/braiins-manager/curtailment.md) events.
A Sitemap is created per Location and is optional. Without one, a Location's workers have no physical context.

## Key Concepts
- **Location**: The top-level entity in the hierarchy. Each Location has exactly one Sitemap.
- **Group**: A logical folder that organizes racks or other sub-groups. Represents real-world divisions such as a building, room, row, or container. Groups can be nested.
- **Rack**: A physical or logical unit that holds worker slots in a grid. Defined by a width (columns) and height (rows), each between 1 and 100.
- **Slot**: A single cell in a rack grid. A slot may hold one worker or be empty.
- **Allocation mode**: How workers are placed into slots. Three options: **Sequential**, **Dynamic**, and **Manual**.
- **Sorting key**: When allocation is Sequential or Dynamic, workers are ordered by **IP address** or **Worker Name** before placement.
- **Distribution direction**: The fill pattern for Sequential or Dynamic allocation. Four corner-to-corner directions are available (for example, top-left to bottom-right).
- **Device assignment mode**: How workers reach a rack. **Auto By IP** assigns workers whose IP matches the rack IP ranges; **Manually Selected** uses an explicit worker list; **Assign Later** leaves slots empty at creation.
- **Re-sort**: An automatic process that clears and refills slots in a rack when its rules or contents change.
## Create Groups and Racks
From the Sitemap page for a Location with no Sitemap yet, you have three starting options: **Add Group**, **Add Rack**, or **Import Data**.
- **Groups** are higher-level containers (buildings, rooms, aisles) and can be nested.
- **Racks** are the bottom-level entity where workers are assigned. When creating a Rack you define:
- **Rack Name**
- **Parent Group** (optional)
- **Rack Size** (Width and Height, each between 1 and 100)
- [Slot Allocation](/braiins-manager/sitemap.md#slot-allocation)
- [Device Assignment](/braiins-manager/sitemap.md#device-assignment)

**Naming rules**
- Group and Rack names must be 1 to 64 characters.
- A Group name must be unique within its parent Group (or at root level).
- A Rack name must be unique across the entire Location, not just within its parent Group.
### Slot Allocation
Sequential
Dynamic
Manual
- **Sorting Key**: **IP address** or **Worker Name**.
- **Distribution Logic**: choose placement direction (for example, Top Left to Bottom Right).
- **Device Assignment**: choose **Assign Later**, **Auto By IP**, or **Manually Selected**.
**Behavior**: Workers fill positions in a fixed order based on the sorting key, with placeholders reserved for missing entries. This keeps numbering consistent but may leave gaps until all workers are present.
- **Sorting Key**: **IP address** or **Worker Name**.
- **Distribution Logic**: choose placement direction.
- **Empty Slots**: reserve specific slot numbers as empty so the layout matches the physical rack.
- **Device Assignment**: choose **Assign Later**, **Auto By IP**, or **Manually Selected**.
**Behavior**: Workers fill only the active (non-empty) slot numbers, in the order defined by the sorting key and distribution direction. No placeholders are kept for missing entries.
Workers are placed by hand from the rack detail view after the rack is created. There is no sorting key, distribution direction, or automatic re-sort.
**Behavior**: Ideal for setups that do not follow IP or name order. Existing placements are preserved when the rack is resized; only slots that fall outside the new dimensions are dropped.
### Distribution Logic
For Sequential and Dynamic allocation, choose how workers are placed:
- **Top Left to Bottom Right**
- **Bottom Left to Top Right**
- **Top Right to Bottom Left**
- **Bottom Right to Top Left**
### Device Assignment
- **Assign Later**: Add workers at a later time. Slots stay empty on creation.
- **Auto By IP**: Workers whose IP matches the rack's IP ranges are assigned automatically. You define one or more IP ranges when creating or editing the rack.
- **Manually Selected**: Pick specific workers from a searchable Workers list.
### Empty Slots
Used only by Dynamic allocation. Reserve specific slot numbers as empty so the layout reflects the real physical rack (for example, a missing shelf or a reserved spot).
## Import from CSV
For large Locations, the **Import Data** option lets you create a Sitemap from a CSV file instead of clicking through groups and racks.
Two CSV flows are available:
- **Layout CSV**: Defines the group and rack hierarchy. The system validates the file (name lengths, width and height limits, duplicate names) and returns a preview with group count, rack count, and per-row error counts before anything is saved. On confirmation, all racks are created with **Manual** allocation and no assigned workers.
- **Device CSV**: Bulk-assigns workers to rack slots. Workers are matched by **MAC address** or **IP address** (the system detects which column is present). Workers not found in the system, and workers whose specified position falls outside the rack dimensions, are reported separately and skipped.
The maximum CSV upload size is 5 MB for both layout and device imports.
## Organize the Sitemap
Click **Organize** to enter the **Group Tree** editor. The tree renders all groups (folder icons) and racks (rack icons) as draggable nodes in the **left-side navigation**.

- Drag a group or rack to a new parent position. The new parent can be any group or the root of the Location.
- The system blocks the drop if a name conflict exists at the target parent level.
- Click **Save Changes** to persist the new order, or **Cancel** to discard everything.
- Deleting a group from the organizer recursively removes all child groups and racks. Deleting a rack removes its slot assignments.
When a Rack or Group is deleted, Braiins Manager notifies [Controlflow](/braiins-manager/controlflow.md) so any rules that target the removed element can be invalidated.
## Edit and Clone Racks
From the organizer, click **Edit** on a rack row to change any property (name, dimensions, allocation, IP ranges, sorting key, distribution).
**Re-sort behavior on edit**
- For **Sequential** or **Dynamic** racks, changing a relevant property (dimensions, sorting key, IP ranges, distribution, or allocation mode itself) clears all slot assignments and re-sorts them according to the updated rules. A confirmation message indicates whether re-sorting occurred.
- For **Manual** racks, resizing preserves existing worker-to-slot mappings within the new bounds. Slots outside the new bounds are dropped.
- Changing a rack from **Manual** to **Sequential** or **Dynamic** triggers a full re-sort.
**Cloning**
Select **Clone** on a rack or group, then provide a name, optional parent, and clone count.
- Up to **50** clones per action for racks; up to **10** for groups.
- Cloning a group copies the full sub-tree (groups and racks) but never worker assignments.
- Clones are created with **Assign Later** device assignment so you can stage layouts without disturbing live mappings.
- Clone names for index 2 onward receive an underscore-number suffix.
**Automatic re-sort triggers**
Even outside an Edit action, a re-sort is queued automatically whenever:
- A worker is added to the system.
- A worker's Location changes.
- An [Agent](/braiins-manager/agent/overview.md) completes a network scan.
Only racks affected by the changed IP range are re-sorted, not the entire Location. Re-sorts are processed asynchronously, so the Sitemap may briefly show stale slot positions after a scan.
## Assign Workers Manually
Open a rack in the **Rack View** and click **Edit Devices** to manage slot assignments. Browse available workers (paginated and searchable by host, customer, worker name, or model) and place them into specific column/row positions on the grid.

- Workers already assigned to another rack are flagged.
- The system blocks save if you try to assign the same worker to two racks at once.
### Assign Workers via IP Report
When a worker's IP is unknown or has changed, you can identify it directly from the network instead of typing it in. **IP Report** uses the [Agent](/braiins-manager/agent/overview.md) to listen for a device's announcement on the local network and match it to an existing Worker record by MAC address. Two flows are available from **Edit Devices**:
- **Single IP Report assignment**: Click an empty slot, then choose **Add via IP Report**. The Agent listens for the next announcing device and places it into that slot.
- **Bulk IP Report listening**: Start a Location-wide listening session. The session ends automatically after **10 minutes** of inactivity (no new device responses).
Temporary assignments made through IP Report stay **pending** in the editor until you click **Save Changes**. Cancel discards them.
IP Report requires:
- A **running Agent** at the Location. If the Agent is offline, the listening session returns an error immediately.
- A network path that supports UDP broadcast. The Agent and the workers must share the same subnet; broadcasts do not cross subnets.
**Avalon** and **IceRiver** miners are out of scope for IP Report and will not be matched by this flow.
## Sitemap Overview Page
The **Overview** is the read view of all racks in a Location, grouped by their parent group. Each rack card shows aggregated **hashrate**, **power**, **temperature**, and **connectivity status**, color-coded for fast scanning.
**Navigation**
- The **left-side navigation tree** mirrors the group hierarchy and lets you drill into any group or rack.
- A **breadcrumb** at the top of the central view shows your current position and lets you traverse back up.
**Filters**
You can narrow the Overview by:
- **Customer**
- **Group**
- **Rack**
- **Hashing status**
- **Hashrate threshold**
- **Power threshold**
Active filters persist per Location in your browser storage, so returning to the Sitemap restores the last view you used.
Clicking a rack card opens the rack detail view with the slot grid and per-worker status. Clicking a worker in the grid navigates to that worker's detail page in [Workers](/braiins-manager/workers/workers-list.md).
## Color-Coding
The default attribute for coloring Racks and Workers is **Status**. Color cues let you spot operational issues or outliers at a glance. Switch the attribute on the Overview page to view Power, Hashrate, or Temperature instead.
### Racks
Status
Power
Hashrate
Temperature
- **Green**: All workers are operational and hashing.
- **Grey**: Workers are in curtailment, stopped, or paused.
- **Yellow**: Mixed statuses or underperforming devices.
- **Red**: Error status (for example, `DOWN`, `NEEDS_REPAIR`).
- **Dark Grey**: Rack is empty or unassigned.
- **Green**: Actual power within **+/-10% of nominal**.
- **Yellow**: Underutilized (**Actual \<90% of nominal**).
- **Blue**: Overclocked (**Actual > 110% of nominal**).
- **Grey**: Curtailment, stopped, sleep, or paused.
- **Dark Grey**: Rack is empty or unassigned.
- **Green**: Actual hashrate within **+/-10% of nominal**.
- **Yellow**: Underperforming (**Actual \<90% of nominal**).
- **Blue**: Overclocked (**Actual > 110% of nominal**).
- **Dark Grey**: Rack is empty or unassigned.
- **Green**: Average temperature **\<= 70 degC**.
- **Yellow**: Temperature between **70 degC and 85 degC**.
- **Red**: Temperature **> 85 degC**.
- **Dark Grey**: Rack is empty or unassigned.
### Workers
Status
Power
Hashrate
Temperature
- **Green**: Worker is operational and hashing.
- **Yellow**: Worker is in `STOPPED` or `SLEEP` mode.
- **Red**: Worker is `DOWN` or has errors (for example, `AUTH_ERROR`, `UNDER_PERFORMING`).
- **Grey**: No status data (for example, `UNKNOWN`, `REMOVED`, `MAINTENANCE`).
- **Blue**: Power exceeds **+5% of nominal** (overclocked).
- **Green**: Power within **+/-5% of nominal**.
- **Yellow**: Power below **-5% of nominal** (underclocked or underperforming).
- **Grey**: No power data available.
- **Blue**: Hashrate exceeds **+5% of nominal**.
- **Green**: Hashrate within **+/-5% of nominal**.
- **Yellow**: Hashrate below **-5% of nominal** (underperforming).
- **Grey**: No hashrate data available.
- **Green**: Maximum temperature **\<= 70 degC**.
- **Yellow**: Maximum temperature between **70 degC and 85 degC**.
- **Red**: Maximum temperature **>= 85 degC**.
- **Grey**: No temperature data available.
## Delete Sitemap Structure
The **Delete Sitemap Structure** action removes all groups, racks, and slot assignments for a Location at once. The Location itself and its workers are untouched.
You must type the Location name to confirm. Deletion is irreversible and cascades through all nested groups and racks.
## How to Use the Sitemap
1. **Navigate**: Open the **Sitemap** from the left-hand menu and pick a Location.
2. **Create Groups and Racks**: Click **Add** to [create groups and racks](/braiins-manager/sitemap.md#create-groups-and-racks), or use [CSV import](/braiins-manager/sitemap.md#import-from-csv) for large layouts.
3. **Organize**: Use [drag-and-drop](/braiins-manager/sitemap.md#organize-the-sitemap) to match the physical layout of your site.
4. **Assign Workers**: Use **Auto By IP**, **Manually Selected**, or [assign workers by hand](/braiins-manager/sitemap.md#assign-workers-manually) from the rack detail view.
5. **Monitor**: Use the [Overview](/braiins-manager/sitemap.md#sitemap-overview-page) to spot overheating racks, underperforming workers, or airflow issues.
6. **Target**: Reference groups or racks in [Controlflow](/braiins-manager/controlflow.md) rules and [Curtailment](/braiins-manager/curtailment.md) events to act on slices of your fleet.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/strike-price.md
---
# Strike Price Curtailment
## Overview
**Strike Price Curtailment** in Braiins Manager automatically **pauses mining** when electricity prices exceed a user-defined threshold (strike price), and resumes mining when prices fall below that threshold. This helps miners **avoid high energy costs** while maintaining profitability.
The feature integrates with **Day-Ahead Market (DAM) energy prices** from supported Energy Markets and enables users to configure curtailment triggers per location, customer, device model, or IP range.
To begin using Strike Price Curtailment:
1. [Connect DAM energy price data](#connecting-energy-price-data) from your Energy Market and Region.
2. [Create a Strike Price Profile](#creating-a-strike-price-profile) for a specific location, defining the price threshold and curtailment targets.
Once configured, Braiins Manager automatically monitors DAM energy prices and schedules curtailments accordingly based on your strike price profile. This is particularly useful for users on **market-based electricity pricing**, allowing them to optimize profitability across different miner models and operational setups.
### Supported Energy Markets:
- **ERCOT** (Texas, USA)
- **PJM** (Eastern USA)
- **Nord Pool** (Europe)
As of **September 30, 2025**, Nord Pool Day-Ahead (DA) prices are published in 15-minute intervals. Until Braiins
Manager supports 15-minute curtailment, Strike Price Curtailment for Nord Pool continues to operate at **1-hour
granularity**, using the **average of the four 15-minute prices within each clock hour** (e.g., 08:00–09:00,
09:00–10:00, etc.).
If you are interested in integrating DAM energy prices from another Energy Market, please [contact our support
team](/braiins-manager/support.md).
## Connecting Energy Price Data
To use Strike Price Curtailment, you must first connect your mining **Location** to the energy price data provided by your relevant **Energy Market** and **Region**. Once connected, Braiins Manager will automatically start retrieving **Day-Ahead Market (DAM)** prices for your selected zone. These market prices serve as the baseline for curtailment decisions based on strike price thresholds.
To connect the energy price data:
1. Navigate to the [Strike Price page](https://manager.braiins.com/provider-view/strike-price/energy-price) in the Braiins Manager dashboard.
2. You will land on the **Energy Price** tab, then click the **Add Energy Price** button.
3. Select the **Energy Market** that corresponds to your mining location.
4. Choose the appropriate **Region**, which determines your specific energy market within the selected Energy Market.
If using PJM, you must enter the **Pricing Node ID** for your location to retrieve accurate energy pricing. PJM has
thousands of Pricing Node IDs, so ensure you input the correct one. You can find the full list of PJM Pricing Nodes
[here](https://dataminer2.pjm.com/feed/pnode).
5. Confirm the connection.
6. Once connected, you will see **energy price data visualized on the graph** in the **Energy Prices** tab.
- If you have connected multiple **Energy Prices**, you can switch between them using the **graph filter**.
After successfully connecting energy price data, you can proceed to **create Strike Price Profiles** to define your curtailment triggers.
Removing an energy price connection is only possible if no active **Strike Price Profiles** are associated with it.
You must delete any existing profiles before disconnecting the energy price data.
## Creating a Strike Price Profile
A **Strike Price Profile** defines the conditions under which miners will be curtailed when electricity prices **exceed a set value**.
To create a **Strike Price Profile**:
1. Go to the **Profiles** tab and click **Add Profile** button.
2. Configure the following settings:
- **Location**: Select a location associated with the connected Energy Market and Region.
- **Strike Price**: Set the price threshold (in currency per MWh):
- **ERCOT & PJM**: USD/MWh
- **Nord Pool**: EUR/MWh
- **Curtailment Target**: Choose which devices or groups to curtail:
- By **Device Model**
- By **Customer**
- By **IP Range**
- (Optional) **Additional Conditions**: Add more conditions to refine curtailment targeting. All conditions are evaluated with an **AND** operator.
3. Click **Create Profile**.
4. Your strike price configuration is now complete.
### Viewing Energy Prices and Strike Price Thresholds
Once a strike price configuration is completed:
- The **energy price chart** will display both the **historical and upcoming energy prices** along with the defined **strike price threshold**.
- Users can monitor when the electricity price is approaching or exceeding the defined strike price.
## Energy Market Specific Timing
Each Energy Market has **specific times** when the next day's energy prices are published and when curtailment schedules are determined.
| **Energy Market** | **Next-Day Data Release (UTC)** | **Curtailments Scheduled (UTC)** |
| ----------------- | ------------------------------- | -------------------------------- |
| **ERCOT** | 07:30 PM | 08:30 PM |
| **PJM** | 08:30 PM | 09:30 PM |
| **Nord Pool** | 12:30 PM | 01:30 PM |
### First Curtailment Planning Behavior
Please note the following logic for scheduling the first curtailments after creating a new **Strike Price Profile**:
1. **Strike Price Profile Created Before Curtailment Scheduler Runs**: The first curtailments will be scheduled for **tomorrow's date**.
2. **Strike Price Profile Created After Curtailment Scheduler Runs**: The first curtailments will be scheduled for **the day after tomorrow**, once new price data is received from the Energy Market.
## Viewing Scheduled Curtailments
Once **Strike Price Curtailment** schedules a curtailment event, it appears on the [Curtailment page](https://manager.braiins.com/curtailment) under:
- Curtailments
- Next Runs
- History
## Managing Energy Price Connection & Strike Price Profiles
### Modifying a Strike Price Profile
Users can **disable, edit, or remove** a Strike Price Profile at any time.
Modifying or removing a **Strike Price Profile** does **not** deactivate running or scheduled curtailments. If you
need to stop a scheduled curtailment, go to the [Curtailment page](https://manager.braiins.com/curtailment) and
manually deactivate it.
### Removing an Energy Price Connection
- Navigate to [Energy Price Settings](https://manager.braiins.com/provider-view/strike-price/energy-price).
- If no **Strike Price Profiles** are linked to the energy price, you can **remove the connection**.
- If profiles are active, you must **delete them first** before disconnecting the energy price.
### Multiple Profiles
- A **single energy price connection** can support **multiple Strike Price Profiles** for different locations and conditions.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/support.md
---
# Support & Contact
## Overview
Braiins Manager offers several channels for assistance, whether you're troubleshooting an issue or seeking guidance on features.
## Support Resources
### Documentation
Our [documentation](/braiins-manager/overview.md) provides detailed guides on setting up, managing, and optimizing Braiins Manager. Be sure to check the documentation before reaching out for help.
### Community
Join our [Telegram community](https://t.me/BraiinsManager) to connect with other users, share experiences, and get advice from the Braiins team and community members.
### Help Desk
If you encounter any issues that cannot be resolved through the documentation or community channels, you can contact our support team by submitting a ticket.
- Visit the [Braiins Help Center](https://help.braiins.com/en/support/tickets/new) to submit a ticket for technical or operational support.
- Include as much detail as possible, such as error logs, screenshots, and a description of the problem.
## Contact Us
For direct inquiries, you can reach out to the Braiins team [help@braiins.com](mailto:help@braiins.com).
We strive to respond to all inquiries as quickly as possible, usually within 24–48 hours.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/triggers.md
---
# Triggers
The **Triggers** feature has been fully replaced by the more advanced [Controlflow](/braiins-manager/controlflow.md) and will be decommissioned soon. Please use Controlflow for all new automation.
## Overview
The **Triggers** feature is a powerful tool within Braiins Manager designed to automate various aspects of your mining operation. This feature offers users a straightforward way to streamline their processes by setting up automated actions based on specific conditions. If you're familiar with Linux, you can think of Triggers as a visual representation of cron jobs, but tailored specifically for mining operations.

## How Triggers Work
Triggers allow you to define a set of conditions that, when met, will automatically execute predefined actions on selected miners. This can save time, reduce the need for manual intervention, and help ensure your mining operation runs smoothly and efficiently.
### Key Components of a Trigger
- **Filters:**
Select the group of miners to which the trigger will apply. You can filter miners based on specific criteria such as _IP Range_, _Location_, _Customer_, or _Is Under Curtailment_.
- **Condition:**
Define the specific condition under which the trigger will activate. Conditions can range from performance metrics (such as hash rate, temperature, or power consumption) to specific conditions based on mining pool settings or Customer checks.
- **Action:**
Specify the action that will be executed when the condition is met. Actions can include restarting miners, pausing or resuming mining operations, changing mining pools, or assigning miners to a specific Customer.
- **Frequency:**
Decide how often the trigger should be activated. You can set it to fire periodically, from every 5 to 60 minutes, as long as the condition remains true.
## Setting Up a Trigger
Setting up a Trigger in Braiins Manager is intuitive and user-friendly:
1. **Navigate to the Triggers Section:**
Access the Triggers feature from the Braiins Manager dashboard.
2. **Select Miners:**
Choose the miners you want the trigger to apply to. You can group miners by various attributes to simplify this process.
3. **Define the Condition:**
Set the specific condition that will trigger the action. For example, you might set a condition to trigger if a miner's temperature exceeds a certain threshold.
4. **Choose the Action:**
Determine what action should be taken when the condition is met. This could be anything from rebooting the affected miner to changing pool settings.
5. **Set the Frequency:**
Choose how often the trigger should check the condition and potentially activate. You can select a frequency from intervals starting at 5 minutes up to 60 minutes, with 5-minute increments. This means you can set the trigger to check the condition every 5, 10, 15 minutes, and so on, up to 60 minutes, depending on your operational needs.
6. **Save and Activate:**
After setting up the trigger, save it and it becomes automatically activated. Braiins Manager will then monitor the selected miners and automatically execute the trigger when the condition is satisfied.
## Use Cases for Triggers
Triggers can be used in various scenarios to optimize and automate your mining operations:
### Temperature Control
Automatically shut down miners when their temperature exceeds safe operating levels.

### Performance Management
Trigger a reboot if a miner's hash rate drops below a specified threshold.

### Customer and Pool Settings
If you are a [hosting provider](/braiins-manager/overview/index.md#1-providers), ensure that the miners are assigned to the correct [Customer](/braiins-manager/overview/index.md#2-hosting-clients) and are mining on the correct mining pool.

## Benefits of Using Triggers
- **Increased Operational Efficiency:** Reduce the need for manual monitoring and intervention by automating routine tasks, leading to more efficient management of your mining operations.
- **Enhanced Reliability:** Ensure that your mining operation runs smoothly by responding quickly to changes or issues.
- **Customization:** Tailor Triggers to fit the specific needs of your operation, with a high degree of control over conditions and actions.
- **Scalability:** As your mining operation grows, Triggers can easily be adapted to manage larger fleets of miners with minimal effort.
## Manage Triggers
Users can manage all their automation rules on the Triggers page. It's possible to enable or disable them, make edits, or even clone an existing one - especially useful when defining a similar rule with only minor adjustments. Deletion of triggers is also an option when necessary.
## History
The history of all activated Triggers can be viewed in the History table on the Triggers page. The table provides information about the time of trigger activation, the trigger name, the number of affected workers, a message describing the specific trigger, and a _Details_ button to view a list of affected miners based on their Worker ID.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/troubleshooting.md
---
# Troubleshooting
## Overview
This guide covers common issues you may encounter when using Braiins Manager and how to resolve them.
## 1. Agent Not Appearing Online
Agent v4.0.0+ (Rust)
Agent v3.x (Node.js)
- Ensure the [Agent](/braiins-manager/agent/overview.md) is running. Go to the server where the Agent is installed and verify it is online.
You can do this by either checking the status in the Agent UI (see image below),
or by running the following command:
```bash
sudo systemctl status braiins-manager-agent.service
```
- Check network connectivity and firewall settings.
- Download and review Agent logs. For instructions, see [this guide](/braiins-manager/agent/management.md).
- Ensure the [agent](/braiins-manager/agent/overview.md) is running with [PM2](/braiins-manager/agent/management.md):
```bash
pm2 list
```
- Check network connectivity and firewall settings.
- Download and review Agent logs. For instructions, see [this guide](/braiins-manager/agent/management.md).
## 2. Scanner Troubleshooting
### Miners Not Detected
- Confirm that the correct IP range and credentials are configured.
- Ensure miners are on the same network as the agent.
- Check for firewall restrictions.
### Scanner Resync
- Go to [Scanner](/braiins-manager/scanner.md) History and trigger a resync if needed.
## 3. Performance Troubleshooting
### Underperforming Miners
- Monitor miner metrics in the [monitoring section](/braiins-manager/dashboard.md).
- Ensure miners are not overheating, and verify hashrate stability.
### Network Latency
- Check for network latency issues that may impact miner performance.
## 4. Curtailment Issues
### Curtailment Not Functioning
- Verify that your [curtailment](/braiins-manager/curtailment.md) settings are correctly configured.
- Ensure integration with Curtailment Service Providers (CSPs) is active.
- Check logs for error messages related to curtailment events.
## 5. Worker Issues
To troubleshoot miner issues, collect the miner logs and review them to identify the root cause.
### Collect Logs
To troubleshoot miner issues, collect the miner logs and review them to identify the root cause.
1. Open **Workers** and select the miner you want to diagnose.
2. Open the **System** menu and click **Collect Device Logs**.
3. Confirm the action and wait for the collection to finish (it may take around 1 minute).
This action is available only for **Braiins OS** and **Antminer Stock** devices connected via the **Braiins Manager Agent version 4.6.0 and newer**.
### Download Logs
1. Go to the worker’s **Logs** section.
2. Open the **Collected Device Logs** tab.
3. Download the latest archive from the table.
- Logs are kept for up to **7 days**. If the archive is expired, collect a new one.
- If you plan to contact Braiins Support, include the downloaded archive with your ticket.
## 6. Additional Support
For further assistance:
- Visit the [Support & Contact page](/braiins-manager/support.md).
- Submit a ticket via our [Help Desk](https://help.braiins.com/en/support/tickets/new).
- Join our [community](https://t.me/BraiinsManager) on Telegram for real-time help.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/updates-maintenance.md
---
# Updates & Maintenance
## Overview
Maintaining and updating your Braiins Manager setup is essential for ensuring optimal performance, stability, and minimizing downtime. This guide outlines the key steps for managing software updates and performing regular maintenance.
By regularly updating both the system and [Braiins Manager Agent](/braiins-manager/agent/overview.md), you can enhance performance, stay secure, and avoid potential issues. Proper maintenance routines help keep operations running smoothly, ensuring the platform is ready to handle your mining infrastructure efficiently.
## Braiins Manager Feature Updates
Braiins Manager regularly releases updates to improve performance and add new features. Updates unrelated to the Braiins Manager Agent are handled automatically and require no user involvement. In rare cases of planned maintenance involving application downtime, users are notified in advance. However, this is not common practice, and most updates are performed without disrupting your mining operations.
## Upgrade Braiins Manager Agent
It's important to regularly upgrade your Braiins Manager Agent. For additional information, see [this guide](/braiins-manager/agent/upgrade-uninstallation.md).
## Monitoring Agent Health
To ensure the Braiins Manager Agent runs smoothly, regularly monitor its health:
1. **Agent Status**: Check the agent's health in the [Locations](/braiins-manager/agent/locations.md) menu.
2. **Logs**: See the instructions [here](/braiins-manager/agent/management.md) to download logs.
## Scheduled Maintenance
Performing regular maintenance can prevent issues and enhance system performance:
- **Restart the Agent** periodically. See the instructions [here](/braiins-manager/agent/management.md) to perform the restart.
- **Disk Space Management**: Ensure enough disk space is available, especially if scanning large networks.
## Troubleshooting
For issues during updates or maintenance:
- **Logs**: Check the logs. Follow the instructions [here](/braiins-manager/agent/management.md) to download them.
- **Support**: If the issue persists, refer to the [support documentation](/braiins-manager/support.md) for further assistance.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/user-interface.md
---
# User Interface
## Overview
The Braiins Manager interface is designed to combine simplicity with powerful monitoring capabilities. Below is a detailed guide to navigating and using the platform.
## 1. Navigation
Upon first login, new users are welcomed by an onboarding wizard to guide them through key steps, such as adding miners to the system. Once completed, you'll gain full access to all platform features.
Use the left-side **navigation panel** for easy access to different sections. Selecting a component from this menu will redirect you to the respective page for monitoring and management.
## 2. Dashboard
The dashboard is the central hub for viewing and managing mining operations. Based on the selected section, users can interact with different features. Keep in mind the following data refresh intervals:
- **Miner Data**: [Workers list](/braiins-manager/workers/workers-list.md) and Worker details are refreshed every **5 minutes**.
- **Scanner**: [Scanner](/braiins-manager/scanner.md) receives data from the agent at defined intervals (e.g., every X minutes).
- **Curtailment (CSP API)**: [CSP API curtailment](/braiins-manager/curtailment.md#curtailment-api-integration) dispatches are updated every **1 minute**.
For better efficiency, users can apply **filters** to easily narrow down specific miner models, performance metrics, or statuses. Filters can be configured based on parameters such as location, operational mode, or other relevant criteria, providing a more targeted view for faster and more efficient management of your mining fleet.
## 3. Settings
The **Settings** section in Braiins Manager allows you to manage account-level preferences — including security options under the **Security** tab and programmatic access via the **Public API** tab.
### Security Settings
In the **Security** tab, you can manage important security-related settings for your Braiins Manager account:
- **Change Password**: Update your login credentials by entering your current password and a new password.
- **Two-Factor Authentication (2FA)**: Enhance your account protection by enabling or disabling 2FA. This adds an extra layer of security by requiring a time-based one-time code from an authenticator app (e.g., Google Authenticator) at login.
We highly recommend enabling 2FA to help prevent unauthorized access to your account.
### Public API Access
The **Public API** tab allows you to generate access credentials (API key) to interact with **Braiins Manager programmatically**. You can use these credentials to access supported API endpoints and integrate Braiins Manager with external systems or automation scripts.
The public API currently offers **limited endpoints**. We are actively collecting user feedback to shape future
improvements. Please share your API needs with us via [this form](https://help.braiins.com/en/support/tickets/new).
### Other Settings
As a Provider, you can also manage the following:
- **Accounts**: Use [accounts](/braiins-manager/sign-up.md#managing-team-accounts) feature to add team members with specific access levels to enable collaborative management.
- **Customers**: If you're a hosting provider, manage [customer](/braiins-manager/customers.md) accounts and assign devices to them.
- **Price Tiers**: Define [pricing tiers](/braiins-manager/price-tiers.md) to incentivize your customers, offering greater flexibility in pricing strategies.
## 4. Provide Feedback
We value your input! You can easily provide feedback by clicking the **"Provide Feedback"** link in the top navigation panel. Fill out the form, and our team will respond promptly.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/using-components.md
---
# Using Components After Adding Workers
## Overview
Once your miners are added to the [Workers list](/braiins-manager/workers/workers-list.md), Braiins Manager offers powerful tools to efficiently manage and monitor your mining operations. These tools enable real-time performance tracking, batch management, issue tracking, and automation for tasks like curtailment, providing comprehensive control over your infrastructure.
## Features
### 1. Monitoring
Access real-time performance data in the [Dashboard](/braiins-manager/dashboard.md):
- **Hashrate**: View near real-time and historical data.
- **Power Consumption**: Monitor real-time/historical power usage.
- **Temperature**: Track miner temperature.
- **Uptime & Notifications**: Check miner uptime/alerts.
- **Workers & Statuses**: See distribution of miner models.
**Key Actions**: Zoom the time series graph for specific ranges.
### 2. Batch Management
Manage multiple miners on the [Workers page](/braiins-manager/workers/workers-list.md), allowing actions like restarting or changing pool settings.
**Key Actions**:
- Use the **Actions** dropdown for fleet configurations.
- Click miner IP for individual details.
### 3. Automation
Use [Controlflow](/braiins-manager/controlflow.md) to automate routine tasks.
**Key Actions**: Configure automation for miner groups or your hosting customers.
### 4. Profitability Maximization
Use [Price Adapt](/braiins-manager/price-adapt.md) to automatically keep miners running at the most profitable power target based on energy prices.
**Key Actions**: Set up Price Adapt to optimize miner power targets, or curtail mining when it becomes unprofitable.
### 5. Issue Tracking
[Track and manage](/braiins-manager/issue-tracker.md) miner performance, connectivity, and health issues.
**Key Actions**: Review open issues and resolve them.
### 6. Curtailment
Automate miner shutdowns during peak demand when the [energy price is high](/braiins-manager/strike-price.md), integrate with CSPs, or schedule your [curtailment](/braiins-manager/curtailment.md) times using a calendar.
**Key Actions**: Configure curtailment automation based on your CSP, or set a strike price per miner model to avoid energy price peaks.
### 7. Energy Reports
Track [energy consumption](/braiins-manager/energy-reports.md) and compare with historical data.
**Key Actions**: Set up custom energy reports for customers or locations.
### 8. Sitemap
[Map the layout](/braiins-manager/sitemap.md) of your farm for an overview of miner positions.
**Key Actions**: Define **Groups** and **Racks**, assigning miners for a real-time datacenter layout representation.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/whats-new.md
---
# What's new
## 2026-09-03
A fix for curtailment driven by NIPCO signals.
### Curtailment
- **NIPCO Integration per Location**
: The NIPCO integration now works at the level of a specific location. Each location that must be curtailed on NIPCO signals needs its own NIPCO integration. See
[Curtailment](/braiins-manager/curtailment.md)
.
## 2026-09-01
A fix for the date presets in Controlflow Events History.
### Controlflow
- **Events History Date Presets**
: The Today and Yesterday presets in
[Controlflow](/braiins-manager/controlflow.md)
Events History now follow your calendar day, so early-morning runs no longer land in the wrong day.
## 2026-08-27
Braiins OS Advanced Settings becomes available to every account, and the Workers list gains keyboard modifier selection.
### Workers
- **Braiins OS Advanced Settings**
: You can now read and change Braiins OS device settings from Braiins Manager. Find it in the Actions menu on the
[Workers list](/braiins-manager/workers/workers-list.md)
, which also gains a matching column and filter, and in the Miner menu on
[worker details](/braiins-manager/workers/worker-details.md)
. Requires Agent 4.12.0 or newer.
- **Keyboard Modifier Selection**
: In the
[Workers list](/braiins-manager/workers/workers-list.md)
, Shift+click selects a range of rows and Ctrl+click (Cmd+click on macOS) adds or removes one. Ranges follow the sort and filters you have applied.
## 2026-08-26
A fix for firmware naming in worker activity logs.
### Workers
- **Firmware Names in Activity Logs**
:
[Worker details](/braiins-manager/workers/worker-details.md)
activity logs now use the same firmware name and wording whether a Scanner resync corrected the firmware or you changed it by hand.
## 2026-08-25
A fix for daily power consumption reports.
### Energy Reports
- **Daily Power Consumption Reports**
: Daily power consumption reports are generated again for all users. See
[Energy Reports](/braiins-manager/energy-reports.md)
.
## 2026-08-24
A fix for worker selection in the Workers list.
### Workers
- **Unselect All Items**
: Unselect all items now clears every selected worker in the
[Workers list](/braiins-manager/workers/workers-list.md)
, including the ones you selected by hand.
## 2026-08-18
A Scanner fix for miners whose firmware is updated directly on the device rather than through Braiins Manager.
### Scanner
- **Firmware Type After an On-Device Upgrade**
: When a miner's firmware is changed on the device itself, the Scanner auto-detect now updates the firmware type shown in Braiins Manager instead of keeping the old one. See
[Scanner](/braiins-manager/scanner.md)
.
## 2026-08-17
New time ranges on the Provider Dashboard, and a Public API fix for finished curtailments.
### Dashboard
- **Last 3 and Last 7 Day Filters**
: You can now filter the Provider Dashboard and curtailment statistics by the last 3 days or the last 7 days, alongside the existing ranges. Your selected range is remembered between visits. See
[Dashboard](/braiins-manager/dashboard.md)
.
### Public API
- **Finished Curtailments**
: Finished curtailments now appear in the
`GET /v2/curtailments`
endpoint as soon as their schedule window ends, and the detail endpoint no longer returns "not found" for them. Previously a finished event stayed hidden until a background job deactivated it, so for some energy providers the most recent completed events were always missing.
## 2026-08-12
A new option when pausing miners, plus a Curtailment display fix and a Sitemap fix.
### Curtailment
- **Worker Details Charts After Resume**
: After resuming a miner from Immediate Curtailment, the Worker Details charts no longer show the whole time range as "Under Curtailment".
### Workers
- **Mark Paused Miners as Curtailed**
: When you pause miners from the miner actions menu, you can now mark them as curtailed. The option is available in both the single and batch Pause dialogs. See
[Workers list](/braiins-manager/workers/workers-list.md#mining-commands-braiins-os-only)
.
### Sitemap
- **Empty Rack Positions**
: Empty rack positions no longer become permanently unavailable after a miner disappears from the grid. See
[Sitemap](/braiins-manager/sitemap.md)
.
## 2026-08-11
Several Workers list fixes and a selection-handling improvement.
### Workers
- **Braiins OS Upgrade Compatibility Check**
: The compatibility check now re-runs whenever you change the target release, so upgrades are no longer blocked in the Upgrade Braiins OS dialog.
- **Empty State While Scrolled**
: The "No results found" message now stays visible when a filter returns no matches and the table is scrolled to the right.
- **Active Filters Chip**
: Removing a filter through the Active Filters chip no longer clears the search text you have typed. See
[Workers list](/braiins-manager/workers/workers-list.md)
.
- **Action Dialog Dismissal**
: Action dialogs no longer close when you click outside them, so you cannot lose a dialog by accident.
- **Row Selection Handling**
: Your row selection on the Workers list is now kept when you cancel an action dialog and cleared once you submit it.
## 2026-08-06
This release adds Auradine Teraflux support and Telegram notifications for Price Adapt, along with fixes across Workers, Curtailment, Sitemap and Scanner.
### Price Adapt
- **Telegram Notifications**
: You can now receive Telegram notifications for Price Adapt schedule events. Opt in from your
[notification settings](https://manager.braiins.com/provider-view/settings/notifications)
to get a message when a schedule is published, when it starts executing, and when it finishes. See
[Price Adapt](/braiins-manager/price-adapt.md)
.
- **Available to All Provider Admins**
: Price Adapt is now available to all Provider Admin accounts, and it is enabled by default for new providers.
- **Early Access Label**
: Price Adapt is now labeled Early Access instead of Free Beta in the main navigation.
- **Schedule Creation Without a Pro Plan**
: Users without an active Pro Plan or trial can now create Price Adapt schedules.
- **Upcoming Events Profile Filter**
: Filtering the Upcoming Events tab by profile no longer fails with an error.
### Workers
- **Auradine Teraflux Support**
: Auradine Teraflux miners can now be managed from Braiins Manager. You can locate a device to identify it physically in the facility, pause, resume and reboot it, and configure its pools, from the worker detail page or the workers list. Requires Agent 4.11.0 or newer.
- **Administrative Tab**
: The Administrative tab is back in the worker actions menu.
- **Firmware Menu for Stock Antminers**
: The Firmware menu is available again for Antminers running stock firmware, so you can start a Braiins OS installation from the worker detail page.
- **Control Board Serial Number**
: The control board serial number now displays correctly for Auradine Teraflux workers.
### Curtailment
- **Responsive Layout**
: The Curtailment pages now adapt to smaller screen sizes, so they are usable on narrow windows and mobile displays. See
[Curtailment](/braiins-manager/curtailment.md)
.
- **Legacy Page Access**
: The legacy Curtailment page is accessible again for users with the User role.
### Sitemap
- **Toolbar Alignment**
: The Filter and Organize buttons on the sitemap toolbar are aligned properly again.
- **Location Overview**
: Locations that already have racks no longer show the "Get Started" setup page. You now land on the location overview instead. See
[Sitemap](/braiins-manager/sitemap.md)
.
### Scanner
- **Loading Discovered Miners**
: The scanner no longer fails with an error while loading discovered miners.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/workers/performance.md
---
# Managing Miner Performance in Braiins Manager
## Overview
Braiins Manager allows you to configure the performance of your mining devices by setting **power modes** (for stock firmware) and **power targets** (for Braiins OS). This enables operators to efficiently overclock, downclock, or cap power usage across miners.
## Power Modes
**Applies to:** Antminers, Whatsminers, Canaan miners with **stock firmware**
**Modes Available:**
- **Normal** – Default factory mode
- **High** – Overclock mode (limited support)
- **Low** – Downclock mode (limited support)
- **Sleep** – Halts hashing
Some power modes may not be available for all models. Unsupported options will be hidden in the interface.
Unsupported options are hidden in the interface. This limitation is tied to the capabilities of the stock firmware
itself.
## Power Targets
**Braiins OS** offers greater **flexibility for clock speed management** by allowing users to set a precise power target as a **continuous value**, rather than being limited to a fixed set of discrete power modes as in stock firmware.
You can set a specific power consumption target (in watts):
- Input exact power target (e.g., 3500 W)
- Increase/decrease in 250 W steps
- Reset to device default power target
If the miner is currently set to **hashrate target** and you apply a power target, the miner will restart first.
Be aware of this behavior.
Note: : Setting the hashrate target is not currently supported in Braiins Manager.
## Viewing Performance
Performance settings are shown in:
- **Workers table** → columns: `Mode` (Performance Mode), `Target` (Performance Target)

- **Worker details page** → section: `About Worker`, attributes `Performance Mode` and `Performance Target`

## Requirements
To manage performance settings:
- Ensure **agent version**:
- **v3.15+** for Power Mode
- **v3.18+** for Power Target
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/workers/statuses.md
---
# Hashing & Connectivity Status
## Overview
Each worker in Braiins Manager has two distinct attributes to help users understand performance and connectivity:
- **Hashing Status** – Indicates miner performance and efficiency
- **Connectivity Status** – Indicates whether the miner can be reached and remotely controlled
## Hashing Status
Hashing status shows how well the miner is performing based on its real-time hashrate and energy efficiency.
| Hashing Status | Condition | Meaning |
| -------------- | ------------------------------------------------------------- | ----------------------------------------------- |
| Hashing | Real hashrate > 0 AND efficiency (J/TH) within 10% of nominal | Miner is hashing with expected efficiency |
| Inefficient | Real hashrate > 0 AND efficiency (J/TH) > 10% above nominal | Miner is using more power than expected |
| Idle | Real hashrate = 0 | Miner is powered but not hashing |
| Maintenance | Manually set into maintenance | Miner is intentionally entered into maintenance |
| Unknown | Missing data (e.g. no hashrate or power readings) | Status cannot be determined |
## Connectivity Status
Connectivity status shows whether Braiins Manager can communicate with the miner.
| Connectivity Status | Description |
| ---------------------------- | ------------------------------------------------------------------ |
| Online | Miner is connected and responding normally |
| Agent Offline | Braiins Manager Agent is not responding |
| Offline | Miner is unreachable or disconnected |
| N/A | Miner is under maintenance |
| ERROR (e.g. `TIMEOUT_ERROR`) | Miner is online but encountered a specific network or system error |
## Connectivity Errors and Troubleshooting
If a miner shows a specific connectivity error instead of "Online", use the table below to diagnose and fix the issue.
| Error Code | Meaning | Suggested Action |
| ------------------- | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `TIMEOUT_ERROR` | Miner did not respond in time | Check network, try to ping miner's IP from the Agent's server, reboot miner |
| `FETCH_ERROR` | Failed to retrieve data from miner | Check if miner is accessible via GUI and if did not change the firmware |
| `JSON_PARSE_ERROR` | Malformed response | Check if the firmware on your miner has changed. If needed, use the [Change Firmware action](/braiins-manager/workers/worker-details/index.md#3-worker-actions) |
| `ETIMEDOUT` | Connection timed out | Check latency, routes, or DNS |
| `EHOSTUNREACH` | Host unreachable | Inspect subnet or switch |
| `ECONNRESET` | Connection closed unexpectedly | Check miner logs or power cycle |
| `ECONNREFUSED` | Miner rejected the connection | Ensure miner API is enabled |
| `AUTH_ERROR` | Authentication failed | Verify miner's credentials |
| `PARSE_ERROR` | General parse failure | Same as JSON error |
| `ENETUNREACH` | Network unreachable | Check routing, gateway |
| `ECONNABORTED` | Connection forcibly closed | Restart agent or miner |
| `ENOBUFS` | No buffer space available | Restart agent or tune system buffers |
| `LOCAL_ADAPT_ERROR` | Network interface issue | Check agent network config |
| `EACCES` | Permission denied | Run agent with proper permissions |
| `ERR_BAD_REQUEST` | Malformed HTTP request | Check agent version and miner firmware |
| `CERT_HAS_EXPIRED` | TLS certificate expired | Renew cert or disable HTTPS (if safe) |
| `EADDRNOTAVAIL` | Local IP unavailable | Review IP config or interface bindings |
## Notes
- If **Connectivity Status** is `Agent Offline` or any `ERROR`, then **Hashing Status** will show as `Unknown`.
- `Removed` status is deprecated — removed miners are no longer visible in the UI.
## Where to Find the Statuses
### Workers List
You can view the **Hashing Status** and (optionally) the **Connectivity Status** in the Workers List table:

- **Hashing Status** is shown by default.
- **Connectivity Status** can be enabled via table settings.
### Worker Detail Page
You can also find the statuses on the individual worker detail page under the "About Worker" section:

- **Hashing Status** and **Connectivity Status** are displayed side by side for clarity.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/workers/worker-details.md
---
# Worker Details
## Overview
The **Worker Details** page in Braiins Manager offers a granular view of each mining device, allowing for effective troubleshooting, detailed monitoring, and configuration management.
## Key Features
### 1. About Worker
Displays worker-specific details like **IP address**, **performance mode**, **model name** and more.
### 2. Performance Metrics
- **Hashing Status**: Displays the worker's current operational condition, see more [here](/braiins-manager/workers/statuses/index.md#hashing-status).
- **Connectivity Status**: Displays the worker's current connectivity condition, see more [here](/braiins-manager/workers/statuses/index.md#connectivity-status).
- **Hashrate**: Monitor real-time and historical hashrate.
- **Power**: Track power usage to optimize efficiency.
- **Temperature**: Check miner temperatures to prevent overheating.
- **Last Online**: Shows the last time the worker was connected.
### 3. Worker Actions
Using the **Actions** button, you can:
- **Reboot Device**, **Locate Device**, **Pause Mining**, or **Resume Mining**.
- Configure **Performance**, see more [here](/braiins-manager/workers/performance.md).
- **Enter maintenance mode** or **Exit maintenance mode**.
- **Change IP Address**, **Change Control Board SN**, **Change MAC Address**, **Change Serial Number**, **Change Customer**, **Change Location**, **Change Device Model** and **Change Firmware**.
- **Set Custom Password**.
- **Remove** worker.
- BOS specific actions: **Stop BOSminer**, **Start BOSminer**, **Restart BOSminer** and **Configure Pools**.
- Firmware actions: **Install Braiins OS**, **Upgrade Braiins OS**, **Apply License** and **Restore Stock Firmware**.
Braiins OS actions are unavailable when the Agent is offline, the firmware is not Braiins OS, the Braiins OS
version is below the minimum required for that action, or the worker is under an active
[curtailment](/braiins-manager/curtailment.md).
### 4. Worker Notes
Add **Private Notes** (visible only to the Provider) or **Public Notes** (visible to all accounts).
### 5. Device Timer-Series Stats
- View time-series graphs of **hashrate**, **power**, and **temperature**.
- Monitor **fan speeds** in RPM and **hashboard status**, including **hashrate**, **power**, and **temperature** for each board.
- Review **pool settings** and **pool status**.
### 6. History of Commands and Events
View the history of **applied commands** and logged **events** for each worker.
## How to Use the Worker Details Page
1. **Navigate**: Click on the worker's IP address in the [Workers List](/braiins-manager/workers/workers-list.md) to access detailed metrics.
2. **Monitor**: Analyze real-time data and historical performance trends.
3. **Configure**: Modify settings, update configurations, and manage each worker's operations directly from this page.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-manager/workers/workers-list.md
---
# Workers
## Overview
The **Workers** component in Braiins Manager enables efficient **batch management** and **monitoring** of mining devices, offering detailed insights into worker status, performance, and configuration. It provides powerful tools for both individual and large-scale management, making it an all-in-one solution for handling miners. Whether managing a small or extensive fleet, this feature optimizes your workflow with advanced monitoring, control, and flexible bulk management options, streamlining operations across various mining setups and enhancing overall productivity.
## Key Features
### 1. Workers List
- View a comprehensive list of your miners, displaying key metrics such as **hashrate**, **temperature**, **uptime**, **power consumption**, and more.
- The columns with the information in this section are **customizable**: you can choose which attributes to show or hide.
- Use powerful filters to refine the worker list by:
- **Algorithm**
- **Hashing Status**
- **Connectivity Status**
- **Firmware Type**
- **Cooling Mode**
- **Model**
- **Customer**
- **Location**
- **Rack**
- **Group**
- Use the free-text search field to narrow the list further.
- Hashing and connectivity states are explained in [Statuses](/braiins-manager/workers/statuses.md).
### 2. Bulk Actions
- Perform essential actions across multiple miners at once to streamline your operations.
- Bulk commands enhance efficiency for large-scale fleets.
- Select miners with the row checkboxes, select every miner on the current page, or select every miner that matches your active filter, then open the **Actions** menu.
#### Administrative Actions
These actions modify configurations within Braiins Manager and don't send a command to the miner:
- **Change Location**
- **Change Customer**
- **Change Device Model**
- **Change Firmware**
- **Set Custom Password**
- **Set Maintenance Mode**: puts the selected miners into maintenance mode. To take a miner out of maintenance mode, use the [Worker Details](/braiins-manager/workers/worker-details.md) page.
- **Remove**
- **Export Table**
#### System Commands
- **Reboot Device**
- **Locate Device**
#### Mining Commands (Braiins OS Only)
- **Pause Mining**
- **Resume Mining**
- **Start BOSminer**
- **Stop BOSminer**
- **Restart BOSminer**
- **Configure Pools**
#### Performance
- **Performance**: See details [here](/braiins-manager/workers/performance.md).
#### Firmware Actions
- **Install Braiins OS**
- **Upgrade Braiins OS**
- **Apply License**
- **Restore Stock Firmware**
Braiins OS commands are unavailable when the Agent is offline, the firmware is not Braiins OS, the Braiins OS
version is below the minimum required for that command, or the miner is under an active
[curtailment](/braiins-manager/curtailment.md).
### 3. Worker Details
- Click on any worker to access detailed views of its metrics, configuration, and operational status.
- Add custom notes or assign miners to specific groups or users for better organization and management.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/about.md
---
# Braiins OS
[Braiins OS](https://braiins.com/os-firmware) is an advanced autotuning firmware that optimizes the performance of your ASIC miners by automatically finding the optimal frequency and voltage for each individual chip, giving more work to high quality chips and less to low quality chips, to achieve a more efficient Watts per Terahash per second (W/TH/s) output at any power consumption level.
Ready to install? Head over to [Braiins Toolbox Quick Start](/braiins-toolbox/overview/index.md) to scan your miners and
push Braiins OS in bulk.
## Braiins OS Latest Release
## Performance & Temperature Management
### Autotuning
Braiins OS tunes the frequency and voltage of every individual chip, pushing high-quality chips harder and weaker ones less for the best possible Watts-per-Terahash (W/TH) output at any power level. Tuning takes about 10 minutes and only needs to run once per power target, the resulting profile is saved and can be reapplied instantly later without waiting for the miner to retune. Learn more about [Autotuning](/braiins-os/autotuning/index.md).
### DPS & Continuous Tuner
Ambient conditions on a mining site are never constant, so a single fixed profile is not enough to keep a miner running safely and efficiently at all times. [Dynamic Performance Scaling (DPS)](/braiins-os/dps/index.md) switches between several pre-tuned profiles in real time as chip temperature crosses defined thresholds, downscaling to a safer profile when things heat up and stepping back up automatically once conditions cool down, all without manual intervention. The (beta) [Continuous Tuner](/braiins-os/continuous-tuning/index.md) goes a step further: instead of switching between fixed profiles, it keeps re-optimizing frequencies and voltages predictively every few minutes, and adapts automatically as chips degrade over time.
### Temperature Management
Underneath both of these sits a thermal safety net that's active no matter which tuning mode you use. Fan speed is automatically driven by real-time temperature data, with [configurable min/max PWM ranges](/braiins-os/advanced-features/index.md#set-minmax-fan-speed). Built-in safety limits, including per-chip cutoffs on Antminers with internal temperature sensors, pause mining automatically before default temperature thresholds put hardware at risk.
The firmware also handles the edges of thermal operation: [defrost](/braiins-os/advanced-features/index.md#defrost) logic brings immersion and hydro miners up to a safe starting temperature before boot, and [auto-recovery](/braiins-os/advanced-features/index.md#auto-recovery-after-overheating) resumes mining on its own once a dangerous-temperature pause has cleared. It's all cooling-method aware, so air, immersion, and hydro setups are covered without extra configuration.
## Fleet Management
Managing a handful of miners looks nothing like managing a whole farm, so Braiins OS is built to be operated at any scale through two companion tools:
- [Braiins Toolbox](https://braiins.com/toolbox) is free and talks directly to your miners to get things done right away: installing and upgrading Braiins OS, starting, stopping, pausing, and resuming mining, setting power targets, and configuring cooling and fan settings in bulk.
- For continuous, larger-scale operation, [Braiins Manager](https://braiins.com/manager) watches over the fleet from the cloud instead, handling real-time monitoring, curtailment scheduling, automation, issue tracking, and energy reporting across every site.
Together, the two tools cover everything from a first install to day-to-day fleet operation. See [local vs. cloud mining tools](https://braiins.com/blog/local-vs-cloud-mining-tools) for a closer look at when to reach for each.
## Grid Integration & Curtailment
Braiins OS is built to participate in grid management and demand response programs out of the box, turning a fleet into flexible, dispatchable load that energy markets can rely on rather than a fixed drain on the grid.
Curtailment can be triggered manually with [Braiins Toolbox](/braiins-toolbox/cmd-miner/index.md#pause), manually, on a schedule, or automatically via [supported Curtailment Service Providers](/braiins-manager/curtailment/index.md#supported-curtailment-service-providers) like Enel, CPower, Voltus, and Scioto through [Braiins Manager](/braiins-manager/curtailment/index.md#immediate-action), or directly from your own systems via the [Braiins OS API](https://developer.braiins-os.com/latest/openapi.html)
Thanks to [Quick Ramping](/braiins-os/ramping/index.md#miner-ramping), miners respond to curtailment signals almost instantly in both directions:
- **Pause:** \~2 seconds
- **Resume:** \~2 seconds
## Security & Compliance
Braiins OS is backed by independent, third-party-audited security practices, not just internal policy. Braiins has completed a [SOC 1 Type 2 and SOC 2 Type 2 audit](https://braiins.com/blog/raising-the-bar-on-security-and-trust---soc-2-type-2-compliance), covering the design and operating effectiveness of controls around security, availability, processing integrity, confidentiality, and privacy over an extended period, not just a point-in-time check.
As SOC 2 Type 2 becomes a baseline expectation for mining vendors serving institutional operations, this certification means working with a firmware provider that treats security as a continuously verified discipline.
## More Features
- **[Stratum V2](https://braiins.com/blog/past-and-future-of-bitcoin-mining-protocols-stratum-v2-overview) Protocol:** Improves data efficiency and secures communication between miners and pools, protecting against hashrate hijacking
- **Broad Hardware Support:** Supports many custom hardware combinations and PSUs, see [Supported Models](/braiins-os/technical-resources/index.md#supported-devices) in Technical Resources
- **Fault-Tolerant Mining:** Optional [Advances Features](/braiins-os/advanced-features.md) let a miner keep running through minor hardware issues instead of stopping completely
- **Flexible Hashrate Splitting:** Hashrate can be split across [multiple pool groups](/braiins-os/configuration/index.md#split-hashrate-with-the-pool-groups) using instead of committing to a single poolok
## Support and contact
Have questions? Our dev and support teams are always available to help.
Join our Telegram group:
[EN group](https://t.me/BraiinsOS)[ES group](https://t.me/BraiinsOS_ES)[RU group](https://t.me/BraiinsOS_RU)[ZH group](https://t.me/BraiinsOS_ZH)
You can also [send a VIP request](https://help.braiins.com/en/support/tickets/new) to our support team.
Recommended next step
### Deploying to multiple miners?
Toolbox is the fastest self-serve step when you need to scan miners, push firmware, and make batch changes without doing every action by hand.
[Deploy faster with Toolbox](https://braiins.com/toolbox)[Talk to sales](https://braiins.com/contact-sales)
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/advanced-features.md
---
# Introduction
As of version 26.01 we have introduced a graphical user interface in Advanced section of the Configuration for all features available through the experimental.toml file.
In versions 24.09 to 25.11 these feature were only available via creating an experimental configuration file on the miner. This file allows customers to test experimental features and provide feedback before these features are rolled out to all Braiins OS components.
## Advanced section in Graphical User Interface (GUI)
All experimental features are available and can be configured in Braiins OS GUI. Make sure to save the changes made on this page by clicking the Save button on the bottom of the page.

## File Creation
To begin, you'll need to create the `/etc/bosminer-experimental.toml` file on the miner's filesystem. You can either generate the file directly on the miner or create it locally and transfer it to the miner using the `scp` command.
SSH into your miner and create the configuration file:
```bash
ssh root@MINER_IP 'cat > /etc/bosminer-experimental.toml << EOF
normal_ramping_time_up_s = 40
normal_ramping_time_down_s = 60
EOF'
```
Any non-specified setting will assume its default value. Look up `Loading experimental config` in the BOSminer log to confirm that the settings were successfully applied.
To reset all experimental settings to defaults, delete the file:
```bash
ssh root@MINER_IP 'rm /etc/bosminer-experimental.toml'
```
## Configuration File Behavior
We’ve also introduced several safeguards to ensure safe operations while using the experimental configuration file.
- Changes are monitored and applied dynamically every 10 seconds, so there is no need to restart BOSminer
- Unrecognized options are ignored without disruption
- Invalid values automatically revert to default settings
- Deleting the file will also revert the configuration to default settings
## Features
### Set MIN/MAX Fan Speed
This feature allows users to adjust the range of fan PWM settings. It is only active when the miner is automatically controlling fan speed based on temperature.
#### Feature Behavior
- The cooling mode needs to be “Auto”
- Does not have an effect when the miner is paused
- Does not have an effect during fan detection _(fans are detected during initial sequence to check if they are healthy)_
- Out-of-range values are overridden with the default values
- If **max\_fan\_speed** is lower than **min\_fan\_speed**, the maximum speed is set to 100%
#### Configuration Options
```toml
min_fan_speed = 0
max_fan_speed = 100
```
This experimental feature works only for firmware versions between 24.08.1 and 25.01. In the 25.01 version the feature was stabilized, introduced to GUI & API, and removed from the experimental list.
### Enable Hashboard Disabling on NOPIC Miners
This experimental feature lets your NOPIC miner keep running even if one of its hashboards is damaged. Normally, when a hashboard gets damaged, Braiins OS stops all mining to prevent further issues. However, with this feature, you can bypass that safety mechanism.
The term “NOPIC” refers to miners that don’t have a controller to regulate communication between the hashboards. Without this controller, it’s not possible to adjust or control the voltage or current flowing through the miner. This is why, by default, when a hashboard is damaged, it’s considered safer to stop mining completely. Even with a damaged hashboard, electricity would still be flowing through the miner, which could lead to more problems if not carefully managed.
You can read more on this topic on our [blog](https://braiins.com/blog/pic-vs-nopic-bitmain-miners-how-to-diagnose-and-deal-with-hashboard-issues-on-each)!
#### Configuration options
```toml
allow_disabling_hashboards_on_nopic_miners = true
```
To disable, simply use **false** or remove the line.
This experimental feature was introduced in the 24.09 version
### Continuous Tuning
Turning this option on enables the tuning process to run on the miner continuously, ensuring the best possible efficiency in changing environment.
#### Configuration Options
```toml
enable_continuous_tuning = true
```
Possible values are `true` or `false`
This experimental feature was introduced in the 26.01 version
### Override internal chip temperature sensor check
Besides the regular dangerous temperature limit, Braiins OS also includes a built-in safety check for Antminers with internal chip temperature sensors. If any chip hits 110 °C, the miner will pause mining automatically, just like it would with the DANGEROUS temperature. This limit is hard-coded, but with this update, you can now choose to turn this check on or off.
#### Configuration Options
```toml
ignore_internal_chip_temperature = true
```
Possible values are `true` or `false`
This experimental feature was introduced in the 25.03 version
### Set minimal fan PWM
This feature lets you set the minimum PWM at which your fans physically start spinning. It is useful for aftermarket fans or fans that the Braiins OS algorithm could not properly identify during initialization.
#### Configuration Options
```toml
min_fan_pwm = 20
```
The possible range is 0 - 100
This experimental feature was introduced in the 25.03 version
### Enable Rambo mode
This experimental feature lets your miner keep running even in case of minor hardware issues. Normally, when hardware has issues (e.g., not all chips are responsive), Braiins OS stops all mining to prevent further damage. However, with this feature, you can bypass that safety mechanism.
Rambo mode will ignore errors related to incorrect chip revisions, incorrect chip count, as well as voltage checks. Using this mode can lead to additional hardware damage and should be used only selectively and with enhanced operational control.
#### Configuration options
```toml
rambo_mode = 0
```
Possible values are `0` - disabled, `1` - cautious, `2` - maximum. It is recommended to start with `1`.
To disable, use `rambo_mode=0` or remove the line.
This experimental feature was introduced in the 25.07 version
### Custom ramp-up and ramp-down time
This experimental feature lets your miner ramp up or ramp down over a different time period. Normally, during standard ramp-up or ramp-down scenarios, the miner will reach the target configuration in approximately 30-40 seconds.
Note that this experimental configuration does NOT affect ramp-up and ramp-down of PAUSE/RESUME commands. It only affects other scenarios such as starting on boot, restart, or graceful shutdown.
Lowering these values can impact the lifespan of the device.
#### Configuration options
```toml
normal_ramping_time_up_s = 30
normal_ramping_time_down_s = 30
```
To disable, simply remove these lines.
This experimental feature was introduced in the 25.07 version
### Control fans PWM after PAUSE (REMOVED since 25.05)
This experimental feature lets you control your fans after hitting a PAUSE state of the miner. The default setting is 20% of PWM.
#### Configuration Options
```toml
pause_fan_speed = 20
```
The possible range is 0 - 100
This experimental feature was introduced in the 25.01 version and removed in 25.05 version. In 25.05 version the feature was stabilized, introduced to GUI (Cooling section of Configuration) & API, and removed from the experimental list.
### Defrost
When enabled, Defrost heats up hashboards just after the miner starts its operation to prevent booting hardware that is too cold. It runs before and is different from pre-heat built in function, that preheats the boards that have already been initialized.
The Defrost option has 2 parameters that must be set.
#### Defrost Timeout
Timeout in seconds for the hashboard heat-up routine. If not set, defrost runs until firmware recognizes the hardware temperature as acceptable to begin the startup.
#### Defrost Temperature Limit
When defrost temperature is reached, miner will stop heating up the hashboards and proceed to boot up.
Recommended value for Immersion and Hydro miners is 10 °C but can be set lower in case the liquid can't reach this limit due to external heating limitations. For air-cooled miners set a temperature that fits your operation.
Keep in mind that booting machines that are too cold or while the cooling liquid is not warm enough may affect hardware health.
#### Configuration Options
```toml
enable_defrost = true
defrost_timeout_s = 360
defrost_temperature_limit_c = 6
```
This experimental feature was introduced in the 26.01 version
### Auto-recovery after overheating
With this feature enabled, a miner that is in the PAUSE state due to reaching DANGEROUS temperature resumes mining automatically once the temperature has stabilized below 45 °C.
After 3 failed resume attempts, the miner waits 3 hours from the latest resume before trying another set of 3 attempts.
The user may manually RESUME or restart the miner to continue hashing.
Auto-recovery is enabled by default for air-cooled and immersion miners but disabled for Hydro miners (to protect against damage when cooling water is not flowing).
#### Configuration Options
```toml
overheat_recovery_mode = "enabled"
```
The modes for auto-recovery are `enabled` and `disabled`.
Automatic recovery from DANGEROUS temperature was introduced in the 26.05 version.
Previous versions of Braiins OS do not automatically resume mining for any reason.
## Support and contact
Have questions? Our dev and support teams are always available to help.
Join our Telegram group:
[EN group](https://t.me/BraiinsOS)[ES group](https://t.me/BraiinsOS_ES)[RU group](https://t.me/BraiinsOS_RU)[ZH group](https://t.me/BraiinsOS_ZH)
You can also [send a VIP request](https://help.braiins.com/en/support/tickets/new) to our support team.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/amlogic.md
---
# Amlogic remote installation guide
Prior to proceeding with the installation process, it is necessary for you to establish a VPN connection on your computer.
**Before scheduling a call with our support team, please ensure that you have followed steps 1 and 2.**
## 1. How to set up a VPN connection
Go to the Start menu and click on Settings

Click on Network & Internet

Click on VPN and then Add a VPN connection

As the final step, input the following VPN information into the required fields:
- Connection name: **Remote VPN**
- Server name or address: **vpn.hckpwn.site**
Lastly, click on 'Save'.

Please be aware that when you connect to the Braiins VPN, your computer will lose internet connection. The support
team needs to maintain constant communication with the user in order to provide instructions regarding the devices
and installation.
## 2. How to find my IP range
To scan your devices and proceed with the installation, we first need to determine your IP range.
Type "CMD" into the search bar and press Enter.

In CMD, type "ipconfig" and press Enter. You should see your IP configuration displayed, similar to the screenshot below. The crucial information for us is the IPv4 Address.

## 3. Scanning of the devices
Once the VPN is connected, please right-click on the file.bat and select "Run as administrator."


Click "YES"
After opening the `.bat` file, you will be prompted to enter the first three octets of your IP range (derived from the IPv4 address you found in [Step 2](/braiins-os/amlogic.md#2-how-to-find-my-ip-range)). Type them in and press Enter.

When you encounter this message on the CMD terminal, please inform the support team member you are collaborating with that the process has been completed.

## 4. Installation process
When everything is properly set up, the support team member will proceed with the installation on your device.
Afterward, the support team member you are working with will inform you once the installation has been completed. Please disconnect the VPN and allow the support team member to reconnect to your computer to verify the successful installation on the device.
If everything has gone smoothly and the installation was successful, please restart your computer.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/autotuning.md
---
# Autotuning
## Autotuning to get more BTC per Watt of energy consumed
_Every ASIC is unique_. Whether you use "ASIC" to refer to a mining rig or to the individual chips inside it, this statement remains true.
In the manufacturing of ASIC chips, small variations in the process, voltage, and temperature of the semiconductor die can all result in on-chip variations. When you are working on the scale of single-digit nanometers and measuring individual atoms, even "tiny" imperfections and alignment issues in the [semiconductor manufacturing process](https://semiengineering.com/knowledge_centers/manufacturing/process/issues/variability/) have a significant impact on the performance of the circuits. This is why every ASIC is unique.
Historically, bitcoin mining hardware manufacturers have grouped together chips into batches based on quality and then treated them uniformly. OEM (stock) firmwares often don't allow for basic functionality like under / overclocking, let alone adjusting frequencies and voltages on individual chips / hashboards.
**Braiins OS is built to help miners realize the extra potential of their machines by improving the efficiency (W/TH) at any power level.**

A 96 TH S19j Pro (29.5 J/TH), running BOS with better efficiency and more hashrate
## What Autotuning Does
The idea behind autotuning is simple: if all the chips in a mining rig are unique, we should treat them as such. Rather than having uniform frequencies across all chips in the machine, we use a trial and error "tuning" process to determine the quality of each chip. Higher quality chips can perform well with higher frequencies and produce more hashrate.
Lower quality chips don't produce as much hashrate per Watt, so we give those chips less work to do. By automatically finding the optimal settings for each chip, we help you utilize the full potential of your hardware at whatever power consumption level you set it to.

## Hashboard power consumption
Braiins OS assumes you have 3 hashboards and will take these values and apply 1/3 of the power limit to each hashboard. Even if a hashboard is disabled / removed / damaged, it will still apply 1/3 the power to each.
Example: Running a x19 at 3000W with 1 working hashboard will only apply 1000W to the single hashboard. Feel free to scale the power accordingly but understand the limitations of the hashboard, PSU and the circuit.
## Factors that Impact Performance
In the illustration on the previous page, you can see the (oversimplified) logic of the autotuning process. It starts with some universal settings for frequencies and voltages to see how each chip performs, then begins calibrating per-chip settings based on those results. Now imagine that instead of just +/- 10 MHz frequency adjustments and a single round of tuning, you have possible adjustments of +/- 5, 10, 15, or 20 MHz per chip across hundreds of chips per machine.
It's a process, and the **results aren't going to be the same for every machine**. Some machines will be in better condition, perhaps better located in the facility for cooling, and with higher quality chips. Those machines might see a 15%+ improvement in J/TH efficiency while others will only improve by 5% with the exact same configuration on Braiins OS. Again, _every ASIC is unique_.
Also, important to understand is the impact of temperature on the autotuning performance. We've documented [how high temperatures result in significant increases in power consumption](https://braiins.com/blog/impact-of-temperature-on-efficiency-of-antminer-x19s) for the Antminer X19 family of hardware, but an extra detail to note is that **temperature differences at the time of tuning as well as temperature variations during the autotuning process itself can materially affect the results**.
In other words, chips will behave differently if tuned at 20°C vs. 30°C ambient temperatures (unless you have very effective cooling to diminish the impact of ambient temperatures on the actual chip temperatures). For this reason, we recommend that you don't adjust fan speeds below 100% during tuning if your machines are air cooled in hot weather, and that you start the tuning during a relatively cool and stable part of the day (early morning or evening) if possible.

## What to Expect
Machines can be tuned in about 10 minutes during which time the hashrate of the machine will fluctuate noticeably. This is completely normal and nothing to worry about. Tuning results save periodically throughout the process, so you never have to start from zero on a given power limit in case your miners have to shut down before the tuning completes.
Once the tuning is finished, the settings "profile" is saved, and you can return to it at any time in the future and immediately apply it without waiting for the machine to re-tune.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/autoupgrade.md
---
# Autoupgrade
## Autoupgrade
The Autoupgrade feature is an **opt-in** miner management tool designed to keep your Braiins OS devices automatically updated. When enabled, it ensures your miners receive the latest firmware versions—including new features, performance enhancements, and bug fixes—with minimal manual intervention.
## The Upgrade Process
The autoupgrade process is designed to be safe and minimally disruptive. When the miner reaches its scheduled time to check for an update (based on your Daily, Weekly, or Monthly setting), it follows these steps:
1. **Health Check**: The system first verifies that the miner is "healthy." If the miner is not healthy, the process stops here and will be re-attempted at the next scheduled interval.
2. **Download**: If the miner is healthy, it checks for a new firmware version. If an update is available, the miner downloads it in the background while continuing to hash.
3. **Install**: Once the download is complete, the update is installed.
4. **Reboot**: The miner automatically reboots to apply the changes.
5. **Resume Hashing**: After the reboot, the miner resumes hashing with the new firmware.
## What is a "Healthy" Miner?
The health check is a crucial safety measure to prevent updates on a device that might be unstable. For the autoupgrade feature, a miner is considered healthy if it has been online for at least **one (1) hour** and is currently hashing.
This check ensures the update is not applied to a miner that is crashing, frequently rebooting, or otherwise malfunctioning, which could complicate the upgrade process.
## Understanding the Update Schedule
To prevent all your miners from upgrading simultaneously (which could cause a sudden, temporary drop in your total hashrate), the update schedule uses a randomized approach.
When you enable autoupgrade, you choose a frequency:
- **Daily**: The miner will pick a random time within the next 24 hours to check for an update.
- **Weekly**: The miner will pick a random time within the next 7 days to check.
- **Monthly**: The miner will pick a random time within the next 28 days to check.
### Example: Weekly Schedule
Let's say you enable the "Weekly" autoupgrade on a Monday.
- The miner immediately picks a random time within the next 7 days (e.g., Thursday at 4:30 AM).
- The miner does nothing until that time arrives (Thursday at 4:30 AM).
- At that exact time, it begins the autoupgrade process:
- If the miner is not healthy, the process stops.
- If the miner is healthy, it then checks for a new update.
- If an update is available, it will proceed with the Download, Install, and Reboot.
- The next check is then scheduled for exactly 7 days later (the following Thursday at 4:30 AM).
This "sticky" random time ensures that each miner in your fleet checks for updates at a different, staggered time, providing stability for your overall operation.
## Large deployments
As each miner will check the availability of an update individually, it can be taxing on network infrastructure to have thousand miners downloading a new firmware. Alternatively [Braiins Toolbox](/braiins-toolbox/cmd-firmware/index.md) can download the required firmware once and push the update to the miners using your local network.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/batch-management.md
---
# Batch Management
Braiins OS devices can be efficiently managed in batch, whether you prefer Braiins Toolbox or Foreman, we've got you covered. Read on to discover the solutions that best suit your needs.
## Braiins Toolbox
Braiins Toolbox is the ultimate solution for batch management of Braiins OS devices. It offers a user-friendly interface and a wide range of features to streamline the management of multiple devices. To get started with Braiins Toolbox, please refer to the Braiins Toolbox [documentation](/braiins-toolbox/introduction.md) for detailed instructions, tips, and best practices.
[Braiins Toolbox](https://feeds.braiins-os.com/braiins-toolbox/)
## Braiins Manager
Braiins Manager is the ultimate full-scope management platform. It offers not only monitoring and batch operations for your miners but also features such as curtailment, site map, energy reports, account management, and many more. To get started with Braiins Manager, please refer to the Braiins Manager [documentation](/braiins-manager/overview.md) for detailed instructions, tips, and best practices.
## Legacy BOS Toolbox
While Braiins Toolbox is the recommended solution, we understand that some users may still be using BOS Toolbox. Please note that BOS Toolbox is considered a legacy tool, and it may not receive updates and support as actively as Braiins Toolbox. If you wish to continue using BOS Toolbox, you can find download links below:
[Linux Version](http://feeds.braiins-os.com/toolbox/latest/bos-toolbox)[Windows Version](http://feeds.braiins-os.com/toolbox/latest/bos-toolbox.zip)
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/configuration.md
---
# Configuration
## Pool and Workername settings
Navigate to **Top menu > Configuration > Pools**

If you are mining on Braiins Pool, the userName is case-sensitive.
## Split hashrate with the pool groups
Pool groups allow you to split hashrate into multiple groups where each receives defined portion of hashrate. Each group has its own pools configured. There are two methods you can use - quota or fixed share ratio.
The example below shows two pool groups where the first one receives 75% of the hashrate and has two pools configured, while the second group receives 25% of the hashrate and has only one pool configured.
When all pools in any group become unavailable, the hashrate split is recalculated automatically to exclude the non-working group.

### Quota
Quota will split hashrate according to the ratio of each quota to the sum of all quotas. In the example below, group 1 will receive 2 parts of the hashrate (2/3), while group 2 will receive only 1 part of the hashrate (1/3).

### Fixed share ratio
Fixed share ratio splits the work according to specified percentages. The total of assigned values must equal 100%; otherwise, an error is returned.

## Autotuning configuration
Autotuning is available for Power Target or Hashrate Target.
- The Power target refers to a predefined power consumption level or limit that you want your miner to operate within.
- The Hashrate target refers to the desired level of computational power or mining efficiency that you want to achieve with your mining hardware.
1. Navigate to Configuration → Performance and click on "Enable Autotuning"
2. Set the Power/Hashrate Target according to your requirements
3. The progress of the autotuning can be viewed in the Dashboard under "Tuner status"
4. Once the Tuner Status shows "Stable," your miner is autotuned for your Power/Hashrate target
You can use autotuning to adjust your miner for multiple Power/Hashrate target profiles.
If Dynamic Performance Scaling is enabled due to reaching Hot temperature, Power/Hashrate target will be decreased to the values defined in Dynamic Performance Scaling. If you already have tuner profiles for reduced values, you will not need to wait for a new autotuning process.
## Tuner reset
Based on the device control board, the command is different via **BOS Toolbox > Command tab**:
### Zynq/Xilinx devices
```bash
/etc/init.d/bosminer stop && rm /etc/bosminer-autotune.json && /etc/init.d/bosminer start
```
### BBB/AML devices
```bash
/etc/init.d/S99bosminer stop && rm /etc/bosminer-autotune.json && /etc/init.d/S99bosminer start
```
## Custom DNS setting
To add a custom DNS to your device network settings, please navigate to **Top menu > System > Network**
### If you are using DHCP Client Protocol
If you have DHCP Client protocol > Click on Settings > Uncheck the Use DNS servers advertised by peer and add a custom DNS like `8.8.8.8` or `1.1.1.1` in the Use custom DNS servers field.
- Only for Zynq control board, custom DHCP does not work for BBB and AMlogic
### If you are using Static IP Protocol
If you have Static address protocol > set the Use custom DNS servers by adding `8.8.8.8` or `1.1.1.1` in the field.
Keep in mind after these changes Restart BOSminer: **Top right menu > Quick Action > Restart BOSminer**
## Cooling Control
Cooling controls allow to choose from three different modes: automatic, manual, and immersion. In all modes you have the possibility to control three levels of temperatures:
- **Target Temperature** is a temperature miner will target by regulating fans.
- **Hot Temperature** triggers **Dynamic Performance Scaling** (if enabled).
- **Dangerous Temperature** will stop mining. This is useful if there is a cooling failure or extreme temperature change.
We suggest a 10° separation between those values, so an example would be 60°, 70° and 80° if your setup maintains 60° average temperature.

### Default (Auto)
In default mode, fans are controlled automatically by the software to reach target temperature. You can also set custom minimum and maximum speed range for the fans.
### Immersion
Immersion mode will disable all fan setting controls and only the temperature setting will be available. Make sure to use the setup only when miners are in immersion.
### Manual
In manual mode you can choose fixed speed of fans and whether to require check for present fans. Usage of the manual mode is generally not recommended.
## Dynamic Performance Scaling
DPS is an adaptive temperature control feature. Documentation is available in [Dynamic Performance Scaling](/braiins-os/dps/index.md)
## Support and contact
Have questions? Our dev and support teams are always available to help.
Join our Telegram group:
[EN group](https://t.me/BraiinsOS)[ES group](https://t.me/BraiinsOS_ES)[RU group](https://t.me/BraiinsOS_RU)[ZH group](https://t.me/BraiinsOS_ZH)
You can also [send a VIP request](https://help.braiins.com/en/support/tickets/new) to our support team.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/continuous-tuning.md
---
# Continuous Tuning (beta)
## What It Is
The Continuous Tuner is an advanced autotuning mode that keeps optimizing your miner's performance indefinitely, rather than stopping once it finds a "good enough" configuration. When enabled, it replaces the traditional tuning approach with a smarter, always-active optimization system.
**How to enable:** In [Advanced Settings](/braiins-os/advanced-features/index.md#continuous-tuning).
## How the Autotuning Works (with DPS)
The autotuning tunes the miner once and creates a fixed profile – a specific combination of frequencies and voltages for each chip. This profile is tuned at whatever temperature the miner was running at during tuning.
**The problem:** This profile is static. It doesn't adapt to temperature changes.
When temperature rises, DPS (Dynamic Performance Scaling) steps in, but it can only do one thing: reduce power by jumping to a lower power level. When temperature drops, it can step back up. But the underlying profile settings remain unchanged.
This means:
- A profile tuned at 45°C runs with the same frequencies/voltages at 55°C
- Chip behavior changes with temperature (efficiency typically drops), but the profile doesn't adapt
- DPS can only reduce power in coarse steps – it cannot re-optimize for the new conditions
- The profile might require re-tuning or run suboptimal when temperature changes substantially.
## How the Continuous Tuner Works
The Continuous Tuner takes a fundamentally different approach. Instead of locking in a fixed profile, it continuously learns and adapts to current conditions.
**Key differences:**
| Feature | Autotuning (with DPS) | Continuous Tuner |
| ------------------------ | ------------------------------------- | ------------------------------------------------------------ |
| **Profile** | Fixed – tuned once, never adjusted | Continuously adapting to conditions |
| **Temperature handling** | Coarse power steps only | Re-optimizes frequencies/voltages for current temperature |
| **Per-chip tuning** | Yes, but based on limited tuning data | Accumulates data over time for deeper per-chip understanding |
| **Adaptation** | Reacts only to major problems | Proactively adjusts even to small changes |
The Continuous Tuner builds on the same per-chip approach but keeps learning. Over hours and days of operation, it gathers far more performance data than initial tuning ever could, allowing it tune the miner better.
### Internal Thermal Management
The Continuous Tuner includes its own thermal management system that works alongside external DPS. Its goal is to always maintain the target hashrate or power – but temperature safety takes priority. If thermal conditions demand it, the system will scale down regardless of performance targets.
How it works:
- **Predictive model** – Estimates thermal headroom based on current temperatures, ambient conditions, and fan speed. It anticipates thermal limits rather than waiting until they're hit.
- **Continuous adjustment** – Every tuning cycle (approximately 5 minutes), the system recalculates optimal frequencies and voltages for current conditions.
- **DPS integration** – Respects external DPS constraints when DPS is enabled while independently optimizing within those bounds.
The key difference: Autotuning with DPS is reactive ("temperature hit threshold, reduce power now"), while the continuous tuner is predictive ("based on current trends and fan headroom, here's the optimal power level to not overstep target temperature").
## Key Benefits for Miners
1. **Temperature-aware optimization** – The miner adapts its settings to current temperature, not just the temperature it was tuned at.
2. **Better long-term efficiency** – Maintains peak performance as conditions change throughout the day and across seasons.
3. **Self-healing** – If individual chips degrade, the system adapts automatically without requiring a full re-tune.
4. **No manual intervention** – Profiles are saved automatically every 5 hours. The miner picks up where it left off after restarts.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/dps.md
---
# Dynamic Performance Scaling
## Introduction
Dynamic Performance Scaling (DPS) is designed to keep your miner operational & efficient when overheating. This feature is ideal for clients who prioritize consistent uptime & safe mining.
DPS dynamically adjusts power and hash-rate targets based on real-time conditions, helping miners maintain the ideal balance between performance and stability.
#### Why Is DPS Important?
- **Stable Operation:** Prevents overheating and shutdowns during temperature spikes
- **Maximum Uptime:** Keeps miners running smoothly in fluctuating conditions while keeping the best efficiency possible
- **Hardware Protection:** Reduces hardware stress by scaling performance based on conditions
#### Who Should Use DPS?
DPS is ideal for miners in environments with frequent temperature changes, or for those managing large-scale operations where automated performance scaling is critical.
## Feature Overview
Dynamic Performance Scaling (DPS) helps your miner dynamically adjust performance based on environmental conditions, maximizing both uptime and efficiency. Before configuring DPS settings, **Autotuning must be enabled**. This core feature of Braiins OS optimizes your miner's performance, and we highly recommend keeping it active—disabling it will likely not yield better results.
DPS has several configurable layers and steps designed to suit different operating environments. While we provide a default setup that works well for most users, there are always exceptions based on specific needs. Let's take a closer look at how DPS works and the options available.
In simple terms, DPS adjusts your miner's power or hash-rate targets depending on environmental factors. For example, if the temperature rises during the day, your miner will downscale to reduce heat and allow fans to cool it effectively. When the temperature drops, the miner will upscale back to higher performance targets.
## How DPS Works
When DPS is **enabled**, it is activated in the background all the time waiting for conditions to be met to upscale or downscale. Upscale means going up with the power or hash-rate target by one step. Downscale means going down with the power or hash-rate target by one step.
| **Behaviour** | **25.11 and Older** | **26.01 and Newer** |
| ----------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------- |
| New installations | DPS is OFF by default | DPS is ON by default |
| Upgraded machines | DPS is OFF by default | DPS settings are migrated from previous versions, On Start Target = 66% |
| On Start Target | When first enabled, DPS starts tuning on 66% from set Power Target | Newly installed machines start tuning on 100% of set Power Target |
In 26.01 and newer releases, DPS is on by default but will not be engaged if the miner is not overheated. On Start Target defines the % of Power Target at which DPS will start tuning.
If the chip temperature reaches Hot temperature in the first 5 minutes of miner operations, it will downscale to 66% of the default Power Target to prevent overheating.
If the Hot temperature is reached after the 5 minute interval, DPS will downscale by one step.
All profiles that are tuned by DPS are saved and do not need retuning, unless they were removed. The DPS can cruise from its target to the minimal power target that you can set in settings.
This way miners can tune approximately 6 - 15 targets, depending on what step size you are using. Those targets can be set and quickly ramped up even if you disable the DPS.
## Scaling Conditions
To fully grasp Dynamic Performance Scaling (DPS), it's crucial to understand how it was designed and the rules that govern its operation. Please have a look at them below.
### Downscaling Conditions
Downscaling conditions are simpler and designed to respond quickly to prevent overheating. When the miner hits the **HOT temperature**, it needs to reduce its power or hash-rate to avoid potential damage or shutdown.
| **Condition** | **All versions** |
| -------------------- | ---------------------------------------------------------------------------------------- |
| Temperature Trigger | Chip temperature is greater than or equal to the HOT temperature |
| Downscale Timeout | It has been at least 3 minutes since the last downscaling |
| Upscale Timeout | It has been at least 30 seconds since the last upscaling |
| Minimal Target Check | The miner will not downscale below the minimal power or hash-rate target set by the user |
### Upscaling Conditions
Upscaling is a moment where a miner meets all conditions for stepping up to the next **Target Step**. There are several of them, have a look below in the table.
| **Condition** | **24.12 and Older** | **25.01 and Newer (Normal mode)** | **25.01 and Newer (Boost mode)** |
| --------------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ |
| Temperature Threshold | Chip temperature is at least 5°C below the HOT temperature | Chip temperature is less than or equal to the TARGET temperature | Chip temperature is at least 8°C below the HOT temperature |
| Cooldown Time | Last upscale was less than 3 minutes ago | Last upscale was less than 3 minutes ago | Last upscale was less than 3 minutes ago |
| Stable Temperature | Chip temperature did not fluctuate by more than 1°C in the last minute | Chip temperature did not fluctuate by more than 1°C in the last minute | Chip temperature did not fluctuate by more than 1°C in the last minute |
| Overheating Timeout | It has been at least 1 hour since the miner reached HOT temperature | It has been at least 1 hour since the miner reached HOT temperature | It has been at least 1 hour since the miner reached HOT temperature |
| Fan Speed | The fan speed is below 100% | n/a | n/a |
| DPS Memory | The target step is not preserved in the DPS Memory (since 24.09 version) | The target step is not preserved in the DPS Memory (since 24.09 version) | The target step is not preserved in the DPS Memory (since 24.09 version) |
## Additional Behavior
### Grid Alignment: Keeping Targets Clean and Consistent
The **Grid Alignment** feature ensures your miner scales power logically by snapping target values to predefined grid steps. This prevents irregular or awkward power targets that can arise during operation.
**Let's walk through an example:**
Suppose your miner has a power target of 3500W, and the power adjustment steps are set to 300W. Normally, the scaling sequence would look like this: 3200W, 2900W, 2600W, 2300W, and so on. However, when Braiins OS restarts with an On Start Target of 66%, the miner initializes at 66% of the set target. In this case, 66% of 3500W equals **2310W**.
Since **2310W** does not align with the grid, Grid Alignment snaps the value to the closest grid step, which is **2300W**. This keeps your power targets in a clean, organized sequence, avoiding scattered or unpredictable values. Keeping the value at 2310 would create another sequence of targets that would need to be tuned when upscaling or downscaling, slowing down the operation and lowering the hash-rate.

The grid automatically recalculates whenever you adjust the Power Target, Hash-rate Target, or Target Step Values. This feature helps maintain consistent scaling behavior, improving stability and efficiency.
### DPS Memory: Preventing Unwanted Target Cycling
"DPS Memory" is a feature designed to prevent your miner from constantly cycling between power targets due to temperature fluctuations. Let's break it down with an example:
Imagine your miner operates at 2500W but becomes too cold, while at 3000W it overheats. This can cause the miner to endlessly cycle between these two targets—scaling up and down without finding stability.
You can sometimes mitigate this issue by fine-tuning the **Target Step Values** (the increments used to adjust power). However, certain environmental conditions, like poor airflow, can lead to rapid and unpredictable temperature shifts. These fluctuations can cause a cascading "avalanche effect" where each adjustment triggers the same cycle over and over again.
This is where the **DPS Memory** feature steps in to stabilize things. Here's how it works in practice:
- **Memory Note**: If the miner scales up power and then quickly downscales within 30 minutes, DPS takes note of the conditions. It records the power or hash-rate target, as well as key metrics like temperature and fan speed.
- **Upscaling Rules**: The next time the miner attempts to scale up to that same target, it must meet one of these additional conditions to proceed:
- The current temperature is at least 2°C lower than the temperature from the preserved memory
- Alternatively, the fan speed is at least 20% slower than the previously recorded state
- If neither condition is met, DPS blocks the upscaling attempt, assuming that it would only lead to another cycle
- **Memory Reset**: The DPS memory automatically clears itself after 32 hours if no triggering event occurs
By using DPS Memory, your miner avoids getting stuck in an endless loop of scaling, allowing for more stable and efficient operation even in challenging environments. The DPS memory is by default embedded in the DPS itself, so there is no need to enable or disable this behavior!
## Configuring DPS
We always try to give users several options to configure the features we provide in our firmware. Talking about the DPS - all of the configuration can be set either via the [Toolbox](https://braiins.com/toolbox), the [Public API](/braiins-os/papi-about/index.md), or the miner's GUI.
#### Enable: Dynamic Performance Scaling
This feature must be enabled to configure DPS further on. Keep in mind that after saving this setting, Braiins OS will require a restart.
You can manage this through the Toolbox in batches, in the desired way via API or individually in the GUI.
#### Select Your Mode: NORMAL & BOOST
DPS offers two modes: **NORMAL** and **BOOST**, which control the conditions for performance upscaling.
- **NORMAL Mode:** The miner upscales when it is less than or equal to the target temperature.
- **BOOST Mode:** The miner upscales more aggressively, continuing until it reaches 8°C below the HOT temperature threshold. Keep in mind that this mode can increase the stress on the hardware at the cost of more hash-rate, proceed at your own risk!
Each mode is designed to fit different performance strategies, with more details provided in the upscaling conditions section. Changing the mode also requires a Braiins OS restart. It can be set through the Toolbox, the API, or individually in the GUI.
If you are using an older firmware version (before 25.01), these modes are not available. We recommend updating to
the latest firmware version
#### Choose: Step Values
The **Step Value** determines how much the miner scales up or down when conditions are met, whether by hash-rate or power target.
- **Smaller Step Value:** The miner will make smaller, more frequent adjustments, providing finer control but requiring more tuning steps
- **Larger Step Value:** Fewer, larger adjustments will be made, but you may miss opportunities for optimal hash-rate performance
It's important to find a balance here—too large a step may cause missed optimizations, while too small a step may lead to excessive tuning. However, once the entire grid is tuned, the miner will operate efficiently without further adjustments.
#### Decide: Minimal Target
This defines the lowest point your miner can reach when downscaling. Once the miner hits this limit, it will not reduce performance further.
###### Shutdown When Minimal Power Target Is Reached
This option gives you control over what happens if the miner hits the minimal power target.
- **If enabled:** The miner will PAUSE and attempt to resume operations after a defined period
- **If disabled:** The miner will PAUSE and resume automatically when the temperature drops below the HOT threshold
This feature can be particularly useful in environments with extremely high ambient temperatures, helping to prevent overheating while maintaining safe operating conditions.
#### AT LAST: SAVE & APPLY
After configuring everything to your needs, click SAVE & APPLY on the miner. This will restart Braiins OS and apply your new settings!
## Support and contact
Have questions? Our dev and support teams are always available to help.
Join our Telegram group:
[EN group](https://t.me/BraiinsOS)[ES group](https://t.me/BraiinsOS_ES)[RU group](https://t.me/BraiinsOS_RU)[ZH group](https://t.me/BraiinsOS_ZH)
You can also [send a VIP request](https://help.braiins.com/en/support/tickets/new) to our support team.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/factory-reset.md
---
# Factory Reset
A factory reset returns your miner's configuration to its defaults while keeping Braiins OS installed. Use it when you want to start from a clean configuration, or when a misconfiguration has left the miner unreachable or unstable.
## What a factory reset clears
A factory reset removes the configuration you have applied to the miner, including:
- Pool and worker settings
- Tuning profiles and performance settings
- The interface password and other user settings
Your installed Braiins OS firmware is **not** removed — the miner stays on the same firmware version and simply returns to a fresh configuration, as if it had just been installed.
A factory reset cannot be undone. Back up any configuration you want to keep before continuing.
## How to perform a factory reset
You can trigger a factory reset from the **web interface**, the **Public API**, or the **physical reset button**. They differ in **what happens to your network settings** — from the web interface or Public API you can choose, while the reset button always resets the network too.
### From the web interface or Public API
A factory reset from the Braiins OS web interface or the Public API keeps your **network settings by default** — the miner stays reachable at the same IP address after it restarts. Use this when the miner is working normally and you only want to reset its mining configuration.
If you also want to clear the network configuration, enable **Also reset network settings** before confirming (the Public API factory-reset call offers the same option). The miner then returns the network to its defaults — **DHCP** and the default hostname — exactly like a physical reset-button reset, and may come back with a new IP address.
### With the physical reset button
Holding the physical **reset** button also resets the **network settings** back to their defaults: the miner requests an address over **DHCP** and returns to its default hostname. Use this method when you have lost access to the miner — for example, after setting a static IP you can no longer reach.
| What you do | What the miner does |
| ------------------------ | ------------------------------------------------------------ |
| Short press (\< 5 s) | Reboots the miner. |
| Hold ≥ 5 s, then release | Performs a factory reset **and** resets the network to DHCP. |
The miner decides what to do **when you release** the button, so hold for at least 5 seconds and release once the LED starts blinking.
#### LED feedback while holding the button
The front-panel LED tells you when to release:
- **Solid** as soon as you press and hold the button.
- **Blinking** once you have held it long enough (about 5 seconds) for a factory reset. Release while it blinks to confirm.
This mirrors the LED behaviour of stock Antminer firmware, so the timing feels familiar.
## Reconnecting after a network reset
When the network is reset to DHCP — by a physical reset-button reset, or by enabling **Also reset network settings** in the web interface or Public API — the miner will usually receive a **new IP address** from your router after it restarts. To find it again:
- Use the **IP report** button to broadcast the miner's new address,
- Check your router's DHCP client list, or
- Scan your network with Braiins Toolbox.
A factory reset from the web interface or Public API keeps the same IP address **unless** you enable _Also reset network settings_, so by default you can keep using the same address to reconnect.
## Support and contact
Have questions? Our dev and support teams are always available to help.
Join our Telegram group:
[EN group](https://t.me/BraiinsOS)[ES group](https://t.me/BraiinsOS_ES)[RU group](https://t.me/BraiinsOS_RU)[ZH group](https://t.me/BraiinsOS_ZH)
You can also [send a VIP request](https://help.braiins.com/en/support/tickets/new) to our support team.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/faqs/advanced.md
---
# FAQ: Advanced
## How to automatically change power limit based on time?
In some countries there is an electricity grid program and the electricity cost is different during the day, so if you want to power up your mining devices with low and high PSU power limit during the day/night you can follow the steps below.
Some power companies will offer alternative power schedules for peak and off peak energy rates.
### For Zynq control boards from Braiins OS 22.08 and newer
```cron
0 9 * * * /etc/init.d/bosminer stop && sed -i 's/^psu_power_limit = .*/psu_target = 960/' /etc/bosminer.toml && /etc/init.d/bosminer start
```
This will change the device tuner power limit from (anything) to 960w at 9:00AM
```cron
0 2 * * * /etc/init.d/bosminer stop && sed -i 's/^psu_power_limit = .*/psu_target = 1280/' /etc/bosminer.toml && /etc/init.d/bosminer start
```
This will change the device tuner power limit from (anything) to 1280w at 9:00PM
If you want to make a more complex schedule, see [`crontab.guru`](https://crontab.guru) to learn how.
- If the scheduled task field was empty before this, make sure the following two lines appear on top before adding the other lines:
```cron
*/1 * * * * /usr/sbin/logrotate /etc/logrotate.conf 2>&1 | logger -t logrotate
0 0 * * * /usr/sbin/bos_upgrade_at 2>&1 | logger -t upgrade
```
- SSH again to the device and run the command below: `/etc/init.d/cron restart`
- The end result should look like this:
```cron
*/1 * * * * /usr/sbin/logrotate /etc/logrotate.conf 2>&1 | logger -t logrotate
0 0 * * * /usr/sbin/bos_upgrade_at 2>&1 | logger -t upgrade
0 9 * * * /etc/init.d/bosminer stop && sed -i 's/^psu_power_limit = .*/psu_power_limit = 960/' /etc/bosminer.toml && /etc/init.d/bosminer start
0 21 * * * /etc/init.d/bosminer stop && sed -i 's/^psu_power_limit = .*/psu_power_limit = 1280/' /etc/bosminer.toml && /etc/init.d/bosminer start
```
- Navigate to (System > Status >) System > System and set the device time zone to your proper time zone
## How to Start/Stop/Restart BOSminer?
### ZYNQ control boards
```bash
# Via BOS Toolbox CLI - [You can use start - stop - restart commands]
./bos-toolbox command -o -p root IP.AD.RE.SS "/etc/init.d/bosminer start"
# Via SSH - [You can use start - stop - restart commands]
SSH root@IP.AD.RE.SS "/etc/init.d/bosminer start"
```
### AML, BBB and CVITEK control boards
```bash
# Via BOS Toolbox CLI - [You can use start - stop - restart commands] for AML, BBB and CVITEK
./bos-toolbox command -o -p root IP.AD.RE.SS "/etc/init.d/S99bosminer start"
# Via SSH - [You can use start - stop - restart commands] for AML, BBB and CVITEK
SSH root@IP.AD.RE.SS "/etc/init.d/S99bosminer start"
```

Via Miner GUI - You can use `start` / `stop` / `restart` commands
## MAC and IP Address
By default, the device's MAC address stays the same as it is inherited from firmware (stock or Braiins OS) stored in the device (NAND). That way, once the device boots with Braiins OS, it will have the same IP address as it had with the factory firmware. Alternatively, you can specify a MAC address of your choice by modifying the `ethaddr=` parameter in the `uEnv.txt` file (found in the first FAT partition of the SD card).
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/faqs/basics.md
---
# FAQ: Basics
## What is my Braiins OS version?
You can find the current installed firmware version in the footer section of all the pages.
## Can I mine on any pool with Braiins OS firmware?
Yes, you can mine on any pools which have asicboost supported with Braiins OS firmware.
However, if you mine on [Braiins Pool](https://braiins.com/pool) you will get a 100% discount on pool fee.
## Same two miners, but both showing two different 'default' Voltages
That is normal. Each miner is different, chips are different.
## CGMiner GPL-compliance vs. BOSminer
CGMiner was originally a fully open-source software available under a General Public License (GPL) which requires anybody who modifies the code to publish their sources publicly. However, hardware manufacturers have ignored the GPL and typically do not publish their CGMiner forks in a timely manner if at all. Many other firmwares also rely on CGMiner but do not publish their sources.
We feature-matched CGMiner in our own mining software, BOSminer, which we wrote from scratch in Rust language. This means that Braiins OS is not in violation of any GPL because it is based on BOSminer rather than CGMiner.
## What SD card should I use?
Use the MicroSD card with a maximum capacity of 16GB. Recommended is to have less than 16GB. Larger capacity MicroSD cards are not recommended, because you can face issues with the firmware.
## Can I remove a hashboard and still run the other 2 while I repair the first one?
Yes, but remove the hash board while the miner is turned off.
## If I have an internet outage does this firmware turn off the hashboards?
It will stop and try to resume the connections.
The longer it takes to connect, the longer the retries take until about 1 hour (i.e. after an 1 hour outage, it can take 1 hour before the next attempt to connect).
Due to the use of DNS cache (`dnsmasq`) DNS issues can also make it take longer, it is important to add more pool URLs (same pool with different port doesn't help).
## How can I keep my miners hashing during an internet outage or pool disconnection?
Setup the "drain" pool that allows miners to continue hashing even when all pool connections are lost.
This is primarily used by operators in cold climates to prevent hardware from cooling down rapidly during connectivity issues, reducing the risk of thermal stress or hardware failure when service is restored.
To enable it, navigate to Configuration > Pools and add a new pool at the bottom of your priority list with the following URL: `drain://localhost` and username: `drain`.
Note: While in "drain" mode, your miners will continue to consume electricity and generate heat, but the hashrate is effectively sent to a void and will not generate any revenue.
## When I go to my miners address, it still shows the Bitmain firmware.
You need to clear the browser cache or try a different browser.
## I checked the power at the wall and power reported on Dashboard and it seems, there's a difference between them.
Yes, the data on the Dashboard is an estimation and may not be accurate, measure yourself at the wall.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/faqs/dps-autotuning.md
---
# FAQ: DPS, Autotuning
## What is the difference between autotuning and overclocking?
Autotuning is a process that increases efficiency at any power setting whereas overclocking increases hashrate but typically decreases efficiency. You can read a comprehensive explanation of the difference [here](https://braiins.com/blog/autotuning-vs-overclocking-for-bitcoin-miners-sha-256-asics?utm_source=help).
## What is autotuning / per-chip tuning?
Per-chip autotuning is the process of software calibrating the frequencies and voltages on every individual chip on a hash board to achieve higher efficiency.
This means that the software tests the chip's performance at different frequencies and narrows in on the optimal settings to get the most hashes per Watt of energy consumed (maximize W/TH).
Autotuning is a sophisticated tool for improving efficiency at any hashrate level.
## How long does the tuning process take?
It depends on your device model and control board and can take several hours.
You can see these stages during the tuning process in the last table (Tuner section) in the Miner > Overview page
🚦 Testing profile performance > Tuning individual chips > Stable
## Auto-tune PSU power limit configuration
Braiins OS will distribute the target among expected hashboards for the miner model. Even if a hashboard is disabled/removed/damaged it will still allocate target proportionally.
Example: Running an S19 at 3000W with 1 working hashboard will only apply 1000W to the single hashboard.
Feel free to scale the power accordingly but understand the limitations of the hashboard, PSU and the circuit.
## Tuner status shown is disabled?
Please navigate to the top menu > Configuration > Performance and clear all custom values and leave all fields as firmware default, make sure all hash chains are enabled, and please make sure Autotune is enabled. Then click the save & apply button.
Status can be read "disabled" even when just one hash board is disabled or experiencing issues.
It is best to view them individually at the bottom of the main dashboard.
This can be a false indication, as you can have HB6 disabled while HB7 and HB8 are stable.
It shows Tuner Status "disabled" on the right, but the tuner is running fine with the other two.

If your issue persists feel free to [**submit a support ticket**](https://help.braiins.com/en/support/tickets/new).
For effective troubleshooting, include the following file to the ticket:
**Top Right Menu → Quick Action → Get Help** → Download the zip file and attach to the ticket.

## When set to immersion mode, the web UI says 100% fan constantly
This is normal behavior, enabling immersion mode disables the fan check on the device.
## Is it normal to see power usage exceed power limit?
It is normal. You should measure power at the wall for an accurate indication of power as the software is not accurate.
Also keep in mind power will change with chip temperature, more heat, more watts.
## Does Dynamic performance scaling automatically revert once temperatures gets lower?
The dynamic power scaling triggers with HOT temperature, and it can down/up scale on S21 and S19.
Dynamic Performance Scaling needs two conditions for upscaling: The miner's temperature is at least 5 degrees below the HOT limit and the fans are running below 80%.
## Where is tuner configuration saved?
The tuner configuration is saved in /etc/bosminer-autotune.json
## What is overclocking?
Overclocking is a brute force mechanism for increasing hashrate at the expense of efficiency.
## Autotune stabilized and then about 5 hours later start again? No changes were made to restart it. Why?
This could happen if the conditions changed, such as a large change in chip temperature. Or it's simply a chip reaction that needs further adjustment.
This is a standard behavior as miner is adapting to changing environment.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/faqs/farm-operators.md
---
# FAQ: Farm Operators
## Identify the miner with RED LED in the Farm
You can enable and disable the LED from web GUI > the top right menu > Quick Action > Enable/Disable the LED
For identifying a device in your farm you can run the command below from SSH or BOS Toolbox command tab.
```bash
miner fault_light on
```
This command will turn on RED LED on the miner
```bash
miner fault_light off
```
This command will turn off RED LED on the miner
```bash
ssh root@10.10.10.10 "miner fault_light on"
```
Example using SSH
Miner identification can be done with a Braiins Toolbox as well, see [here](/braiins-toolbox/cmd-system.md)
## Miner Signalization (LED)
Miner LED signalization depends on its operational mode. There are two modes (recovery and normal) which are signaled by the green and red LEDs on the front panel. The LED on the control board (inside) always shows the heartbeat (i.e. flashes at a load average based rate).
### Recovery Mode
Recovery mode is signaled by the flashing green LED (50 ms on, 950 ms off) on the front panel. The red LED represents access to a NAND disk and flashes during factory reset when data is written to NAND.
### Normal Mode
The normal mode state is signaled by the combination of the front panel red and green LEDs as specified in the table below:
| Red LED | Green LED | Meaning |
| :---------------- | :--------------------- | :-------------------------------------------------------------------------------------------------------- |
| **on** | **off** | bosminer or bosminer\_monitor are not running |
| **slow flashing** | **off** | hash rate is below 80% of expected hash rate or the miner cannot connect to any pool (all pools are dead) |
| **off** | **very slow flashing** | miner is operational and hash rate above 80 % of expected hash rate |
| **fast flashing** | **N/A** | LED override requested by user (`miner_fault_led_on`) |
## How to quickly paused/resumed mining? (S19/S17 series)
Mining on the can be quickly paused/resumed which is suitable for farms participating in grid programs. E.g. `pause` command looks like this:
```bash
echo '{"command":"pause"}' | nc IP.AD.RE.SS 4028
```
From testing we can expect the pause to start after an average of 8 seconds for Zynq control boards, and 10 for BBB.
Zynq was tested and achieved 95% power down in an average of 22 seconds, and 99% after an average of 27.
## Get current DHCP IP and set it as Static IP
You can use BOS Toolbox and `uci` commands to assign current device IP to Static IP.
[Windows Version](http://feeds.braiins-os.com/toolbox/latest/bos-toolbox.zip)[Linux Version](http://feeds.braiins-os.com/toolbox/latest/bos-toolbox)
This command will use the toolbox command functionality - it runs the command on all devices listed in the `iplist.txt` file.
This specific command sets up static ip address and gateway (it takes the current IP address and gateway) and also sets the `netmask` to `255.255.255.0`
```bash
./bos-toolbox command iplist.txt './lib/functions/network.sh; network_flush_cache; network_find_wan NET_IF; network_get_ipaddr NET_ADDR "${NET_IF}"; network_get_gateway NET_GW "${NET_IF}"; uci set network.lan.ipaddr=${NET_ADDR}; uci set network.lan.gateway=${NET_GW}; uci set network.lan.netmask="255.255.255.0"; uci set network.lan.proto="static"; uci commit network'
```
## Collect tcpdump logs for connection troubleshooting
SSH to the miner, run the commands below, and let it run for at least 15 minutes.
```bash
tcpdump -i any -s 65535 -w /tmp/dumpv2.pcap port 3336 or port 3337
```
### Stratum V2
```bash
tcpdump -i any -s 65535 -w /tmp/dumpv1.pcap port 3333
```
### Stratum V1
Then you can use `scp` command or `WinSCP` software to download the collected log.
Next Step in following article "Run Stratum probe and collect logs for connection" in section [troubleshooting](/braiins-os/faqs/troubleshooting.md).
### What happens when a miner loses internet connection
The miner will continue to mine for 3 minutes, in case a block is discovered during the outage. If within 3 minutes the internet is restored, the work is submitted to the available pool.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/faqs/license.md
---
# FAQ: Braiins OS Licensing
## Braiins OS Licensing
### Is Braiins OS usage subject to a license?
Yes, it is. License agreement is available [here](https://braiins.com/os/plus/license).
### How can I determine the version of Braiins OS I am using?
To determine the version of Braiins OS you're using, you have multiple options. You can check the software version information provided in the user interface of the software.
Additionally, you can pull this information via Braiins API, see [here](https://github.com/braiins/bos-plus-api), or use other tools such as Braiins Toolbox, see [here](https://braiins.com/toolbox/), to access the version information.
### Where can I find the detailed terms of the Braiins OS license?
Detailed terms and conditions for the Braiins OS license can be found on our official [website](https://braiins.com/os/plus/license).
It's recommended to review these terms before using Braiins OS.
### How does the new licensing of Braiins OS (version 23.04 and newer) work?
The new licensing system for Braiins OS version 23.04 and newer operates as follows:
Before mining operations begin, each mining device undergoes a process of license acquisition. This involves the device contacting a **license server**, which is responsible for generating a time-limited license based on the provided device information. Once the device successfully obtains the license, it gains authorization to initiate mining activities.
During the mining process, the appropriate dev fee is credited to Braiins. Licenses obtained by devices are automatically renewed every **60 minutes**. This system benefits from geographically distributed license servers, enhancing reliability and minimizing latency for miners.
In cases of connection interruptions or any unforeseen issues with our infrastructure, it's important to note that the acquired licenses remain valid for a duration of 12 hours. This ensures uninterrupted mining operations throughout this extended period, despite potential disruptions.
However, should a situation arise where a license becomes invalid or fails to be acquired initially, the mining device will trigger a penalty mechanism. This penalty involves the device's **hashrate being reduced by an x%**, as outlined in the license agreement. This mechanism aims to incentivize consistent connectivity and compliance with the licensing requirements while maintaining a fair balance between the interests of miners and Braiins.
### What is the fee for the license?
The fee is defined in the [license agreement's](https://braiins.com/os/plus/license) section 5.
### What is the licensing server?
The licensing server is a dedicated server infrastructure that operates on specific URLs, which are determined based on geolocation. Its primary function is to generate time-limited licenses for **Braiins OS version 23.04 and newer**.
Once a mining device acquires a license from the licensing server, it is then authorized to commence mining operations, with the appropriate development fee credited to Braiins. To connect to the licensing server and obtain a license, miners need to establish connections to URLs following the `*.braiins.com` pattern.
It's important to note that the licensing server pertains exclusively to licenses for Braiins OS versions 23.04 and newer.
### What are the common issues related to Braiins OS licensing?
There are typically two types of problems that users might encounter with Braiins OS licensing:
#### 1. Connection and URL Access Issues
It's important to ensure that both your miners and the Braiins Farm Proxy (if used) can reach URLs with the mask `*.braiins.com`. Furthermore, ensure that port `3336` is allowed for both license and developer fee connections. If you're setting up with a Farm Proxy, additional ports `443` and `3338` need to be allowed as well.
If you continue to experience problems with Braiins OS licensing after checking these factors, please don't hesitate to reach out to our [support team](https://help.braiins.com/en/support/tickets/new) for further assistance.
### What happens if the miner(s) can't connect to the licensing server to obtain the license?
If the license is not acquired, mining will commence without the license. However, it's important to note that in this scenario, the miner will incur a penalty in the form of hashrate reduction, as defined by the [license agreement](https://braiins.com/os/plus/license).
### What happens if a miner with an obtained license loses connection to the licensing server?
In the event that a miner with a valid license experiences a connection interruption or encounters issues with our infrastructure.
It's important to note that the licenses for **Braiins OS version 23.04** and newer remain valid for a duration of **12 hours**.
This ensures uninterrupted mining operations during this specified timeframe.
However, if a license becomes invalid, the mining device will start to incur a reduction in hash rate, as defined in the [license agreement](https://braiins.com/os/plus/license).
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/faqs/troubleshooting.md
---
# FAQ: Troubleshooting
## Troubleshooting
### Braiins OS hardware issues (i2c, crc, etc)
- Make sure the device is connected to the ground at all times (case and PSU). Read the Bitmain article [here](https://support.bitmain.com/hc/en-us/articles/360002019914-Check-if-your-miner-is-grounded-properly).
- Check that all settings are default (Delete any value, then Save & Apply).
- Try reducing the power limit. Wait at least 12 hours for Tuner Status to show Stable. If you have a Beagle Bone Black control board, the time can be 1 or 2 days due to the single core, low speed CPU.
- Check that the cables are well connected; try swapping or replacing them and tighten the power rail screws. If you see the "Short circuit" message in the logs, a screw is loose in the power rails. Be careful, they can break, so too much force is not recommended.
- Disable the hashboard in Configuration > Performance > Override Global Hash Chain about 6 hours.
- Try with another power supply unit, problems with the PSU can also manifest as HW errors.
- Clean the device carefully, if you use liquids you should wait a few days to dry fully.
If the problem persists, it probably has a physical issue that needs repair.

_Make sure to check the small ribbon cable that goes to the PSU in newer miners._
ERROR: Socket is closed
This issue happens during "Installation, Upgrade, Uninstallation" through the SSH connection.
The root cause can be a corrupted file in the `/tmp/` file in the miner. A simple reboot can solve the issue.
I'm not receiving Braiins OS bonus rewards
Set an older slushpool.com address if you're using a Braiins OS version older than 22.08.1 to successfully return the 2% of mining fee on Braiins Pool. _Old addresses will work indefinitely_.
Set new braiins.com addresses otherwise.
SSH connection does not work in Braiins OS
Please navigate to top menu > System > Administration and make sure the settings are the same as the picture below:

I installed Braiins OS but still I see Bitmain firmware
- Please clear your web browser cache
- Please type just IP
- Try it on another browser.
- Make sure you are running off of NAND or SD Card appropriately.
All pools URLs are dead
Please check these points:
- Make sure the pool settings are correct. (URLs, userName.workername) It can be a typo issue, such as an extra space or character.
- Make sure the pool is Asicboost supported.
- Please add more pool URLs, they are failover for each other. Recommended to add all V2 and V1 URLs
- Make sure the related ports 3333, 3336, and 3337 are not blocked in your network
- Ports can be different, based on which pool they are mining.
- In some cases DNS issues can cause a similar problem, so adding a custom DNS to your device network settings can do trick, navigate to top menu > Network > Interfaces > LAN > Edit:
1. If you have DHCP Client protocol > Click on Advanced Settings > Uncheck the Use DNS servers advertised by peer and add a custom DNS like `8.8.8.8` or `1.1.1.1` in the Use custom DNS servers field.
2. If you have Static address protocol > set the Use custom DNS servers by adding `8.8.8.8` or `1.1.1.1` in the field. Keep in mind after these changes Restart BOSminer from the top-right menu > Quick Action > Restart BOSminer
Configuration page doesn't load/save correctly
We identified a false/positive issue on some Antivirus and Internet Security software like Kaspersky Security Cloud.
If you see a message in top of the configuration page like:
- `Unknown Error / Saving Error`
- `[Network] Request has been forbidden by Antivirus`
please disable your Antivirus temporarily or add your mining device's IP to its whitelist.
If you are using Braiins Manager this needs to be used to modify the configuration details.
### Hashboard troubleshooting (Sensors showing 0 value / very low hashrate)
Please follow these steps:
- Please unplug the device from the Power unit and Network then Connect the device through a Ground wire to Electric discharge.
- Make sure your device is Ground connected.
- Try lowering the power limit value for Autotuning.
- A common choice is 1280W, even lower if needed.
- Try cleaning the boards. Sometimes dust causes this issue.
- Check the cables (power and data) are firmly connected.
- Try swapping those cables or replacing them.
- Try another Power Supply Unit.
- If the problem persists you can go to Miner > Configuration and disable the board until it's replaced.
- Sometimes just disabling the board for several hours, then enabling it brings it back. Disable the hashboard in Miner > Configuration > Override Global Hash Chains about 6 hours.
Check the hashrate and voltage, dying board, bumps voltage until it reaches ceiling, then gradually loses hashrate
until it dies.
### BTC Tools couldn't update pool URLs
- Make sure the device's password is correct in the BTC Tools setting.
- Make sure the device status is "success" in the list of miners.
- Make sure you typed `stratum2+tcp://` or `stratum+tcp://` at the beginning of the URLs.
- Make sure you typed the key for stratum V2 protocol: `9awtMD5KQgvRUh2yFbjVeT7b6hjipWcAsQHd6wEhgtDT9soosna`
- Make sure there is no `/` at the end of URLs.
#### Correct URLs sample
```
stratum2+tcp://stratum.braiins.com:3333/9awtMD5KQgvRUh2yFbjVeT7b6hjipWcAsQHd6wEhgtDT9soosna
```
Stratum V2
```
stratum+tcp://stratum.braiins.com:3333
```
Stratum V1
### Collect tcpdump logs for connection troubleshooting
SSH to the miner and run the commands below and let it run for at least 15 minutes.
```bash
tcpdump -i any -s 65535 -w /tmp/dumpv2.pcap port 3336 or port 3337
```
Stratum V2
```bash
tcpdump -i any -s 65535 -w /tmp/dumpv1.pcap port 3333
```
Stratum V1
Then you can use `scp` command or `WinSCP` software to download the collected log.
Next step: continue with the next FAQ "Run Stratum probe and collect logs for connection troubleshooting".
### C5 or T9+ Control Board Logs with Braiins OS installed
The main error:
`hread 'tokio-runtime-worker' panicked at 'BUG: hashchain instantiation failed: UIO device chain1-common: cannot find uio device`
To fix this issue need to UNINSTALL Braiins OS from control board.


_C5_
### Submit a support ticket
If your issue persists feel free to [**submit a support ticket**](https://help.braiins.com/en/support/tickets/new).
For effective troubleshooting, include the following file to the ticket: Top Right Menu → Quick Action → Get Help →
Download the zip file and attach to the ticket.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/installation/install.md
---
# Installation
## Install Braiins OS on S21 or S19 Series
### Installation via Braiins Toolbox
The preferred method for installing Braiins OS is by using the [Braiins Toolbox](/braiins-toolbox/introduction/index.md). This tool allows for remote batch installations on all the Antminer S21 and S19 series control boards: Zynq/Xilinx, Amlogic, BeagleBone Black, and Cvitek/CV1835.
### SD Card Installation
Braiins OS can be also run on Antminers from the S19 series using **Zynq**(Xilinx) or **BeagleBone Black** control boards with a flashed SD card. You will require a Micro SD card with a minimum capacity of 128 MB. Please avoid using cards with capacities greater than 8 GB. The speed or class of the SD card is not relevant.
- [Download](https://drive.google.com/drive/folders/1BNnomhiHJgcGqdMSnoFdPs18pozsVKWW) the provided SD image.
- Flash the image from a PC (with [`BalenaEtcher`](https://www.balena.io/etcher/), [`Rufus`](https://rufus.ie/en/), or `dd`)
_Note: Simple copy to SD card will not work. The SD card has to be flashed!_
- Insert the SD card into the miner. The miner can be powered-on while doing this.
- After inserting the SD card, power-up or reboot the miner. The miner will automatically boot Braiins OS from the SD card.
_Note: The internal memory is kept intact and Braiins OS does not alter it in any way. After the SD card is removed,
the stock firmware will boot, with all the previous settings._
- Enter the miner with a web browser (search its IP with `AngryIP` or `Nmap`)
## Install Braiins OS on S17 Series
In order to use Braiins OS, you will need Micro SD card with at least 128 MB capacity. Do not use cards with capacity greater than 8 GB. The speed / class of the SD card is irrelevant.
- Download the provided SD image: [x17 Zynq/Xilinx/7007 (23.01)](https://drive.google.com/drive/folders/1a3Oz-8UqSuKxx3Rv2NrEtBwkgShR3mFi)
- Flash the image from a PC (with [`BalenaEtcher`](https://www.balena.io/etcher/), [`Rufus`](https://rufus.ie/en/), or `dd`)
_Note: Simple copy to SD card will not work. The SD card has to be flashed!_
- Insert the SD card into the miner. The miner can be powered-on while doing this.
- After inserting the SD card, power-up or reboot the miner. The miner will automatically boot Braiins OS from the SD card.
_Note: The internal memory is kept intact and Braiins OS does not alter it in any way. After the SD card is removed,
the stock firmware will boot, with all the previous settings._
- Enter the miner with a web browser (search its IP with `AngryIP` or `Nmap`)
### Install to NAND (Optional)
- Install to NAND from (System > Status >) System > Install to NAND (Only v23.01 or earlier with x17 control boards).
## Install Braiins OS on S9, S9i, S9j
### Run From SD card

In order to use Braiins OS, you will need Micro SD card with at least 128 MB capacity. Do not use cards with capacity greater than 8 GB. The speed / class of the SD card is irrelevant.
- Download the provided SD image: [S9, S9j, S9i Zynq/Xilinx (22.08.1)](https://drive.google.com/drive/folders/1HSWCoHGiV81ASeOtdmrZhL9fIG85YdeR)
- Flash the image from a PC (with [`BalenaEtcher`](https://www.balena.io/etcher/), [`Rufus`](https://rufus.ie/en/), or `dd`)
_Note: Simple copy to SD card will not work. The SD card has to be flashed!_
- Change the jumper to the **BOOT FROM SD** mode to boot from SD
- Insert the SD card into the miner. The miner can be powered-on while doing this.
- After inserting the SD card the miner will automatically boot Braiins OS from the SD card.
_Note: The internal memory is kept intact and Braiins OS does not alter it in any way. After the SD card is removed,
the stock firmware will boot, with all the previous settings._
- Enter the miner with a web browser (search its IP with `AngryIP` or `Nmap`)
### Install to NAND (Optional)
- Download the provided SD image: [S9, S9j, S9i Zynq/Xilinx (22.08.1)](https://drive.google.com/drive/folders/1HSWCoHGiV81ASeOtdmrZhL9fIG85YdeR)
- Flash the image from a PC (with [`BalenaEtcher`](https://www.balena.io/etcher/), [`Rufus`](https://rufus.ie/en/), or `dd`)
_Note: Simple copy to SD card will not work. The SD card has to be flashed!_
- Change the jumper to the **BOOT FROM SD** mode to boot from SD
- Insert the SD card into the miner. The miner can be powered-on while doing this.
- After inserting the SD card the miner will automatically boot Braiins OS from the SD card.
_Note: The internal memory is kept intact and Braiins OS does not alter it in any way. After the SD card is removed,
the stock firmware will boot, with all the previous settings._
- Navigate to menu System > Install the current system to NAND
- Wait for the process to be completed
- Turn off the device and revert back the jumper to the **BOOT FROM NAND** mode and take out the sd card.
- Turn on the device.
- Enter the miner with a web browser (search its IP with `AngryIP` or `Nmap`)
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/installation/uninstall.md
---
# Uninstall
## Uninstall using Braiins Toolbox
You can uninstall Braiins OS from Antminer S21 or S19 series devices using the Braiins Toolbox. A detailed manual on how to perform this operation is provided [here](/braiins-toolbox/cmd-firmware/index.md).
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/installation/upgrade.md
---
# Upgrade
## Upgrade the Braiins OS to a specific version with Braiins Toolbox
You can upgrade Braiins OS on Antminer S21 or S19 series devices using the Braiins Toolbox. A detailed manual on how to perform this operation is provided [here](/braiins-toolbox/cmd-firmware/index.md).
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/miner-states.md
---
# Miner States
## Overview
Starting with Braiins OS 26.08, every miner reports a single, detailed **Miner State** in the GUI. The state tells you not just whether the miner is mining, but exactly what it's doing and why, and, when it's known, the time the state is expected to change.
This detailed state is shown on the miner's Dashboard, and is available through the [Public API](/braiins-os/papi-about/index.md).


## The Four Miner States
Every miner is always in exactly one of four coarse states:
| Message | Detail |
| ----------------- | ----------------------------------------------- |
| Miner is running | Actively mining, at full or reduced performance |
| Miner is starting | Powering up, not hashing yet |
| Miner is stopping | Winding down, on the way to Stopped |
| Miner is stopped | Not mining |
Each can carry a sub-state describing what's happening during that phase.
## Why a Miner Is Stopped or Stopping
| Message | Detail |
| --------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| Mining software is not running | Firmware has failed to stop or is experiencing an internal communication error |
| Unsupported hardware: `{detail}` | Firmware refuses to run on the unsupported hardware; `{detail}` lists the exact error |
| All mining pools are unresponsive | All mining pools are dead (unreachable) |
| No valid BOS license | Miner does not have a valid Braiins OS license, which can indicate connectivity issues |
| Mining paused by user | Miner has received a pause command, for example from software used for curtailment. See more details in System → Log → boser |
| Thermal protection activated: `{detail}` | Miner has been paused due to a dangerous temperature, broken fans, or another cause of overheating |
| DPS cooldown, will resume `{time}` (or just DPS cooldown) | DPS Cooldown — [DPS](/braiins-os/dps/index.md) has scaled down to the minimum target and is waiting to resume |
Other states are represented by internal firmware errors, and their meaning depends on the error displayed. See [Error Codes](/braiins-os/technical-resources/index.md#error-codes) in Technical Resources for a full list.


## What Happens While a Miner Is Starting
| Message | Detail |
| --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| Performance may be affected until finished | Early stage of booting up; firmware components are coming online |
| Cooling down before start | Cooling the chips down to a safe temperature (usually 45°C) |
| Ambient temperature too low | Waiting until the chips are warm enough to enumerate temperature (usually 10°C) |
| Starting `{time}` (or just Starting) | Available when Advanced Delayed Start feature is on |
| Defrosting, finishing `{time}` (or just Defrosting) | Defrosting — [Defrost](/braiins-os/advanced-features/index.md#defrost) brings hashboards up to a safe starting temperature |
## What Happens While a Miner Is Running
Most of the time, a running miner has nothing more to report beyond "Miner is running," with no additional message. The one exception:
- **Preheating:** "Preheating chips, mining will start `{time}`", or just "Preheating chips" if no end time is known. Mining runs at reduced performance while hashboards reach operating temperature, before ramping up to full performance.

## Knowing When a State Will Change
Many states include an expected end time, shown as either an exact time or an upper bound, e.g. "will resume no later than 14:32" versus "will resume at 14:32," depending on how precisely Braiins OS can predict it.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/papi-about.md
---
# About
## Overview
The Braiins OS Public API, introduced in version 23.03, represents a significant milestone in our platform's evolution. This API sets a standard for all present and forthcoming hardware variants, irrespective of their manufacturer.
You can interact with the API via gRPC and since version 25.07 via REST. Both gRPC and REST provide the same functionality and the method you choose therefore depends solely on your preference.
## Getting Started
Whether you are new to mining software or looking to integrate Braiins OS features into your existing systems, starting is straightforward. Our comprehensive API documentation and tools provide you with everything you need to begin. Explore the practical tools available for interacting with the API, delve into our GitHub repository for direct access to the API's source, or jump right into experimenting with our example code. Below are links to our resources designed to help you quickly start and effectively utilize the Braiins OS Public API:
[REST API Documentation](https://developer.braiins-os.com/latest/openapi.html)[Tools to interact with the gRPC API](/en/braiins-os/papi-tools)[gRPC BOS Public API Github](https://github.com/braiins/bos-plus-api)[gRPC Code Examples on Github](https://github.com/braiins/bos-plus-api-demos)
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/papi-bosminer.md
---
# BOSminer API
## Usage
Braiins is currently concentrating on the development of a new [Public API](/braiins-os/papi-tool-grpcurl/overview/index.md) based on gRPC/REST technology. All new features and future developments are centered around this API, which implies that the BOSminer API will be deprecated in the future.
Basic subset of the upstream CGMiner API as well as several new commands are implemented.
To test API, you can use [`nc`](https://en.wikipedia.org/wiki/Netcat) in the following way (replace the `IP_ADDRESS` placeholder with your miner's IP address):
```bash
# In case you want to format JSON string, you can use `jq`:
echo '{"command":"pools"}' | nc IP_ADDRESS 4028
# Single command
echo '{"command":"pools"}' | nc IP_ADDRESS 4028 | jq .
# Multiple commands
echo '{"command":"version+config"}' | nc IP_ADDRESS 4028 | jq .
# Command with parameter
echo '{"command":"asc","parameter":0}' | nc IP_ADDRESS 4028 | jq .
```
## List of all supported commands
### Commands from the CGMiner API
We provide only brief description of the commands below. If interested in additional details, please read the [official documentation.](https://github.com/ckolivas/cgminer/blob/master/API-README)
- **`asccount`** - The details of a single ASC number `N` in the same format and details as for `DEVS`
- **`asc|N`** - The number of ASCs
- **`config`** - Some miner configuration information
- **`devdetails`** - Report per chain configuration
- **`devs`** - Each available ASC with their details
- **`edevs[|old]`** - The same as `devs`, except it ignores blacklisted devices and zombie devices (unless the `old` parameter is used)
- **`pools`** - Report pool configuration and statistics
- **`summary`** - The status summary of the miner
- **`stats`** - Each device or pool that has 1 or more getworks with a list of stats regarding getwork times
- **`version`** - Print API and BOSminer version
- **`estats`** - the same as stats, except it ignores blacklisted devices and zombie devices
- **`check`** - checks, whether the API command exists and is accessible
- **`coin`** - coin mining information
- **`lcd`** - short status summary of the miner
- **`switchpool|N`** - switches the selected pool to the highest priority
- **`enablepool|N`** - enables the selected pool
- **`disablepool|N`** - disables the selected pool
- **`addpool|URL,USR,PASS`** - adds pool
- **`removepool|N`** - removes pool
**Note**: the commands `switchpool`, `enablepool`, `disablepool`, `addpool` and `removepool` are not fully implemented in Braiins OS. The outcome of these commands is reset after restart and they do not activate the pools. This is a known issue and is being fixed.
### New commands
- **`fans`** - Report fans statistics
- **`tempctrl`** - Report temperature control configuration
- **`temps`** - Report temperature data
- **`tunerstatus`** - Report tuning statistics
- **`pause`** - Immediately pause mining and stop power consumption, prepare for resume
- **`resume`** - Resume mining after miner has been paused
## Examples
**fans** - Report fans statistics
```json
{
"id": 1,
"STATUS": [
{
"STATUS": "S",
"When": 1595938455,
"Code": 202,
"Msg": "4 Fan(s)",
"Description": "BOSminer+ 0.2.0-ea64aec8e"
}
],
"FANS": [
{
"FAN": 0,
"ID": 0,
"RPM": 5340,
"Speed": 100
},
{
"FAN": 1,
"ID": 1,
"RPM": 4620,
"Speed": 100
},
{
"FAN": 2,
"ID": 2,
"RPM": 0,
"Speed": 100
},
{
"FAN": 3,
"ID": 3,
"RPM": 0,
"Speed": 100
}
]
}
```
**tempctrl** - Report temperature control configuration
```json
{
"id": 1,
"STATUS": [
{
"STATUS": "S",
"When": 1595938464,
"Code": 200,
"Msg": "Temperature control",
"Description": "BOSminer+ 0.2.0-ea64aec8e"
}
],
"TEMPCTRL": [
{
"Dangerous": 110,
"Hot": 100,
"Mode": "Automatic",
"Target": 89
}
]
}
```
**temps** - Report temperature data
```json
{
"id": 1,
"STATUS": [
{
"STATUS": "S",
"When": 1595938484,
"Code": 201,
"Msg": "3 Temp(s)",
"Description": "BOSminer+ 0.2.0-ea64aec8e"
}
],
"TEMPS": [
{
"Board": 81.875,
"Chip": 104.625,
"ID": 6,
"TEMP": 0
},
{
"Board": 85.875,
"Chip": 108.9375,
"ID": 7,
"TEMP": 1
},
{
"Board": 84.4375,
"Chip": 105.4375,
"ID": 8,
"TEMP": 2
}
]
}
```
**tunerstatus** - Report tuning statistics
```json
{
"id": 1,
"STATUS": [
{
"STATUS": "S",
"When": 1595938492,
"Code": 203,
"Msg": "Tuner Status",
"Description": "BOSminer+ 0.2.0-ea64aec8e"
}
],
"TUNERSTATUS": [
{
"ApproximateChainPowerConsumption": 1344,
"ApproximateMinerPowerConsumption": 1419,
"DynamicPowerScaling": "Disabled",
"PowerLimit": 1420,
"TunerChainStatus": [
{
"ApproximatePowerConsumptionWatt": 448,
"HashchainIndex": 6,
"Iteration": 0,
"LoadedProfileCreatedOn": 1595938289,
"PowerLimitWatt": 448,
"StageElapsed": 78,
"Status": "Tuning individual chips",
"TunerRunning": true,
"TuningElapsed": 98
},
{
"ApproximatePowerConsumptionWatt": 448,
"HashchainIndex": 7,
"Iteration": 0,
"LoadedProfileCreatedOn": 1595938289,
"PowerLimitWatt": 448,
"StageElapsed": 78,
"Status": "Tuning individual chips",
"TunerRunning": true,
"TuningElapsed": 98
},
{
"ApproximatePowerConsumptionWatt": 448,
"HashchainIndex": 8,
"Iteration": 0,
"LoadedProfileCreatedOn": 1595938289,
"PowerLimitWatt": 448,
"StageElapsed": 78,
"Status": "Tuning individual chips",
"TunerRunning": true,
"TuningElapsed": 98
}
]
}
]
}
```
**devdetails** - Report device details
```json
{
"id": 1,
"STATUS": [
{
"STATUS": "S",
"When": 1595938989,
"Code": 69,
"Msg": "Device Details",
"Description": "BOSminer+ 0.2.0-ea64aec8e"
}
],
"DEVDETAILS": [
{
"Chips": 63,
"Cores": 7182,
"DEVDETAILS": 0,
"Device Path": "",
"Driver": "",
"Frequency": 799682118,
"ID": 6,
"Kernel": "",
"Model": "Bitmain Antminer S9",
"Name": "Hash Chain 6",
"Voltage": 8.416799545288086
},
{
"Chips": 63,
"Cores": 7182,
"DEVDETAILS": 1,
"Device Path": "",
"Driver": "",
"Frequency": 809812285,
"ID": 7,
"Kernel": "",
"Model": "Bitmain Antminer S9",
"Name": "Hash Chain 7",
"Voltage": 8.36398983001709
},
{
"Chips": 63,
"Cores": 7182,
"DEVDETAILS": 2,
"Device Path": "",
"Driver": "",
"Frequency": 770406487,
"ID": 8,
"Kernel": "",
"Model": "Bitmain Antminer S9",
"Name": "Hash Chain 8",
"Voltage": 8.575228691101074
}
]
}
```
**pause** - Pause Bosminer Log Output
```log
Jan 08 12:35:48.197 INFO Interrupted by PAUSE command
Jan 08 12:35:48.198 INFO CHAIN/1: setting frequency 299.0 MHz on All (error 0.213 MHz)
Jan 08 12:35:48.199 INFO CHAIN/2: setting frequency 299.0 MHz on All (error 0.213 MHz)
Jan 08 12:35:48.461 INFO CHAIN/1: setting frequency 274.0 MHz on All (error 0.100 MHz)
Jan 08 12:35:48.461 INFO CHAIN/2: setting frequency 274.0 MHz on All (error 0.100 MHz)
Jan 08 12:35:48.728 INFO CHAIN/1: setting frequency 249.0 MHz on All (error 0.005 MHz)
Jan 08 12:35:48.729 INFO CHAIN/2: setting frequency 249.0 MHz on All (error 0.005 MHz)
Jan 08 12:35:48.991 INFO CHAIN/1: setting frequency 224.0 MHz on All (error 0.037 MHz)
Jan 08 12:35:48.991 INFO CHAIN/2: setting frequency 224.0 MHz on All (error 0.037 MHz)
Jan 08 12:35:49.255 INFO CHAIN/1: setting frequency 199.0 MHz on All (error 0.037 MHz)
Jan 08 12:35:49.256 INFO CHAIN/2: setting frequency 199.0 MHz on All (error 0.037 MHz)
Jan 08 12:35:49.518 INFO CHAIN/1: setting frequency 174.0 MHz on All (error 0.037 MHz)
Jan 08 12:35:49.519 INFO CHAIN/2: setting frequency 174.0 MHz on All (error 0.037 MHz)
Jan 08 12:35:49.785 INFO CHAIN/1: setting frequency 149.0 MHz on All (error 0.037 MHz)
Jan 08 12:35:49.786 INFO CHAIN/2: setting frequency 149.0 MHz on All (error 0.037 MHz)
Jan 08 12:35:50.048 INFO CHAIN/1: setting frequency 124.0 MHz on All (error 0.037 MHz)
Jan 08 12:35:50.051 INFO CHAIN/2: setting frequency 124.0 MHz on All (error 0.037 MHz)
Jan 08 12:35:50.313 INFO CHAIN/1: setting frequency 99.0 MHz on All (error 0.037 MHz)
Jan 08 12:35:50.319 INFO CHAIN/2: setting frequency 99.0 MHz on All (error 0.037 MHz)
Jan 08 12:35:50.576 INFO CHAIN/1: setting frequency 74.0 MHz on All (error 0.037 MHz)
Jan 08 12:35:50.582 INFO CHAIN/2: setting frequency 74.0 MHz on All (error 0.037 MHz)
Jan 08 12:35:50.847 INFO CHAIN/1: setting frequency 50.0 MHz on All (error 0.000 MHz)
Jan 08 12:35:50.848 INFO CHAIN/2: setting frequency 50.0 MHz on All (error 0.000 MHz)
Jan 08 12:35:54.545 INFO CHAIN/1: Terminating work thread
Jan 08 12:35:54.546 INFO CHAIN/2: Terminating work thread
Jan 08 12:35:54.546 INFO PWR/1: Disable voltage
Jan 08 12:35:54.546 INFO PWR/2: Disable voltage
Jan 08 12:35:55.819 INFO PSU: Setting voltage 19.25 V
Jan 08 12:35:55.987 INFO Kicking fans up
Jan 08 12:35:55.989 INFO Monitor: Fans off: nothing is running | Off Off | 1.4K 1.4K 1.5K 1.5K fan_0%
Jan 08 12:36:01.086 INFO Tune/all: Status: paused
Jan 08 12:36:01.088 INFO Hashboard 1: bm13xx 1.0.2 for Antminer S9 or higher built on 2020-12-04 14:49:18 UTC
Jan 08 12:36:01.092 INFO Hashboard 2: bm13xx 1.0.2 for Antminer S9 or higher built on 2020-12-04 14:49:18 UTC
Jan 08 12:36:01.094 INFO Waiting for RESUME command...
Jan 08 12:36:04.313 INFO PWR/1: Voltage controller reset
Jan 08 12:36:04.314 INFO PWR/2: Voltage controller reset
Jan 08 12:36:07.388 INFO PWR/1: Voltage controller application started
Jan 08 12:36:07.404 INFO PWR/2: Voltage controller application started
Jan 08 12:36:08.454 INFO PWR/1: Voltage controller firmware version 0x88
Jan 08 12:36:08.454 INFO CHAIN/1: Initializing (fingerprint: 21834ef58d647c6d, difficulty: 4)
Jan 08 12:36:08.454 INFO CHAIN/1: Resetting hash board
Jan 08 12:36:08.506 INFO PWR/2: Voltage controller firmware version 0x88
Jan 08 12:36:08.506 INFO CHAIN/2: Initializing (fingerprint: 509203d3b6736772, difficulty: 4)
Jan 08 12:36:08.506 INFO CHAIN/2: Resetting hash board
Jan 08 12:36:13.490 INFO CHAIN/1: Waiting for trigger...
Jan 08 12:36:13.490 INFO CHAIN/2: Waiting for trigger...
```
**resume** Resume Bosminer Log Output
```log
Jan 08 12:38:17.671 INFO RESUME command received
Jan 08 12:38:18.840 INFO PWR/1: Enable voltage
Jan 08 12:38:18.857 INFO PWR/2: Enable voltage
Jan 08 12:38:21.023 INFO Monitor: Fans full speed: unknown temperature | Starting Starting | 1.3K 1.4K 1.5K 1.5K fan_100%
Jan 08 12:38:21.590 INFO CHAIN/1: Setting IP core baud rate @ requested: 115740, actual: 115740, divisor 0x6b
Jan 08 12:38:21.591 INFO CHAIN/1: Starting chip enumeration
Jan 08 12:38:21.630 INFO CHAIN/2: Setting IP core baud rate @ requested: 115740, actual: 115740, divisor 0x6b
Jan 08 12:38:21.630 INFO CHAIN/2: Starting chip enumeration
Jan 08 12:38:22.551 INFO CHAIN/1: Discovered 44 chips
Jan 08 12:38:22.551 INFO CHAIN/1: setting frequency 50.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:22.595 INFO CHAIN/2: Discovered 44 chips
Jan 08 12:38:22.599 INFO CHAIN/2: setting frequency 50.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:22.998 INFO CHAIN/1: Setting IP core baud rate @ requested: 6250000, actual: 6250000, divisor 0x01
Jan 08 12:38:22.999 INFO CHAIN/1: Monitor watchdog temperature task started
Jan 08 12:38:23.050 INFO CHAIN/2: Setting IP core baud rate @ requested: 6250000, actual: 6250000, divisor 0x01
Jan 08 12:38:23.050 INFO Tune/all: Status: resuming
Jan 08 12:38:23.051 INFO CHAIN/1: setting frequency 75.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:23.051 INFO CHAIN/2: setting frequency 75.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:23.051 INFO CHAIN/2: Monitor watchdog temperature task started
Jan 08 12:38:23.326 INFO CHAIN/2: setting frequency 100.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:23.329 INFO CHAIN/1: setting frequency 100.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:23.599 INFO CHAIN/2: setting frequency 125.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:23.602 INFO CHAIN/1: setting frequency 125.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:23.862 INFO CHAIN/2: setting frequency 150.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:23.865 INFO CHAIN/1: setting frequency 150.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:24.130 INFO CHAIN/2: setting frequency 175.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:24.134 INFO CHAIN/1: setting frequency 175.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:24.397 INFO CHAIN/1: setting frequency 200.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:24.397 INFO CHAIN/2: setting frequency 200.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:27.396 INFO CHAIN/1: setting frequency 225.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:27.396 INFO CHAIN/2: setting frequency 225.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:27.396 INFO CHAIN/1: setting frequency 250.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:27.397 INFO CHAIN/2: setting frequency 250.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:27.397 INFO CHAIN/1: setting frequency 275.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:27.397 INFO CHAIN/2: setting frequency 275.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:27.397 INFO CHAIN/1: setting frequency 300.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:27.398 INFO CHAIN/2: setting frequency 300.0 MHz on All (error 0.000 MHz)
Jan 08 12:38:27.398 INFO CHAIN/1: setting frequency 324.0 MHz on All (error 0.352 MHz)
Jan 08 12:38:27.398 INFO CHAIN/2: setting frequency 324.0 MHz on All (error 0.352 MHz)
Jan 08 12:38:27.398 INFO Kicking fans up
```
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/papi-changelog.md
---
# What's new
## 1.14.0
August 13, 2026Version **1.14.0** introduces detailed miner status & an option to keep existing licenses when applying a contract key
### Added
- Introduced new server-streaming method
`GetMinerDetailedStatus`
in the
`braiins.bos.v1.MinerService`
to read detailed miner status
- Introduced new messages
`braiins.bos.v1.GetMinerDetailedStatusRequest`
and
`braiins.bos.v1.GetMinerDetailedStatusResponse`
. The response wraps
`braiins.bos.v1.MinerDetailedStatus`
- Introduced new message
`braiins.bos.v1.MinerDetailedStatus`
with a status
`oneof`
that tells the user the miner state and the reason for it
- Introduced new field
`detailed_status`
in the
`braiins.bos.v1.GetMinerDetailsResponse`
message
- Introduced new messages used by the status `oneof`: `ExpectedTime`, `Unspecified`, `ApplicationUnavailable`,
`UnsupportedHardware`, `DeadPools`, `MissingLicense`, `UserPause`, `ThermalPause`, `DpsCooldown`, `TunerError`,
`HardwareError`, `DelayedStart`, `CoolingDown`, `WaitingWhileCold`, `Defrosting`, `Normal` and `Preheating`
- Introduced new enumeration
`ThermalPauseReason`
- Introduced new optional field
`keep_existing`
in the
`braiins.bos.v1.ApplyContractKeyRequest`
message to keep the licenses that are already on the miner
### Deprecated
- Marked
`GetMinerStatus`
method as
**deprecated**
in
`MinerService`
. Instead of this method, the user should use
`GetMinerDetailedStatus`
- Marked
`status`
field as
**deprecated**
in the
`GetMinerDetailsResponse`
message. Instead of this field, the user should read
`detailed_status`
## 1.13.0
July 08, 2026Version **1.13.0** introduces the option to wipe the network configuration during a factory reset.
### Added
- Introduced new optional field `wipe_network` in the `braiins.bos.v1.FactoryResetRequest` message. When set to
`true`, the factory reset also clears the network configuration, so the miner comes back on DHCP with the stock
hostname after the next boot. When omitted or set to `false`, the miner keeps its network configuration, as
before.
## 1.12.0
June 02, 2026Version **1.12.0** introduces information about the PIC board.
### Added
- Introduced new field
`is_pic_model`
in the
`braiins.bos.v1.GetMinerDetailsResponse`
message to indicate whether the miner has a PIC (Programmable Interrupt Controller) board.
## 1.11.0
May 11, 2026Version **1.11.0** introduces the miner efficiency profile, hydro water temperatures and the new Advanced Settings service.
### Added
- Introduced new method
`GetMinerEfficiencyProfile`
in the
`braiins.bos.v1.PerformanceService`
. User can now retrieve the miner efficiency curve as an array of efficiency points ordered by power target.
- Introduced new messages
`braiins.bos.v1.MinerEfficiencyPoint`
,
`braiins.bos.v1.GetMinerEfficiencyProfileRequest`
and
`braiins.bos.v1.GetMinerEfficiencyProfileResponse`
.
- Introduced new fields
`lowest_water_inlet_temp`
and
`highest_water_outlet_temp`
in the
`braiins.bos.v1.Hashboard`
message to get lowest water inlet and highest outlet temperatures per hashboard for hydro miners.
- Introduced new `braiins.bos.v1.AdvancedSettingsService` to turn on experimental bosminer features and change
advanced system settings. Methods added:
- `GetSettings` - returns settings with their current values. By default it returns only the settings the user has configured; set `include_default` to also get the ones still on their default value.
- `SetSettings` - updates one or more settings in a single call. A null value clears a setting and restores its default. If any setting fails validation, the miner rejects the whole request with a standard gRPC error and changes nothing. On success, the response echoes back the applied settings, with null for the settings that were cleared.
- `GetSettingsSchema` - returns a JSON Schema that describes all available settings with their types, constraints, metadata and default values.
- `ResetAllSettings` - resets all settings to their default values and returns the effective values of all supported settings after the reset.
### Changed
- Extended
`braiins.bos.v1.TunerState`
enumeration with
`TUNER_STATE_PREHEAT`
variant.
## 1.10.0
April 15, 2026Version **1.10.0** introduces system upgrade over the API, log download and overflow-safe best share values.
### Added
- Introduced new field
`best_share_str`
in
`braiins.bos.v1.WorkSolverStats`
and
`braiins.bos.v1.PoolStats`
messages with the best share value as a decimal string, which can hold values larger than 2^64-1.
- Introduced new method
`SystemUpgrade`
in the
`braiins.bos.v1.UpgradeService`
. User can now upload firmware and run a system upgrade.
- Introduced new method
`RestoreStock`
in the
`braiins.bos.v1.UpgradeService`
. User can now restore the stock firmware.
- Introduced new
`braiins.bos.v1.LogType`
enumeration with log type variants for downloading miner logs.
- Introduced new streaming method
`braiins.bos.v1.MinerService::GetLog()`
to download merged miner log files.
### Changed
- Deprecated field
`best_share`
in
`braiins.bos.v1.WorkSolverStats`
and
`braiins.bos.v1.PoolStats`
messages. Use
`best_share_str`
instead to avoid overflow for values exceeding 2^64-1.
## 1.9.0
February 18, 2026Version **1.9.0** introduces factory reset, DPS start target and fan pause runtime configuration.
### Added
- Introduced new field
`on_start_target_percent`
in the
`braiins.bos.v1.DPSConfiguration`
,
`braiins.bos.v1.DPSConstraints`
,
`braiins.bos.v1.SetDPSRequest`
and
`braiins.bos.v1.SetDPSResponse`
messages. User can now set the target that Dynamic Performance Scaling starts from.
- Introduced new method
`braiins.bos.v1.ActionsService::FactoryReset()`
to perform a factory reset.
- Introduced new enumeration
`braiins.bos.v1.FanPauseRuntime`
with
`FAN_PAUSE_RUNTIME_LIMITED`
and
`FAN_PAUSE_RUNTIME_INDEFINITE`
variants.
- Introduced new field
`fan_pause_runtime`
in the
`braiins.bos.v1.ManualPauseMode`
message to configure fan runtime duration in manual pause mode.
- Introduced new field
`default_fan_pause_runtime`
in the
`braiins.bos.v1.CoolingConstraints`
message to get default fan pause runtime.
- Introduced new field
`fan_pause_runtime_limited_duration_s`
in the
`braiins.bos.v1.CoolingConstraints`
message to get fan pause runtime limited duration.
### Changed
- Extended
`braiins.bos.v1.TunerState`
enumeration with
`TUNER_STATE_CONTINUOUS`
variant.
## 1.8.0
November 25, 2025Version **1.8.0** introduces new Upgrade service `braiins.bos.v1.UpgradeService` and relative power/hashrate target configuration.
### Added
- Introduced new field
`uid`
in the
`braiins.bos.v1.PoolGroup`
message to get group uid.
- Introduced new service `braiins.bos.v1.UpgradeService` with methods:
- `UpdateAutoUpgradeConfig` - enables/disables AutoUpgrade and configures schedule
-`GetAutoUpgradeStatus` - retrieves current AutoUpgrade configuration and execution status
- Introduced new messages for AutoUpgrade scheduling:
- `units.DayOfWeek` enum and custom `upgrade.UpgradeTime` message for schedule configuration
- `DailySchedule` - schedule upgrades to run daily at a specific time
- `WeeklySchedule` - schedule upgrades to run weekly on a specific day of the week at a specific time
- `MonthlySchedule` - schedule upgrades to run monthly on a specific day of the month (1-28) at a specific time
- `AutoUpgradeSchedule` - oneof message that can contain any of the schedule types
- `UpdateAutoUpgradeConfigRequest` - request message to update AutoUpgrade configuration
- `UpdateAutoUpgradeConfigResponse` - response message containing enabled status and next execution timestamp
- `GetAutoUpgradeStatusRequest` - request message to get AutoUpgrade status
- `GetAutoUpgradeStatusResponse` - response message containing enabled status, schedule, next execution, and last execution timestamps
- Introduced new enumeration
`RelativeTargetReference`
with
`NOMINAL`
,
`MIN`
,
`MAX`
and
`CURRENT`
variants for relative target setting.
- Introduced new message
`SetRelativeTargetRequest`
with
`save_action`
,
`percentage`
, and
`reference`
fields.
- Introduced new methods
`SetRelativePowerTarget`
and
`SetRelativeHashrateTarget`
to allow setting power and hashrate targets relative to a reference value.
## 1.7.0
August 10, 2025Version **1.7.0** introduces changes to `braiins.bos.v1.PoolGroupConfiguration` and `braiins.bos.v1.PoolConfiguration`.
### Added
- Introduced new enumeration `braiins.bos.v1.FanPauseMode` with `FAN_PAUSE_MODE_AUTO` and `FAN_PAUSE_MODE_MANUAL`
variants.
- Introduced new field `default_fan_pause_mode` in the `braiins.bos.v1.CoolingConstraints` message to get default
fan pause mode.
- Introduced new messages `braiins.bos.v1.SetQuickRampingRequest`, `braiins.bos.v1.QuickRampingResponse` and
`braiins.bos.v1.SetDefaultQuickRampingRequest`.
- Introduced new method `SetQuickRamping` in the `braiins.bos.v1.PerformanceService`. User can now set quick
ramping time up and down values.
- Introduced new method `SetDefaultQuickRamping` in the `braiins.bos.v1.PerformanceService`. User can now set
quick ramping time up and down to default.
- Introduced new fields `quick_ramping_time_up_s` and `quick_ramping_time_down_s` in the
`braiins.bos.v1.HashboardPerformanceConfiguration` message to get quick ramping time up and down values.
- Introduced new field `quick_ramping_time_s` in the `braiins.bos.v1.HashboardConstraints` message to get quick
ramping time constraints.
### Changed
- Mark
`uid`
for
`braiins.bos.v1.PoolGroupConfiguration`
and
`braiins.bos.v1.PoolConfiguration`
as optional. This change allows to create new pool group or pool without providing empty
`uid`
value. When new entity is created
`uid`
is generated automatically. When updating existing Pool Group with
`UpdatePoolGroup`
method,
`uid`
is required, otherwise error is returned back to the user.
## 1.6.0
June 10, 2025Version **1.6.0** introduces option to set a fans mode during the curtailment & apply the custom contract
### Added
- Introduced new messages
`PauseMode`
,
`AutoPauseMode`
and
`ManualPauseMode`
.
- Introduced new field
`pause_mode`
in the
`braiins.bos.v1.CoolingAutoMode`
message to set and get pause cooldown fan speed for automatic cooling mode
- Introduced new field
`pause_mode`
in the
`braiins.bos.v1.CoolingManualMode`
message to set and get pause cooldown fan speed for manual cooling mode
- Introduced new field
`pause_cooldown_fan_speed_ratio`
in the
`braiins.bos.v1.CoolingConstraints`
message to get pause cooldown fan speed constraints
- Introduced new method
`ApplyContractKey`
in the
`braiins.bos.v1.LicenseService`
. User can now apply contract key to miner and get license
## 1.5.0
April 09, 2025Version **1.5.0** introduces inlet & outlet temperatures and more hardware information
### Added
- Introduced new fields
`lowest_inlet_temp`
,
`highest_outlet_temp`
in the
`braiins.bos.v1.Hashboard`
message to get the lowest inlet and highest outlet temperature for a specific hashboard
- Introduced new fields
`serial_number`
,
`board_name`
and
`chip_type`
in the
`braiins.bos.v1.Hashboard`
message
- Introduced new
`PsuInfo`
message and added it to the
`braiins.bos.v1.GetMinerDetailsResponse`
message
- Introduced new
`ControlBoardSocFamily`
enumeration and added it to the
`braiins.bos.v1.GetMinerDetailsResponse`
message
- Introduced new field
`serial_number`
in the
`braiins.bos.v1.GetMinerDetailsResponse`
message
## 1.4.0
February 27, 2025Version **1.4.0** introduces DPS modes control, customizable min/max fan speed control & unified miners cooling methods
### Added
- Introduced new field `mode` in the `braiins.bos.v1.DPSConfiguration`, `braiins.bos.v1.SetDPSRequest`,
`braiins.bos.v1.SetDPSResponse` message to get or set DPS mode
- Introduced new field `mode` in the `braiins.bos.v1.DPSConstraints` message to get the default value for DPS mode
- Introduced new method `SetCoolingMode` in the `braiins.bos.v1.CoolingService`. Users can now set cooling mode to
`automatic`, `manual`, `hydro` or `immersion`. It gives the user the possibility to set specific temperature and
fan settings for each mode
- Introduced new field `min_fan_speed` in the `braiins.bos.v1.CoolingAutoMode` to set minimum fan speed for
automatic cooling mode
- Introduced new field `max_fan_speed` in the `braiins.bos.v1.CoolingAutoMode` to set maximum fan speed for
automatic cooling mode
- Introduced new field `min_fan_speed` in the `braiins.bos.v1.CoolingConstraints` to get default value for minimum
fan speed for automatic cooling mode
- Introduced new field `max_fan_speed` in the `braiins.bos.v1.CoolingConstraints` to get default value for maximum
fan speed for automatic cooling mode
- Introduced new field `target_temperature` in the `braiins.bos.v1.CoolingManualMode` to set target temperature
for manual cooling mode
### Changed
- Marked
`SetImmersionMode`
method as
**deprecated**
in
`CoolingService`
. Instead of this method, the user should use
`SetCoolingMode`
with
`immersion`
mode
- Marked
`disabled`
cooling mode as
**deprecated**
in
`CoolingConfiguration`
mode
- Extended
`CoolingConfiguration`
mode with new value
`immersion`
that represents immersion cooling mode
- Extended
`CoolingConfiguration`
mode with new value
`hydro`
that represents hydro cooling mode
## 1.3.0
October 22, 2024Version **1.3.0** introduces a few small improvements.
### Changed
- Extended
`braiins.bos.v1.Platform`
enumeration with
`PLATFORM_STM32MP157C_II2_BMM1`
variant.
- Extended
`braiins.bos.v1.SupportArchiveFormat`
enumeration with
`SUPPORT_ARCHIVE_FORMAT_ZIP_ENCRYPTED`
variant.
## 1.2.0
July 17, 2024Version **1.2.0** introduces the possibility to configure all pool groups at once and read Braiins OS errors.
### API Enhancements
- Introduced new method
`SetPoolGroups`
in the
`braiins.bos.v1.PoolService`
to set all Pool groups at once.
- Introduced new method
`GetErrors`
in the
`braiins.bos.v1.MinerService`
to get all miner errors.
- Introduced new field
`model`
in the
`braiins.bos.v1.Hashboard`
message that contains hashboard name.
## 1.1.0
May 09, 2024Version **1.1.0** introduces the ability to read network configuration, changes in authentication, and a few more updates.
### API Enhancements
- Introduced a new field
`last_share_time`
, in
`braiins.bos.v1.PoolStats`
that provides information about the last share time.
- Introduced a new field
`token`
, in
`braiins.bos.v1.LoginResponse`
that provides the created authentication token, which was previously available only in the response header.
- Introduced a new field
`timeout_s`
, in braiins.bos.v1.LoginResponse that provides information about the authentication token expiration time.
- Introduced a new method
`GetNetworkInfo`
, in
`braiins.bos.v1.NetworkService`
to retrieve the current network configuration for the default network interface.
- Introduced a new field
`kernel_version`
, in
`braiins.bos.v1.GetMinerDetailsResponse`
that provides information about the kernel version.
## 1.0.0
March 27, 2024The first stable release of the Public API incorporates minor enhancements.
### API Enhancements
- Introduced new field
`enabled`
in the
`braiins.bos.v1.DPSConfiguration`
that provides info, if DPS is enabled by default or not.
- Introduced new field
`enabled`
in the
`braiins.bos.v1.TunerConstraints`
that provides info, if DPS is enabled by default or not.
- Introduced new field
`default_mode`
in the
`braiins.bos.v1.TunerConstraints`
that provides info about the default tuner mode.
- Introduced new field
`status`
in the
`braiins.bos.v1.GetMinerDetailsResponse`
that provides info about the current miner status.
## 1.0.0-beta.6
March 05, 2024Version **1.0.0-beta.6** contains one new feature: Network configuration.
### Network Service Configuration
- New
`braiins.bos.v1.NetworkService`
with
`GetNetworkConfiguration`
and
`SetNetworkConfiguration`
methods
## 1.0.0-beta.5
December 14, 2023Version **1.0.0-beta.5** contains one small extension.
### Platform Enumeration Extension
- Extension of the
`braiins.bos.v1.Platform`
enumeration with new value for Zynq.
## 1.0.0-beta.4
November 23, 2023Version **1.0.0-beta.4** contains one new feature and one breaking change.
### Updates and Reversions
- We added option to clean tuner profiles by adding
`braiins.bos.v1.PerformanceService::RemoveTunedProfiles`
- Introduced a new field
`system_uptime_s`
in the
`braiins.bos.v1.GetMinerDetailsResponse`
that replaces
`system_uptime`
(marked as deprecated) to keep the best practice that a field name should also describe the unit (when applicable).
- We reverted removing
`braiins.bos.v1.MinerModel`
enumeration from the previous release because this change was causing troubles to our users. Instead of dropping enumeration, we decided to mark it as deprecated and introduce new field
`miner_model`
for string representation.
## 1.0.0-beta.3
November 02, 2023Version **1.0.0-beta.3** contains a few minor improvements.
### Minor Improvements and Removals
- Extension of the
`braiins.bos.v1.GetMinerDetailsResponse`
message with
`bosminer_uptime_s`
field that contains bosminer uptime.
- We removed
`braiins.bos.v1.MinerModel`
enumeration and changed type of
`model`
field in
`braiins.bos.v1.MinerIdentity`
to
`string`
. Replacing model enumeration with string eliminates the need to release a new version every time we add support for new model.
## 1.0.0-beta.2
August 10, 2023Version **1.0.0-beta.2** extends performance management and Pool Group management possibilities. It also introduces an API to get Mining Status.
### Performance and Pool Management Enhancements
- Introduction of a new
`braiins.bos.v1.PerformanceService::SetDefaultHashrateTarget()`
method that allows the user to set the currently configured hashrate target value to default one.
- Dynamic Performance Scaling with new
`braiins.bos.v1.PerformanceService::SetDPS()`
method to configure dynamic performance scaling.
- Evolved Pool Group Management with new
`braiins.bos.v1.PoolService::CreatePoolGroup()`
and
`braiins.bos.v1.PoolService::RemovePoolGroup()`
methods to allow addition and removal of pool groups.
- Introduction of Mining Status with a new
`braiins.bos.v1.MinerService::GetMinerStatus()`
method streaming actual miner status.
## 1.0.0-beta.1
June 29, 2023The latest release, version **1.0.0-beta.1**, enhances the authentication functionalities while also introducing two new features: Device Location and Support Archive.
### Enhanced Authentication and New Features
- Introduction of a new
`braiins.bos.v1.AuthenticationService::SetPassword()`
method that allows the user to set a new password on the miner.
- Device Location functionality with
`braiins.bos.v1.ActionsService::SetLocateDeviceStatus()`
and
`braiins.bos.v1.ActionsService::GetLocateDeviceStatus()`
methods to turn on/off device location function.
- Support Archive feature with a new
`braiins.bos.v1.MinerService::GetSupportArchive()`
streaming method that allows to download BOS support archive.
## 1.0.0-beta
May 11, 2023The latest release, version 1.0.0-beta, introduces a significant addition: the all-new BOS License feature.
### New Licensing Features
- Introduction of a new
`braiins.bos.v1.LicenseService::GetLicenseState()`
streaming method to fetch BOS License state.
## 1.0.0-alpha.1
June 26, 2023New version 1.0.0-alpha.1 extends authentication options and introduces new features, **Locate Device** and **Support Archive**.
### Extended Authentication and New Functionalities
- Introduction of new
`braiins.bos.v1.AuthenticationService::SetPassword()`
method that allows user to set a new password on the miner.
- Locate Device feature with new
`braiins.bos.v1.ActionsService::SetLocateDeviceStatus()`
and
`braiins.bos.v1.ActionsService::GetLocateDeviceStatus()`
methods to turn on/off a LED on the device.
- Support Archive with a new
`braiins.bos.v1.MinerService::GetSupportArchive()`
streaming method that allows downloading a BOS support archive.
## 1.0.0-alpha
May 25, 2023The first release for the new Braiins OS Public API, which introduces the first batch of features.
### Initial API Features Introduction
- With
`ActionService`
, user can start/stop/restart/pause/resume mining (BOS). Reboot of the whole miner is supported as well.
- With
`ConfigurationService`
methods, user can read current miner configuration and configuration constraints.
- With
`CoolingService`
methods, user can read current state of fans or current temperatures, or configure immersion mode.
- With
`MinerService`
methods, user can read miner HW details, overall miner or hashboards statistics.
- With
`PoolService`
methods, user can read all currently used pool groups, as well as update a specific pool group.
- With
`TunerService`
methods, user can read current tuner state and configure tuner power target.
- Overall to use gRPC API, user must be authenticated. For this purpose,
`AuthenticationService`
with
`Login`
method is present.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/papi-tool-grpcui/faqs.md
---
# FAQs
Can I use `grpcui` without specifying proto files?
Yes, if the gRPC server supports server reflection, you can use `grpcui` to dynamically interact with the server without specifying proto files.
This allows you to explore the services available on the server directly from the `grpcui` web interface.
If reflection is not enabled, you will need to specify the proto files using the `-proto` flag.
How do I use `grpcui` with services that require authentication?
To use `grpcui` with services that require authentication, you must include the necessary authentication tokens or credentials.
This can be done by adding custom headers in the web UI before making a request.
Add a new metadata entry with the key as `Authorization` and the value as your token.
How do I save the session or output from `grpcui` for later review?
While `grpcui` does not directly support saving session outputs like command-line tools might, you can manually copy responses from the web interface to a file.
Alternatively, if you need to automate session captures, consider using `grpcurl` with file redirection or scripting to save outputs.
What should I do if I encounter a 'Failed to process proto source files' error?
Ensure you're specifying the correct import paths with the `-import-path` option and that all dependent proto files are accessible.
Also, verify the paths in your proto files' import statements are correct relative to the import paths you've provided.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/papi-tool-grpcui/quick-start.md
---
# Using gRPCui with Braiins OS
## Introduction
`grpcui` is a command-line tool that lets you interact with gRPC servers via a browser.
It's sort of like Postman, but for gRPC APIs instead of REST.
In some ways, this is like an extension to `grpcurl`. Whereas grpcurl is a command-line interface,
`grpcui` provides a web/browser-based GUI. This lets you interactively construct requests to send to a gRPC server.
## Installation and Setup
You can install `grpcui` [from the source code](https://github.com/fullstorydev/grpcui?tab=readme-ov-file#from-source) or use precompiled binaries. We will cover Precompiled Binaries in this guide.
### Installation Method: Using Precompiled Binaries
`grpcui` has prebuilt binaries for Linux, macOS, and Windows and you can use the prebuilt binary for your platform from the [releases page](https://github.com/fullstorydev/grpcui/releases).
Open the terminal app and navigate to the path that you downloaded the binary.
```bash
wget 'https://github.com/fullstorydev/grpcui/releases/download/v1.3.3/grpcui_1.3.3_linux_x86_64.tar.gz'
tar -xvf 'grpcui_1.3.3_linux_x86_64.tar.gz'
chmod +x 'grpcui'
```
Move `grpcui` to a suitable location in your system path:
```bash
sudo mv ./grpcui /usr/local/bin/
```
Add to PATH (if necessary)
```bash
nano ~/.bashrc
```
Add the following line to the end of the file:
```bash
export PATH="$PATH:/usr/local/bin"
```
You can verify the installation by running the command below to print out the Help message:
```bash
grpcui -h
```
## Getting Started
To start `grpcui`, you need to provide the address of the gRPC server and the port it's listening on.
The port for the BOS Public API is 50051[\*](#port-50051).
#### Exploring Services
To explore services on a gRPC server, there are two primary approaches:
- [Launching by using Server Reflection](#launching-grpcui-by-using-server-reflection) : This method allows you to dynamically discover available services
on the server, offering a straightforward way to understand its capabilities without external dependencies.
- [Launching by importing Proto Files](#launching-grpcui-by-importing-proto-files): For more details, gRPC services can be defined and interacted with
through Protocol Buffers (proto files). Importing these proto file definitions is essential for accessing the service
specifications.
In the end, you choose which approach fits better for your use cases, but we will continue to use Refection
Support to interact with the Braiins OS Public API for the rest of the guide.
### Launching `grpcui` For the First Time
#### Launching `grpcui` by Using Server Reflection
The normal workflow is to launch `grpcui` against a running gRPC service (Reflection Support):
###### Sample Command:
```bash
grpcui -port 12345 -plaintext :50051
```
_Replace `` with the IP address of your miner._
This starts a web server and opens an interactive UI in your browser for the gRPC service on `http://127.0.0.1:12345`.

1. The miner IP address and port that you entered the command.
2. A dropdown list of available services.
3. A dropdown list of available methods for the selected service.
4. The Request Metadata form for Authorization token.
5. The Request Data form for the selected method.
6. The Invoke button to send the request.
#### Launching `grpcui` by Importing Proto Files
If you wish to work with a specific service or need to interact with a service that requires a specific proto file, you can import the proto file directly.
You can download the proto files from the [Braiins OS Public API repository](https://github.com/braiins/bos-plus-api) and use them with `grpcui`.
Here we are using the `-proto` option to specify proto file's path and `-import-path` option to specify the path to the directory containing the proto files.
Suppose you have the `miner.proto` file located in the `./bos-plus-api/proto/bos/v1/` directory. Remember to use the `-proto` flag to specify the path to the proto file, especially if there are any dependencies on the proto file.
###### Sample Command:
```bash
grpcui \
-plaintext \
-import-path './protos' \
-proto './proto/bos/v1/common.proto' \
-proto './proto/bos/v1/miner.proto' \
http://127.0.0.1:12345
```
### Setting up an Entry point for `grpcui` (Obtaining a Session Token)
To make it easier and automated to fetch the Token and set it as metadata on every request on your workspace,
you can follow the steps below:
#### Step 1: Create an Entry Point
Create a new text file, copy and paste the code below into it, and save it as "start.sh" in your desired location.
```bash
#!/bin/sh
# Ask for the IP address of the miner
echo "Enter the IP address of the miner:"
read MINER_IP
# Use the provided IP in the commands
TOKEN=$(grpcurl -plaintext -v -d '{"username": "root", "password": ""}' "${MINER_IP}:50051" braiins.bos.v1.AuthenticationService/Login 2>&1 | awk '/authorization:/{print $2}')
grpcui -port 12345 -plaintext -default-header "Authorization: $TOKEN" "${MINER_IP}:50051" "$@"
```
Give it execution permissions:
```bash
chmod +x start.sh
```
#### Step 2: Run the Entry Point
Run the script:
```bash
./start.sh
```
It will ask for the IP address of the miner:
```bash
./start.sh
Enter the IP address of the miner:
```
So enter any miner IP that you want to use as a reflection server and hit Enter,
then it will open the `grpcui` web UI with the provided IP address on [http://127.0.0.1:12345](http://127.0.0.1:12345)
with preset Authorization token and ready to use.

### Making Authenticated API Calls
Your requests are authenticated since the `./start.sh` is running and the session token is valid, so you can select any services and relative methods from the web UI. (Note: If the token is expired, you can stop the script and run again).
## Examples
- [Get Request](#get-request)
- [Set Request](#set-request)
- [Stream Request](#stream-request)
### Get Request:
Mostly used for retrieving information, the `Get` request is a common operation in API interactions. Here are a few examples of `Get` requests using the Braiins OS Public API.
##### Get Tuner State
1. Select `PerformanceService` from the Service dropdown list.
2. Select the `GetTunerState` from the Method dropdown list.
3. Click on the **Invoke** button to get the response.
#### Get Miner Details
1. Select `MinerService` from the Service dropdown list.
2. Select the `GetMinerDetails` from the Method dropdown list.
3. Click on the **Invoke** button to get the response.
### Set Request:
The `Set` request is used to modify configurations or settings on the miner.
#### Set Power Target
1. Select `PerformanceService` from the Service dropdown list.
2. Select the `SetPowerTarget` from the Method dropdown list.
3. Fill out the Request Data form, for this case you need to specify e.g.:
- `save_action`: `SAVE_ACTION_SAVE_AND_APPLY`
- `power_target` (w): `1850`
4. Click on the Invoke button to get the response.
###### Save Action Field Explanation
The `SaveAction` field specifies how changes made via API calls should be handled regarding the miner's configuration:
- **`SAVE_ACTION_UNSPECIFIED` (0)**: Default behavior without explicit save action.
- **`SAVE_ACTION_SAVE` (1)**: Saves changes without applying them immediately.
- **`SAVE_ACTION_SAVE_AND_APPLY` (2)**: Saves and applies changes right away.
- **`SAVE_ACTION_SAVE_AND_FORCE_APPLY` (3)**: Forces immediate application of changes, bypassing any normal checks.
### Stream Request:
The `Stream` request is used to receive continuous updates or data from the miner. e.g., `GetMinerStatus` method.
`grpcui` supports all kinds of RPC methods, including streaming methods. However, it requires you to construct the entire stream of request messages all at once and then renders the entire resulting stream of response messages all at once. This means that you can't interact with bidirectional streams the way that grpcurl can.
#### Get Miner Status
1. Select `MinerService` from the Service dropdown list.
2. Select the `GetMinerStatus` from the Method dropdown list.
3. Set Request Timeout in seconds, e.g., `1`.
4. Click on the **Invoke** button to get the response.
## Footnotes
###### Port 50051
BOS Public API uses port number `50051` and it's open on Braiins OS, Only if you are using Braiins OS 23.03 you need to open API port manually `ssh root@MINER_IP 'iptables -A INPUT -p tcp --dport 50051 -j ACCEPT'`.
## External Resources
- [grpcui GitHub](https://github.com/fullstorydev/grpcui): This is the official GitHub repository for `grpcui`. It contains all the source code, along with detailed documentation on how to install, use, and contribute to `grpcui`. The README file provides extensive examples and explanations of all features.
- [gRPC Official Site](https://grpc.io/): The official gRPC website has comprehensive documentation on gRPC concepts, tutorials for various programming languages, and best practices. While this site focuses more on gRPC itself, the information is highly relevant to users of `grpcui` as it helps in understanding the protocols and methods that `grpcui` interacts with.
- [Protocol Buffers GitHub](https://github.com/protocolbuffers/protobuf): Since `grpcui` works with gRPC services that use protocol buffers, understanding how to define and compile `.proto` files is crucial. This link to the Protocol Buffers' GitHub repository offers resources on proto syntax, usage, and compilation methods.
hat allows for making gRPC calls from terminal environments. Understanding grpcurl can provide additional command-line capabilities that complement the GUI features of grpcui.
- [grpcurl GitHub](https://github.com/fullstorydev/grpcurl): `grpcurl` is a command-line counterpart to `grpcui` that allows for making gRPC calls from terminal environments. Understanding `grpcurl` can provide additional command-line capabilities that complement the GUI features of `grpcui`.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/papi-tool-grpcurl/faqs.md
---
# FAQs
Can I use `grpcurl` without specifying proto files?
Yes, if the gRPC server supports server reflection, you can interact with it using `grpcurl` without specifying proto files. Otherwise, you'll need to import the necessary proto files.
How do I use `grpcurl` with services that require authentication?
Include the `authorization` token in your `grpcurl` command using the `-H` flag.
Is there a way to format the JSON output from `grpcurl` for better readability?
`grpcurl` automatically formats JSON output for readability. However, if you're scripting or for some reason the output isn't formatted, you can pipe the output through tools like `jq` for formatting:
```bash
grpcurl -plaintext ${server_address}:${port} ${ServiceName}/${MethodName} | jq .
```
How do I save the output of a `grpcurl` request to a file?
To save the output of a `grpcurl` request to a file, redirect the command's output to a file using the > operator:
```bash
grpcurl -plaintext ${server_address}:${port} ${ServiceName}/${MethodName} > output.json
```
This command saves the response in output.json. Ensure the output format is compatible with how you intend to use the saved data.
What should I do if I encounter a 'Failed to process proto source files' error?
Ensure you're specifying the correct import paths with the `-import-path` option and that all dependent proto files are accessible. Also, verify the paths in your proto files' import statements are correct relative to the import paths you've provided.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/papi-tool-grpcurl/overview.md
---
# Using gRPCurl with BOS API
## Introduction
[gRPC](https://grpc.io/) is a high-performance, open-source, universal RPC framework that allows you to define services and message types
using Protocol Buffers. It is widely used for building efficient and reliable distributed systems.
[grpcurl](https://github.com/fullstorydev/grpcurl) is a command-line utility akin to `curl` but designed for gRPC servers. It's invaluable for testing, debugging,
and interacting with gRPC API services, such as the Braiins OS Public API.
[Braiins OS Public API](https://github.com/braiins/bos-plus-api), launched in [Braiins OS](https://braiins.com/os-firmware) version 23.03, marks a major milestone in the evolution
of our platform. This API establishes a uniform standard for all current and future hardware variants,
regardless of the manufacturer. Initially released in beta, it provided a preview of our platform's potential.
Since Braiins OS version 24.03, it has reached its stable release, version 1.0.0.
This guide should help streamline the process of installing and using `grpcurl` on Ubuntu for interacting with gRPC servers,
specifically for operations related to the Braiins OS Public API.
## Installation and Setup
### Installation Method: Using Precompiled Binaries
There are multiple methods to install `grpcurl`, with the most common being the download of a precompiled binary.
- **Download `grpcurl`**: Navigate to the [grpcurl releases page](https://github.com/fullstorydev/grpcurl/releases) on
GitHub to identify the latest version. Use the following command pattern to download the selected version, substituting
`VERSION` with the actual version number:
```bash
wget https://github.com/fullstorydev/grpcurl/releases/download/vVERSION/grpcurl__linux_x86_64.tar.gz
```
For instance, for version 1.8.9, you would run:
```bash
wget https://github.com/fullstorydev/grpcurl/releases/download/v1.8.9/grpcurl_1.8.9_linux_x86_64.tar.gz
```
- **Extract and Install `grpcurl`**: After downloading, extract the archive and move the `grpcurl` binary to a directory
in your `PATH`, such as `/usr/local/bin`, to make it globally accessible.
```bash
tar -xzf grpcurl_1.8.9_linux_x86_64.tar.gz
sudo mv grpcurl /usr/local/bin/
```
- **Launching `grpcurl`**: Execute `grpcurl -help` without arguments to see the help message and verify that it's
working as expected.
```bash
grpcurl -help
```
This command should display the `grpcurl` help information, indicating a successful installation.
- **Flags and Options**: The following are some common flags and options used with `grpcurl` commands:
The `-plaintext` option indicates that the connection should not be encrypted. This is suitable for local testing.
The `-v` flag is to get verbose output, helping understand the gRPC calls better and display the request and response headers.
The `-d` flag is used to specify the request data.
The `-H` flag is used to specify a request header.
The `-msg-template` option is used to generate a message template for the request, providing a skeleton with all the fields you need to populate for your actual request.
The `-import-path` option is used to specify the path to the directory containing the proto files.
The `-proto` option is used to specify the proto file for the service you are interacting with.
## Getting Started
The [Braiins OS Public API](https://github.com/braiins/bos-plus-api) provides a gRPC interface for interacting with Braiins OS miners. You can use `grpcurl`
to make requests to the API and retrieve information or perform actions on the miner.
The port for the BOS Public API is `50051` [\*](#port-50051).
### Exploring Services
To explore services on a gRPC server, there are two primary approaches:
- [Using Server Reflection](#using-server-reflection): This method allows you to dynamically discover available services on the server, offering a straightforward way to understand its capabilities without external dependencies.
- [Importing Proto Files](#importing-proto-files): For more details, gRPC services can be defined and interacted with through Protocol Buffers (proto files). Importing these proto file definitions is essential for accessing the service specifications.
In the end, you choose which approach fits better for your use cases.
### Using Server Reflection
To demonstrate how to utilize Server Reflection, we'll showcase listing all available services of the Braiins OS Public API. For this example, use the following command:
###### Sample Request:
```bash
grpcurl -plaintext :50051 list
```
- _Ensure to replace `` with the actual IP address of your miner._
- _Here we are using the `-plaintext` option to indicate that the connection should not be encrypted. This is suitable for local testing._
###### Expected Response:
```
braiins.bos.ApiVersionService
braiins.bos.v1.ActionsService
braiins.bos.v1.AuthenticationService
braiins.bos.v1.ConfigurationService
braiins.bos.v1.CoolingService
braiins.bos.v1.LicenseService
braiins.bos.v1.MinerService
braiins.bos.v1.NetworkService
braiins.bos.v1.PerformanceService
braiins.bos.v1.PoolService
grpc.reflection.v1alpha.ServerReflection
```
### Importing Proto Files
If you wish to work with a specific service or need to interact with a service that requires a specific proto file, you can import the proto file directly.
You can download the proto files from the [Braiins OS Public API repository](https://github.com/braiins/bos-plus-api) and use them with `grpcurl`.
Here we are using the `-proto` option to specify proto file's path and `-import-path` option to specify the path to the directory containing the proto files.
Suppose you have the `miner.proto` file located in the `./bos-plus-api/proto/bos/v1/` directory. Remember to use the `-proto` flag to specify the path to the proto file, especially if there are any dependencies on the proto file.
###### Sample Request:
```bash
grpcurl -plaintext -import-path './proto' -proto './proto/bos/v1/miner.proto' :50051 list
```
- _Ensure to replace `` with the actual IP address of your miner._
###### Expected Response:
```
braiins.bos.v1.CoolingService
braiins.bos.v1.MinerService
braiins.bos.v1.PoolService
```
### Describing Services with `grpcurl`
Understanding the structure and capabilities of your gRPC services is crucial for effective interaction and testing. `grpcurl` provides a straightforward way to describe services and their methods, allowing you to view the available operations and their request-response structures.
#### Describing a Service
To obtain detailed information about a specific service or method, use the `describe` option in `grpcurl`. This will show you the service's methods, request types, and response types.
**Command Syntax**:
```bash
grpcurl -plaintext ':50051' describe 'Your.ServiceName/YourMethodName'
```
Replace `Your.ServiceName/YourMethodName` with the actual service and method name. For example, to describe the AuthenticationService in a Braiins OS miner, your command would look like this:
###### Sample Request:
```bash
grpcurl -plaintext ':50051' describe 'braiins.bos.v1.AuthenticationService'
```
- _Ensure to replace `` with the actual IP address of your miner._
###### Expected Response:
```
braiins.bos.v1.AuthenticationService is a service:
service AuthenticationService {
// Method to login and retrieve authentication token
rpc Login ( .braiins.bos.v1.LoginRequest ) returns ( .braiins.bos.v1.LoginResponse );
// Method to set password
rpc SetPassword ( .braiins.bos.v1.SetPasswordRequest ) returns ( .braiins.bos.v1.SetPasswordResponse );
}
```
This response outlines the methods available under the `AuthenticationService`, including `Login` and `SetPassword`, along with their request and response message types.
### Getting Message Templates
After identifying the service and method you're interested in, you might want to know the expected request format. `grpcurl` can generate a message template for the request, providing a skeleton with all the fields you need to populate for your actual request.
###### Sample Request:
```bash
grpcurl -plaintext -msg-template ':50051' describe 'braiins.bos.v1.LoginRequest'
```
This command will output a template for the `LoginRequest` message, indicating the fields you need to include in your request.
###### Expected Response:
```
braiins.bos.v1.LoginRequest is a message:
// Request for login action.
message LoginRequest {
string username = 1;
string password = 2;
}
Message template:
{
"username": "",
"password": ""
}
```
In the expected response above, the Message Template shows you exactly how to structure your `JSON` payload when making a `Login` request, requiring `username` and `password` fields.
By following these steps, you can effectively interact with gRPC API services, understand their structures, and craft requests using `grpcurl`.
## Making Your First Request
### Sending a Login Request (Obtaining a Session Token)
This section will focus on the process of obtaining a session token, essential for interacting with the Braiins OS Public API, and understanding its management including expiration and renewal.
**Session Token Characteristics:**
- The session token acts similarly to the session logic utilized by the Braiins OS GUI.
- It has an expiration period of 3600 seconds (1 hour).
- The token's validity extends with each API request, meaning consistent use within the expiration period keeps the session alive.
- If no requests are made within the expiration period, a new login is required to obtain a new session token.
#### Authentication Command:
Now we understand how to use `describe` and `-msg-template` to structure our login request for `braiins.bos.v1.LoginRequest`.
To initiate a session and obtain a token, execute the following `grpcurl` command:
###### Sample Request:
```bash
grpcurl -plaintext -v -d '{"username": "root", "password": ""}' :50051 'braiins.bos.v1.AuthenticationService/Login' 2>&1 | grep authorization:
```
- _Replace `` with the IP address of your miner._
- _The grep command `2>&1 | grep authorization:` at the end of the request is for simplifying the output of the response._
###### Expected Response:
```
authorization: pHbLw9hwZ0gWnxYx
```
The response will contain the `authorization: ` header, which holds the session token. This token is essential for making authenticated requests to the Braiins OS Public API.
## Making Authenticated API Calls
With the session token, you can make authenticated requests to other services within the Braiins OS Public API.
This section outlines how to use the obtained session token for further API interactions.
To use the session token for authenticated requests, include it as a header `-H` in your `grpcurl` commands. Here's a general approach:
**Command Syntax**:
```bash
grpcurl -plaintext -H 'authorization:' :50051 'ServiceName/MethodName'
```
- _Replace `` with the token obtained from the login response and, `` with the actual IP address of your miner._
- _Specify `ServiceName/MethodName` with the target service and method you wish to call._
## Examples
- [Get Request](#get-request)
- [Set Request](#set-request)
- [Stream Request](#stream-request)
### Get Request
Mostly used for retrieving information, the `Get` request is a common operation in API interactions. Here are a few examples of `Get` requests using the Braiins OS Public API.
In most get requests you don't need to send specific `JSON` data, and you can use the `-d` flag to specify an empty `JSON` object `{}`, and the obtained session token as a header `-H 'authorization:'`.
#### Get Tuner State
To check the current state of the tuner, use the `GetTunerState` method from the `PerformanceService`. This request provides details about the tuner's status, hash rate target, power target, and more.
###### Sample Request:
```bash
grpcurl -plaintext -H 'authorization:' -d '{}' :50051 'braiins.bos.v1.PerformanceService/GetTunerState'
```
- _Replace `` with the token obtained from the login response and, `` with the actual IP address of your miner._
###### Expected Response:
```json
{
"overall_tuner_state": "TUNER_STATE_STABLE",
"power_target_mode_state": {
"profile": {
"created": null,
"target": {
"watt": "1712"
},
"measured_hashrate": {
"gigahash_per_second": 39693.738556032
},
"estimated_power_consumption": {
"watt": "1181"
}
},
"current_target": {
"watt": "1712"
}
}
}
```
#### Get Miner Details
As another example, to retrieve detailed information about the miner, including its identity, platform, BOS version, hostname, MAC address, and more, use the `GetMinerDetails` method from the `MinerService`.
###### Sample Request:
```bash
grpcurl -plaintext -H 'authorization:' :50051 'braiins.bos.v1.MinerService/GetMinerDetails'
```
- _Replace `` with the token obtained from the login response and, `` with the actual IP address of your miner._
###### Expected Response:
```json
{
"uid": "LQakFUOmGRvnG7pb",
"miner_identity": {
"brand": "MINER_BRAND_ANTMINER",
"model": "MINER_MODEL_ANTMINER_S19J",
"name": "Antminer S19J88",
"miner_model": "Antminer S19J88"
},
"platform": "PLATFORM_AM3_AML",
"bos_mode": "BOS_MODE_NAND",
"bos_version": {
"current": "2024-02-23-0-b19385b7-24.02-plus-rc",
"major": "2022-09-13-0-11012d53-22.08-plus",
"bos_plus": true
},
"hostname": "Antminer",
"mac_address": "02:7a:01:27:3d:4c",
"system_uptime": "73094",
"sticker_hashrate": {
"gigahash_per_second": 87000
},
"bosminer_uptime_s": "73037",
"system_uptime_s": "73094"
}
```
### Set Request
The `Set` request is used to modify configurations or settings on the miner.
To send a `Set` request, we need to:
1. Obtain a session token
2. Find the right method (By calling `list` Services/methods)
3. Get the message template for the request(By calling `describe` and `-msg-template` over the services).
4. Adjust the request data and "Save Action" type and make the request.
###### Save Action Field Explanation
The `SaveAction` field specifies how changes made via API calls should be handled regarding the miner's configuration:
- `SAVE_ACTION_UNSPECIFIED`: Default behavior without explicit save action.
- `SAVE_ACTION_SAVE`: Saves changes without applying them immediately.
- `SAVE_ACTION_SAVE_AND_APPLY`: Saves and applies changes right away.
- `SAVE_ACTION_SAVE_AND_FORCE_APPLY`: Forces immediate application of changes, bypassing any normal checks.
#### Set Power Target
To adjust the power target of the miner, use the `SetPowerTarget` method from the `PerformanceService`. This request allows you to specify the desired power target in watts.
- _Replace `` with the IP address of your miner in the sample requests below\._
**Step 1:** Obtained the session token.
###### Sample Request:
```bash
grpcurl -plaintext -v -d '{"username": "root", "password": ""}' :50051 'braiins.bos.v1.AuthenticationService/Login' 2>&1 | grep authorization:
```
**Sample Response**:
```
authorization: pHbLw9hwZ0gWnxYx
```
**Step 2:** Described the `SetPowerTarget` method from the `PerformanceService` service:
###### Sample Request:
```bash
grpcurl -plaintext :50051 describe 'braiins.bos.v1.PerformanceService.SetPowerTarget'
```
###### Expected Response:
```
braiins.bos.v1.PerformanceService.SetPowerTarget is a method:
// Method to set absolute power target for tuner
rpc SetPowerTarget ( .braiins.bos.v1.SetPowerTargetRequest ) returns ( .braiins.bos.v1.SetPowerTargetResponse );
```
**Step 2:** Utilized the message template for the request:
###### Sample Request:
```bash
grpcurl -plaintext -msg-template :50051 'describe braiins.bos.v1.SetPowerTargetRequest'
```
###### Expected Response:
```
braiins.bos.v1.SetPowerTargetRequest is a message:
// Request for set absolute power target action.
message SetPowerTargetRequest {
// Save action
.braiins.bos.v1.SaveAction save_action = 1;
// Absolute value of power target
.braiins.bos.v1.Power power_target = 2;
}
Message template:
{
"saveAction": "SAVE_ACTION_UNSPECIFIED",
"powerTarget": {
"watt": "0"
}
}
```
**Step 3:** Adjust the power target:
- _Replace `` with the token obtained from the login response and, `` with the actual IP address of your miner._
- _Set the `watt` value to your desired power target. Be careful about the power target value you set, as it can affect the miner's performance and stability._
- _The `saveAction`[\*](#save-action-field-explanation) field specifies how changes made via API calls should be handled regarding the miner's configuration._
###### Sample Request:
```bash
grpcurl -plaintext -H 'authorization ' -d '{ "power_target": { "watt": "1712" }, "save_action": 2 }' :50051 'braiins.bos.v1.PerformanceService/SetPowerTarget'
```
###### Expected Response:
```json
{
"powerTarget": {
"watt": "1712"
}
}
```
### Stream Request
To call a streaming method like `MinerServive/GetMinerStatus` using `grpcurl`, you'll need to follow the basic structure of making a
gRPC call with `grpcurl`, with an emphasis on handling streaming responses.
Below is a general example of how to do this, tailored to the `GetMinerStatus` method of the `MinerService`:
###### Sample Request:
```bash
grpcurl -plaintext -H 'authorization: ' -d '{}' :50051 'braiins.bos.v1.MinerService/GetMinerStatus'
```
###### Expected Response:
```json
{
"status": "MINER_STATUS_NORMAL"
}
```
- _For streaming responses, `grpcurl` will print out each message as it's received until the server closes the stream or
until you terminate the command (e.g., by pressing **Ctrl+C**)._
**Handling Streamed Responses**: Streamed responses will be printed to your console as they are received. Each message
from the stream will be formatted as a separate JSON object. If you're scripting or processing this output programmatically, ensure your script can handle multiple JSON objects.
### Footnotes
###### Port 50051
BOS Public API uses port number `50051` and it's open on Braiins OS, Only if you are using Braiins OS 23.03 you need to open API port manually `ssh root@MINER_IP 'iptables -A INPUT -p tcp --dport 50051 -j ACCEPT'`.
###### Grep Authorization Token
The `2>&1 | grep authorization:` command at the end of authorization command is used to extract the `authorization` header from the response, which contains the session token.
### External Resources
For those new to gRPC or seeking to deepen their understanding, the following resources can be incredibly helpful:
- [grpcurl GitHub Repository](https://github.com/fullstorydev/grpcurl): The official GitHub repository for `grpcurl`, including comprehensive usage instructions, examples, and advanced features.
- [gRPC Quick Start](https://grpc.io/docs/languages/): A guide to getting started with gRPC in various programming languages, providing a solid foundation in gRPC concepts and usage.
- [Protocol Buffers Documentation](https://developers.google.com/protocol-buffers/docs/proto3): Detailed documentation on protocol buffers (proto files), which are central to defining gRPC services and messages.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/papi-tool-grpcurl/quick-start.md
---
# Using gRPCurl with BOS API
Here's a quick start guide for using `grpcurl` with the BOS Public API, streamlined into step-by-step commands, if you want to get more detailed information about the available fields and their values, refer to the [Using `grpcurl` with the BOS Public API](/braiins-os/papi-tool-grpcurl/overview.md) page.
### 1. **Download and Install grpcurl:**
- Visit the [grpcurl releases page](https://github.com/fullstorydev/grpcurl/releases) and download the latest version for your platform.
```bash
wget https://github.com/fullstorydev/grpcurl/releases/download/v1.8.9/grpcurl_1.8.9_linux_x86_64.tar.gz
tar -xzf grpcurl_1.8.9_linux_x86_64.tar.gz
sudo mv grpcurl /usr/local/bin/
```
### 2. **Use Port 50051 for BOS Public API:**
- The default port for the BOS Public API is `50051`.
### 3. **Request Authentication Token:**
**Sample Request**:
```bash
grpcurl -plaintext -v -d '{"username": "root", "password": ""}' :50051 'braiins.bos.v1.AuthenticationService/Login' 2>&1 | grep authorization:
```
- _Ensure to replace `` with the actual IP address of your miner._
**Expected Response**:
```
authorization: pHbLw9hwZ0gWnxYx
```
### 4. **Example of Get Request (Get Miner Details):**
**Sample Request**:
```bash
grpcurl -plaintext -H 'authorization:' :50051 'braiins.bos.v1.MinerService/GetMinerDetails'
```
- _Replace `` with the token obtained from the login response and, `` with the actual IP address of your miner._
**Expected Response**:
```json
{
"uid": "LQakFUOmGRvnG7pb",
"miner_identity": {
"brand": "MINER_BRAND_ANTMINER",
"model": "MINER_MODEL_ANTMINER_S19J",
"name": "Antminer S19J88",
"miner_model": "Antminer S19J88"
},
"platform": "PLATFORM_AM3_AML",
"bos_mode": "BOS_MODE_NAND",
"bos_version": {
"current": "2024-02-23-0-b19385b7-24.02-plus-rc",
"major": "2022-09-13-0-11012d53-22.08-plus",
"bos_plus": true
},
"hostname": "Antminer",
"mac_address": "02:7a:01:27:3d:4c",
"system_uptime": "73094",
"sticker_hashrate": {
"gigahash_per_second": 87000
},
"bosminer_uptime_s": "73037",
"system_uptime_s": "73094"
}
```
5. **Example of Set Request (Set Power Target):**
**Sample Request**:
```bash
grpcurl -plaintext -H 'authorization ' -d '{ "power_target": { "watt": "1712" }, "save_action": 2 }' :50051 'braiins.bos.v1.PerformanceService/SetPowerTarget'
```
- _Replace `` with the token obtained from the login response and, `` with the actual IP address of your miner._
- _Set the `watt` value to your desired power target. Be careful about the power target value you set, as it can affect the miner's performance and stability._
- _The `saveAction` field specifies how changes made via API calls should be handled regarding the miner's configuration._
**Expected Response**:
```json
{
"powerTarget": {
"watt": "1712"
}
}
```
If you need to get more information about the available fields and their values, refer to the [Using `grpcurl` with the BOS Public API](/braiins-os/papi-tool-grpcurl/overview.md) page.
### 6. **Example of Stream Request (GetMinerStatus):**
**Sample Request**:
```bash
grpcurl -plaintext -H 'authorization: ' -d '{}' :50051 'braiins.bos.v1.MinerService/GetMinerStatus'
```
- _Replace `` with the token obtained from the login response and, `` with the actual IP address of your miner._
**Expected Response**:
```json
{
"status": "MINER_STATUS_NORMAL"
}
```
- _For streaming responses, `grpcurl` will print out each message as it's received until the server closes the stream or until you terminate the command (e.g., by pressing `Ctrl+C`)._
### 7. **Additional Resources:**
##### Save Action Field Explanation
The `SaveAction` field specifies how changes made via API calls should be handled regarding the miner's configuration:
- **`SAVE_ACTION_UNSPECIFIED`**: Default behavior without explicit save action.
- **`SAVE_ACTION_SAVE`**: Saves changes without applying them immediately.
- **`SAVE_ACTION_SAVE_AND_APPLY`**: Saves and applies changes right away.
- **`SAVE_ACTION_SAVE_AND_FORCE_APPLY`**: Forces immediate application of changes, bypassing any normal checks.
##### Flags and Options
The following are some common flags and options used with `grpcurl` commands:
- `-plaintext` option indicates that the connection should not be encrypted. This is suitable for local testing.
- `-v` flag is to get verbose output, helping understand the gRPC calls better and display the request and response headers.
- `-d` flag is used to specify the request data.
- `-H` flag is used to specify a request header.
- `-msg-template` option is used to generate a message template for the request, providing a skeleton with all the fields you need to populate for your actual request.
- `-import-path` option is used to specify the path to the directory containing the proto files.
- `-proto` option is used to specify the proto file for the service you are interacting with.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/papi-tool-postman/faqs.md
---
# FAQs
How do I switch between different environments in Postman?
To switch between different environments in Postman, click on the environment dropdown located at the top right corner of the interface.
You can select from predefined environments such as "Miner" to apply different sets of variables and configurations.
What is the purpose of using example messages in Postman, and how do I use them?
Example messages in Postman provide a template or structure for how requests should be formatted.
This feature is particularly useful for ensuring that the JSON structure of your request matches the expectations of the gRPC service.
To use an example message, select it from the predefined examples in your collection, which will automatically populate the request body with the correct format.
This helps in visualizing and modifying the request payload accurately before sending it.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/papi-tool-postman/overview.md
---
# Using Postman to Interact with gRPC and Braiins OS Public API
## Introduction
[Postman](https://www.postman.com/) is a popular tool for API testing that supports various types of APIs, including REST, SOAP, and GraphQL. Recently, Postman introduced support for gRPC, enabling developers to test gRPC APIs directly from the Postman interface. This guide will walk you through the process of using Postman to interact with gRPC services.
## Installation and Setups
You can download the app to get started using the Postman. Or, if you prefer a browser experience, you can try the [web version of Postman](https://go.postman.co/home).
### Download and Install Postman Desktop App
Download the latest version of Postman that supports gRPC from [the official website](https://www.postman.com/downloads/).
Install Postman on your system following the installation instructions provided on the website based on your operating system.
## Getting Started
To get started with Postman, you need to set up your environment and make authenticated API calls to interact with the [Braiins OS Public API](https://github.com/braiins/bos-plus-api).
The Braiins OS Public API provides a gRPC interface for interacting with Braiins OS miners. The port for the BOS Public API is 50051[\*](#port-50051).
#### Exploring Services
To explore services on a gRPC server, there are two primary approaches:
- **Setting up by using Server Reflection**: This method allows you to dynamically discover available services on the server, offering a straightforward way to understand its capabilities without external dependencies.
- **Setting up by importing Proto Files**: For more details, gRPC services can be defined and interacted with through Protocol Buffers (proto files). Importing these proto-file definitions is essential for accessing the service specifications.
In the end, you choose which approach fits better for your use cases, but we will continue to use Refection Support to interact with the Braiins OS Public API for the rest of the guide.
### Setting up Postman for the First Time
#### 1. Setting Up Environments: Globals (Port) and Base URL (Miner IP)
Environments in Postman allow you to switch between different sets of data, such as Port, base URLs (Miners) and authentication tokens, which can vary between development, testing, and production environments. You can set up a Global environment for common variables and a Miner-specific environment for testing different miner configurations.
###### Global Environment
1. Open the "Environments" tab on the left sidebar.
2. Click on Globals to edit the global environment.
3. Add a Variable with the name `PORT` and Initial Value and Current Value `50051`[\*](#port-50051).
4. Save the environment by clicking the top right "Save" button.
###### Miner Environment
1. On the "Environments" tab, Click on `+` icon to create a new environment.
2. Name it `My Miner`, and add a variable with the name `MINER_IP` and Initial Value and Current Value with your actual miner's IP address and Click `Save` button (In our example it's `10.34.1.18`).
#### 2. Setting Up Collections
Collections in Postman allow you to organize your API requests. For gRPC testing, you can create collections for different purposes, such as managing endpoints, handling reflection, and importing proto files.
###### Setting up by using Server Reflection:
1. On Top horizontal tabs, Click on `+` icon to create the first request via reflection.
2. Click on the request type icon and switch it to `gRPC`.
3. Click on the "Enter URL" field and select `grpc://{{MINER_IP}}:{{PORT}}` from the dropdown.
4. CLick on the top right dropdown "No Environment" and select `My Miner` environment.
5. Click on the "Select a method" field and Click on `Use Server Reflection`, to fetch the available services and methods.
6. Choose the `GetApiVersion` from `ApiVersionService` and Click on the blue `Invoke` button.
7. Click on the `Save` button to save the request and Give it your desired name like `Get API Version` and Also a name for the collection like `Reflection`.
### Making Authenticated API Calls
##### Setting up Token Handling (Obtaining a Session Token):
1. Repeat the steps 1-6 from the [Setting up by using Server Reflection](#setting-up-by-using-server-reflection) to create a new request.
2. Choose the `Login` from `AuthenticationService`
3. Paste the JSON below as compose message in the `Message` tab:
```json
{
"username": "root",
"password": ""
}
```
4. Copy and Paste the script below into the `Scripts` > `After Response` tab:
```javascript
pm.collectionVariables.unset('AUTH_TOKEN');
pm.test('Status code is 0', function () {
pm.response.to.have.statusCode(0);
});
let auth_token = pm.response.metadata.get('authorization');
console.log('AUTH TOKEN = ', auth_token);
pm.collectionVariables.set('AUTH_TOKEN', auth_token);
```
5. Click on the `Save` button to save the request and Give it your desired name like `Login` under the collection folder.
6. Click on the blue `Invoke` button to send the request and get the token. (Status code: `0 OK`, with a response metadata `authorization`)
##### Setting up Token Handling (Obtaining a Session Token):
1. Repeat the steps 1-6 from the [Setting up by using Server Reflection](#setting-up-by-using-server-reflection) to create a new request.
2. Choose any Endpoint you want to send a request. (e.g.: `GetMinerDetails` from `MinerService` )
3. Navigate to Metadata tab and add a new key-value pair with `authorization` as key and `{{AUTH_TOKEN}}` as value.
4. Click on the `Save` button to save the request and Give it your desired name like `GetMinerDetails` under the collection folder.
5. Click on the blue `Invoke` button to send the request and get the miner details. (Status code: `0 OK`, with a JSON response body.)
## Examples
- [Get Request](#get-request)
- [Set Request](#set-request)
- [Stream Request](#stream-request)
### Get Request
##### Get Tuner State
1. Right-click on the previously created request "GetMinerDetails" and Click on `Duplicate` menu to create a new request.
2. Right-click on the duplicated request and Click on `Rename` to modify the name.
3. It the right side, Choose `GetTunerState` from `PerformanceSerivce` Endpoint.
4. Click on the `Save` button to save the request.
5. Click on the blue `Invoke` button to send the request and get the miner details. (Status code: `0 OK`, with a JSON response body.)
### Set Request
##### Set Power Target
1. Right-click on the previously created request "GetMinerDetails" and Click on `Duplicate` menu to create a new request.
2. Right-click on the duplicated request and Click on `Rename` to modify the name.
3. It the right side, Choose `SetPowerTarget` from `PerformanceSerivce` Endpoint.
4. Click on the `Save` button to save the request.
5. Click on `Use Example Message` to load the default message.
6. Modify the `power_target` value to your desired value. (e.g.: 1750)
```json
{
"power_target": {
"watt": "1750"
},
"save_action": "SAVE_ACTION_SAVE_AND_FORCE_APPLY"
}
```
7. Click on the blue `Invoke` button to send the request and get the miner details. (Status code: `0 OK`, with a JSON response body.)

###### Save Action Field Explanation
The `SaveAction` field specifies how changes made via API calls should be handled regarding the miner's configuration:
- `SAVE_ACTION_UNSPECIFIED`: Default behavior without explicit save action.
- `SAVE_ACTION_SAVE`: Saves changes without applying them immediately.
- `SAVE_ACTION_SAVE_AND_APPLY`: Saves and applies changes right away.
- `SAVE_ACTION_SAVE_AND_FORCE_APPLY`: Forces immediate application of changes, bypassing any normal checks.
### Stream Request
##### Get Miner Status
1. Right-click on the previously created request "GetMinerDetails" and Click on `Duplicate` menu to create a new request.
2. Right-click on the duplicated request and Click on `Rename` to modify the name.
3. It the right side, Choose `GetMinerStatus` from `MinerService` Endpoint.
4. Click on the `Save` button to save the request.
5. Click on the blue `Invoke` button to send the request to stream the miner status, It will keep streaming the miner status until you Cancel it.

### Footnotes
###### Port 50051
BOS Public API uses port number `50051` and it's open on Braiins OS, Only if you are using Braiins OS 23.03 you need to open API port manually `ssh root@MINER_IP 'iptables -A INPUT -p tcp --dport 50051 -j ACCEPT'`.
### External Resources
- [Postman Documentation](https://learning.postman.com/docs/getting-started/introduction/)
- [gRPC in Postman](https://learning.postman.com/docs/sending-requests/grpc/grpc-client-overview/)
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/papi-tools.md
---
# Tools for Interacting with BOS Public API
## Introduction
Explore various tools available for interacting with BOS Public API via gRPC, each offering unique features tailored to different development needs.
## Tools Overview
Here's a quick comparison of popular tools tailored for gRPC API interactions:
| Feature | Postman | grpcurl | grpcui |
| --------------------- | -------------------------- | ----------------------------- | ---------------------- |
| **Interface** | Graphical UI | Command Line | Web-based UI |
| **API Protocols** | REST, SOAP, gRPC | gRPC | gRPC |
| **User Experience** | Highly user-friendly | Simple and direct | Interactive, but basic |
| **Use Case** | Comprehensive API testing | Quick interactions, scripting | Service exploration |
| **Advanced Features** | Extensive (mocking, tests) | Limited | Limited |
## Tools for Interacting with BOS Public API
[How to use Postman](/en/braiins-os/papi-tool-postman/overview)[How to use gRPCurl](/en/braiins-os/papi-tool-grpcurl/overview)[How to use gRPCui](/en/braiins-os/papi-tool-grpcui/quick-start)
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/ramping.md
---
# Ramping
This document provides an overview of the power management and tuning process in Braiins OS, detailing each phase from initial startup to stable operation. The process is designed to optimize mining performance and efficiency while protecting the hardware from excessive temperatures.
## Miner Ramping
The ramping phase is the initial power draw sequence that brings the miner to its target power consumption. Braiins OS utilizes two distinct ramping methods, both of which are calibrated for a hostile ambient environment of **60°C**. Ramping also occurs in reverse when a miner is paused or shut down.
- **Normal Ramping:** This is the standard power-on sequence used for all general startup scenarios, such as booting up or restarting.
- **Duration:** Approximately **30 seconds**.
- **Process:** The miner gradually ramps up its power consumption to the target hash rate, allowing for a controlled and measured startup.
- **Quick Ramping:** This is an accelerated power draw sequence that occurs specifically when the miner is resuming from a paused state. It is designed for a near-instant return to full operation.
- **Duration:** Approximately **30 seconds**.
- **Process:** The miner rapidly draws power to a predefined target, ensuring a swift and safe return to hashing.
- **Ramping Down:** Ramping behavior is also applied when a miner is paused or shut down. This gradual reduction in power consumption is a safety feature that prevents stress on the components and helps dissipate heat in a controlled manner. The timing for this process is the same as the respective ramping up timing (e.g., normal ramping down takes approximately 10 seconds).
The timing for Normal Ramping can be adjusted in the experimental features section using the `normal_ramping_time_up_s` and `normal_ramping_time_down_s` parameters. For more information, please see the [**Experimental Features**](/braiins-os/advanced-features/index.md) page. The timing for Quick Ramping can be modified via the public API using the `quick_ramping_time_up_s` and `quick_ramping_time_down_s` parameters. For more details on the API, please visit the [**public API**](/braiins-os/papi-about/index.md) documentation.
## Pre-heating
Following the ramping phase, the miner enters the **pre-heating** phase. During this time, the miner gradually increases its power consumption to reach the **target temperature**.
- **Process:** The miner slowly "doses" more power to raise the temperature of the hashboards. The duration of this phase is not fixed and depends on the ambient temperature.
- **Timeout:** To prevent indefinite pre-heating in a cold environment, the process has a timeout of approximately **10 minutes**. If the hashboards do not reach a suitable temperature within this time, the miner will move to the next step.
## Performance Profile Execution & Autotuning
Once the pre-heating phase is complete or times out, the miner proceeds to the core operational phase.
- **Profile Loading:** The miner will first check for a pre-configured **performance profile** for the current power target. These profiles contain optimized voltage and frequency settings for a specific hash rate and efficiency. If a profile is found, the miner will load and run it, ensuring stable and efficient operation.
- **Autotuning:** If no suitable performance profile is available, the autotuner will automatically engage. For a detailed explanation of how this advanced feature works, please see our dedicated [**Autotuning page**](/braiins-os/autotuning/index.md).
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-os/technical-resources.md
---
---
url: /braiins-os/whats-new.md
---
# What's new
## 26.08.1
August 25, 2026Introducing Braiins OS release 26.08.1, bringing thermal safety fixes and tuning corrections for miners upgrading from 26.08.
### Antminer S19 & S21 Series
- Improved fan speed during rapid chip heating right after a restart, to prevent internal chip temperature spikes
- Widened the usable voltage range for the APW171215a/c PSU
- Fixed the Antminer S19 XP Hyd., S19 XP+ Hyd., S19 Pro+ Hyd. and U3S21EXPH loading outdated Continuous Tuner profile values, which reduced hashrate on the model refits introduced in 26.08
**NOTE**: The refitted power and efficiency models mean affected miners will retune after upgrading to take advantage of the new optimizations.
## 26.08
August 13, 2026Braiins OS 26.08 introduces support for the Antminer S21++, a redesigned dashboard with persistent graphs and hashboard health, clearer miner status reporting, and automatic recovery from PSU overcurrent events.
Watch the video summary [here](https://youtu.be/Yue7e-RuAN0).
### Antminer S19 & S21 Series
- Added support for the Antminer S21++
- Added support for the Antminer S19j XP hashboard variant BHB56807
- New
[miner status](/braiins-os/miner-states/index.md)
reporting: the GUI and Public API now show why a miner is stopped, starting, or stopping.
- Redesigned dashboard graphs with persistent history, a time range selector (10 minutes to 7 days), a new power graph, and a new overall status graph
- New hashboard table with a health overview and per-chip data for every hashboard
- Improved Logs page with unified scrolling, a scroll-to-bottom button, and automatic refresh
- Refitted power and efficiency models for the Antminer S19 XP Hyd., S19 XP+ Hyd., S19 Pro+ Hyd. and U3S21EXPH
- PSU overcurrent protection events automatically recover once outlet drops 2C
- Fixed an issue where the Antminer S19k Pro did not follow lower power targets in immersion setups
- Fixed an installation failure on the Antminer S21 Pro running stock firmware v1.76 and v1.96
- Fixed the Antminer S19 XP+ Hyd. failing to tune the default power target
- Fixed pool configuration not being migrated during installation
- Fixed an upgrade failure on BeagleBone Black
**NOTE**: The refitted power and efficiency models mean affected miners will retune after upgrading to take advantage of the new optimizations.
## 26.07
July 08, 2026Braiins OS 26.07 introduces support for the Antminer S21 Pro+, APW9 PSU support, a new temperature safety shutdown, Continuous Tuner improvements, and power and efficiency gains across the S21 series.
Watch the video summary [here](https://youtu.be/NZJwWB-Fv3U).
### Antminer S19 & S21 Series
- Added support for the Antminer S21 Pro+
- Added support for the APW9 PSU
- New temperature safety shutdown: mining stops when a hashboard stops reporting temperature data
- Continuous Tuner now tunes chips based on the temperature of their individual hashboard
- Improved chip ramping in the Continuous Tuner
- Improved power and efficiency models for the Antminer S21 Pro, S21 XP, T21, S21+ Hyd., S21 Hyd., S21e Hyd. and S21 XP Hyd.
- Rambo Mode 2 now ignores unexpected voltage errors
- Added an option to wipe network configuration during a factory reset via the API
- Fixed a crash that could occur during tuning when a hashboard was disabled
- Fixed chip temperature estimation on hashboards with broken or missing temperature sensors
- Fixed the Antminer S21 XP Hyd. HV and S21+ Hyd. HV issue that prevented the miner from hashing on the default power target after installation
- Fixed an issue where an unexpected restart could wipe the configuration
- Fixed an upgrade failure affecting BeagleBone Black miners running from an SD card
**NOTE**: The improved power and efficiency models mean your miners will retune after upgrading to take advantage of the new optimizations.
## 26.06
June 03, 2026Braiins OS 26.06 introduces new hardware support, Continuous Tuner improvements for high-temperature environments, API call logging, more accurate chip temperature sensor readings, PIC/no-PIC identification in the GUI, and PSU serial number in the logs.
Watch the video summary [here](https://youtu.be/UkoGjs3lS04).
### Antminer S19 & S21 Series
- Added support for the Antminer S21e Hyd. hashboard variant H6HB70802
- Added support for temperature sensor LM75A on Antminer S21 XP Hyd. variant H6HB70502.
- Added PIC/no-PIC miner identification in the GUI
- Boser logs now include information about API calls made to the miner
- PSU serial number is now visible in bosminer logs
- The Continuous Tuner now reacts immediately to rapid temperature changes, resulting in smoother operation and a more stable hashrate.
- Improved filtering of communication from chip temperature sensors reduces the number of pauses.
### Braiins Mini Miner 101
- Fixed an issue affecting the performance of the IP report button on the BMM101
## 26.05.1
May 21, 2026Introducing Braiins OS release 26.05.1, bringing key revisions and bug fixes to further improve performance in hot conditions.
### Antminer S19 & S21 Series
- Revised internal chip temperature calculation that prevents early shut downs due to overheating in miners with BM1368 and BM1370 chips
- Resolved bug causing undershooting and underperforming in hot conditions that affected the S21+ model
## 26.05
May 13, 2026Braiins OS 26.05 introduces Auto-Recovery After Overheating, Maximum Startup Delay, support for PSUs without voltage feedback, tuner improvements for more precise power consumption, and security API changes.
Watch the video summary [here](https://youtu.be/e4r0jNlRk1c).
### Antminer S19 & S21 Series
- Support added for Antminer S21 XP Hyd. hashboard variant H6HB70502
- Support added for Antminer S19 XP+ Hyd. hashboard variant HHB68703
- Support added for APW11G0 PSU model
- Support added for APW121215a/b/c PSU model
- Auto-Recovery After Overheating feature that allows miners to automatically resume after an overheating event
- Maximum Startup Delay feature that allows setting up to a 600s random delay for mining startup
- Allow missing voltage feedback option that enables the miner to start without voltage feedback from the PIC or PSU
- Maximum and minimum water temperatures added to PAPI
- More precise power consumption tuner improvements to prevent overshooting the set power target
- Multiple improvements for more robust temperature sensor readings
- CGminer API in read-only mode, with an Advanced option to revert this change
## 26.04
April 15, 2026Braiins OS 26.04 introduces improved tuning, logs and continuous tuner (beta)
Watch the video summary [here](https://youtu.be/w7YrGNqWM9o).
### Antminer S19 & S21 Series
- Support added for Antminer S21+ Hyd. hashboard variant H6HB70704
- Support added for U3S21EXPH hashboard variant H1HB70603
- Tuning improved for Antminer S19 XP+ Hyd.
- Tuning improved for Antminer S21 XP Hyd.
- Tuning improved for Antminer S21e Hyd.
- Logs now include regular power summaries
- Logs now include regular hashrate summaries
- Upgrade via API is now available
- New SD card build for BeagleBone Black
- Continuous tuner is now in official Beta
- Water inlet temperature now displays correctly for Hydro miners
- DPS power target changes now display correctly
### Braiins Mini Miner 100 & 101
- New firmware update available
## 26.01
February 18, 2026Braiins OS 26.01 introduces DPS enabled by default, new hardware support, indefinite fans after shutdown and new advanced configuration UI
Watch the video summary [here](https://youtu.be/evFSzVqst9w).
### Antminer S19 & S21 Series
- DPS enabled by default
- Added support for the Antminer S21e Hyd.
- Added support for the Antminer S21 XP Hyd.
- Added support for the Antminer S19 XP+ Hyd.
- Added support for new S21 Pro hashboard variant A3HB70603
- Advanced Configuration GUI
- Indefinite fans after shutdown option
- Fans spin at 25% when minimum required fans are set to 0
- Too many sensor errors fixed in U3S21EXPH
- Pool information not copied over on Zynq during installation
## 25.11
November 25, 2025Braiins OS 25.11 introduces expanded API capabilities, enhanced hardware compatibility, and improved system reliability across the Antminer S19 & S21 Series.
### Antminer S19 & S21 Series
- Default quick ramping time changed to 30 seconds
- Auto Upgrade of firmware (off by default)
- API to adjust power/hashrate target by %
- Added support for the Antminer U3S21EXPH
- Added support for the Antminer T19 Pro Hyd.
- Added support for the Antminer S19e XP Hyd.
- Added support for new S19k Pro hashboard variant BHB56907
- Added support for new S21 XP hashboard variants A3HB70502 and A3HB70503
- Added support for new S21+ hashboard variant A3HB70702
- Added support for new S21 Hyd. hashboard variants HHB68502 and HHB68503
- Added support for PSU model APW171215/c
- Installing S21 Pro with hashboard A3HB70602
- Rotating of bosminer errors
- Fix power overshoots in preheat
- Fix PSU I2C communication issues
## 25.07
July 11, 2025Braiins OS 25.07 introduces expanded API capabilities, enhanced hardware compatibility, and improved system reliability across the Antminer S19 & S21 Series, as well as Mini Miner devices. This release also includes support for new stock firmware installation workflows, better tuner behavior, and touch screen support on Mini Miner 101.
### Antminer S19 & S21 Series
- Introduced a new REST API wrapper for the public gRPC interface, enabling easier integration with external tools
- Added support for the Antminer S21+ Hydro
- Improved installation process for recent stock firmware releases
- Customizable ramping time for PAUSE/RESUME operations to reduce stress on hardware. See API changelog.
- Experimental Rambo mode to maximize hashrate even from partially damaged hardware (see experimental features)
- Experimental ramping time for miner start and graceful shutdown. (see experimental features).
- Added real-time monitoring of TCP connection quality for better diagnostics
- Enhanced preheat stage in tuner to better handle varied operating conditions
- Added support for PSU model APW111721b
- Added support for new S21 Pro hashboard variant A3HB70602
- Resolved login issues after the first installation of BOS
- Improved upgrade flow to allow firmware updates on miners with limited storage
- Tuner now correctly handles hashrate targets for disabled hashboards
- Web UI is now compatible with reverse proxy deployments
- Added support for new S19XP Hyd. hashboard variant HHB56611
### Braiins Mini Miner 100 & 101
- Introduced basic touch screen support with tap-based screen cycling
- Reduced fan noise during startup
- Improved WiFi reconnection time after disconnection
## 25.05
June 09, 2025Introducing Braiins OS release 25.05, delivering enhanced control over fan behavior during curtailment, adjusted DPS BOOST mode logic, consistent hashboard handling across PIC and NOPIC miners, and several other improvements for better performance and stability.
### Antminer S19 & S21 Series
- Introduced **AUTOMATIC** and **MANUAL** modes for fan behavior during curtailment; MANUAL allows custom PWM,
while AUTOMATIC gradually decreases fan speed over two minutes when miner enters PAUSE state, available via
[API](/braiins-os/papi-changelog/index.md) and GUI
- Modified DPS BOOST mode to maintain miner temperature at HOT - 8°C for more consistent thermal performance
- Unified behavior of hashboard disabling between PIC and NOPIC miners; hashboards now auto-disable consistently
- Ambient temperature sensor is now visible in the GUI for Antminer S21+ & Antminer S21 XP
- Enhanced temperature calibration during tuning startup, resulting in more accurate power consumption
measurements
- Added ability to apply Custom Contracts via gRPC API. Read more [here](/braiins-os/papi-changelog/index.md)
- Downclocks on Antminer S21 Imm. & Antminer S21 Pro are now accurately respected
- Fixed an issue where the tuner could overshoot power consumption at the start of tuning due to heat
### Braiins Mini Miner 100 & 101
- Mini Miner now capped at 1.5 TH/s and 67W to prevent PSU shutdowns
- Resolved minor GUI formatting issues on Mini Miner 100 & 101
## 25.03
April 09, 2025Introducing Braiins OS release 25.03, featuring **full support** for Antminer S21+ with AML control board and Antminer S21 Hydro with ZYNQ control board. This release introduces expanded hardware details and inlet/outlet temperature readings in both the GUI and API, along with new experimental options and few bug fixes to enhance user experience.
### Antminer S19 & S21 Series
- **Full support**
for the Antminer S21+ with AML control board
- **Full support**
for the Antminer S21 Hyd. with ZYNQ control board
- Inlet and outlet temperatures are now visible in the GUI and API endpoints. Read more
[here](/braiins-os/papi-changelog/index.md)
- Hardware information is now displayed in the GUI and API endpoints. Read more
[here](/braiins-os/papi-changelog/index.md)
- Added PAUSE/RESUME functionality in the GUI
- Miner performance variant is now shown in the GUI
- Immersion & Hydro miners have now quicker pre-heat phase. Reduced from 10 minutes to 3 minutes
- Added experimental option to override miner shutdown due to individual chip temperature check at 110°C. This
applies only for miners with internal chip temperature readings. Read more
[here](/braiins-os/advanced-features/index.md)
- Experimental option to set `min_fan_pwm` introduced. Read more [here](/braiins-os/advanced-features/index.md)
- Fixed a mismatch between power consumption data in the GUI and API
- Fixed issue where CVITEK control board installation failed due to full storage
- Fixed issue where browser cache caused the GUI malfunction
- Resolved a problem where the GUI intermittently switched from dark to light mode
### Braiins Mini Miner 100 & 101
- Added options to display prices in either
`USD`
or
`EUR`
- Fixed issue where the "Geek" screen occasionally showed zero values
## 25.01
February 27, 2025Introducing Braiins OS Release 25.01, now featuring **full support** for the Antminer S21 XP Imm. and Antminer S21 Imm. miners with AML control board. This update delivers persistent logging across all platforms, enhanced Dynamic Performance Scaling (DPS) with new modes, and customizable fan speed ranges.
For Braiins Mini Miner users, the release brings improved usability with a new progress display during updates & optimized fan behavior for quieter operation.
### Antminer S19 & S21 Series
- **Full support**
for the Antminer S21 Imm. with AML control board
- **Full support**
for the Antminer S21 XP Imm. with AML control board
- Logs are now persistent across **all platforms**, including AML, CVITEK, ZYNQ, BBB, and BCB100
- Dynamic Performance Scaling (DPS) now has two modes: **NORMAL** and **BOOST**. The system has been simplified to
rely entirely on temperature, with fan conditioning removed. In NORMAL mode, DPS upscales when the miner is
stable and below the target temperature. BOOST mode pushes performance up to 5°C below the HOT temperature
threshold. Both modes are configurable via API. Read more about DPS [here](/braiins-os/dps/index.md)
- Custom MIN/MAX fan speed ranges can now be set through the GUI and API. Read more
[here](/braiins-os/papi-changelog/index.md)
- Cooling methods are now unified in BOS and API. Read more [here](/braiins-os/papi-changelog/index.md)
- Fan speed during the PAUSE state can now be controlled through the `bosminer-experimental.toml` file (default:
20% RPM)
- The PAUSE state is now visibly indicated in the GUI
- Fixed a bug where miners incorrectly detected fans as turned off, causing shutdown
- Addressed an issue when sometimes the change of power target was not applied using API
- Resolved an issue preventing users from changing the time-zone in the GUI
- Fixed a bug where Braiins Farm-Proxy was not always resolved correctly
### Braiins Mini Miner 100 & 101
- Added an "Upgrading…" screen to display progress during Mini Miner updates
- Improved fan behavior at various stages, making the Mini Miner quieter
- Resolved an issue where user settings were not preserved during the initial setup wizard
- Addressed a bug where Wi-Fi list was not reachable after the initial set-up
Please note that while there is quite a lot additions to the Public API, there are deprecated methods as well! Read
more in the Public API [What's new](/braiins-os/papi-changelog/index.md)
## 24.12
December 11, 2024Introducing Braiins OS Release 24.12, featuring exciting new updates for **Braiins Mini Miner models 100 & 101!** This update brings fresh scenes, refined visuals, and a mining indicator for clearer insights into your miner's performance.
### Braiins Mini Miner 100 & 101
- A new "Information Overload" scene for Mini Miner 101 offers a detailed overview of mining stats, key network insights, and a live BTC price chart
- Introduced the "Bitcoin Graph" scene, displaying live Bitcoin price and dynamic chart
- Added the "Network" scene with essential Bitcoin network metrics
- Implemented the "Pickaxe" mining indicator at the bottom-right of the screen with intuitive color-coded statuses: Purple (tuning), Green (mining as expected), and Red (under-performing or lost connection e.g. to the pool)
- Displayed estimated chip efficiency and chip power consumption directly in the Mini Miner GUI
- Applied minor visual tweaks and performance improvements to existing Mini Miner screens
Please note that while most features apply to both Braiins Mini Miner models, some may vary slightly due to hardware
differences!
## 24.09.1
December 05, 2024Introducing Braiins OS Release 24.09.1, featuring full support for Antminer S19j XP, estimation improvements for Antminer S19 XP and a series of bug fixes.
### Antminer S21 & S19
- **Full support**
for the Antminer S19j XP
- Enhanced power estimation accuracy for Antminer S19 XP
- MAC Address is now displayed in the Braiins OS GUI
- Resolved an issue causing miners to lose connection to pools over time, particularly with NiceHash
- Resolved a bug where miners incorrectly reported zero hashrate via API calls despite operating correctly
- Fixed a potential crash when power estimation dropped below the minimum target during deep underclocking
- Resolved an issue where the Antminer S19 XP Hyd. was incorrectly identified as a NoPIC miner, restoring proper enable/disable functionality for individual hashboards
## 24.09
October 22, 2024Introducing Braiins OS Release 24.09, now offering full support for Antminer S21 Pro and **BETA support** for Antminer S21 XP. This release delivers refined power estimations, expanded underclocking capabilities, and optimized DPS removing unwanted tunings. Additionally, users can create an experimental configuration file to evaluate new features.
### Antminer S21 & S19
- **Full support**
for the Antminer S21 Pro with AML control board
- **BETA support**
for Antminer S21 XP with AML control board
- Improved power estimations: reduced power spikes and enhanced precision. Consumption estimates at various targets are now closer to actual PDU usage.
**Note:**
_This improvement removes old profiles and forces autotuning!_
- Implemented DPS grid to eliminate unwanted tunings. Hashrate or Power targets are now rounded to the nearest steps
- Introduced DPS memory to prevent miners from cycling between power targets due to overheating. If an Antminer scales down within 30 minutes after stepping up, the temperature is recorded. To safely increase power again, the temperature must be 2°C lower. This memory expires after 32 hours
- Expanded underclocking power target ranges for all supported Antminers. You can see the table
[here](/braiins-os/technical-resources/index.md#default-power-limits)
- Miners no longer require a restart to ensure full computing capability of the chips. This improvement stabilizes power consumption and makes tuning faster
- You can now upgrade your miner via GUI with a single click under
**System > Upgrade**
. The latest release notes are also available in this section for easy access
- The support archives are now in standard ZIP format
- Added an option to create an experimental configuration file at
`/etc/bosminer-experimental.json`
to set MIN/MAX fan ranges or allow disabling faulty hashboards when using NOPIC miners. For possible options see the
[configuration page](/braiins-os/advanced-features/index.md)
- NOPIC miners with damaged hashboard are now automatically stopped from operating for safety reasons. It is possible to enable them again for your own risk via enabling the
`/etc/bosminer-experimental.json`
. Please read
[here](/braiins-os/advanced-features/index.md)
on how to do it
## 24.08.1
September 13, 2024Introducing Braiins OS release 24.08.1, bringing key improvements including a refined persistent pause logic and a critical bug fix to improve shutdown stability
### Antminer S21 & S19
- Updated the persistent pause logic to trigger only when there is a real risk of hardware damage or dangerously high temperatures. The previous logic occasionally caused unnecessary false positives
- Fixed a bug where, during an error, the miner shutdown could take up to 10 minutes or even crash completely due to communication overload on the chain during the shutdown process
## 24.08
September 03, 2024Introducing Braiins OS release 24.08, featuring Antminer S19 XP Hydro support and additional support for Zynq/Xilinx control board for the Antminer T21, as well as several other adjustments and bug fixes
### Antminer S21 & S19
- Full support for the
**Antminer S19 XP Hydro**
- Expanded compatibility of the
**Antminer T21**
with
**Zynq/Xilinx**
control boards
- Adjusted power target for the
**Antminer S19 XP**
, which enhances the
**underclocking possibilities**
, giving you more flexibility in power management and allowing you to underclock further
- Added support for
**BHB68603-**
&
**BHB68603P**
hashboards
- Dangerous temperature at 110°C: For
**S21 family models**
(where temperature is read from the chip), mining will shut down if the
**internal chips hit 110°C**
. This dangerous temperature threshold is not configurable, ensuring hardware protection
## 24.06.1
July 25, 2024Introducing Braiins OS version 24.06.1, featuring bug fix related to BeagleBone Black and Zynq/Xilinx control boards
### Antminer S21 & S19
- Fixed a bug related to BeagleBone Black installation and Zynq/Xilinx downgrade
## 24.06
July 17, 2024Introducing Braiins OS version 24.06, featuring significantly improved tuning time for 1366BM/1368BM chips and BeagleBone control boards, few features for Braiins Mini Miner, few bug fixes and more!
### Antminer S21 & S19
- Significantly improved tuning time for 1366BM/1368BM chips and BeagleBone control board
- Miners will enter a persistent pause state after reaching a dangerous temperature and will require a resume
command to be sent
- Better DNS caching has been implemented to reduce network bandwidth
- Added troubleshooting for error codes
- Added support for
`APW111721c`
PSU
- Addressed a minor UX bugs and issue where users were unable to increase power target via API
### Braiins Mini Miner
- Users can now upgrade BOS via GUI
- Users can now rotate screens with the button on the rear side of the BMM100
- Addressed a bug where night mode sometimes did not turn the backlight on
## 24.04.2
July 04, 2024Introducing Braiins OS Version 24.04.2, featuring improved stale shares ratio and detection of Antminer performance variants.
### Antminer S21 & S19
- Support for
`BHB68701-`
,
`BHB68703`
and
`BHB68606`
Hashboards added
- Optimized stale shares ratio during mining
- Fixed performance variants detection algorithm
- Fixed redirection from BOS GUI to Braiins Academy
## 24.04.1
May 23, 2024Introducing Braiins OS Version 24.04.1, featuring initial support of Antminer T21 together with a few bug fixes.
### Antminer S21 & S19
- Support of all BOS features now available for Antminer T21
- Fixed a bug where GUI users were unable to change their password
- Resolved an issue where miners were not properly shutting down during DPS when a minimal voltage target was reached
- Addressed a bug from the 24.04 version that prevented miners with APW11 PSU from starting
## 24.04
May 09, 2024Introducing Braiins OS Version 24.04, featuring consistent Antminer model naming, new style of error handling, and more.
### Antminer S21 & S19
- Antminer model names are now consistent across the GUI and the public API, matching the naming conventions used by the manufacturer
- New Public API methods were added. See them
[here](/braiins-os/papi-changelog.md)
- Increased target temperature for S19k PRO model to 65 degrees celsius
- Support of mixed hashboards from Antminer S19 and T19 models
- In our new iteration of error handling, we created new codes to improve troubleshooting. These will be listed in the new tab in the GUI. Soon we will add error codes to the Public API and create a page for troubleshooting. We look forward to making more improvements based on user feedback
## 24.03.1
April 03, 2024Braiins OS 24.03.1 has been released to address tuner issues found in certain Antminer models, which were introduced
in version 24.03.
## 24.03
March 27, 2024Introducing Braiins OS Version 24.03, featuring support of **Antminer S21** and several other new deliveries, enhancements, and bug fixes.
### Antminer S21 & S19
- Support of all BOS features now available for Antminer S21
- The new Braiins OS version 24.03 is now available for the Braiins control board
`BCB100`
- Support for the new Antminer S19k Pro with hash boards
`BHB56903-`
- Introduction of stable version of
[public API](https://github.com/braiins/bos-plus-api)
- Improvement of error log messages
## 24.02.1
March 08, 2024Braiins OS 24.02.1 is now available, resolving a DPS (Dynamic Performance Scaling) issue introduced in the prior
24.02 release through a bugfix.
## 24.02
March 05, 2024Introducing Braiins OS Version 24.02, featuring very first support for hydro mining, remarkable efficiency gains for Antminer S19 126 chips model, along with a host of improvements and bug fixes for an enhanced mining experience.
### Antminer S19 family
- Support for Antminer S19 Pro+ Hydro, the inaugural hydro model
- Support for Antminer S19 with 126 chips per hash board, boasting an extraordinary two-digit uplift in miner efficiency
- Improvements of the hashing quality for miners with Cvitek control board
- Resolved an issue where the reported power consumption wasn't updated when mining was paused, ensuring accurate power consumption metrics
- Addressed unresponsiveness of the Braiins OS GUI tab in the browser
## 23.12.1
January 17, 2024Introducing Braiins OS Version 23.12.1, dedicated to enhancements tailored for freezing temperatures.
### Antminer S19 family
- Enhanced preheat process to allow the miner to reach the target temperature
- DPS enhancements specifically designed to address challenges posed by freezing temperatures
- Improved power estimation for the Antminer S19j 88 chip version
- Switching between power and hashrate targets is performed immediately on the fly
## 23.12
December 19, 2023Introducing Braiins OS Version 23.12 with support for two new Antminer S19 series control boards: **Zynq/Xilinx** and **Cvitek/CV1835** on **NAND memory** (remote installation required). Additionally, this release includes stability and efficiency improvements for the Antminer S19k Pro.
### Antminer S19 family
- Braiins OS support for Zynq/Xilinx control board (on NAND, no need for an SD card)
- Braiins OS support for Cvitek/CV1835 control board (on NAND, no need for an SD card).
- Stability and efficiency enhancements for Antminer S19k Pro
## 23.10.1
November 23, 2023In this minor release, we are excited to introduce efficiency improvements for a couple of Antminer models, as well as a new API method.
### Antminer S19 family
- Efficiency improvements for the Antminer S19 XP, the Antminer S19j Pro, and the Antminer S19j Pro+
- Enhanced persistence of mining pause
- Users can remove tuned profiles on the Public API
## 23.10
November 02, 2023In this minor release, we are excited to introduce support for the latest Antminer models along with a host of enhancements and bug fixes to improve your experience.
### Antminer S19 family
- Support of the Antminer
**S19j Pro+**
- Support of the Antminer
**S19k Pro**
- Improved detection of the PSU
**APW121215G**
(used in Antminer S19j Pro-A)
- New metric
`bosminer_uptime_s`
added to the public API (gRPC) informing about the uptime of the mining
- The
`MinerModel`
enum has been removed from the public API (gRPC)
- Fixed the issue of slow response in the public API (gRPC)
## 23.09.1
October 02, 2023This is a minor release introducing improvements and bug fixes.
### Antminer S19 family
- Introduction if a **persistent mining pause** feature, ensuring that mining operations can only be resumed when
the user initiates the "resume" action, addressing the specific demands of farms participating in demand
response programs
- Reduction of upstream connections in BOS for enhanced NAT space efficiency and network optimization
- Cleaner BOSminer logs
- Optimized CPU usage to enhance system performance
- Small fixes in Braiins OS GUI
Other smaller fixes were delivered as well.
## 23.09
September 14, 2023This is a minor release introducing support of the new Braiins control board **BCB100** and the new PSU type **APW121215G**. Apart from that, several bug fixes are delivered as well.
### Antminer S19 family
- Introduction of Braiins OS for control board
**BCB100**
- Support of the PSU type
**APW121215G**
## 23.08
August 10, 2023This is a minor release introducing new Braiins OS licensing, several new features and bug fixes.
### Antminer S19 family
- Introduction of the new Braiins OS
[licensing](https://braiins.com/os/plus/license)
- New Braiins OS public API methods (gRPC)
- New DPS improvements
## 23.03.3
June 26, 2023This is a minor release introducing new features and bug fixes.
### Antminer S19 family
- DPS improvements
- New Braiins OS public API methods (gRPC)
- Several bug fixes
## 23.03.2
May 31, 2023This is a minor release introducing important fixes.
### Antminer S19 family
- Fix issues affecting the tuner
## 23.03.1
May 04, 2023This is a minor release introducing important fixes for Antminer S19 family with a Zynq control board and other minor fixes.
### Antminer S19 family
- Important fixes on Antminer S19 family with a Zynq control board
- Fix of the BOS upgrade for BBB control boards
- Minimal number of fans for Antminer S19 family with Zynq control boards changed to be 2
## 23.03
April 24, 2023This is a minor release improving tuner capabilities and fans' behavior for Antminer S19 family.
### Antminer S19 family
- Dynamic performance scaling (DPS) without hashboard restarts
- Alpha release of our new gRPC-based public API to provide a unified standard for all current and future miner
variants regardless of the manufacture
- Fixed delays to the resumption of mining experienced after the pause command
- Support for sub-variant NBS1902L
**NOTE**: Due to improvements in autotuning, old tuner profiles will be removed with this update. The new tuner is more efficient and produces better results, so your machines should quickly find new and improved optimal settings.
## 23.02
March 09, 2023This is a minor release, which brings new features as well as support for new models and sub-variants for Antminer S19 family.
### Antminer S19 family
- Support for Antminer S19 XP
- Support for Antminer S19 sub-variants BHB56802 and BHB42651
- Significant tuner improvement: autotuning without restarts
## 23.01
January 26, 2023This is a minor release that brings support of new Antminer S19 flavors (Zynq control board) and improved fan control
### AntminerS19 family
- Added support for more S19 sub-variants
- Improved efficiency of the tuning process
- Added new fan control mechanism
- Fans in auto mode are now default
## 22.08.1
This is a minor release that fixes minor bugs related to pools connections.
### All families
- Minor bugs related to pool connections
## 22.08
This is a major release that brings BeagleBone Black Control Board for public use and Hashrate Target mode for Autotuning.
### Antminer X19 family
- Hashrate Target mode for Autotuning
- Improved Power Curves for S19j PRO and S19 PRO
### Antminer X17 family
- Hashrate Target mode for Autotuning
- Adjusted power limit defaults for Antminer X17 family
**NOTE**: The default power limits for the X17 family are now aligned with the stock power limits based on the machine variant. The previous default power limit of 1700W is now 2200W, which will more closely match the consumption and hashrate output to the stock specifications.
**IMPORTANT**: If you are currently running many X17 devices at the default power limit, this update will cause a significant increase in power consumption. To prevent that, you can simply change the power limit on your machines slightly (e.g. to 1710W) so that the upgrade does not cause any major changes.
If you install Braiins OS on a stock device, or have been using a user-defined power limit, this change will not impact you at all.
## 22.06
This is a major release for BeagleBone control boards only.
### Antminer family
- Added support for Beagle Bone based control boards (including tuner, but excluding the auto-upgrade
functionality)
### Notes
- This release won't run on other than BeagleBone control board equipped miners.
## 22.05
This is a minor release containing improved power curves for selected Antminers models.
### Antminer family
- Power curve matrix has been added for models S19J and S19 pro, so the estimation of power consumption is now
more accurate
## 22.02.4
This is a minor release fixing bugs related to just released Braiins FarmProxy and Pause/Resume feature
### All families
- There is FarmProxy link in all global link bars in the web UI
- Braiins FarmProxy support for dev-fee aggregation has been fixed
- Fixed an issue with Pause/Resume logic that was preventing resume of mining when using the drain
## 22.02.3
This is a minor improvement release that brings X19 images for public use.
### Antminer family
- A universal X17/X19 SD card image (the S17 image file contains support for X19 models as well) is now available
and boots on control boards with secure boot enabled
- Improved power model for S19J and S19J Pro
## 22.02.2
This is a minor improvement release that covers Prometheus metrics support, minor stratum V1 client fix and support archive issues.
### All families
- Stratum V1 client is now resilient to receiving out of order share acknowledgment responses
- `BOSminer` now provides a useful set of Prometheus metrics for advanced farm monitoring
tools based on Prometheus + Grafana combo. The metrics are available at `:8081/metrics`, eg.: `10.10.10.10:8081/metrics` - proper guide to be provided in the following release.
- Support file has correct filename extension ("zip")
## 22.02.1
This is a minor improvement/bug fix release that improves Antminer X19 family support
### All families
- Support archive is now being zipped with 'braiins' password to eliminate spam filter issues
### Antminer family
- Added detection of S19a models
- Improved tuner for S19J Pro and S19J models
## 22.02
### All families
- SD card auto-upgrade is now on by default
- Hashboards that fail to initialize are now automatically being disabled without additional attempts
### Antminer family
- Support for C71 control board-based S19J machines
- Due to imprecise power estimates, the maximum overclocking frequency for S19J/S19JPro machines was set to 740MHz
- Improved power estimate for S19 Pro model - for proper power measurements always measure at the wall!
## 21.12.1
This is a minor bug-fix release for the x19 and x17
### Antminer family
- Fixed performance problem on S19JPro due to a wrong initialization sequence
- Adjust maximum frequency for S19JPro so that preheat doesn't exceed the maximum allowed frequency on higher
power limits
- Wait for voltage to settle in power controller on x17 models
## 21.12
This is a major release that provides support for Antminer S19J Pro (beta)
### All Mining Hardware
- Autotune profile is being added to the Get Help files for better support
- Immersion mode toggle button added to the web interface
- Logs are now less verbose, annoying temperature messages have been removed
- Logs no longer contain color codes as it confuses web log console
- Log reason for miner shutdown
- Fixed issue with per-hashboard hashrate showing the total hashrate in the graphs
- Voltage ramping has been reworked and is now quicker
- Bosminer with autotuning off now correctly starts with user-defined configuration
- Removed
`logrotate`
information from
`syslog`
### Antminer X17, X19
- Support for Antminer S19J Pro (beta)
- Improved power consumption prediction for Antminer S19J Pro
- Chip temperature for the X19 models is being estimated based on PCB temperature
- Removed fan override for the autotuning, default is 100%
- Fixed an issue with chips not reachable on X19 models
### Known issues
- Aftermarket control boards sometimes freeze completely
## 21.09.3
This is a minor bug fix release for Antminer X19 family
### Antminer family
- Machine override in bosminer.toml no longer causes the web frontend to block pool settings
- EEPROM content is written into system log when auto-detection fails for troubleshooting reasons
### Antminer X19
- Fixed auto-detection problem that was confusing some S19Pro for S19 machines
- Further improve auto-detection of S19 machines
## 21.09.2
This is a miner bug fix release for Antminer X17/X19 family
### Antminer X17, X19
- Enable tuner configuration for S17Pro machine
- Fixed power controller lockups
## 21.09.1
This is a minor release that extends the X19 power supply limit for immersion setups.
### Antminer X19
- Extend power limit up to 6500 W on APW12. This is for modified PSU's that can handle this power limit!
## 21.09
This is a major release that presents a full web interface overhaul and an improved SD card installation method.
### All Mining Hardware
- System running from SD card now supports upgrade and auto-upgrade like in case of a system running from internal
memory (NAND)
- `BOSminer` will now automatically pause mining if there is no pool alive, reducing the
power consumption to a minimum
- New web interface, with dark mode and translation support (previously available in nightly builds)
### Antminer X17
- Improved manual model override, to cover the situation where all 3 hashboards have valid EEPROMs, but the
content is for hashboards from a different model. Typical scenario: you have a second hand S17 machine and the
previous owner has rewritten the hashboard EEPROM's with T17e profiles.
## 21.06.1
This is a minor bug fix release that improves Antminer T17e support.
### Antminer X17
- Use proper chip initialization voltage for T17e
## 21.06
This is a major release that provides improved support for the Antminer X17(including e) family.
### Antminer X17
- Improved tuner ensures optimum miner performance at user-configured power levels
- Support for S17e and T17e
- Improved support for T17, T17+, S17, S17+
- Braiins OS Manager support enabled for the entire x17 family
- Improved DPS, Dynamic Power Scaling now also automatically up-scales the power limit, when the miner's
temperature is at least 5 degrees bellow the HOT limit and the fans are running bellow 80%.
- `BOSminer` will run and ignore incorrect configurations only when Braiins OS Manager
is used so that the configuration can be fixed. If Braiins OS Manager is not used, `BOSminer` will power off when there is an incorrect configuration.
## 21.04
This is a major release for Antminer S9 that adds support for Braiins OS Manager - a cloud solution for miner management and monitoring.
### All mining hardware types
- Support for Braiins OS Manager - a cloud solution for miner management and monitoring, created in collaboration
with FarmGod
- `BOSminer` has now reduced additional network traffic to an absolute minimum when
probing for live stratum servers
- `autotuning` is now being enabled automatically when using the SD boot method
- `BOSminer` will run even when the configuration is incorrect to avoid connection loss
due to `BOSminer` being stopped
- Fixed an issue with long reconnect to pools when the public IP was changed
## 21.02
### All mining hardware types
- The web interface now has a Support Tool that can generate archive with logs that can be sent to us
- New GUI dashboard provides better overview of miner health and performance in one condensed page
- Toolbox improvements include listing miners from the "discover" script and single IP command
- Image for SD card has an "auto-install" feature to NAND that eliminates the need for using a desktop machine to
trigger installation from SD completely
### Antminer X17
- Mining on X17 family can be quickly paused/resumed which is suitable for farms participating in grid programs.
E.g.: `pause` command looks like this: `echo '{"command":"pause"}' | nc IP_ADDRESS 4028`
## 20.12
### All mining hardware types
- Nightly builds from now on will point to nightly feeds as expected
- DHCP server on the network interface has been disabled. Apologies, for this typo
### Antminer X17
- For miners with locked machine, we now provide a mechanism to configure the SD image so that it would install
BOS into NAND fully automatically
- All X17 models with `Macronix` NAND flash memory are now supported
- New configuration section `[model_detection]` has been added that allows overriding
result of hardware auto-detection and honor the preset hardware type in the configuration. This is to cover the
situation where all 3 hashboards have corrupted EEPROMs. See `use_config_fallback` configuration option
- New FPGA allows overclocking up to 950 MHz (NOTE: this frequency is realistic only for immersion super cooling
setups!)
- Voltage setting has been made more robust to support machines that had problems with voltage setting within a
specified timeout
## 20.11
This is a major release that improves the performance of X17 family tuning and overall operation.
### All mining hardware types
- There is now a single BOS Toolbox download which can be used for all hardware types. It also allows for mixing
S9 and X17 models in one `list.csv` file, so users can do everything in batch (install, configure, uninstall,
etc.) even with multiple hardware types.
### Antminer X17
- Frequency of the entire family is limited to 750 MHz
- Improved tuning of the whole family
- Implemented workarounds for failing hashboards
- Support for T17, T17+
- Improved performance of S17+ hardware
- API lockup when tuner is running has been fixed, the charts in web interfaces no longer get stuck for a couple
seconds between tuner restarts
### Antminer S9
- The BOS Toolbox is the same for Braiins OS and Braiins OS now with Braiins OS being the default. Users who
want to install the open-source version can do so with the parameter `--open-source`
## 20.10
This is a major release that adds beta support for Antminer S17+.
### All mining hardware types
- `procd` now waits up to 20s to allow proper shutdown of `BOSminer`
- `BOSminer` monitor now only spins the fans for when `BOSminer` has been stopped in order to cool down the machine
- Stratum client no longer complains about `Stratum: unexpected accepted solution #0`
- Stratum client incorrect state bug has been fixed (i.e. you should not see `ERRO BUG: 'finish_shutdown_or_recover': unexpected state 'Starting'` anymore)
- Referral program support has been made more robust to support multiple hardware types in a single referral
configuration
- BOS management protocol is now relayed between devfee stratum V2 connections in case of fail over to a backup
connection
### Antminer S9
- There were no hardware-specific changes
### Antminer S17
- Support for S17+ has been added
- Default temperature limits have been lowered even further to target temp: 72°C, hot temp: 85°C, dangerous temp:
92°C as the S17 family is very sensitive to overheating due to the quality of the solder material used on the
hashboard PCB's
- We have added automatic detection of control board variant (C49 vs C52) to drive fans properly
- Braiins OS would refuse to install on X17 machines that have the `Macronix` NAND flash.
Currently, only the `Micron` NAND flash is supported
- Auto-detection of S17, S17Pro, S17+ has been implemented and there is a single image for all of these machine
types
- Power limits are now dynamically calculated based on the detected machine
## 20.09.1
This is a bug fix release.
### All mining hardware types
- We have disabled rebind protection in DNSmasq to recover original name resolution behavior. What it means is
that mining farm DNS server can serve responses that point to private (local) IP ranges. This improves user
experience should a farm have a local stratum proxy accessible by name.
- Support for optional mining ping/pong stratum messages that some pools use for checking miner liveness
- Workaround for a yet-another-broken stratum V1 implementation has been deployed. The problem is that some
stratum V1 implementation don't mark result as `null` in response that carries an error
but put various things into it (e.g. false). The stratum client would abort a connection in such case. We have
made this into a warning log message, and the client ignores such anomalies and can extract the useful payload
out of it
- `bosminer.toml` format version is now correctly being migrated
### Antminer S17
- Hot temperature limit has been lowered to 100°C
- Last error of a machine is now by default being shipped to our logging server. This is to simplify debugging any
S17 issues and if not desired, it can be disabled in `/etc/init.d/bosminer` by replacing `PROG=/usr/bin/bosminer-panic-wrapper` with `PROG=/usr/bin/bosminer`
## 20.09
This release brings support for Antminer S17 and S17 Pro and includes a maintenance release for the Antminer S9 family.
### All mining hardware types
- Implemented referral program - sellers of Braiins OS can now acquire a referral package (with a referral ID and
configuration file) which will send them a portion of the devfee collected when applied by the referees.
### Known issues
- Displayed power consumption for S17 and S17 Pro is lower than the actual power consumption, this will be
improved in the next releases.
- `BOSminer` is slow at reconnecting to the pool when the internet provider changes the
IP address for the user
## 20.06
This release aims to improve the usability of Braiins OS and BOS Toolbox by implementing new features and fixing the most critical issues.
### All mining hardware types
- Support for `yiimp` based pools (e.g. `prohashing`) that
incorrectly send a version rolling mask starting with `0x`, which doesn't comply with the BIP-310 specification
- Support stratum V1 passwords since they are used by some pools for algorithm switching and other hacks
- Implementation of auto-upgrade mechanism. The machine will periodically check for a new version of Braiins OS
and upgrade to it automatically when found. This feature is turned on by default when switching from stock
firmware, but it has to be turned on manually when upgrading from an older version of Braiins OS
- Improved system logging with the implementation of `logrotate`. System logs are now
automatically compressed and saved on the NAND of the device which allows longer logs to be stored
- Updated BOS Toolbox, which can now run custom commands in batch
- NAND install from an SD card now properly migrates the configuration from the SD card, instead of from the old
system on the NAND
- Fixed the issue with bosminer.toml being empty when the miner is turned off before the system flushes the buffer
- IP report button now works correctly
- Autotuning subsystem now saves performance profiles into `/etc/bosminer-autotune.json`.
The performance profiles are recorded for each power level and board index
- Dynamic Power Scaling now automatically lowers the power limit of the miner by a user-set amount if the device
reaches the Hot Temperature. Upon reaching the minimal power limit, the miner shuts down in order to cool down.
The miner starts to work on the original power limit again after a user-set period of time
### Antminer S9
- We have switched back to Xilinx I2C IP core for communication with voltage controllers and extended it with
glitch filtering for noisy environments
- UART Rx line for communicating with hashing chips has been extended with glitch filtering
## 20.04
This release covers mostly user-facing issues, installation/uninstallation difficulties and 1 major problem with I2C controller on S9. Also, we now have nightly builds that are easy to enable via bos tool.
### All mining hardware types
- Support for reconnect - we have implemented support for client reconnect (stratum V1) and reconnect message for
V2
- Installation/uninstallation (aka `upgrade2bos` and `restore2factory`) process (transition from factory firmware to Braiins OS or vice
versa) has been improved
- Custom pool user (`--pool-user`) can be set on command line
- Pool settings from the factory firmware are now automatically being migrated to `BOSminer` configuration. Migration can be disabled by specifying (`--no-keep-pools`)
- We now provide binary form of `upgrade2bos` (based on `pyinstaller`) that contains the latest Braiins OS installation image
- Similarly, `restore2factory` (based on `pyinstaller`) is now
available in binary form and doesn't require any longer downloading/finding out the correct factory firmware.
- Disk space and time-consuming backup of the original firmware is now disabled by default (can be enabled by `--backup`)
- Keeping host name while performing first time installation is now driving by 2 options `--keep-hostname` and `--no-keep-hostname` allowing to force override and automatic hostname generation based
on MAC address
- Support for enabling/disabling nightly builds has been integrated into bos utility (and its legacy miner
counterpart).
- System now provides logs covering longer timespan of `BOSminer` operation due to
enabling log rotation and compression of `/var/log/syslog.old` when it is bigger than
32 KiB
- SD card image now contains a slushpool authority public key that was missing
- Rejection rate is now correctly being displayed
- Unknown stratum V1 messages received from the server are now being logged for diagnostics
### Antminer S9
- Tuner status is now shown in the GUI. `TUNERSTATUS` API command was added.
- Some devices were experiencing random I2C controller bus lockups and would fail to communicate with hashboard
power controllers connected to the shared I2C bus. We have found out that the cause was the Xilinx I2C
controller core that we have integrated into the FPGA bitstream. We have switched to the I2C present in the SoC,
and the bitstream only routes the signal of the peripheral (`IIC0`) to corresponding
FPGA pins.
## 20.03
### All mining hardware types
- Configuration file allows specifying a power limit of the PSU that the autotuning algorithm will take into
account in order to maximize the TH/W produced by the mining device
### Antminer S9
- Autotuning based on a user-specified power limit
### Known Issues: GUI
- The Reference line in hashrate chart has incorrect value for average nominal hashrate. Issue only presents when
less than 3 hash chains are operational.
- The rejection ratio is multiplied by 100. As an example, when the rejection rate is 0.1%, then 10% will be
shown.
### Known Issues: Configuration
- SD Card installation will report missing Stratum V2 authentication key in the Miner/Configuration section:
`Error: missing upstream authority key for securing stratum2+tcp connection in pool`
User can configure connection (including the key) in the configuration, or directly in the `/etc/bosminer.toml` file.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-pool/about.md
---
# Braiins Pool
[Braiins Pool](https://braiins.com/pool) is the oldest active bitcoin mining pool in the world, having mined its
first block in 2010. It was originally known as "bitcoin.cz" and "Slush Pool" before being renamed to Braiins Pool
in 2022.
The primary function of a bitcoin mining pool is to enable miners who participate in it to earn more consistent and stable rewards by aggregating their individual computing power (called hashpower) with that of all the other miners in the pool.
Increasing the cumulative hashpower and market share of the pool increases the frequency with which the pool finds blocks and earns revenue.
The pool operator then splits the revenue proportionally amongst all its participants according to the percentage of the pools total hashpower that each contributed.
Recommended next step
### Need firmware that does more than stock setup?
Braiiins OS is the next step when you want more control over miner behavior, tuning, efficiency, and long-term operating performance.
[See Braiins OS](https://braiins.com/os-firmware)[Buy hashrate](https://hashpower.braiins.com/)
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-pool/btc-mining-setup.md
---
# Bitcoin Mining Setup
Figure out how to connect to Braiins Pool by following these steps:
## Get suitable hardware
- ✓Bitcoin can be efficiently mined with: ASIC (SHA-256 algorithm)
- ✘Bitcoin cannot be efficiently mined with (unsupported): GPU, CPU, mobile phone
_While mining with unsupported hardware might be possible, it will almost certainly be unprofitable. Also, keep in mind that our support team will not be resolving issues related to unsupported hardware._
## Sign-up for a Braiins Pool account
You can use an existing account if you have one.
- [Sign-up](https://pool.braiins.com/signup/) to the pool, wait for the confirmation email and [log into](https://pool.braiins.com/login/) your account.
## Configure your mining device
_Individual hardware manufacturers may have specific settings requirements and different settings interfaces. Please follow their official documentation when setting up your miners. This also applies to cloud mining services._
The mining configuration needed for your miner should look like this:
| Parameter | Value |
| ----------- | --------------------------------------- |
| Primary URL | stratum+tcp\://stratum.braiins.com:3333 |
| Backup URL | stratum+tcp\://stratum.braiins.com:443 |
| User ID | userName.workerName |
| Password | anything (or empty) |
Remember to configure the credentials for each device. The `User ID` is mandatory and is used to pair the device with your account. Password is not used, it can be anything. User ID consists of `userName` (same as your Braiins Pool account name) and `workerName` (any device identifier). If `workerName` is empty, `[auto]` worker is created for you. We recommend connecting each mining device with a separate workerName for efficient monitoring.
**Only one URL is now used by our Pool.** Braiins Pool servers are located all around the world and automatically selected based on your location. For best efficiency we advise stop using location-specific URLs used in the past (e.g. Europe, USA, Canada, Brazil, Singapore, Russia, etc.).
_Note: Set old slushpool.com address (stratum.slushpool.com) if you're using Braiins OS version older than 22.08.1 for successful application of 0% mining fee on Braiins Pool._
## Stratum V2
For Stratum V2 connection guide see the [Stratum V2 manual section](/braiins-pool/stratum-v2-manual/index.md). You need to run our [Braiins OS](https://braiins.com/os/plus) firmware which supports Stratum V2 (stock manufacturing firmware currently does not support this new protocol).
| Parameter | Value |
| ----------- | -------------------------------------------------------------------------------------------- |
| Primary URL | stratum2+tcp\://stratum.braiins.com:3333/9awtMD5KQgvRUh2yFbjVeT7b6hjipWcAsQHd6wEhgtDT9soosna |
| Backup URL | stratum+tcp\://stratum.braiins.com:3333 |
| User ID | userName.workerName |
| Password | anything (or empty) |
_Note: Set old slushpool.com address (v2.stratum.slushpool.com) if you're using Braiins OS version older than 22.08.1 for successful application of 0% mining fee on Braiins Pool._
**Example configuration**
Let's say there is a miner with username bigMiner and his worker is named strongDevice. The configuration information for this miner would look like the following (configure accordingly):
| Parameter | Value |
| ----------- | --------------------------------------- |
| Primary URL | stratum+tcp\://stratum.braiins.com:3333 |
| Backup URL | stratum+tcp\://stratum.braiins.com:443 |
| User ID | bigMiner.strongDevice |
| Password | anything123 |
## Register your payout address
To collect your reward you have to set up a payout address in the _Funds > Wallets menu_ and define a payout rule in the _Funds > Account detail_. Once you reach the minimum threshold, your rewards will be sent there. You can start mining even without this address being registered, but it is highly recommended that you register it straight away.
If you do not have an address yet, you need to get a wallet first. We recommend the Trezor Hardware Wallet for maximum security. Other usable wallets are listed on [Bitcoin.org](https://bitcoin.org/en/choose-your-wallet).
Alternatively, if you decide to use Lightning payouts instead, you can do so with Braiins Pool. Make sure to use a [Lightning wallet](https://coincharge.io/en/lnurl-for-lightning-wallets/) which is capable of providing a [Lightning address](https://coincharge.io/en/lightning-address/) to you. Lightning payouts requested via invoice are not supported.
## Check if you are mining
Open your Dashboard on the Mining tab for the coin that you are mining. Then check your hash rate in the Recent Hash Rate graph section below. Please be patient; it can take up to an hour until you see the full hashing power of your newly connected device. You can also look through our article "How to check if I'm mining" in [Troubleshooting section](/braiins-pool/faqs/mining-basics/index.md#how-to-check-if-im-mining).
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-pool/faqs/account.md
---
# FAQ's: Account
## Account
How to set up 2FA in your Braiins Pool account?
**We strongly recommend that all pool users set up 2-factor authentication (2FA) to better secure your account.**
This provides extra protection in the event that your email account or pool account name and password gets compromised.
To set up 2FA, go to your account's Security page, which can be found when you click on your account name on the top-right corner of your screen. On the Security page, scroll down past the password section and you'll see Two-Factor Authentication.
You have two methods for using 2FA:
- One Time Password (OTP) - use a 3rd party app such as `Google Authenticator`, `Authy`, or `LastPass` to generate a password for one-time use.
- Universal Second Factor (U2F) - use a physical device following the FIDO Universal 2nd Factor standard, such as a TREZOR or Yubikey.
At the moment, 2FA authorization is required (if activated) only when making important changes to your account and not for the login itself.
I can't log in. What's wrong?
If you experience problems with the log-in then please be aware that your credentials (both password and account name) are case sensitive. The most common mistake is to put an email as a account name, but this doesn't work. Please use your account name registered at the pool instead.
If your miner is not connecting to our servers please follow these troubleshooting steps:
1. Check if your HW supports the required hashing algorithm
- [Bitcoin Mining Setup on Braiins Pool](/braiins-pool/btc-mining-setup/index.md)
2. Reboot your device.
3. Double check the miner configuration to make sure that:
- Your account name is spelled correctly (account name is case sensitive).
- There are no white-space characters in your config.
- You are using the correct pool URL for Bitcoin mining.
4. Try alternative ports for the URLs (some ports might be unreachable in your region).
- [Bitcoin Mining Setup on Braiins Pool](/braiins-pool/btc-mining-setup/index.md)
5. Upgrade your device's firmware to the latest version. (Note: it is becoming common for some ASIC manufacturers to lock the SSH in firmware updates, so be careful about this before installing an upgrade.)
6. Check your network settings, e.g. router security-filtering features.
7. Check that your ISP is not blocking the relevant port numbers.
My account has been hacked. What should I do?
Stop mining on your old account and start mining with a new account. The important thing is to change the passwords on both your Braiins Pool and email accounts. Also, you should change your password for any other services where you use the same password as in the hacked account. To prevent this from happening in the future, we strongly recommend that you set up two-factor authentication. And remember: you should never use the same password for multiple services (for security reasons). You should also avoid using short and predictable passwords.
How can I delete my account?
Once you decide to close your mining operation down there are two options:
1. You can leave your account as it is without signing, or mining, and it will be automatically deleted after one year of your inactivity.
2. You can request account deletion manually in the Settings > Accounts menu and confirm it via the confirmation link sent to your email.
In either case, please check that all rewards were already paid to your payout address before deleting or abandoning the account.
Why has my account been deleted?
With regards to the pool's Terms and Conditions, we take necessary safety precautions and reserve the right to permanently delete any accounts that have been inactive for at least 12 months on our servers.
An account is considered inactive when there has been no mining activity nor a login into the web profile within the previously specified time.
The funds from deleted accounts are used for technical maintenance of the pool.
To prevent any undesired deletion, the user will receive email notifications 14 days prior to the actual deletion.
The main reason we set such rules is that the mining pool, as an online system, cannot be 100% secure by its nature.
Pool service is therefore not supposed to be a long term storage for those who are mining with us or decided to stop mining.
To safely store the coins long-term, we encourage our users to use secured wallets on their personal computers/smartphones or to use the TREZOR for a high level of security.
We would like to explicitly declare that legally speaking, this service owns the mined coins until the user sets a payout address and the balance on the user's profile exceeds the configured threshold needed for payout.
Please make sure that you have correctly set your payout address and manage your payout threshold according to your needs.
How do I register at Braiins Pool?
Anonymity is one of the core values which we embraced deeply into our company philosophy. Therefore, we do not collect any personal data and our registration process is really simple. Just fill in the basic necessary information like username, email address and password on the account [registration page](https://pool.braiins.com/signup/). Then click on the confirmation link which will be sent to your email address. Your account is now ready, happy mining!
Can I export my data?
You can easily download the history of your **payouts**, **rewards** and even **activities** in standard **CSV** and **JSON** formats — comfortably readable by both humans and machines.
To do so, visit one of the mentioned sections (payouts, rewards or activity) on your Workspace. You will find the export option in the bottom left corner.
While there is no option to directly export PDF files, you can use various spreadsheet software tools to load CSV files and convert them to PDFs.
How to secure my account?
To protect your account from various attacks, we highly recommend that you use the following security features:
Two-factor authentication (2FA): after the initial setup, you will need to use the 2FA every time when making some important changes to your account.
Payout setup lock: as a security precaution, it is possible to lock your current payout setup so that it cannot be changed by anyone who gains access to your pool account.
Remember, you should never use the same password for multiple services as a security practice. You should also avoid using predictable passwords.
How can I change my email address?
If you have access to the original inbox, simply change it on your own on the Account tab in the Settings. To change your email address, enter the new address you wish to use and click the confirmation link received on your old email account.
If you do not have access to your former email account, you may confirm the change by wallet signature via our [support](https://help.braiins.com/en/support/tickets/new).
I have forgotten my password/ account name. What should I do?
Please reset your password [here](https://pool.braiins.com/password-reset/).
The username will be sent to your email address along with the password reset link.
How can I remove the 2FA protection?
Please note that losing your smartphone (and a backup of your secret key) means you will not be able to change your payout address.
Two-factor authentication (2FA) cannot be deactivated without access to your smartphone.
1. You can deactivate two-factor authentication in the Settings → Security page by entering a valid one-time password.
2. Alternatively, if you do not have access to your authentication software, you can disable your OTP protection by [sending us](https://help.braiins.com/en/support/tickets/new) a message signed by your wallet.
Can I change my account name?
Changing the account name is currently not allowed.
You can, however, create a new account with a different account name under the same email address.
It's possible to have multiple accounts registered with the same email address.
How to share access to my account?
To share the access to your account, go to _Settings → Access Profiles_, create a new profile and set its password and specify its level of permission.
Choose between granting full access or just read-only access to your profile.
Can I create a mining sub-account?
Yes! You can create sub-accounts directly from the Braiins Pool interface. Navigate to **Settings > Sub-accounts** and click **Add new Sub-account**.
Sub-accounts are full Braiins Pool accounts linked to your primary account. You can optionally copy your payout rules and password during creation. Once created, you can switch between sub-accounts without logging out, view a consolidated dashboard with hashrate and rewards across all sub-accounts, and manage them from a single place.
For full details, see the [Sub-accounts guide](/braiins-pool/user-accounts.md#sub-accounts).
Why is my account inactive?
It means your account has not been activated. Please check your inbox and spam folder because you should have received an email which contains the activation link.
If you have not received the activation email, please, [contact our support team by creating a new ticket](https://help.braiins.com/en/support/tickets/new).
I haven't received an email from you. What should I do?
We recommend that you check the spam folder/black list in your email account. There is also an option to resend the email in the settings (in the case of a confirmation email).
If the problem persists please [create a support request](https://help.braiins.com/en/support/tickets/new) for further investigation.
Can my deleted account be restored?
Unfortunately, we can not recover deleted accounts.
In the case that your account was either deleted automatically or by your own action, please consider your unclaimed reward balance as a donation to service improvements of the pool according to our Terms of Service.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-pool/faqs/connection.md
---
# FAQ's: Connection
## Connection
How to check my connection?
To test the reachability of our servers, you can use the ping utility. Example of a successfully established ping connection:
```bash
ping stratum.braiins.com
```
```
PING stratum.braiins.com (172.65.65.63): 56 data bytes
64 bytes from 172.65.65.63: icmp_seq=0 ttl=52 time=29.191 ms
64 bytes from 172.65.65.63: icmp_seq=1 ttl=52 time=59.535 ms
64 bytes from 172.65.65.63: icmp_seq=2 ttl=52 time=21.847 ms
64 bytes from 172.65.65.63: icmp_seq=3 ttl=52 time=56.541 ms
64 bytes from 172.65.65.63: icmp_seq=4 ttl=52 time=28.268 ms
--- stratum.braiins.com ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 21.847/39.076/59.535/15.716 ms
```
If for some reason the ping utility is not available, you can also use Telnet instead. Example of a successfully established Telnet connection:
```bash
telnet stratum.braiins.com 3333
```
```
Trying 172.65.65.63...
Connected to stratum.braiins.com.
```
Which server should I connect to?
Only one URL is now used by our Pool. Braiins Pool servers are located all around the world and automatically selected based on your location. For best efficiency we advise stop using location-specific URLs used in the past (e.g. Europe, USA, Canada, Brazil, Singapore, Russia, etc.).
Check [Bitcoin Mining Setup](/braiins-pool/btc-mining-setup/index.md) for proper miner configuration.
I cannot connect to Braiins Pool. What's wrong?
If your miner is not connecting to our servers please follow these troubleshooting steps:
1. Check if your HW supports the required hashing algorithm.
- [Bitcoin Mining Setup on Braiins Pool](/braiins-pool/btc-mining-setup/index.md)
2. Reboot your device.
3. Double check the miner configuration to make sure that:
- Your username is spelled correctly (username is case sensitive).
- There are no white-space characters in your config.
- You are using the correct pool URL for Bitcoin mining.
4. Try alternative ports for the URLs (some ports might be unreachable in your region).
- [Bitcoin Mining Setup on Braiins Pool](/braiins-pool/btc-mining-setup/index.md)
5. Upgrade your device's firmware to the latest version. (Note: it is becoming common for some ASIC manufacturers to lock the SSH in firmware updates, so be careful about this before installing an upgrade.)
6. Check your network settings, e.g. router security-filtering features.
7. Check that your ISP is not blocking the relevant port numbers.
Why does my miner have a disabled status?
When you switch off monitoring for a worker its state is reported as Disabled, regardless a fact if it submits some shares or not.
Why do I see a different hash rate on my profile and on my miner?
There is a difference between a nominal hash rate shown in the manual of your mining device and an effective hash rate shown in our system.
For more information please read our Hashrate article [here](/braiins-pool/hashrate-specification/index.md).
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-pool/faqs/mining-basics.md
---
# FAQ's: Mining Basics
## Mining Basics
What is an ASIC miner?
An ASIC (application-specific integrated circuit) miner is a device specialized only for a specific type of work. In the cryptocurrency space, ASICs are capable of hashing certain mining algorithms (e.g. SHA-256 on Bitcoin) with high efficiency.
These workers represent an upgrade from CPU/GPU chips, which usually become obsolete for any given mining algorithm after ASICs are developed and introduced to the market.
Visit [asicminervalue.com](https://www.asicminervalue.com) for a comprehensive list of ASIC miners for different coins. Don't forget to check which algorithm the selected device is made for and which coins can be mined with it, in our case:
- ASIC miners that support **SHA-256** algorithm **for Bitcoin mining**
What mining hardware should I buy?
Which hardware do you need? In order to mine a particular cryptocurrency, you will need a hardware device suited to mine that cryptocurrency's mining algorithm. Depending on the coin, you will either need an ASIC miner (computer exclusively designed for mining specific coins) or a PC with a powerful GPU (graphics card) or CPU (processor) in some cases.
Each coin requires different hardware (depending on the algorithm used) that may or may not be used to mine other cryptocurrencies! You must always ensure that your mining equipment is suitable to mine your chosen cryptocurrency. Mining cryptocurrencies with unsuitable hardware will either be extremely unprofitable or it won't work at all.
### Comparing mining hardware
For a comparison of ASIC miners we recommend [asicminervalue.com](https://www.asicminervalue.com). There are dozens of devices listed with complete specifications and profit estimates.
For mining with Braiins Pool, you should look for:
- ASIC miners that support **SHA-256** algorithm **for Bitcoin mining**
### General tips
We do not recommend any particular manufacturer. However, there are a few good pieces of advice which we can give you:
- Be wary of suspiciously good deals for hashrate/price and **unknown companies**
- Consider the hardware's power consumption and the power bills you have to pay.
- **Later shipping dates** usually mean that your estimated profitability will decrease due to rising difficulty over time.
- Double check that the website url is correct before sharing your personal information or buying any hardware as some scam websites are set up at slightly different urls to impersonate manufacturers and resellers.
What is the Bitcoin halving / halvening?
Every Bitcoin block value consists of the block reward (new coins issued) and the fees from transactions contained in the block. The block reward is hard coded for each block and, in the case of Bitcoin, its value is halved at intervals of 210,000 blocks (approximately once every four years).
When Bitcoin was created in 2009, the initial reward was 50 BTC per block mined. After the latest halving that happened on April 19, 2024 the mining reward is 3.125 BTC and it is going to be cut in half to 1.5625 BTC in the spring of 2028 (see [countdown](https://www.bitcoinblockhalf.com/)). The halving process will continue until the final supply of coins - slightly less than 21 million - is reached.
### Halving vs halvening. Which is correct?
Both terms refer to the same event. The proper name for the event is the halving but the community sometimes uses the word halvening instead (as a nickname) which was created by a merger of "to halve" and "to happen" — the halving which is happening is the halvening.
How to check if I'm mining?
To check that your miner is configured correctly, you should look for the following clues:
1. The miner is submitting shares in the mining software. For most of the miners, the submission rate should be around 1 share every 5 seconds.
2. Your 5 minute Hash Rate on your Dashboard is a non-zero value.
3. You see block rewards on the Statistics page for every closed round (solved block). This may be zero if you stopped mining during the round.
Is it worth it to start mining Bitcoin these days?
Nowadays, Bitcoin mining is a specialized business and not profitable for everyone. Therefore, we strongly encourage anyone interested in mining to do his/her own research and make the necessary calculations before investing any money into the operation.
This short [overview](https://braiins.com/blog/bitcoin-mining-profiles-the-investor-the-entrepreneur-and-the-prospector/) of Bitcoin miner profiles can give you an idea of how much strategy and understanding is required to mine successfully in the modern industry.
The most important factor is, of course, electricity prices. For the majority of households, prices are simply too high, making Bitcoin mining unprofitable.
Can I solo mine on Braiins Pool?
Yes, you can mine Solo with Braiins. Check [Solo Mining section](/braiins-pool/solo-mining.md) for information how to do it.
What is a stale rate?
Stale rate is number of shares submitted after the previous block has already been found and pool has moved to the next block. If everything works correctly, it should be a very low number. Several factors can increase your stale rate:
### Network Latency
On slower networks (or when there is a network issue on the path from your miner to the pool), it takes more time for a miner to receive notification about a new block.
However, the miner still keeps submitting results to an old block for some time and these are being rejected by the pool as stale shares
### Slower Mining Device
Miners can only handle one task at a time. Before taking on a new job, they need to finish the previous one. While others are generating shares for a new block already, these miners are producing shares for the old block that cannot be accepted by the pool anymore. Such results are also called **stale shares**.
How can I get 0% fees on Braiins Pool with Braiins OS?
By default, miners who connect to Braiins Pool while mining with [Braiins OS](https://braiins.com/os-firmware) will not pay any pool fees.
If you choose to mine with Braiins Pool while using Braiins OS, you'll receive a full rebate on the pool fee collected.
What is an Orphan block?
An orphan block (block A) is a valid block, but it is not a part of a blockchain. An orphan block is created when two miners find a valid block (block A and block B) at around the same time and broadcast them both to the network.
The orphan block (block A) is at first accepted (confirmed) by some nodes (which are usually geographically closer to the miner) but the other block (block B) accumulates more proof of work—it is accepted by more nodes and becomes a parent block for the next one. The orphan block (block A) is then marked as **invalid** because it is not part of the longest chain. **The miners do not receive a reward for such a block**.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-pool/faqs/pool.md
---
# FAQ's: Pool
## Pool
Which coins can I mine on Braiins Pool?
Currently you can mine **Bitcoin** on Braiins Pool. At this time we don't plan to support other alt-coins such as Ethereum (ETH), Monero (XMR), Litecoin (LTC), Dogecoin (DOGE) or others.
We believe that **Bitcoin is the future** and we want to help build that future.
**Ready to go?** Set up a account on [Braiins Pool](https://pool.braiins.com/signup/) and configure your miners according to our guides.
What is a Share in proof of work?
**Share** is a unit which mining pools use for calculating the work done by a miner.
When a mining device is connected to the pool, it receives a computational task to be solved - computing hash values with certain properties (the outputs must be lower than the limit derived from difficulty).
Hashes satisfying the requirements are sent back to the pool and are used as a proof of the miner's work. The quantity of miner's work is registered in units called shares. If a hash (proof of work) with difficulty (d) is submitted by a miner then (d) shares are counted by the pool.
To put it as simple as it could be:
- 1 share = 1 proof of work on difficulty 1
- 5 shares = 1 proof of work on difficulty 5 (or 5 proofs of work on difficulty 1)
- 100 shares = 10 proofs of work on difficulty 10 (or .. you can see the pattern)
The value that determines whether a hash results in a block find is _network difficulty_, but at the pool level there's _share difficulty_, which is how difficult it is for a miner to submit a valid share to the pool.
So in the same way that there can be variance in finding blocks, there can be variance in finding shares because both processes are just inputting random numbers and looking for low enough outputs.
The difference is only that the output needs to be much lower to find a block than it does to find a share (i.e. the _network difficulty_ is significantly greater than the _share difficulty_.)
We have also created a [detailed article](https://braiins.com/blog/bitcoin-mining-pools-luck-shares-estimated-hashrate) on this topic that explains all the basics in a broader context.
Do you have a referral program?
_Referrals, dev-fee split, & white-labeling._
**Braiins Pool**
Unfortunately, we don't run a referral program at the moment. Since Braiins Pool accounts are free and pseudonymous, it would be hard to prevent abuse of such a program.
**Braiins OS**
The [Braiins Partnership Program](https://braiins.com/os/plus/partnership?utm_source=help) (BPP) offers a mutually beneficial relationship between Braiins and BPP participants. While we have an extensive network within the Bitcoin mining industry, we realize there are still many opportunities outside of our current sphere.
**Referral**
Partners offer us value through their own extended networks and can directly contribute to the growth of Braiins and our product suite. In return, **Braiins offers financial incentives in the form of hashrate (i.e. dev-fee split)** which rewards participants in a steady income of Bitcoin, the amount of which is directly related to the volume of hashrate received from the participant.
**White-label**
Braiins Partners can also white-label our firmware, Braiins OS, and offer it to their network. Enjoy the benefits of running your own branded tuning firmware without the extensive development resources required to build it. Our expertise becomes your own.
**Pool benefits**
BPP participants also receive incentives in the form of **reduced mining pool fees** if they mine with Braiins Pool.
Is Braiins Pool compatible with NiceHash?
NiceHash is a platform where you can buy hash rate which you can then use on our pool to mine - see "What is cloud mining" below this article.
Yes, Braiins Pool is compatible with NiceHash services, meaning you can send hash rate bought on Nice hash to Braiins Pool. However, we cannot guarantee non-stop compatibility as NiceHash is operated by another 3rd party.
[Contact us](https://help.braiins.com/en/support/tickets/new) if you need assistance.
What is cloud mining?
There are companies which own mining hardware located in their own facility and provide its hash rate to users for a certain fee. As a user of this service, you don't need to own the mining hardware (e.g. SHA-256 ASICs for Bitcoin), but you pay for a specific amount of hash rate for a specific time period. It's typically called a mining contract.
**Note: Braiins Pool does not offer cloud mining services or investment opportunities! If you are approached by anybody claiming to represent Braiins Pool and offering cloud mining, it is a scam!**
Read our [blog article](https://braiins.com/blog/bitcoin-mining-scams) on the topic "**Bitcoin Mining Scams to Avoid (Braiins Pool Impersonators)**"
We strongly recommend that you properly calculate the financial efficiency before buying any cloud mining contracts. The cloud mining companies usually charge an additional maintenance fee and, in a lot of cases, the returns may be lower than the costs.
A Braiins Pool agent has offered me an investment opportunity. Is it a scam?
**We do not require any payments or investments from our users!** We are a mining pool service, meaning you need to operate your own hardware and send that computing power to us in order to stabilize your mining rewards. You have to understand how mining and pools work.
Read our [blog article](https://braiins.com/blog/bitcoin-mining-scams?utm_source=help) on the topic "**Bitcoin Mining Scams to Avoid (Braiins Pool Impersonators)**".
If you have been offered any investment opportunity from anybody claiming to be affiliated with us it is a scam! There are no official Braiins Pool consultants who would offer "investments opportunities" on the internet. It is a common tactic from many scammers nowadays and, unfortunately, there isn't much we can do to prevent it.
Please be aware of suspicious email addresses created on regular services like Gmail. Our employees (including support agents) only communicate using addresses from the domain: braiins.com.
[Contact us](https://help.braiins.com/en/support/tickets/new) **if you need assistance. We are here to help**.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-pool/faqs/rewards.md
---
# FAQ's: Rewards & Payouts
## Rewards
What reward systems do you support?
Braiins Pool currently only supports FPPS (Full Pay Per Share) reward system which guarantees steady rewards. The previous scoring system was abandoned and is not currently offered. We might consider adding scoring or solo mining to our product offering in the future.
What is FPPS?
FPPS (Full Pay Per Share) reward system follows the rule that every unit of work (share) delivered to the pool is guaranteed a mining reward. This reward is calculated on a daily basis once the day is over.
It guarantees steady rewards regardless of the actual pool's luck. More details are described in the [FPPS Specification](/braiins-pool/rewards-and-payouts/index.md#fpps-specification).
Does the FPPS reward system include transaction fees?
Yes. We believe the transaction fees belong to the miners, and we distributed transaction fees using the scoring reward model. We are continuing with this ethos by adopting the FPPS reward system. Transaction fees are distributed as an average for a given day.
Can I still access my block rewards earned with the scoring system?
Yes, the block rewards awarded when the pool was still using the scoring reward system are available in the Rewards section in separate tab. They will not be lost.
How can I unlock my wallet - Payout Setup (reward split settings)?
For security reasons, unlocking the payout setup can only be done by providing a signature from one of the wallets used in the payout setup to our support team. We will then verify the signature belongs to your registered wallet and unlock the payout setup. In other words, it is not possible for a user to unlock the payout setup by themselves.
Thanks to Payout Setup Lock, even if your Braiins Pool account is compromised, there is no way for the hacker to steal your mining rewards. However, since we do not require our miners to verify their personal identity in order to use a mining account, the only way to safely ensure the integrity of the request to unlock a reward split is by requiring a wallet signature.
If you want to make your account more secure without locking the reward split (or simply in general), we strongly recommend that you set up 2-Factor Authentication (2FA).
What is a reward splitting function and how to use it?
The reward splitting function allows you to distribute your mining revenue according to a customizable breakdown.
For example, a mining company with 3 equal partners can set up a reward split that automatically sends 1/3rd of the total rewards to each partner.
Another potential use case is splitting the rewards between hot and cold storage wallets. For example, 60% of rewards are automatically sent to a hot wallet used to pay for electricity, labor, etc., while the remaining 40% is sent to cold storage for long-term holding.
_You can set up your Reward split in the menu Mining > Settings > Reward Split._
## Payouts
How to customize my Payout Rule?
Every _Financial Account_ has a Payout Rule so that you can control where your rewards are distributed and when. To find this, go to the Funds tab and then select the Financial Account you wish to configure. After you select the desired Financial Account, your screen should look like the image below. Note that selected payout network (onchain or Lightning) is indicated by an icon.
Now under Payout settings, click the "Edit rule" link on the right side of the screen in the Actions column of the table. This will bring up the popup shown below.
Here you can select the payout network (onchain or Lightning), wallet (or Lightning address) for receiving payouts (or add a new wallet), and you can set up your Payout Trigger to be based on time (e.g. daily, weekly, or monthly) or amount (e.g. 0.1 BTC).
How can I add a new payout address (wallet) to my account?
To add a new wallet to your account, follow the instructions below:
1. Go to the Funds tab in the main Braiins Pool menu.
2. Click Wallets on the left-side menu.
3. Click the Add New Wallet button in the top right corner. A popup will appear as shown below.
4. Click the Add New Wallet button on the popup to confirm the setup.
> **Note:** There is no need to manage Lightning addresses.
How can I lock payout address to increase account security?
If you set up a payout rule to your wallet address, you can lock it to prevent any change of this address to anyone who gains access to your pool account. Locking of your payout address can be done in the Mining > Settings > Payout Setup Lock menu. In order to lock your payout address, your payout setup cannot have any pending e-mail confirmations.
Note: you will still be able to change your payout threshold value, or trigger type (threshold or time interval). Only changes of payout wallet or lightning address will not be possible.
If I lock my payout address, can it be unlocked?
As a security precaution, it is possible to lock your current payout address, so **it cannot be changed by anyone who gains access to your pool account**. Locking of your payout address can be done in the Mining > Settings > Payout Setup Lock menu. However, once you lock your payout address, please be sure that you have a backup of it stored somewhere safe. You will need it once you decide to unlock it.
To unlock your payout address you will need to **sign a message with your wallet** and provide us the signature. If you have any troubles with unlocking your payout address, please contact us and we'll look into it.
How can I change my wallet address (registered payout address)?
To change your registered payout address, follow the instructions below:
1. Go to the Funds tab in the main Braiins Pool menu.
2. Click the Financial Account that you wish to update with a different address.
3. Under the Payout Settings section, go to the Actions column and click Edit Rule. A popup will appear where you can edit your payout settings.
4. Under Payout Wallet, click the arrow on the right side to show the drop-down menu.
5. Select the existing wallet that you wish to use, or click Create New Wallet to set up a new wallet for your account.
6. Once your wallet is updated, check that the other payout settings are okay and then click Confirm Changes to complete the change.
How to request manual payout?
To request a manual payout, navigate to the Funds tab in the main Braiins Pool menu and select the Financial Account you wish to withdraw from. Beneath the account information is Payout Settings, and to the right of that section heading you will see Request payout. This is available only in case onchain payout rule is active. There is no manual payouts for Lightning payout rules.
Simply click the Request payout text and a popup will appear to confirm that you wish to send the full balance of the account to your listed wallet address. To confirm, just click Request Payout and we'll send you the payout in the next payout period (typically next day at 9.00 UTC).
What happened to hourly payouts?
We used to process payouts on hourly basis. This has changed after switch to FPPS in December 2023 and all payouts are processed daily at 9.00 UTC.
Why are my payouts pending?
Processing of payouts results into blockchain transaction being created in the mempool.
We estimate the fee based on current network fees dynamically. However it can happen, that the fees are rising at the time of transaction creation and the original estimated fee is not high enough.
This can take few hours but also few days before the fees decrease again and the transactions are mined. We monitor such situations and in case of significant delays we accelerate such transactions.
In case you don't want to wait, you can use CPFP (Child Pays For Parent) concept and accelerate your transaction by yourself.
How to pause my payouts?
To prevent any money from leaving your account, you can pause all payouts. First, navigate to the Funds tab in the main Braiins Pool menu. On the right side of your screen at the top you'll see a button to Pause All Payouts.
When you click the button, a popup will appear and you'll be asked to confirm that you wish to override your payout rules and stop all payouts indefinitely. To proceed, just click the Pause button.
How to resume my payouts?
If you have paused your payouts, you can resume them by navigating to the Funds tab in the main Braiins Pool menu. On the right side of your screen at the top you'll see a button to Resume Payouts.
When you click the button, a popup will appear and you'll be asked to confirm that you wish to resume your payouts. To proceed, just click the Resume button and enter your account password. If you have set up 2-factor authentication, you'll be asked to input your 2FA password in order to confirm the action.
Can I receive my payouts to a Segwit address?
You can set any valid Bitcoin address as your payout address. That includes:
- `P2PKH` (addresses starting with 1)
- `P2SH` (starting with 3, most commonly SegWit addresses)
- `bech32` (addresses starting with bc1, native SegWit addresses)
- `bech32m` (Taproot, addresses starting with bc1)
What is a wallet (address) signature?
Some wallets such as exchange accounts do not have the ability to sign a message. Make sure that you are able to sign a message with your wallet before locking your payout setup, otherwise we will not be able to verify you using this method.
Cryptocurrency wallets each have a public and private key pair that enables the wallet's owner to securely verify their own transactions. The private key is used to digitally sign messages or other data packets such as Bitcoin transactions, verifying that the data has not been tampered with and that it's authentic (coming from the owner of the wallet). Therefore, providing a digital signature created by your wallet's private key is a good way to verify that you own a mining account associated with that wallet.
For more details on how wallet signatures work, see [public key cryptography](https://en.wikipedia.org/wiki/Public-key_cryptography).
What are the Lightning payouts and how to use them?
Lightning network is a 2nd layer network built upon Bitcoin blockchain with the aim to transfer Bitcoin transactions instantly for nearly zero cost and at a scale.
Such transactions use peer-to-peer channels for transfer between point A and point B. For a lightning payout to work the sending and receiving party needs to have a route between them.
Braiins Pool runs its own Lightning node which has open channels to the most frequent wallet operators or routing nodes.
To accept such a payment users need to use a wallet of their choice or to run their own Lightning Node with channel(s) connected to Lightning network.
Are there any limits for Lightning payouts?
Lightning payouts at Braiins have no bottom limit - you can withdraw as low as 1 satoshi.
- These payouts are designed mainly for smaller miners to be able to get even small rewards (especially after halving).
- There is an upper limit of 0.005 BTC. Amounts above this limit can be paid out as free on-chain payouts.
We might increase the upper limit based on the feedback and demand in the future.
Which wallet should I use for Lightning payouts?
Users have a choice of custodian and self-custodian wallets.
**Custodian wallets** are those where funds are maintained by a third-party.
You don't have to worry about opening channels, but on the other hand you have to trust the third-party as you are not holding keys to the funds.
With **self-custodial wallets** you run your own lightning node on a mobile phone or computer. These require creation of a channel first which costs some fee.
You also have to close this channel if you want to transfer the funds to onchain balance.
Manual withdrawal works with any lightning wallet. Automated payouts via lightning address is supported only by some of the wallets [see here](https://github.com/andrerfneves/lightning-address/blob/master/README.md).
What payout options via Lightning Network do you offer?
- **Regular payouts** - wallet with support of Lightning Address needs to be used. Lightning address has the same format as an email address. It gets translated into the URL, which returns a lightning invoice in the background. This usually works well with custodial wallets. Self-custodial (a.k.a. non-custodial) wallets can run into troubles if the user does not claim the transaction before the invoice expires. Regular payouts are triggered daily at 9.00 UTC.
- **Manual withdrawals** - this is the very basic lightning payment request where your wallet generates an invoice for a predefined amount of sats and you paste this invoice into our web. You can request manual withdrawal several times per day if you keep the total sum below 0.005 BTC. It gets processed within 60 minutes (usually 5 minutes after each hour).
What if my payout fails?
There are several reasons why a payment might fail.
When using lightning address:
- **Lightning address provider does not provide correct callback** to retrieve an invoice (for `username@domain.com` you can check `https://domain.com/.well-known/lnurlp/username`, it should return some callback information - see [here](https://github.com/andrerfneves/lightning-address/blob/master/README.md))
- Payout is not **between minimum or maximum acceptable amount** (you can check the limits using `https://domain.com/.well-known/lnurlp/username` for your `username@domain.com` lightning address)
- **Payment was not claimed** by the self-custodial wallet user (e.g. Zeus wallet) - each attempt has typically 24 hour expiration period and there are 2 other repetitions before it's marked as failed.
When using invoice:
- **Expiration time of an invoice is too short** - there may be up to 60 minutes before the invoice is used + additional time in case of self-custodial wallet to claim it. We recommend 24 hours expiration period.
- **No route to the destination node** - especially if you have your own node, make sure to have a good connectivity to lightning network.
There might be other reasons. Check with our support in case the payouts get constantly failed.
Can I have a dedicated Lightning channel with Braiins Pool?
We don't have the capacity to manage individual Lightning channels. We've opened channels to major wallet operators or major routing nodes and we will keep it that way.
We are using Lightning network solely for outgoing transactions. Since we don't plan on routing transactions of others, there is no reason to open channels with us. They won't be used.
When will you support BOLT12?
Current BOLT 11 invoices can be used only once since the preimage used for a security is revealed after the first payment. BOLT 12 comes with concept of offers and invoice requests. From user perspective they work similarly to LNURLs. Since the BOLT12 support is very limited, we don't have an ETA for its support now.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-pool/faqs/worker-management.md
---
# FAQ's: Worker Management
## Worker management
Worker management overview
If you use multiple mining devices at a time, it is practical to have a **detailed overview of each device**. We offer a sophisticated solution in the form of user-friendly worker management. You can easily monitor and manage your miners in the Workers section. Our system is designed to handle even large farms with thousands of workers.
**Worker creation**
Once you connect a miner with its worker name configured, the name will **automatically appear** in the device overview as a new worker.
If you do not set a worker name in your device configuration, a new one will be automatically created with a name `[auto]` worker and your hash rate will be assigned to it.
**Worker settings**
_The following settings are available for each worker:_
**Enable monitoring** – The monitoring system will detect and report any hash rate issues related to the selected worker. Monitoring helps you supervise how your miners work over time and minimizes losses caused by connection issues or mining hardware/software failures. To find out more about the monitoring feature, read the monitoring manual section.
**Auto detect alert limit** – Automatically estimates the hash rate of your worker by its past activity. If you untick this, you can set your own Alert Limit. The system will report issues when hash rate drops below this value.
**Use default minimum difficulty** – The pool uses the VarDiff algorithm which automatically calculates the optimal difficulty for your device. If you untick this, it is possible to set the minimum provided difficulty manually, however we do not recommend this option unless you have knowledge of the technical background.
**Labels** – It is possible to create labels and assign them to the workers according to your own needs. You can create and delete your labels by clicking Manage Labels and +. There could be a shortcut, name, color and further description in every label detail. Assign labels by clicking Edit Worker > Labels > selected label > Apply.
**Other options**
**Filter your workers** – To have a better overview of your workers, you can filter them by their state, name, hash rate, minimum difficulty, alert limit or actual state.
**Worker detail** – If you open the worker detail by clicking on its name, the parameters of a miner and the settings will be shown. There is also a Recent Hash Rate graph displayed in the bottom section which can be very helpful for troubleshooting.
How to create a new worker or use [auto] worker?
Workers are created automatically when the hash rate gets connected and there is no need to create them manually. Once you connect a miner with its worker name configured, the name will **automatically appear** in the device overview as a new worker. If you do not set a worker name in your device configuration, a new one will be automatically created with a name `[auto]` worker and your hash rate will be assigned to it.
_Find instructions to how to connect your workers to the pool in Step 3 of the following articles:_ [Bitcoin Mining Setup on Braiins Pool](/braiins-pool/btc-mining-setup/index.md)
Worker names are also **case sensitive**. For example, mining connections to `workerName` `ABC`, `abc`, and `Abc` are now treated as three independent workers. Just to remind you, a **valid** `workerName` (mirrored to pool workers) must match the following regular expression of characters `^[-a-zA-Z0-9_@+:]+$`.
If `workerName` is not provided at all or doesn't match the regexp, the hash rate is accounted to the automatic worker called `[auto]`. How to delete or re-enable a worker? Follow FAQ's for Worker Management.
Which worker name/password should I choose?
Names can be arbitrary alphanumeric strings or something more personalized — it's entirely up to you.
A valid `workerName` must match the following regular expression `^[-a-zA-Z0-9_@+:]+$` (i.e. don't use character types that are not listed). If a `workerName` is not provided at all or doesn't match the regexp, the hash rate is accounted to the automatic worker called `[auto]`.
You can use more miners with the same worker credentials. However, we recommend that you connect each mining device to a separate `workerName` for efficient [monitoring](/braiins-pool/monitoring.md#device-monitoring).
As for the password field, you can ignore it completely. It is a legacy Stratum protocol parameter that has no use nowadays.
What is the alert limit and how to set it?
This value is used as a **hashrate limit** for checking whether your device works properly. If the effective hash rate of a worker is greater than or equal the to Alert Limit, everything is perfect and you will not receive any monitoring alert reports.
However, sometimes it can happen that the effective hash rate drops below the Alert Limit. If your monitoring is enabled you will be notified by an email and you can start acting accordingly. Such behavior is mainly caused by the following reasons:
- Mining software does not accept difficulty assigned by our pool
- Internet connection is not stable
- Your mining device might have a hardware problem (e.g. overheating)
How to set the alert limit
- Let the pool automatically compute Alert Limit for you. It is done once in 5 minutes and the value is set to 70% of hash rate average from the last 24 hours.
- Set it manually to any value from 0.5 Gh/s to e.g. 100 Ph/s or more. We recommend setting it 30% below the value of your expected effective hash rate. E.g. you expect your miner hash rate to be 1 TH/s, the Alert Limit would be set to 700 Gh/s.
What is the difference between a Miner and a Worker?
**Miner** is your physical mining device. Usually, it is a specialized ASIC miner (device with just one purpose to mine cryptocurrencies) or a PC with powerful GPU sufficient for mining. There are different types of mining hardware for each cryptocurrency depending on its mining algorithm.
**Worker** is a name for your mining device that you use as a login for your mining software. We recommend giving a designated worker name to every mining device. That way you can **track down a faulty miner** easily just by looking at the monitoring section of your profile page.
You can also run all of your miners under a single worker name and everything will be just fine. The downside of this approach is that if one of your miners does not work correctly, you will see a drop in your hash rate but you will not be able to determine which device is not running optimally.
What is Vardiff (variable difficulty algorithm)?
_Make sure you have a look at how shares are being produced in section [Braiins Pool FAQ's - What is a Share in proof of work](/braiins-pool/faqs/pool.md)._
There are big differences in hashing power of different miners. To optimize network traffic between your miners and the pool we have introduced the variable difficulty algorithm (or vardiff). It assigns more difficult tasks to stronger miners (higher difficulty) and easier tasks to weaker miners so that an average communication frequency is roughly the same for all miners.
**Vardiff** assigns a quantity of work to each miner such that it should send results back to the pool roughly **12 times** per minute. Why 12 times? According to our measurements, this is the ideal frequency that allows a balanced data load to our servers and correct measurements of your miner's hash rate.
If your miner is too fast, Vardiff increases the difficulty for its work. When too slow, the difficulty decreases.
For example, a difficulty of 20 means that you will find 20 times less hashes satisfying the requirement, but you will be given 20 shares per submission. Hence you will not lose any shares and the network does not get jammed.
Why do I receive alerts when my miner works correctly?
Even with a working miner, you can receive alerts if you set the minimum difficulty for a worker to a significantly higher value than recommended because its communication frequency with the pool will not be optimal. It will lead to **high variance of its hash rate** (wide range of values in different time periods).
Higher hash rate variance makes proper monitoring more difficult and can lead to false monitoring alarms (you can be notified about some event even when the worker is working correctly).
We recommend to either allow vardiff algorithm to select the difficulty for your worker automatically or set the minimum difficulty provided by the vendor of your device on your own.
How to delete or re-enable a worker?
When you choose to delete an inactive Worker, it gets marked as deleted in our system and hidden from the interface.
If you establish a new connection to said `workerName` in the future, the system will technically re-enable the previously deleted Worker with all of its configuration such as labels and minimum difficulty.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-pool/hashrate-specification.md
---
# Hashrate Specification
Hashrate is the number of hashes computed per second by your mining hardware. You can observe the hashrate of your
mining devices in your Braiins Pool dashboard. There is a difference between a **nominal hashrate** shown in the
manual of your mining device and an effective hashrate shown on your Braiins Pool dashboard. It's important for you
to understand the difference between these two.
## Nominal hashrate
The nominal hashrate of 1 Th/s means that your device is capable of computing 1 trillion hashes per second — regardless of whether they match any extra criteria such as meeting a specified difficulty target.
## Effective Hashrate (Displayed on Dashboard)

The effective hashrate (shown in the chart above) is calculated based on hashes submitted by your devices to our pool. Only a small portion of the hashes generated by your devices get sent, as they must fit certain criteria assigned by the pool (see: [Braiins Pool FAQ's — What is Share in proof of work](/braiins-pool/faqs/pool/index.md#what-is-a-share-in-proof-of-work)).
Most of the time, the effective hashrate will be somewhat lower than the nominal hashrate. This is because your effective hashrate depends on the "luck" of your mining device (i.e., the variance in producing shares that can be submitted to the pool) and the quality (stability) of your internet connection to the pool server. If you have experienced connection issues, then your effective hashrate will be lower than the nominal hashrate in that period of time.
Occasionally, you can be more lucky and find more valid hashes than usual. That is what gives you a slightly higher effective hashrate compared to nominal hashrate.
## Scoring Hashrate
This value is no longer used. It was used before Braiins Pool changed the reward model to FPPS (see FPPS reward system). Scoring hash rate was a value derived from effective hash rate. You can understand scoring hash rate as an exponential moving average of the effective hash rate.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-pool/monitoring.md
---
# Monitoring
## Device Monitoring
_Have your finger on the pulse._
### Why should I care?
Since mining is usually considered as an investment, we believe that monitoring should be an essential part of your mining operation. Although your rewards are not directly affected by any monitoring settings, they can be better managed with few simple tools we have developed so far.
Monitoring helps you supervise how your miners work in time and minimizes losses caused by connection issues or
mining hardware/software failures.
### How can monitoring help?
Monitoring allows you to be alerted once a mining device starts misbehaving. Notifications are sent via e-mail or in your mobile app. E.g. there are communication issues between your miner and our pool. Such alerts will help you to **react faster** and therefore **minimize the financial impact** of the outage.
Outages may typically have the following causes:
- Internet connectivity issues
- Hardware power-supply (PSU) failures
- Mining hardware overheating
- Mining software issues
Below you can find simple step-by-step instructions how to setup monitoring in order to keep track of how your mining equipment is doing.
### How to enable monitoring?
1. Enable sending monitoring emails (_Mining > Settings > Reporting_) or notifications (Mobile app).
2. You can enable worker monitoring on each worker profile separately.
3. Once the worker monitoring is enabled, the Alert limit can be set: a. Automatically - our system selects the Alert Limit based on the past performance of the worker b. Manually - You can set your own Alert Limit value
Once you enable monitoring for your workers you will see each worker in one of these states: **OK, Low, Offline, Disabled**.
Permanently **Low** or **Offline** worker states can be caused by a weak worker. We recommend to switch off monitoring for such workers. If it is not the case please do not hesitate to contact our support.
**Please note**: The pool keeps track of mining devices on a **worker basis**. This means that if you have more than one mining device connected to the pool as a single worker, monitoring and issue reporting covers all the mining devices in bulk. On the other hand, when you setup a **designated worker name** for every **mining device** you have (and connect them correctly), the pool can track down hash rate drops and report them to you for each mining device separately.
### How does monitoring work?
The pool takes a snapshot of the effective hash rate for all your workers **every 5 minutes**. This value is then compared to Alert Limit (you setup this value while enabling the monitoring).
The period of 5 minutes is sufficient for collecting just enough data to calculate all the values with a certain accuracy without clogging our servers. With a Vardiff introduced, even a slow miner can submit sufficient amount of results.
### Device monitoring states
There are 4 possible states of your worker, regarding monitoring. Every worker is always in one of the **following** states:
| State | Description |
| ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| OK | Means that the worker's hash rate is greater or equal to alert limit. This is the desired state. If everything works properly and the configuration is correct, you should see this state all the time |
| Low | This state signals that worker's hash rate is lower than it should be but the device still submits some shares. It was connected and working somehow at least part of the measuring period. A worker goes from OK to Low when its hash rate is lower than the alert limit for 2 consecutive periods. In the case you see this state for longer period of time, please create a ticket to our support. |
| Offline | You could see this state when monitoring is enabled for the worker but there is no hash rate detected for the worker. The pool doesn't monitor the actual network connection of the worker. The only significant value is hash rate. |
| Disable | When you switch off monitoring for a worker its state is reported as Disabled, regardless a fact if it submits some shares or not. |
## Mobile App
The mobile application offers a convenient overview of your mining and allows you to receive notifications for significant events of your choice such as:
- worker issues (see device monitoring article for more details)
- new block found
- payout sent
Download the official application for Braiins Pool for free – available for **Android** and Apple **iOS** for iPhone.
Please be aware that our mobile app is not a mining app – **it is an account monitoring tool**. **You will not be able to mine any coins with it**.
- [Download for Android (Google Play)](https://play.google.com/store/apps/details?id=com.slushpool.app)
- [Download for iOS (App Store)](https://apps.apple.com/us/app/slush-pool/id1210273919)
### How to set up the mobile app?
To monitor your user account in our official mobile app, please follow these steps:
1. Download the application on your mobile device.
2. On the Braiins Pool website go to _User menu > Devices_.

3. Fill in the _New device_ label field with a name of your choice and confirm by clicking on Connect.
4. Connect the mobile app to your user account by either scanning the QR code in the mobile app or manually entering the token value in the mobile app.
### How to unlink my phone from the app?
In case you lost your mobile device, or you no longer want it to have access to your account, you can unlink the device in the _Devices_ section. All device management options can be found in the _Settings > Devices menu_.
## API configuration
_Do you want to pull the mining stats/data and analyze them yourself? The pool API is here for you!_
## Overview
The pool API provides data in JSON fills on four endpoints: **stats**, **profile**, **workers** and **payouts**. You have to include the abbreviation of the selected coin (e.g. btc) and your access token in every API URL.
To acquire **access token** (API key) needed for API authentication, please follow these steps:
1. Go to _Settings > Access Profiles_
2. Select one of your access profiles or create a new one
3. Select _Allow access to web APIs_ in the access profile detail
4. Click on _Generate New token_
5. _Save_ the changes
Each access profile has its own access token (in case API access is enabled). Access tokens can be regenerated any time, effectively canceling the former access token belonging to the selected access profile.
### API authentication
An access profile token has to be included in the HTTP header field named `Pool-Auth-Token` or `X-Pool-Auth-Token` to authenticate your requests.
Example request using cURL:
```bash
curl https://pool.braiins.com/stats/json/btc/ -H "Pool-Auth-Token: "
```
### API request limit
The API allows for approximately **one request** per **five seconds** (safe value). When you transiently exceed this limit, some of your requests will be ignored. In case the allowed request rate is exceeded greatly or over a longer period of time, your IP address might get banned. If that is the case, please contact us to resolve the situation.
### Pool Stats API
_Provides information about pool performance and recently found blocks._
**URL:**
```
https://pool.braiins.com/stats/json/btc
```
**Sample out**
```json
{
"btc": {
"hash_rate_unit": "Gh/s",
"pool_active_workers": 1,
"pool_5m_hash_rate": 5727000000.74660415488,
"pool_60m_hash_rate": 5617000000.9942200615822,
"pool_24h_hash_rate": 5517000000.8851972672885,
"update_ts": 1699938300,
"blocks": {
"549753": {
"date_found": 1542002919,
"mining_duration": 3423,
"total_shares": 4640771710739,
"state": "confirmed",
"confirmations_left": 0,
"value": "12.92594863",
"user_reward": "0.00006194",
"pool_scoring_hash_rate": 5878745444.967269
}
},
"fpps_rate": 0.00000241
}
}
```
#### General Pool Stats
| Field | Type | Description |
| -------------------- | ------ | ---------------------------------------------------- |
| `hash_rate_unit` | string | unit used for the hash rate values |
| `pool_5m_hash_rate` | number | pool hash rate for the last 5 minutes |
| `pool_60m_hash_rate` | number | pool hash rate for the last 60 minutes |
| `pool_24h_hash_rate` | number | pool hash rate for the last 24 hours |
| `update_ts` | number | timestamp when the stats were updated |
| `blocks` | object | information for the last 15 blocks (breakdown below) |
| `fpps_rate` | number | pay par share rate |
#### Latest Blocks
| Field | Type | Description |
| ------------------------ | ------ | ------------------------------------------------------- |
| `date_found` | number | Unix time when given block was found |
| `mining_duration` | number | duration of the round leading to given block |
| `total_shares` | number | number of shares collected during the round |
| `state` | string | state of given block |
| `confirmations_left` | number | number of confirmations left |
| `value` | string | block value |
| `user_reward` | string | user reward for the given block |
| `pool_scoring_hash_rate` | number | pool scoring hash rate at the time when block was found |
### User Profile API
_Provides information about users performance and rewards._
**URL:**
```
https://pool.braiins.com/accounts/profile/json/btc/
```
**Sample out**
```json
{
"username": "username",
"btc": {
"all_time_reward": "0.15000000",
"hash_rate_unit": "Gh/s",
"hash_rate_5m": 27978,
"hash_rate_60m": 28191,
"hash_rate_24h": 28357,
"hash_rate_yesterday": 28197,
"low_workers": 0,
"off_workers": 0,
"ok_workers": 2,
"dis_workers": 2,
"current_balance": "0.15000000",
"today_reward": "0.000166667",
"estimated_reward": "0.00011940",
"shares_5m": 123,
"shares_60m": 1476,
"shares_24h": 35424,
"shares_yesterday": 0
}
}
```
| Field | Type | Description |
| --------------------- | ------ | ------------------------------------------ |
| `username` | string | username |
| `all_time_reward` | string | cumulative all-time reward |
| `hash_rate_unit` | string | unit used for the hash rate values |
| `hash_rate_5m` | string | average hash rate for the last 5 minutes |
| `hash_rate_60m` | number | average hash rate for the last 60 minutes |
| `hash_rate_24h` | number | average hash rate for the last 24 hours |
| `hash_rate_yesterday` | number | average hash rate for the previous UTC day |
| `low_workers` | number | number of workers with `low` state |
| `off_workers` | number | number of workers with `off` state |
| `ok_workers` | number | number of workers with `ok` state |
| `dis_workers` | number | number of workers with disabled monitoring |
| `current_balance` | string | current reward balance |
| `today_reward` | string | confirmed reward for this day |
| `estimated_reward` | string | estimated reward for the current block |
| `shares_5m` | number | active shares for last 5 minutes |
| `shares_60m` | number | active shares for last hour |
| `shares_24h` | number | active shares for last day |
| `shares_yesterday` | number | active shares for yesterday |
### Daily Reward API
_Provides information about about rewards for the selected time period. Returns last 90 days by default._
**URL:**
```
https://pool.braiins.com/accounts/rewards/json/btc?from=[from]&to=[to]
```
- **COIN**: `BTC`
- **FROM**: string representation of date in ISO format (`YYYY-MM-DD`)
- **TO**: string representation of date in ISO format (`YYYY-MM-DD`)
**Example URL request:**
```
https://pool.braiins.com/accounts/rewards/json/btc?from=2024-11-30&to=2024-12-02
```
```json
{
"btc": {
"daily_rewards": [
{
"date": 1733097600,
"total_reward": "0.36361081",
"mining_reward": "0.35648119",
"bos_plus_reward": "0.00712962",
"referral_bonus": "0.00000000",
"referral_reward": "0.00000000",
"calculation_date": 1733191200
},
{
"date": 1733011200,
"total_reward": "0.36361097",
"mining_reward": "0.35648200",
"bos_plus_reward": "0.00712960",
"referral_bonus": "0.00000000",
"referral_reward": "0.00000000",
"calculation_date": 1733104800
},
{
"date": 1732924800,
"total_reward": "0.36361020",
"mining_reward": "0.35648102",
"bos_plus_reward": "0.00712973",
"referral_bonus": "0.00000000",
"referral_reward": "0.00000000",
"calculation_date": 1733018400
}
]
}
}
```
| Field | Type | Description |
| ------------------ | ------ | ---------------------------------------------------------------- |
| `date` | number | Unix time (the first second of the date) |
| `total_reward` | number | the sum of all reward types for the day |
| `mining_reward` | number | the standard mining reward |
| `bos_plus_reward` | number | the amount refunded (pool fee refund) for mining with Braiins OS |
| `referral_bonus` | number | bonus received by being referred to Braiins OS |
| `referral_reward` | number | reward earned for HR referred to Braiins OS |
| `calculation_date` | number | calculation date timestamp |
### Daily Hashrate API
_Provides information about daily averages of hashrate for user or user group._
**URL:**
```
https://pool.braiins.com/accounts/hash_rate_daily/json/[group]/btc
```
Where _group_ is indicating if average hash rates should be returned for the user group. Variable _coin_ is BTC.
**Example URL request:**
```
https://pool.braiins.com/accounts/hash_rate_daily/json/group/btc
```
**Sample out**
```json
{
"btc": [
{
"date": 1662674400,
"hash_rate_unit": "Gh/s",
"hash_rate_24h": 1073.7,
"total_shares": 21600000
},
{
"date": 1662588000,
"hash_rate_unit": "Gh/s",
"hash_rate_24h": 1000.7,
"total_shares": 21200000
}
]
}
```
| Field | Type | Description |
| ---------------- | ------ | ----------------------------------------- |
| `date` | number | Unix time (the first second of the date) |
| `hash_rate_unit` | string | unit used for the hash rate values |
| `hash_rate_24h` | number | average hash rate for the last 24 hours |
| `total_shares` | number | number of shares collected during the day |
### Block Rewards API
_Provides information about block rewards._
**URL:**
```
https://pool.braiins.com/accounts/block_rewards/json/btc?from=[from]&to=[to]
```
- **COIN**: `BTC`
- **FROM**: string representation of date in ISO format (`YYYY-MM-DD`)
- **TO**: string representation of date in ISO format (`YYYY-MM-DD`)
**Example URL request:**
```
https://pool.braiins.com/accounts/block_rewards/json/btc?from=2022-05-01&to=2022-05-07
```
**Sample out**
```json
{
"btc": {
"block_rewards": [
{
"block_found_at": 1651804117,
"pool_scoring_hash_rate": 4441768989.204721,
"user_scoring_hash_rate": 12981.581642348925,
"block_value": "12.59169582",
"user_reward": "0.06366676",
"block_height": 567815,
"mining_reward": "0.06366676",
"braiinsos_plus_mining_bonus": "0.00000000",
"referral_reward": "0.00000000",
"referral_bonus": "0.00000000",
"confirmations_left": 0
},
{
"block_found_at": 1651811734,
"pool_scoring_hash_rate": 4441768989.387698,
"user_scoring_hash_rate": 13041.508413918604,
"block_value": "12.66780812",
"user_reward": "0.07129083",
"block_height": 567816,
"mining_reward": "0.07129083",
"braiinsos_plus_mining_bonus": "0.00000000",
"referral_reward": "0.00000000",
"referral_bonus": "0.00000000",
"confirmations_left": 0
}
],
"hash_rate_unit": "Gh/s"
}
}
```
| Field | Type | Description |
| ----------------------------- | ------ | -------------------------------------------------------------------------------- |
| `block_found_at` | number | unix timestamp (UTC), when the block was found |
| `pool_scoring_hash_rate` | number | total scoring hash rate of the pool at time when the block was found |
| `user_scoring_hash_rate` | number | total scoring hash rate of the user at time when the block was found |
| `block_value` | string | total value of the block |
| `user_reward` | string | total reward amount for the user |
| `block_heigh` | number | number of the block within the coin's blockchain |
| `mining_reward` | string | amount of mining reward for delivered shares on the block |
| `braiinsos_plus_mining_bonus` | string | pool fee refund for mining with Braiins OS device |
| `referral_reward` | string | pool fee refund for mining with Braiins OS device and with special referral code |
| `referral_bonus` | string | pool fee refund for propagation of Braiins OS with dedicated referral code |
| `confirmations_left` | number | number of confirmations left |
### Worker API
_Provides performance data for each one of users worker._
**URL:**
```
https://pool.braiins.com/accounts/workers/json/btc
```
**Sample out**
```json
{
"btc": {
"workers": {
"username.worker1": {
"state": "ok",
"last_share": 1542103204,
"hash_rate_unit": "Gh/s",
"hash_rate_scoring": 15342,
"hash_rate_5m": 14977,
"hash_rate_60m": 15302,
"hash_rate_24h": 15351,
"shares_5m": 90304,
"shares_60m": 1125762,
"shares_24h": 20945364
},
"username.worker2": {
"state": "ok",
"last_share": 1542103200,
"hash_rate_unit": "Gh/s",
"hash_rate_scoring": 12952,
"hash_rate_5m": 13001,
"hash_rate_60m": 12889,
"hash_rate_24h": 13006,
"shares_5m": 90304,
"shares_60m": 1125762,
"shares_24h": 20945364
}
}
}
}
```
| Field | Type | Description |
| ------------------- | ------ | -------------------------------------------- |
| `last_share` | number | Unix time of the last accepted share |
| `state` | string | state of the worker (`ok`/`low`/`off`/`dis`) |
| `hash_rate_unit` | string | unit used for the hash rate values |
| `hash_rate_scoring` | number | current scoring hash rate |
| `hash_rate_5m` | number | average hash rate for the last 5 minutes |
| `hash_rate_60m` | number | average hash rate for the last 60 minutes |
| `hash_rate_24h` | number | average hash rate for the last 24 hours |
| `shares_5m` | number | active shares for last 5 minutes |
| `shares_60m` | number | active shares for last hour |
| `shares_24h` | number | active shares for last day |
### Payouts API
_Provides data for payouts transactions._
**URL:**
```
https://pool.braiins.com/accounts/payouts/json/btc?from=[from]&to=[to]
```
- **COIN**: `BTC`
- **FROM**: string representation of date in ISO format (`YYYY-MM-DD`)
- **TO**: string representation of date in ISO format (`YYYY-MM-DD`)
**Example URL request:**
```
https://pool.braiins.com/accounts/payouts/json/btc?from=2022-05-01&to=2022-05-07
```
**Sample out**
```json
{
"onchain": [
{
"financial_account_name": "Bitcoin Account",
"requested_at_ts": 1721997284,
"resolved_at_ts": 1721999584,
"status": "confirmed",
"amount_sats": 50000,
"fee_sats": 1000,
"destination": "bc1qxy1kgdycjrsqtcq2n0yrf3493p83kkfjhx0w2h",
"tx_id": "a5f3e1f0a8e7f2d8c0c4f9b2b7b0b1a0987654321",
"trigger_type": "triggered"
},
{
"financial_account_name": "Bitcoin Account",
"requested_at_ts": 1722997284,
"resolved_at_ts": 1722999584,
"status": "queued",
"amount_sats": 1000000,
"fee_sats": 0,
"destination": "bc1qxy1kgdycjrsqtcq2n0yrf3493p83kkfjhx0w2h",
"tx_id": null,
"trigger_type": "triggered"
}
],
"lightning": [
{
"financial_account_name": "Bitcoin Financial Account",
"requested_at_ts": 1712846879,
"resolved_at_ts": 1712846885,
"status": "confirmed",
"amount_sats": 441348,
"fee_sats": 0,
"destination": "braiins@walletofsatoshi.com",
"invoice": "lnbc4413480n1pnp07prpp5e8jnrtyvq6rlef4nzzkgepn8j054u3sk3l9ar5rf0tha0tzjmhzqhp5m7l6c8fmknqvsqfdlp3h49899s7zcsx9gzfu0vhvad053k5ewj0qcqzzsxqyz5vqsp5thnzqf8q4lxufz60xt57s6r4ylr2c5ap6x5n7uc56y8lnmnyn06q9qyyssq7w3rd8e2s8wgyqkpdcqdl5wd8zakslpqp5kdchgew6h5t0wkrwg4nxmhd7yqpr0mqf4kudx9x8ntmxccv9lgjlcj4ud358n6as58mhqprhaglh",
"preimage": "93a0049b3963b7bd8d9d3e97cff2975745f83fa94562b4a0db208fe8cddcb3e5",
"trigger_type": "triggered"
},
{
"financial_account_name": "Bitcoin Financial Account 2",
"requested_at_ts": 1712856879,
"resolved_at_ts": 1712856885,
"status": "failed",
"amount_sats": 527,
"fee_sats": 0,
"destination": "braiins@walletofsatoshi.com",
"invoice": null,
"preimage": null,
"trigger_type": "triggered"
},
{
"financial_account_name": "Bitcoin Financial Account",
"requested_at_ts": 1728983117,
"resolved_at_ts": 1728983290,
"status": "confirmed",
"amount_sats": 12321,
"fee_sats": 0,
"destination": "braiins@walletofsatoshi.com",
"invoice": "lnbc4413480n1pnp07prpp5e8jnrtyvq6rlef4nzzkgepn8j054u3sk3l9ar5rf0tha0tzjmhzqhp5m7l6c8fmknqvsqfdlp3h49899s7zcsx9gzfu0vhvad053k5ewj0qcqzzsxqyz5vqsp5thnzqf8q4lxufz60xt57s6r4ylr2c5ap6x5n7uc56y8lnmnyn06q9qyyssq7w3rd8e2s8wgyqkpdcqdl5wd8zakslpqp5kdchgew6h5t0wkrwg4nxmhd7yqpr0mqf4kudx9x8ntmxccv9lgjlcj4ud358n6as58mhqprhaglh",
"preimage": null,
"trigger_type": "manual"
},
{
"financial_account_name": "Bitcoin Financial Account",
"requested_at_ts": 1728983167,
"resolved_at_ts": 1728983330,
"status": "queued",
"amount_sats": 11360,
"fee_sats": 0,
"destination": "braiins@walletofsatoshi.com",
"invoice": "lnbc4413480n1pnp07prpp5e8jnrtyvq6rlef4nzzkgepn8j054u3sk3l9ar5rf0tha0tzjmhzqhp5m7l6c8fmknqvsqfdlp3h49899s7zcsx9gzfu0vhvad053k5ewj0qcqzzsxqyz5vqsp5thnzqf8q4lxufz60xt57s6r4ylr2c5ap6x5n7uc56y8lnmnyn06q9qyyssq7w3rd8e2s8wgyqkpdcqdl5wd8zakslpqp5kdchgew6h5t0wkrwg4nxmhd7yqpr0mqf4kudx9x8ntmxccv9lgjlcj4ud358n6as58mhqprhaglh",
"preimage": null,
"trigger_type": "triggered"
}
]
}
```
| Field | Type | Description |
| ------------------------ | ------ | ------------------------------------------------------------------------ |
| `financial_account_name` | string | name of the financial account |
| `requested_at_ts` | number | Unix time of the request |
| `resolved_at_ts` | number | Unix time of the payout resolution |
| `status` | string | status of the payout (`queued`/`confirmed`/`failed`) |
| `amount_sats` | number | amount of the payout in satoshis |
| `fee_sats` | number | amount of the payout fee in satoshis |
| `destination` | string | destination address of the payout (onchain address or lightning invoice) |
| `tx_id` | string | transaction id of the payout (onchain only) |
| `invoice` | string | lightning invoice of the payout (lightning only) |
| `preimage` | string | preimage of the payout (lightning only) |
| `trigger_type` | string | type of the payout trigger (`triggered`/`manual`) |
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-pool/quick-start.md
---
# Quick Start
## Configure your mining device
_Individual hardware manufacturers may have specific settings requirements and different settings interfaces. Please follow their official documentation when setting up your miners. This also applies to cloud mining services._
The mining configuration needed for your miner should look like this:
| Parameter | Value |
| ----------- | --------------------------------------- |
| Primary URL | stratum+tcp\://stratum.braiins.com:3333 |
| Backup URL | stratum+tcp\://stratum.braiins.com:443 |
| User ID | userName.workerName |
| Password | anything (or empty) |
Remember to configure the credentials for each device. The `User ID` is mandatory and is used to pair the device with your account. Password is not used, it can be anything. User ID consists of `userName` (same as your Braiins Pool account name) and `workerName` (any device identifier). If `workerName` is empty, `[auto]` worker is created for you. We recommend connecting each mining device with a separate workerName for efficient monitoring.
**Only one URL is now used by our Pool.** Braiins Pool servers are located all around the world and automatically selected based on your location. For best efficiency we advise stop using location-specific URLs used in the past (e.g. Europe, USA, Canada, Brazil, Singapore, Russia, etc.).
_Note: Set old slushpool.com address (stratum.slushpool.com) if you're using Braiins OS version older than 22.08.1 for successful application of 0% mining fee on Braiins Pool._
Recommended next step
### Need firmware that does more than stock setup?
Braiiins OS is the next step when you want more control over miner behavior, tuning, efficiency, and long-term operating performance.
[See Braiins OS](https://braiins.com/os-firmware)[Buy hashrate](https://hashpower.braiins.com/)
Talk to us!
---
url: /braiins-pool/rewards-and-payouts.md
---
---
url: /braiins-pool/solo-mining.md
---
# Solo Mining
## Why solo mining?
Solo mining is all about taking your shot at finding a block on your own. Yes, the odds might be 1-in-a-million, but for some, that's the thrill. Unlike mining in pool, where you earn small, steady rewards, solo mining only pays out if you find a block yourself.
You might have a [mini miner](https://braiins.com/hardware/mini-miner-bmm-101) with just a few TH/s when **earning a few sats a day does not justify the device and/or electricity costs**. You may have a reasonable mining operation, and you just want to try your luck with a few machines. The payouts are high, and chances are scarce. But that does not mean you won't find that lucky hash!
## How does that work?
In solo mining, each user attempts to mine their own block. **The block for each user differs primarily in the output of the coinbase transaction, where the user's own bitcoin address is used.** The coinbase reward goes directly to this address without any middleman. The rest of the blocks are the same for all solo miners — they all confirm the same set of transactions within the block.
The logic of mining remains the same. You still connect the mining devices under a worker name, and you still monitor your hashrate to see if your device is working properly. **However, there are no sats being accumulated for you until you hit the jackpot** and compute a hash that fulfills the network difficulty. In such a case, you will be rewarded with 3.125 BTC (valid for the current halving epoch) as a reward, plus any applicable transaction fees.
We only take away 0.5% of the overall reward to credit the authors of the CKPool software stack, which we currently use to provide solo mining for you. That's also the reason why you'll find two outputs in the coinbase transaction.
## What do I need to do to setup the Solo mining?
Set one of the following addresses as the Pool URL on your miner:
- `stratum+tcp://solo.stratum.braiins.com:3333`
- `stratum+tcp://solo.stratum.braiins.com:443`
- `stratum+tcp://solo.stratum.braiins.com:25`
Since your bitcoin address (public key) needs to be in the block template, you will use that as username.
A workername suffix might help you to distinguish between multiple devices, but it's optional.
Format: `.`
## Check your performance
Just visit [https://solo.braiins.com](https://solo.braiins.com) and search for your bitcoin address to see your stats or check the summary stats of whole Solo mining. More convenient way is to access your profile directly as `https://solo.braiins.com/stats/`
There's also an option to query the raw data using `curl` utility:
```bash
curl https://solo.braiins.com/pool.status
```
```bash
curl https://solo.braiins.com/users/
```
## Can I use weak mining devices?
Our Solo mining node provides an initial mining job difficulty of 8000. The minimum difficulty is 512. Difficulty is dynamically adjusted to ensure that your mining device produces shares in roughly 5-second intervals. If you have a weak miner failing to produce results in 5 seconds (e.g. below 500 GH/s), there's no harm to your chances of finding a block. It affects only reporting of hashrate when short time hashrate figures won't be very precise. The submitted shares are not very important in Solo mining unless they fulfill the much higher difficulty — the difficulty of the entire bitcoin network (110451907374649 at the time of writing) - which means that you've found the block. Submitted shares are only there for your convenience to check that the mining device is working correctly.
## Do I need to register with Braiins Pool in order to Solo mine?
No. Braiins Pool registration is for miners who want to receive steady rewards. We will integrate Solo Mining for our Pool clients soon. But nature of Solo mining does not require any registration and will remain anonymous.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-pool/stratum-v2-manual.md
---
# Stratum V2 Manual
[Stratum V2](https://braiins.com/stratum-v2) is a new protocol for pooled mining that we developed in collaboration with Bitcoin developer Matt Corallo. It improves efficiency, prevents man-in-the-middle attacks, and will eventually enable miners to work on their own block templates. Stratum V2 is implemented in our firmware [Braiins OS](https://braiins.com/os/plus), and will be the new open standard in mining. However, it is still possible to mine with Stratum V1 if you prefer.
You don't have to specify an explicit port for Stratum V2 on Braiins Pool (default port 3336 is used). Simply use a Stratum V2 URL for your pool URL and it will work the same as a V1 URL.
However, there is a new required element of the URL in the path and that is the public key advertised by the pool that the mining software uses to verify the authenticity of the mining endpoint that it connects to. This prevents man-in-the-middle-attacks that attempt to steal hashrate. Any such attempt results in failed verification and the software refuses to use the given pool entry.
**Only one URL is now used by our Pool.** Braiins Pool servers are located all around the world and automatically selected based on your location. For best efficiency we advise stop using location-specific URLs used in the past (e.g. Europe, USA, Canada, Brazil, Singapore, Russia, etc.).
| Parameter | Value |
| ----------- | -------------------------------------------------------------------------------------------- |
| Primary URL | stratum2+tcp\://stratum.braiins.com:3333/9awtMD5KQgvRUh2yFbjVeT7b6hjipWcAsQHd6wEhgtDT9soosna |
| Backup URL | stratum+tcp\://stratum.braiins.com:3333 |
| User ID | userName.workerName |
| Password | anything (or empty) |
You need to run our [Braiins OS](https://braiins.com/os/plus) firmware which supports Stratum V2 (stock manufacturing firmware currently does not support this protocol).
_Note: Set old slushpool.com address (v2.stratum.slushpool.com) if you're using Braiins OS version older than 22.08.1 for successful application of 0% mining fee on Braiins Pool._
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-pool/user-accounts.md
---
# User Accounts
## User account guide
### Account registration
Anonymity is one of the core values deeply rooted in our philosophy. Therefore, we do not collect nor process any unnecessary personal data, making our registration process reasonably simple.
You only need to fill in basic information such as your desired username, e-mail address, and password on the [sign-up page](https://pool.braiins.com/signup/). Then, confirm the registration process by clicking on the link sent to your email address.
### Access profiles
In Settings > Access Profiles, there is an option to create various access profiles with different passwords and with different levels of permission to your account. Just click **+Create New** and choose from the list of possibilities.
### Access permissions
Choose between granting full access or just read-only access to a selected profile. If you, for example, run a larger mining operation and do not want some users to change these settings, granular permissions are a great feature for you.
### Allow access to web APIs
The user will be able to use token authentication in scripts or 3rd party applications. You can generate new tokens there.
### Allow website login
The user will be able to access the main account on the website using the access profile name you choose (in `accessProfileName@userName` format) and password you set right there.
### Allow watcher link access
Anyone will be able to access the main account without needing to log in to the website by using a generated web link.
### Account security
We highly recommend activating two-factor authentication (2FA) to add an extra layer of security to your account. It can be done in the Settings > Security menu. After the initial setup, you will need to use the 2FA every time when making any important changes to your account.
You can either use 2FA based on the TOTP standard (mobile TOTP app is used to generate the verification code) or the more advanced U2F standard (via a hardware device/token like Trezor).
### Username change
Changing the username is currently not allowed. You can, however, create a new account with a different username under the same email address. Having multiple accounts registered with the same email address is possible.
### Account deletion
If you decide to close down your mining operation, there are two options. You can either leave your account as it is without signing into it or mining with it and the account will be automatically deleted after one year of your inactivity. The remaining balance will be considered as a donation to the pool.
However, if you decide to delete the account immediately, please always check if all rewards have already been paid to your payout address before taking any action. Then, request account deletion in the Settings > Accounts menu and confirm it via the confirmation link sent to your email.
## Account
All of the crucial information related to language, emails, and account settings can be found by clicking on the user icon in the upper right corner and then choosing Account.
Once you are redirected to the account page, the very first thing that will popup is the theme change option
Moving on you can find the email setting, where you can change the user email address
Additionally, you can find language, time zone and currency changes which can be set to your liking and preferences
Lastly, is the account deletion section, where you can make a request to delete the account and will be prompted to request for a final payout to not lose any of your finances, given that the action is immediate.
## Security
Under the user icon in the upper right hand corner you can find the security section
Once you click on it you will get redirected and right off the bat you will see the password reset option which is pretty standard
Under the password reset settings you will find the two factor authentication which is both encouraged and highly recommended to prevent any unauthorized changes when someone else would obtain access to your account.
First option is OTP and second is FIDO
Lastly in the case you want to take quick and agile measures you have the option to log out all active users by pressing the logout all sessions button
If you experience any issues or have lost access to your OTP application, please contact our support team as soon as possible - prompt requests have a higher probability to be resolved to your satisfaction.
## Access Profiles & Watcher Links
One cool feature of Braiins Pool that you can find in the user section is the Access profiles.
It is pretty standard for multiple users to have access to one account when it comes to Bitcoin mining, however it's not always the case that the different users share the same level of responsibility and therefore their access can be limited.
It is also desired to share the web link for anonymous access, known as a watcher link.
This is how you can share access to your Braiins Pool account with others.
By clicking the create new button, we can create a new access profile with 3 different access types: login, API, or watcher link, each using up to 3 levels of permissions: full, read only, or limited read only.
Each one of those levels can be described in the permissions overview can be set according to the given function, while keeping the master account intact.
## Sub-accounts
Sub-accounts allow you to create and manage multiple mining identities under a single primary account. This is useful for mining operations that need to track hashrate and rewards separately for different locations, clients, or organizational units — without having to log in and out of separate accounts.
### How Sub-accounts Work
A sub-account is a regular Braiins Pool account that is linked to a primary (master) account. Every account on the pool falls into one of three categories:
- **Standalone account** — the default state, as it works today. Not linked to any other account.
- **Primary account** — a standalone account that has created one or more sub-accounts. It serves as the master account for the group.
- **Subsidiary account** — a new account created through the sub-account feature, linked to a primary account. It can be accessed independently as if it was just a standalone account.
Only newly created accounts can become sub-accounts. Existing standalone accounts cannot be assigned as subsidiary accounts — they must be created through the sub-account creation flow.
### Creating a Sub-account
Any user who is not already a subsidiary account can create sub-accounts and become a master account. To create a sub-account, navigate to **Settings > Sub-accounts** and click **Add new Sub-account**.
You will need to provide:
- **Sub-account name** (required, must be unique)
- **Label** (optional, must be unique within your group of sub-accounts)
During creation, you can choose to copy settings from your primary account:
- **Use same payout rules and Wallets** — copies your financial accounts, active wallets, and payout rules to the new sub-account. If unchecked, a default financial account is created with no wallet and no payout rule.
- **Use same login password** — the sub-account will use the same password as the primary account. If unchecked, you will be prompted to set a new password.
The following data is **not** copied to sub-accounts:
- Two-factor authentication (2FA) settings
- Registered devices
- Access profiles
- API tokens
The new sub-account is created as active, with the same email address as the primary account.
### Managing Sub-accounts
Sub-account management is available in **Settings > Sub-accounts** for primary account users with Owner or Admin permissions.
**Viewing sub-accounts**
Your sub-accounts are organized into two sections: **Active** and **Disabled**.
**Updating sub-accounts**
Only the **label** of a sub-account can be updated. Labels must remain unique within your group of sub-accounts.
**Deactivating and reactivating**
You can deactivate a sub-account, which hides it from the primary user's navigation and dashboard. The underlying user account remains active and its group assignment is preserved. A deactivated sub-account can be reactivated at any time, restoring it to the navigation and dashboard.
### Sub-account Dashboard
The primary account has access to a dashboard that provides an overview of all active sub-accounts.
**Hashrate chart:**
- **10 or fewer sub-accounts**: each sub-account is displayed as an individual line in the chart
- **More than 10 sub-accounts**: only the total aggregated hashrate is displayed
**Summary table** with the following columns for each sub-account:
- Label
- 5-minute, 1-hour, and 24-hour hashrate
- Yesterday's reward
- A **Total** row aggregating all sub-accounts
### Switching Between Sub-accounts
The primary user can switch to any active sub-account's view directly from the navigation, without logging out and back in using searchable sub-account switcher.
### Sub-account Permissions
**Primary user:**
- **Owner** and **Admin** access profiles can create, update, disable, and re-enable sub-accounts
- **Read-only** and **Limited read-only** access profiles cannot see or switch between sub-accounts
**Subsidiary user:**
- A subsidiary account operates as an isolated account with default access profile
- Subsidiary users cannot see or switch to any other account in the group
### API Access
The primary account's API can return data for all sub-accounts within the group. This allows you to programmatically monitor hashrate, rewards, and other metrics across your entire mining operation. For details on available endpoints and authentication, see the [API configuration](/braiins-pool/monitoring.md#api-configuration) section.
## History
In order to export Braiins Pool history, you need to navigate to the history section from the dashboard.
After you reach the history section you will see the export button in the upper right corner, once you click that you'll get a popup with several options of how you can customize your export.
The first thing that needs to be set is a date range of which you want to get the history.
Then you can choose what type records you want to export based on your overall needs.
And lastly you can choose the format in which you want the data to be exported.
Once all of that is done you can hit the generate exports button and receive the list in the format you opted for.
Please note that you can not export hashrate related data directly from the web interface. However, you can use our extensive API documentation to collect data directly. If you have any questions regarding API set up, please do not hesitate and contact our support team.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-toolbox/cmd-advanced.md
---
# Advanced Settings
Starting with **Toolbox 26.06**, you can manage **Braiins OS advanced settings** across your fleet directly from Toolbox.
Some settings are marked **dangerous** and may damage hardware if misused. Change them only if you understand the
impact.
## GUI
Select one or more devices in the **Device List**, open **Actions** by clicking the tree dots button in the menu bar, and choose **Advanced Settings** to open the configuration modal.
The modal lists all available settings where ,each row shows:
- **Title** and **status tags** — a red `Dangerous` tag, a blue `Beta` tag (when applicable), and a grey `BOS version` tag indicating the minimum required Braiins OS version.
- **Description**, with a `Read more` link when extended documentation is available.
- A dropdown with available options on the setting type.
Key behaviors:
- **No Change by default**: every field defaults to `No Change`, regardless of how many devices are selected. The modal does not read current device values; only fields you change are sent to devices.
- **Subsettings**: settings that depend on another setting are nested under their parent and stay disabled until the parent meets the required value.
- **Reset All to Default**: a button at the top-right of the list marks every field to be reset to the device's defaults. Touching any field afterwards cancels the reset-all intent and reverts to applying only the fields you changed.
## CLI
The `advanced` command manages Braiins OS advanced settings from the command line. It has four subcommands:
- [`list`](#list): list all available settings (no device connection required)
- [`get`](#get): read current values from device(s)
- [`set`](#set): configure one or more settings on device(s)
- [`reset`](#reset): reset settings to their default values
```cmd
$ ./braiins-toolbox advanced --help
Manage Advanced Braiins OS settings
Usage: braiins-toolbox advanced [OPTIONS]
Commands:
list List all available advanced settings with their type, default, status, and constraints
get Read current advanced setting values from one or more devices.
set Apply advanced settings to one or more devices.
reset Reset advanced setting values on one or more devices.
```
***
### List
Lists all available (non-hidden) settings in the latest version, including title, description, type, default value, status (`stable` / `beta` / `dangerous`), minimum Braiins OS version, and unit.
```cmd
$ ./braiins-toolbox advanced list
```
### Get
Reads the current value of one or more settings, or all settings, from the target device(s).
```cmd
$ ./braiins-toolbox advanced get -S [-S ...] >
$ ./braiins-toolbox advanced get --all >
```
- `-S, --setting ` is repeatable to read several settings at once.
- `--all` reads every advanced setting.
- `--all` and `--setting` are mutually exclusive, and exactly one of them is required.
For example:
```cmd
$ ./braiins-toolbox advanced get -S enable_defrost -S defrost_temperature_limit_c 192.168.1.0/24
```
### Set
Applies one or more settings to the target device(s). Each setting is passed with the repeatable `-S, --setting ` flag, where `KEY` is a setting name from the schema and `VALUE` is validated against the schema.
```cmd
$ ./braiins-toolbox advanced set -S [-S ...] >
```
Set multiple values in a single command:
```cmd
$ ./braiins-toolbox advanced set -S enable_defrost=true -S defrost_temperature_limit_c=10 192.168.1.0/24
```
Settings must be passed with `-S`. Bare positional `KEY=VALUE` tokens are treated as targets, not settings, and will
fail target resolution.
Values are validated according to the setting type:
| Type | Accepted input | Validation |
| --------------- | ---------------------- | --------------------------------------------------------------------------------- |
| `boolean` | `true` / `false` | Any other value is rejected. |
| `integer` | A numeric value | Rejected if outside the schema `min`/`max` range; the unit is shown in the error. |
| `string` (enum) | One of the enum values | Rejected if not in the allowed list. |
### Reset
Resets one or more settings, or all settings, to their defined defaults.
```cmd
$ ./braiins-toolbox advanced reset -S [-S ...] >
$ ./braiins-toolbox advanced reset --all >
```
- `-S, --setting ` is repeatable; `--all` resets every setting.
- `--all` and `--setting` are mutually exclusive, and exactly one is required.
- Resetting a **dangerous** setting prints a warning and prompts for confirmation. Use `--force` to skip the prompt when scripting.
### Status and version handling
- **Beta** settings print a notice when changed.
- **Dangerous** settings print a warning and require confirmation (`--force` bypasses it for scripting).
- Before applying, each device's Braiins OS version is checked against the setting's minimum version. Devices that are too old are skipped with a clear message, and after the batch Toolbox prints a summary of applied, skipped, and failed counts.
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-toolbox/cmd-cooling.md
---
# Cooling Management
## GUI
Starting with **Toolbox 26.03**, `Actions > Cooling` opens a single modal for cooling, fan, and temperature configuration on Braiins OS devices. This action replaces the legacy `Set Cooling Mode` flow.
The `Cooling & Fans` section is expanded by default, while `Temperature Settings` starts collapsed. Users can choose `Automatic`, `Manual`, or `Immersion` mode, adjust fan-related settings, and optionally set target, hot, and dangerous temperature values. All fields default to `No Change`, unsupported options are filtered by compatibility checks, and risky manual or custom temperature settings display warnings.

## CLI
Starting with **Toolbox 25.10**, the cooling command has been extended beyond basic mode switching to include full configuration of cooling parameters such as temperature thresholds and fan settings.
The CLI now supports two subcommands:
- [`set`](#set): configure cooling mode, temperatures, and fan parameters (**new**)
- [`set-mode`](#set-mode-deprecated): legacy command for switching between standard and immersion modes (**deprecated**)
```bash
./braiins-toolbox cooling --help
```
```
Cooling management - cooling configuration
Usage: braiins-toolbox cooling [OPTIONS]
Commands:
set Set cooling mode
set-mode Set cooling mode. Command is DEPRECATED, please use `set` command instead
```
***
### Set
The new `set` subcommand provides unified configuration for all thermal management parameters on supported Braiins OS devices (≥ 25.01).
```bash
./braiins-toolbox cooling set [OPTIONS] [--mode ] [--target-temp <°C>] [--hot-temp <°C>] [--dangerous-temp <°C>] [--fixed-fan-speed <%>] [--min-required-fans ] [--custom-fan-range -] [--fan-paused-mode ] [--fan-paused-pwm <%>] >
```
#### Supported Parameters
| Parameter | Description | Conditions | Example |
| --------------------- | ------------------------------------------------------------------------ | ------------------------------------------------------ | ---------------------------------------------------------------------- |
| `--mode` | Cooling mode: `auto`, `manual`, `immersion` | Skipped for unsupported models (e.g., immersion/hydro) | `braiins-toolbox cooling set --mode auto 192.168.1.10` |
| `--target-temp` | Target operating temperature (°C), range 0-200 | BOS ≥ 25.01 | `--target-temp 70` |
| `--hot-temp` | Threshold for throttling (°C), range 0-200 | BOS ≥ 25.01 | `--hot-temp 85` |
| `--dangerous-temp` | Shutdown threshold (°C), range 0-200 | BOS ≥ 25.01 | `--dangerous-temp 95` |
| `--fixed-fan-speed` | Fixed fan speed (%) in manual mode | BOS ≥ 25.01; mode = manual | `--mode manual --fixed-fan-speed 70` |
| `--min-required-fans` | Minimum required fans (0-4) | BOS ≥ 25.01; mode ≠ immersion/hydro | `--min-required-fans 2` |
| `--custom-fan-range` | Custom fan speed range (MIN-MAX %, MIN ≤ MAX) | BOS ≥ 25.01; mode = auto | `--mode auto --custom-fan-range 30-90` |
| `--fan-paused-mode` | Behavior when paused: `auto` or `manual` | BOS ≥ 25.05; mode ≠ immersion/hydro | `--fan-paused-mode manual` |
| `--fan-paused-pwm` | Fan speed in paused state (PWM %) | BOS ≥ 25.05; requires `--fan-paused-mode manual` | `--fan-paused-mode manual --fan-paused-pwm 50` |
| `--fan-pause-runtime` | Runtime of fans when paused: 2-minutes, indefinitely | BOS ≥ 26.01; requires `--fan-paused-mode manual` | `--fan-paused-mode manual --fan-pause-runtime 2-minutes` |
| `--print-results` | Print a per-device result table after the batch operation | Any batch operation | `braiins-toolbox cooling set --mode auto --print-results 192.168.1.10` |
| `--result-format` | Output format for per-device results: `table` or `csv` (default `table`) | Requires `--print-results` | `--print-results --result-format csv` |
| `--result-file` | Write per-device results to a file instead of stderr | Requires `--print-results` | `--print-results --result-file results.csv` |
#### Validation and Behavior
- Conflicting parameters (e.g., `--fixed-fan-speed` with `--mode auto`) cause immediate CLI errors.
- Devices running unsupported BOS versions are skipped with explanatory CLI messages.
- For immersion/hydro models, fan parameters are ignored with warnings.
#### Examples
Set manual mode with fixed fan speed at 70%:
```bash
./braiins-toolbox cooling set --mode manual --fixed-fan-speed 70 192.168.1.10
```
Set automatic mode with custom fan range 30–90% and target temperature 70 °C:
```bash
./braiins-toolbox cooling set --mode auto --custom-fan-range 30-90 --target-temp 70 192.168.1.10
```
Set paused fan mode to manual with PWM 50% (BOS ≥ 25.05):
```bash
./braiins-toolbox cooling set --fan-paused-mode manual --fan-paused-pwm 50 192.168.1.10
```
Apply all configurations on IPs listed in a text file:
```bash
./braiins-toolbox cooling set --mode auto --target-temp 70 --custom-fan-range 30-90 --ip-file devices.txt
```
#### Version Requirements Summary
| Feature | BOS Version |
| ----------------------------------------------------------------------------------------------------------------------------- | ----------- |
| `--mode`, `--target-temp`, `--hot-temp`, `--dangerous-temp`, `--fixed-fan-speed`, `--min-required-fans`, `--custom-fan-range` | ≥ 25.01 |
| `--fan-paused-mode`, `--fan-paused-pwm` | ≥ 25.05 |
| `fan-pause-runtime` | ≥ 26.01 |
***
### Set Mode (Deprecated)
- ⚠️ **Deprecated** — use [`cooling set`](#set) instead.
- The legacy command remains functional for backward compatibility but will be removed in future releases.
The previous CLI command for switching between cooling modes:
```bash
./braiins-toolbox cooling set-mode [OPTIONS] >
```
Possible values for ``:
- `standard`: suitable for air-cooled devices
- `immersion`: suitable for immersion-cooled devices
#### Examples
Set immersion mode on a single IP:
```bash
./braiins-toolbox cooling set-mode immersion '10.10.10.2'
```
Set standard mode on a range of IPs:
```bash
./braiins-toolbox cooling set-mode standard '10.10.10.1-10'
```
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-toolbox/cmd-firmware.md
---
# Firmware Management
## GUI
Firmware management capabilities allow user to perform essential actions such as:
- install Braiins OS
- uninstall Braiins OS
- upgrade Braiins OS
All these actions are related to the mining firmware. Braiins OS installation is shown in the video below.
Before initiating the Braiins OS installation, hardware compatibility checks are performed to prevent installation
on unsupported hardware.
## CLI
The equivalent to the firmware management capabilities in CLI is a `firmware` command, which consists of 3 firmware-related subcommands:
- [install](#install)
- [restore](#restore)
- [upgrade](#upgrade)
In Toolbox version 24.04, a new command, `custom-contract`, was introduced. Although it stands separately next to the `firmware` command, both are related to Braiins OS firmware.
- [custom-contract](#custom-contract)
### Install
The `install` subcommand serves as a command for batch Braiins OS installation. The format for this command is:
```bash
./braiins-toolbox firmware install [OPTIONS] >
```
where:
- the fact that firmware install command is used tells the Toolbox that it should run installation(s)
- `[OPTIONS]` is a (possibly empty) list of options to be used during discovery scanning and installation
- `[IP_LIST]` is a list of IP addresses or ranges separated by space(s) with each member having the form of `...`, where each `` is either an integer number between `0` and `255`, `range` of two integers between 0 and 255 (i.e., I1-I2 with I1 ≤ I2) or symbol `*` representing the whole range
- or instead of `[IP_LIST]` it is possible to apply IP addresses as an input from a text file with `--ip-file `
#### Options
Available options are the global one, [see here](/braiins-toolbox/running.md#global-options), as well as the installation-specific options:
- `--concurrency` is an option, which controls the maximum number of parallel installations
- `--url`: an option for setting pool URLs on selected miners during Braiins OS installation
- `--url-file`: an option for defining a path to a file containing a list of pool URLs, one per line
- `--dps`: an option to enable Dynamic Power Scaling (DPS) on selected miners during Braiins OS installation
- `--power-step`: an optional DPS related value representing a power step for the upscale/downscale of power consumption
- `--min-power-target`: an optional value representing nominal power consumption, at which the DPS stops downscaling
- `--hashrate-step`: an optional DPS related value representing a hashrate step for the upscale/downscale of power consumption
- `--min-hashrate-target`: an optional value representing nominal hashrate value in TH/s, at which the DPS stops downscaling
- `--shutdown-enabled`: an optional DPS related boolean value, which manages if the miner should be temporarily turned off in case the minimal power target is reached (`true`), or not (`false`)
- `--shutdown-duration`: an optional DPS related integer value related to the `--shutdown-enabled`, which represents the time (in hours) for which the miner should turn off when the minimal power target is reached and `--shutdown-enabled` is set to be `true`
- `--cooling-mode`: an option for setting cooling mode on selected miners during Braiins OS installation
- `--power`: an option for defining a power target on selected miners during Braiins OS installation
- `--hashrate`: an option for defining a hashrate target on selected miners during Braiins OS installation
- `--target-version`. If the user doesn't use this option, the latest Braiins OS version is automatically used. Nevertheless, users can use this option to install the specified Braiins OS version. The version is defined by versioning nomenclature `YY.MM.patchlevel`, where `YY` stands for year, `MM` for month and `patchlevel` as integer (possibly not used). See all the Braiins OS versions [here](/braiins-os/whats-new.md).
- `--contract-code`: argument to set contract code for BOS installation
- `--print-results`: prints a per-device result table after the batch operation
- `--result-format`: sets the output format for per-device results (`table` or `csv`, default `table`); requires `--print-results`
- `--result-file`: writes the per-device results to a file instead of stderr; requires `--print-results`
If users enter an **incorrect configuration** value during the advanced installation process, such as setting
`power-step` outside the allowable range, they will not receive a notification in the Braiins Toolbox. Nevertheless,
the installation process will still be successful, and **default** configuration values will be applied. Information
about such events can be retrieved from the BOSer logs, `/var/log/boser/boser.log` or through the BOS GUI.
#### Help
Calling help command serves as a quick description of the command:
```bash
./braiins-toolbox firmware install --help
```
```
Install Braiins OS on miners
Usage: braiins-toolbox firmware install [OPTIONS] >
Arguments:
[IP_LIST]...
List of IP addresses or ranges
Options:
-i, --ip-file
Path to a file containing a list of IP addresses or ranges, one per line
--include-public-ips
This switch removes the restriction that only private and link-local IP addresses are scanned by default
-c, --concurrency
Maximum number of installations running at the same time
[default: 10]
--target-version
Install this version instead of the `latest`. The format of `` parameter is `YY.MM.patch`
--contract-code
Argument to set clients custom contract code for BOS installation. --contract-code
--pool-presets-file-path
Path to file with pool presets
-p, --password
Override default password
-t, --timeout
Timeout for network operations
[default: 10s]
-u, --url
Pool URL (repeatable)
URL format: ://[:]@[:][/]
Supported protocols:
- stratum+tcp
- stratum2+tcp (URL must include authority public key)
Username format: lowercase and uppercase ASCII letters, numbers, dot, underscore, dash, plus, colon (must be
percent-encoded as %3A), at sign (must be percent-encoded as %40), predefined variables
Password format: lowercase and uppercase ASCII letters, numbers, dot, underscore, dash
Username can contain variables, which will be replaced with actual values for individual miner.
Variable is using following syntax: {{name.of.variable}} or {{ name.of.variable }}
List of predefined variables:
- miner.ip - miner IP address, e.g. 127.0.0.1
- miner.ip_x - miner IP address, e.g. 127x0x0x1
- miner.hostname - miner hostname, e.g. localhost
- miner.mac - miner MAC address, e.g. 00:B0:D0:63:C2:26 - for Braiins OS available since 23.12
- miner.mac_clean - miner MAC address without colons, e.g. 00B0D063C226
Examples:
- stratum+tcp://user:password@stratum.braiins.com:3333
- stratum2+tcp://user:password@stratum.braiins.com:3333/9awtMD5KQgvRUh2yFbjVeT7b6hjipWcAsQHd6wEhgtDT9soosna
- stratum+tcp://user.{{miner.ip}}:password@stratum.braiins.com:3333
-f, --url-file
Path to a file containing a list of pool URLs, one per line
-r, --scan-rate
Number of IP addresses scanned per second. Decrease when running over a VPN or with an unstable or slow
connection. Increase when running on the same local network where all miners are located
[default: 250]
--dps
Option to turn the dynamic power scaling on or off for miners running supported version of Braiins OS
[possible values: on, off]
--logfile-path
Path to file where debug log file
--max-log-size
Maximum size for all rolling log files combined
[default: 1GB]
--power-step
An optional step in Watts that DPS function of tuner uses to increase or decrease of drawn power in one
iteration. When missing, system default is used by BOS. is a positive integer. Can only be specified
when dynamic power scaling is turned on (--dps on)
--hashrate-step
An optional step in TH/s that DPS function of tuner uses to increase or decrease hashrate in one iteration.
When missing, system default is used by BOS+. Can only be specified when dynamic power scaling is
turned on (--dps on)
--min-power-target
Minimal power target in Watts that DPS function of tuner stops decreasing the power at and (if enabled)
initiates temporary shutdown. is a positive integer. It is an optional parameter. When missing,
system default is used by BOS. Can only be specified when dynamic power scaling is turned on (--dps on)
--min-hashrate-target
Minimal hashrate target in TH/s that DPS function of tuner stops decreasing the hashrate at and (if enabled)
initiates temporary shutdown. It is an optional parameter. When missing, system default is used by BOS+.
Can only be specified when dynamic power scaling is turned on (--dps on)
--shutdown-enabled
Enables (true) or disables (false) temporary shutdown of miner hashboards by tuner's DPS function in case the
minimal power target is reached and temperature is still above limit. It is an optional parameter. When
missing, system default is used by BOS. Can only be specified when dynamic power scaling is turned on (--dps
on)
[possible values: true, false]
--shutdown-duration
Number of hours the hashboards remain cooling off after being switched off by DPS before they can be turned on
again. is a positive integer. It is an optional parameter. When missing, system default is used by
BOS. Can only be specified when dynamic power scaling is turned on and shutdown is enabled (--dps on
--shutdown-enabled true)
--cooling-mode
Option to specify cooling mode for miners running supported version of Braiins OS, cooling mode is currently
one of standard or immersion
[possible values: standard, immersion]
--power
Specification of tuner power target. In this case is a positive integer specifying desired absolute
power target in Watts
-y, --yes
Proceed with the action on all detected miners without asking for confirmation
--print-results
Print a per-device result table after batch operations
--result-format
Output format for per-device results (requires --print-results)
[default: table]
[possible values: table, csv]
--result-file
Write per-device results to a file instead of stderr (requires --print-results)
-h, --help
Print help (see a summary with '-h')
```
#### Usage Examples
Install on defined IP address(es)
```bash
./braiins-toolbox firmware install '10.10.10.2'
```
```
2023-01-11T11:19:42.170019Z INFO braiins_toolbox::install: scanning 1 ip addresses...
2023-01-11T11:19:46.822966Z INFO braiins_toolbox::install: discovered 1 miners
2023-01-11T11:19:46.822983Z INFO braiins_toolbox::install: installation is supported for 1/1 miners
Do you want to continue with installation? (YES/no): yes
2023-01-11T11:26:08.666060Z INFO braiins_toolbox::install: 1/1 miners installed successfully
```
```bash
./braiins-toolbox firmware install '10.10.10.*'
```
```
2023-01-11T11:19:42.170019Z INFO braiins_toolbox::install: scanning 256 ip addresses...
2023-01-11T11:19:46.822966Z INFO braiins_toolbox::install: discovered 34 miners
2023-01-11T11:19:46.822983Z INFO braiins_toolbox::install: installation is supported for 1/34 miners
Do you want to continue with installation? (YES/no): yes
2023-01-11T11:26:08.666060Z INFO braiins_toolbox::install: 1/1 miners installed successfully
```
```bash
./braiins-toolbox firmware install '10.10.10.1-10'
```
```
2023-01-11T11:19:42.170019Z INFO braiins_toolbox::install: scanning 10 ip addresses...
2023-01-11T11:19:46.822966Z INFO braiins_toolbox::install: discovered 1 miners
2023-01-11T11:19:46.822983Z INFO braiins_toolbox::install: installation is supported for 1/1 miners
Do you want to continue with installation? (YES/no): yes
2023-01-11T11:26:08.666060Z INFO braiins_toolbox::install: 1/1 miners installed successfully
```
Install on IP address(es) defined in the text file `input.txt`
```bash
./braiins-toolbox firmware install --ip-file 'input.txt'
```
```
2023-01-11T11:19:42.170019Z INFO braiins_toolbox::install: scanning 1 ip addresses...
2023-01-11T11:19:46.822966Z INFO braiins_toolbox::install: discovered 1 miners
2023-01-11T11:19:46.822983Z INFO braiins_toolbox::install: installation is supported for 1/1 miners
Do you want to continue with installation? (YES/no): yes
2023-01-11T11:26:08.666060Z INFO braiins_toolbox::install: 1/1 miners installed successfully
```
Install on defined IP address(es) with a password
```bash
./braiins-toolbox firmware install '10.10.10.2' --password 'miner:miner'
```
```
2023-01-11T11:19:42.170019Z INFO braiins_toolbox::install: scanning 1 ip addresses...
2023-01-11T11:19:46.822966Z INFO braiins_toolbox::install: discovered 1 miners
2023-01-11T11:19:46.822983Z INFO braiins_toolbox::install: installation is supported for 1/1 miners
Do you want to continue with installation? (YES/no): yes
2023-01-11T11:26:08.666060Z INFO braiins_toolbox::install: 1/1 miners installed successfully
```
Install target version of Braiins OS on defined IP address(es)
```bash
./braiins-toolbox firmware install '10.10.10.2' --target-version '23.12'
```
```
2023-01-11T11:19:42.170019Z INFO braiins_toolbox::install: scanning 1 ip addresses...
2023-01-11T11:19:46.822966Z INFO braiins_toolbox::install: discovered 1 miners
2023-01-11T11:19:46.822983Z INFO braiins_toolbox::install: installation is supported for 1/1 miners
Do you want to continue with installation? (YES/no): yes
2023-01-11T11:26:08.666060Z INFO braiins_toolbox::install: 1/1 miners installed successfully
```
Install on defined IP address(es) together with setting a mining pool and enabling DPS
```bash
./braiins-toolbox firmware install --url 'stratum+tcp://user1.{{miner.mac}}@stratum.braiins.com:3333' --power 3000 --dps 'on' 10.10.10.2
```
```
2023-12-12T17:39:04.863177Z INFO scan: braiins_toolbox::scanner: scanning 1 IP addresses...
2023-12-12T17:39:12.604722Z INFO scan: braiins_toolbox::scanner: discovered 1 online miners
2023-12-12T17:39:12.604772Z INFO scan: braiins_toolbox::scanner: installation is supported for 1/1 miners
Do you want to continue with the installation? (YES/no): yes
2023-12-12T17:39:15.398945Z INFO braiins_toolbox::commands: running installation on 1 miners...
2023-12-12T17:43:14.041507Z INFO braiins_toolbox::commands: 1/1 miners installed successfully
```
Install Braiins OS and apply a contract key XYZ
```bash
./braiins-toolbox firmware install --contract-code 'XYZ' 10.10.10.2
```
```
2023-12-12T17:39:04.863177Z INFO scan: braiins_toolbox::scanner: scanning 1 IP addresses...
2023-12-12T17:39:12.604722Z INFO scan: braiins_toolbox::scanner: discovered 1 online miners
2023-12-12T17:39:12.604772Z INFO scan: braiins_toolbox::scanner: installation is supported for 1/1 miners
Do you want to continue with the installation? (YES/no): yes
2023-12-12T17:39:15.398945Z INFO braiins_toolbox::commands: running installation on 1 miners...
2023-12-12T17:43:14.041507Z INFO braiins_toolbox::commands: 1/1 miners installed successfully
```
Unsuccessful installation
```bash
./install-tool install '10.10.10.2'
```
```
2022-11-09T16:19:36.560002Z INFO braiins_toolbox::install: scanning 1 ip addresses...
2022-11-09T16:19:36.563002Z INFO braiins_toolbox::install: discovered 1 miners
2022-11-09T16:19:36.564002Z INFO braiins_toolbox::install: installation is supported for 1/1 miners
Do you want to continue with installation? (YES/no): yes
2022-11-09T16:19:37.013002Z INFO braiins_toolbox: running installation procedure on 1 devices
2022-11-09T16:23:23.231004Z ERROR install{addr=10.10.10.2}: braiins_toolbox: installation timed out
2022-11-09T16:23:45.231101Z INFO braiins_toolbox: 0/1 devices installed successfully
```
Install on defined IP address(es) with a concurrency of 100
```bash
./braiins-toolbox firmware install --concurrency 100 '10.10.*.*'
```
```
2023-05-07T18:58:55.049467Z INFO braiins_toolbox::firmware::install: discovered 15843 miners
2023-05-07T18:58:55.049489Z INFO braiins_toolbox::firmware::install: installation is supported for 873/15843 miners
2023-05-07T18:58:59.235987Z INFO braiins_toolbox::firmware::install: 873/873 miners installed successfully
```
#### Installation Time
Considering reasonable network capacity and concurrency 100, one installation batch shall take approx. 5 minutes to finish. This means that 100 miners are installed in 5 minutes, 2 000 in 100 minutes, etc.
### Restore
The `restore` subcommand can be used to batch uninstall aftermarket firmware. The device will return to running the factory firmware without the user having to take any further action.
The invocation form of the command is:
```bash
./braiins-toolbox firmware restore [OPTIONS] >
```
where:
- the fact that `firmware restore` command is used tells the Toolbox that it should run uninstallation of the firmware to the factory condition
- `[OPTIONS]` is a (possibly empty) list of options to be used during discovery scanning and uninstallation
- `[IP_LIST]` is a list of IP addresses or ranges separated by space(s) with each member having the form of `...`, where each `` is either an integer number between `0` and `255`, `range` of two integers between 0 and 255 (i.e., I1-I2 with I1 ≤ I2) or symbol `*` representing the whole range
- or instead of `[IP_LIST]` it is possible to apply IP addresses as an input from a text file with `--ip-file `
#### Options
Available options are the global one, [see here](/braiins-toolbox/running.md#global-options), as well as the uninstallation-specific options:
- `--concurrency` is an option, which controls the maximum number of parallel firmware uninstallations
- `--print-results`: prints a per-device result table after the batch operation
- `--result-format`: sets the output format for per-device results (`table` or `csv`, default `table`); requires `--print-results`
- `--result-file`: writes the per-device results to a file instead of stderr; requires `--print-results`
#### Help
Calling help command serves as a quick description of the command:
```bash
./braiins-toolbox firmware restore --help
```
```
Restore the stock firmware of the device
Usage: braiins-toolbox firmware restore [OPTIONS] >
Arguments:
[IP_LIST]... List of IP addresses or ranges
Options:
-i, --ip-file Path to a file containing a list of IP addresses or ranges, one per line
--include-public-ips This switch removes the restriction that only private and link-local IP addresses
are scanned by default
-c, --concurrency Maximum number of uninstallations running at the same time [default: 50]
--pool-presets-file-path Path to file with pool presets
-p, --password Override default password
-t, --timeout Timeout for network operations [default: 10s]
-r, --scan-rate Number of IP addresses scanned per second. Decrease when running over a VPN or
with an unstable or slow connection. Increase when running on the same local
network where all miners are located [default: 250]
--logfile-path Path to file where debug log file
--max-log-size Maximum size for all rolling log files combined [default: 1GB]
--print-results Print a per-device result table after batch operations
--result-format
Output format for per-device results (requires --print-results) [default:
table] [possible values: table, csv]
--result-file Write per-device results to a file instead of stderr (requires --print-results)
-h, --help Print help
```
#### Usage Examples
Uninstall firmware on defined IP address(es)
```bash
./braiins-toolbox firmware restore '10.10.10.2'
```
```
2023-05-07T18:58:55.049467Z INFO braiins_toolbox::firmware::restore: discovered 1 miners
2023-05-07T18:58:55.049489Z INFO braiins_toolbox::firmware::restore: restore is supported for 1/1 miners
2023-05-07T18:58:59.235987Z INFO braiins_toolbox::firmware::restore: 1/1 miners restored successfully
```
```bash
./braiins-toolbox firmware restore '10.10.10.*'
```
```
2023-05-07T18:58:55.049467Z INFO braiins_toolbox::firmware::restore: discovered 10 miners
2023-05-07T18:58:55.049489Z INFO braiins_toolbox::firmware::restore: restore is supported for 1/10 miners
2023-05-07T18:58:59.235987Z INFO braiins_toolbox::firmware::restore: 1/1 miners restored successfully
```
```bash
./braiins-toolbox firmware restore '10.10.10.1-10'
```
```
2023-05-07T18:58:55.049467Z INFO braiins_toolbox::firmware::restore: discovered 10 miners
2023-05-07T18:58:55.049489Z INFO braiins_toolbox::firmware::restore: restore is supported for 1/10 miners
2023-05-07T18:58:59.235987Z INFO braiins_toolbox::firmware::restore: 1/1 miners restored successfully
```
Restore on IP address(es) defined in the text file `input.txt`
```bash
./braiins-toolbox firmware restore --ip-file 'input.txt'
```
```
2023-05-07T18:58:55.049467Z INFO braiins_toolbox::firmware::restore: discovered 1 miners
2023-05-07T18:58:55.049489Z INFO braiins_toolbox::firmware::restore: restore is supported for 1/1 miners
2023-05-07T18:58:59.235987Z INFO braiins_toolbox::firmware::restore: 1/1 miners restored successfully
```
Restore on defined IP address(es) with a password
```bash
./braiins-toolbox firmware restore '10.10.10.2' --password 'root:root'
```
```
2023-05-07T18:58:55.049467Z INFO braiins_toolbox::firmware::restore: discovered 1 miners
2023-05-07T18:58:55.049489Z INFO braiins_toolbox::firmware::restore: restore is supported for 1/1 miners
2023-05-07T18:58:59.235987Z INFO braiins_toolbox::firmware::restore: 1/1 miners restored successfully
```
Restore on defined IP address(es) with concurrency 100
```bash
./braiins-toolbox firmware restore --concurrency 300 '10.10.*.*'
```
```
2023-05-07T18:58:55.049467Z INFO braiins_toolbox::firmware::restore: discovered 15843 miners
2023-05-07T18:58:55.049489Z INFO braiins_toolbox::firmware::restore: restore is supported for 873/15843 miners
2023-05-07T18:58:59.235987Z INFO braiins_toolbox::firmware::restore: 873/873 miners restored successfully
```
### Upgrade
Remote batch upgrading to the latest version of Braiins OS can be performed using the following command:
```bash
./braiins-toolbox firmware upgrade [OPTIONS] >
```
where:
- the fact that `firmware upgrade` command is used, tells the Toolbox that it should run upgrade to the latest Braiins OS
- `[OPTIONS]` is a (possibly empty) list of options to be used during discovery scanning and upgrade
- `[IP_LIST]` is a list of IP addresses or ranges separated by space(s) with each member having the form of `...`, where each `` is either an integer number between 0 and 255, range of two integers between `0` and `255` (i.e., I1-I2 with I1 ≤ I2) or symbol `*` representing the whole range
- or instead of `[IP_LIST]` it is possible to apply IP addresses as an input from a text file with `--ip-file `
#### Options
Available options are only the global ones, [see here](/braiins-toolbox/running.md#global-options), and 2 upgrade-related:
- `--concurrency` is an option which controls the maximum number of parallel firmware upgrades
- `--target-version`. If the user doesn't use this option, the firmware is automatically upgraded to the latest Braiins OS version. Nevertheless, users can use this option to upgrade or downgrade to the specified Braiins OS version. The version is defined by versioning nomenclature `YY.MM.patchlevel`, where `YY` stands for year, `MM` for month and `patchlevel` as integer (possibly not used). See all the Braiins OS versions [here](/braiins-os/whats-new.md).
- `--print-results`: prints a per-device result table after the batch operation
- `--result-format`: sets the output format for per-device results (`table` or `csv`, default `table`); requires `--print-results`
- `--result-file`: writes the per-device results to a file instead of stderr; requires `--print-results`
#### Help
Calling help command serves as a quick description of the command:
```bash
./braiins-toolbox firmware upgrade --help
```
```
Upgrade Braiins OS miners
Usage: braiins-toolbox firmware upgrade [OPTIONS] >
Arguments:
[IP_LIST]... List of IP addresses or ranges
Options:
-i, --ip-file Path to a file containing a list of IP addresses or ranges, one per line
--include-public-ips This switch removes the restriction that only private and link-local IP addresses
are scanned by default
-c, --concurrency Maximum number of upgrades running at the same time [default: 10]
--pool-presets-file-path Path to file with pool presets
-p, --password Override default password
--target-version Upgrade to this version instead of `latest`. It's also possible to specify an
older version to do a downgrade. Format is `YY.MM.patch`
-t, --timeout Timeout for network operations [default: 10s]
-r, --scan-rate Number of IP addresses scanned per second. Decrease when running over a VPN or
with an unstable or slow connection. Increase when running on the same local
network where all miners are located [default: 250]
--logfile-path Path to file where debug log file
-y, --yes Proceed with the action on all detected miners without asking for confirmation
--max-log-size Maximum size for all rolling log files combined [default: 1GB]
--print-results Print a per-device result table after batch operations
--result-format
Output format for per-device results (requires --print-results) [default:
table] [possible values: table, csv]
--result-file Write per-device results to a file instead of stderr (requires --print-results)
-h, --help Print help
```
#### Usage Examples
Upgrade to the latest Braiins OS on defined IP address(es)
```bash
./braiins-toolbox firmware upgrade '10.10.10.2'
```
```
2023-05-07T19:45:02.165054Z INFO braiins_toolbox::firmware::upgrade: scanning 1 ip addresses...
2023-05-07T19:45:02.976861Z INFO braiins_toolbox::firmware::upgrade: discovered 1 miners
2023-05-07T19:45:02.976885Z INFO braiins_toolbox::firmware::upgrade: upgrade is supported for 1/1 miners
Miners will be upgraded to FW:
1. BBB/NAND: firmware_2023-05-04-0-9b223345-23.03.1-plus_omap.tar
Do you want to continue with the upgrade? (YES/no): yes
2023-05-07T19:45:04.139757Z INFO braiins_toolbox::firmware::upgrade: running system-upgrade on 1 miners...
2023-05-07T19:47:23.538552Z INFO braiins_toolbox::firmware::upgrade: 1/1 miners upgraded successfully
```
Upgrade to the latest Braiins OS on IP address(es) defined in the text file `input.txt`
```bash
./braiins-toolbox firmware upgrade --ip-file 'input.txt'
```
```
2023-05-07T19:45:02.165054Z INFO braiins_toolbox::firmware::upgrade: scanning 1 ip addresses...
2023-05-07T19:45:02.976861Z INFO braiins_toolbox::firmware::upgrade: discovered 1 miners
2023-05-07T19:45:02.976885Z INFO braiins_toolbox::firmware::upgrade: upgrade is supported for 1/1 miners
Miners will be upgraded to FW:
1. BBB/NAND: firmware_2023-05-04-0-9b223345-23.03.1-plus_omap.tar
```
Upgrade to the specific Braiins OS version on defined IP address(es)
```bash
./braiins-toolbox firmware upgrade --target-version '23.03.1' '10.10.10.2'
```
```
2023-05-07T19:40:22.643917Z INFO braiins_toolbox::firmware::upgrade: scanning 1 ip addresses...
2023-05-07T19:40:23.623777Z INFO braiins_toolbox::firmware::upgrade: discovered 1 miners
2023-05-07T19:40:23.623798Z INFO braiins_toolbox::firmware::upgrade: upgrade is supported for 1/1 miners
Miners will be upgraded to FW:
1. BBB/NAND: firmware_2023-05-04-0-9b223345-23.03.1-plus_omap.tar
Do you want to continue with the upgrade? (YES/no): yes
2023-05-07T19:40:25.530018Z INFO braiins_toolbox::firmware::upgrade: running system-upgrade on 1 miners...
2023-05-07T19:42:42.279394Z INFO braiins_toolbox::firmware::upgrade: 1/1 miners upgraded successfully
```
Downgrade to the specific Braiins OS version on IP address(es)
```bash
./braiins-toolbox firmware upgrade --target-version '23.03' '10.10.10.2'
```
```
2023-05-07T19:40:22.643917Z INFO braiins_toolbox::firmware::upgrade: scanning 1 ip addresses...
2023-05-07T19:40:23.623777Z INFO braiins_toolbox::firmware::upgrade: discovered 1 miners
2023-05-07T19:40:23.623798Z INFO braiins_toolbox::firmware::upgrade: upgrade is supported for 1/1 miners
Miners will be upgraded to FW:
1. BBB/NAND: firmware_2023-04-20-0-0ce150e9-23.03-plus_omap.tar
Do you want to continue with the upgrade? (YES/no): yes
2023-05-07T19:40:25.530018Z INFO braiins_toolbox::firmware::upgrade: running system-upgrade on 1 miners...
2023-05-07T19:42:42.279394Z INFO braiins_toolbox::firmware::upgrade: 1/1 miners upgraded successfully
```
### Custom Contract
Remote batch application of a contract key to miners with Braiins OS can be performed using the following command:
```bash
./braiins-toolbox custom-contract apply [OPTIONS] --contract-code >
```
where:
- the fact that `custom-contract apply` command is used, tells the Toolbox that it should apply contract key on the selected miner, which are on Braiins OS
- `[OPTIONS]` is a (possibly empty) list of options to be used during discovery scanning and command execution
- `[IP_LIST]` is a list of IP addresses or ranges separated by space(s) with each member having the form of `...`, where each `` is either an integer number between 0 and 255, range of two integers between `0` and `255` (i.e., I1-I2 with I1 ≤ I2) or symbol `*` representing the whole range
- or instead of `[IP_LIST]` it is possible to apply IP addresses as an input from a text file with `--ip-file `
#### Options
Available options are only the global ones, [see here](/braiins-toolbox/running.md#global-options), and 2 upgrade-related:
- `--concurrency` is an option which controls the maximum number of parallel firmware upgrades
- `--contract-code` s an option that needs to be used to apply the contract key
- `--print-results`: prints a per-device result table after the batch operation
- `--result-format`: sets the output format for per-device results (`table` or `csv`, default `table`); requires `--print-results`
- `--result-file`: writes the per-device results to a file instead of stderr; requires `--print-results`
#### Help
Calling help command serves as a quick description of the command:
```bash
./braiins-toolbox custom-contract apply --help
```
```
Apply custom contract
Usage: braiins-toolbox custom-contract apply [OPTIONS] --contract-code >
Arguments:
[IP_LIST]... List of IP addresses or ranges
Options:
-i, --ip-file Path to a file containing a list of IP addresses or ranges, one per line
--include-public-ips This switch removes the restriction that only private and link-local IP addresses
are scanned by default
--contract-code Argument to set clients custom contract code for BOS
-c, --concurrency Maximum number of custom contract installations executed at the same time
[default: 50]
--pool-presets-file-path Path to file with pool presets
-p, --password Override default password
-t, --timeout Timeout for network operations [default: 10s]
-r, --scan-rate Number of IP addresses scanned per second. Decrease when running over a VPN or
with an unstable or slow connection. Increase when running on the same local
network where all miners are located [default: 250]
--logfile-path Path to file where debug log file
--max-log-size Maximum size for all rolling log files combined [default: 1GB]
--print-results Print a per-device result table after batch operations
--result-format
Output format for per-device results (requires --print-results) [default:
table] [possible values: table, csv]
--result-file Write per-device results to a file instead of stderr (requires --print-results)
-h, --help Print help
```
#### Usage Examples
Apply contract key XYZ on defined IP address(es)
```bash
./braiins-toolbox custom-contract apply --contract-code 'XYZ' '10.10.10.2'
```
```
2023-05-07T19:45:02.165054Z INFO braiins_toolbox::toolbox_cli::scanner: scanning 1 ip addresses...
2023-05-07T19:45:02.976861Z INFO braiins_toolbox::toolbox_cli::scanner: discovered 1 miners
2023-05-07T19:45:02.976885Z INFO braiins_toolbox::toolbox_cli::scanner: custom contract application is supported for 1/1 miners
2023-05-07T19:45:04.139757Z INFO braiins_toolbox::toolbox_cli::commands: running custom contract application on 1 miners...
2023-05-07T19:47:23.538552Z INFO braiins_toolbox::toolbox_cli::commands: 1/1 miners with custom contract applied successfully
```
Apply contract key XYZ on IP address(es) defined in the text file `input.txt`
```bash
./braiins-toolbox custom-contract apply --contract-code 'XYZ' --ip-file 'input.txt'
```
```
2023-05-07T19:45:02.165054Z INFO braiins_toolbox::toolbox_cli::scanner: scanning 1 ip addresses...
2023-05-07T19:45:02.976861Z INFO braiins_toolbox::toolbox_cli::scanner: discovered 1 miners
2023-05-07T19:45:02.976885Z INFO braiins_toolbox::toolbox_cli::scanner: custom contract application is supported for 1/1 miners
2023-05-07T19:45:04.139757Z INFO braiins_toolbox::toolbox_cli::commands: running custom contract application on 1 miners...
2023-05-07T19:47:23.538552Z INFO braiins_toolbox::toolbox_cli::commands: 1/1 miners with custom contract applied successfully
```
---
Was this helpful?
Yes, thanks!Sort of, thanks!Not really
Talk to us!
---
url: /braiins-toolbox/cmd-miner.md
---
# Miner Management
## GUI
The miner management capabilities cover operations such as
- starting mining
- stopping mining
- restarting mining
- pausing mining
- resuming mining
- set up pool settings
These functions allow you to have fine-grained control over the mining process. Change of pool settings is showed in the video below.
It is also possible to use workername variables when configuring pool settings through the GUI. For example, users
can use a miner hostname as a workername when configuring the pool settings.
## CLI
The equivalent to the management capabilities in CLI is a `miner` command, which consists of 8 miner-related subcommands:
- [start](#start)
- [stop](#stop)
- [restart](#restart)
- [pause](#pause)
- [resume](#resume)
- [set-pool-urls](#set-pool-urls)
- [set-mode](#set-mode)
- [set-power-limit](#set-power-limit)
The command works on devices with Braiins OS version 23.03 and newer. Commands `pause`, `resume` and `set-pool-urls` work for **Bitmain** and **MicroBT** firmware as well. Command `set-mode` works only with **Bitmain FW**. Command `set-power-limit` is compatible only with **MicroBT FW**.
The help option gives the user a quick overview of the command capabilities:
```bash
./braiins-toolbox miner --help
```
```
Miner-related commands - pool urls, start, stop, restart, ...
Usage: braiins-toolbox miner [OPTIONS]
Usage: braiins-toolbox miner [OPTIONS]
Commands:
start Start Braiins OS miners
stop Stop Braiins OS miners
restart Restart Braiins OS miners
pause Pause mining
resume Resume mining
set-pool-urls Set pool URLs on Braiins OS, Antminers and Whatsminers. For Braiins OS set the first pool group
set-mode Set miner mode on Bitmain Stock (Antminer) and MicroBT Stock (WhatsMiner)
set-power-limit Set power limit on MicroBT Stock (WhatsMiner)
Options:
--pool-presets-file-path Path to file with pool presets
-p, --password Override default password
-t, --timeout Timeout for network operations [default: 10s]
-r, --scan-rate Number of IP addresses scanned per second. Decrease when running over a VPN or
with an unstable or slow connection. Increase when running on the same local
network where all miners are located [default: 250]
--logfile-path Path to file where debug log file
--max-log-size Maximum size for all rolling log files combined [default: 1GB]
-h, --help Print help
```
### Start
Users can use the start to `start` mining remotely in a batch. The format of the command is as follows:
```bash
./braiins-toolbox miner start [OPTIONS] >
```
where:
- the fact that `miner start` command is used tells the Toolbox that the defined devices should start mining
- `[OPTIONS]` is a (possibly empty) list of options to be used during discovery scanning and start
- `[IP_LIST]` is a list of IP addresses or ranges separated by space(s) with each member having the form of `...`, where each `` is either an integer number between `0` and `255`, `range` of two integers between 0 and 255 (i.e. I1-I2 with I1 ≤ I2) or symbol `*` representing the whole range
- or instead of `[IP_LIST]` it is possible to apply IP addresses as an input from a text file with `--ip-file `
#### Options
Available options are just the global one, [see here](/braiins-toolbox/running.md#global-options).
#### Help
Calling help command serves as a quick description of the command:
```bash
./braiins-toolbox miner start --help
```
```
Start Braiins OS miners
Usage: braiins-toolbox miner start [OPTIONS] >
Arguments:
[IP_LIST]... List of IP addresses or ranges
Options:
-i, --ip-file Path to a file containing a list of IP addresses or ranges, one per line
--include-public-ips This switch removes the restriction that only private and link-local IP addresses
are scanned by default
--pool-presets-file-path Path to file with pool presets
-p, --password Override default password
-t, --timeout Timeout for network operations [default: 10s]
-r, --scan-rate Number of IP addresses scanned per second. Decrease when running over a VPN or
with an unstable or slow connection. Increase when running on the same local
network where all miners are located [default: 250]
--logfile-path Path to file where debug log file
--max-log-size Maximum size for all rolling log files combined [default: 1GB]
--print-results Print a per-device result table after batch operations
--result-format
Output format for per-device results (requires --print-results) [default: table]
[possible values: table, csv]
--result-file Write per-device results to a file instead of stderr (requires --print-results)
-h, --help Print help
```
#### Usage Examples
Start mining on defined IP address(es)
```bash
./braiins-toolbox miner start '10.10.10.2'
```
```
2023-05-07T20:32:49.227703Z INFO scan: braiins_toolbox::scanner: scanning 1 ip addresses...
2023-05-07T20:32:49.395999Z INFO scan: braiins_toolbox::scanner: discovered 1 miners
2023-05-07T20:32:49.396000Z INFO scan: braiins_toolbox::scanner: miner start is supported for 1/1 miners
2023-05-07T20:32:49.396025Z INFO braiins_toolbox::commands: running miner start on 1 miners...
2023-05-07T20:32:49.524623Z INFO braiins_toolbox::commands: 1/1 miners started successfully
```
```bash
./braiins-toolbox miner start '10.10.10.*'
```
```
2023-05-07T20:32:49.227703Z INFO scan: braiins_toolbox::scanner: scanning 256 ip addresses...
2023-05-07T20:32:49.395999Z INFO scan: braiins_toolbox::scanner: discovered 10 miners
2023-05-07T20:32:49.396000Z INFO scan: braiins_toolbox::scanner: miner start is supported for 10/10 miners
2023-05-07T20:32:49.396025Z INFO braiins_toolbox::commands: running miner start on 10 miners...
2023-05-07T20:32:49.524623Z INFO braiins_toolbox::commands: 10/10 miners started successfully
```
```bash
./braiins-toolbox miner start '10.10.10.1-10'
```
```
2023-05-07T20:32:49.227703Z INFO scan: braiins_toolbox::scanner: scanning 10 ip addresses...
2023-05-07T20:32:49.395999Z INFO scan: braiins_toolbox::scanner: discovered 10 miners
2023-05-07T20:32:49.396000Z INFO scan: braiins_toolbox::scanner: miner start is supported for 10/10 miners
2023-05-07T20:32:49.396025Z INFO braiins_toolbox::commands: running miner start on 10 miners...
2023-05-07T20:32:49.524623Z INFO braiins_toolbox::commands: 10/10 miners started successfully
```
Start mining on IP address(es) defined in the text file `input.txt`
```bash
./braiins-toolbox miner start --ip-file 'input.txt'
```
```
2023-05-07T20:32:49.227703Z INFO scan: braiins_toolbox::scanner: scanning 1 ip addresses...
2023-05-07T20:32:49.395999Z INFO scan: braiins_toolbox::scanner: discovered 1 miners
2023-05-07T20:32:49.396000Z INFO scan: braiins_toolbox::scanner: miner start is supported for 1/1 miners
2023-05-07T20:32:49.396025Z INFO braiins_toolbox::commands: running miner start on 1 miners...
2023-05-07T20:32:49.524623Z INFO braiins_toolbox::commands: 1/1 miners started successfully
```
### Stop
Users can stop mining remotely in a batch by using the `stop` subcommand as follows:
```bash
./braiins-toolbox miner stop [OPTIONS] >
```
where:
- the fact that `miner stop` command is used tells the Toolbox that the defined devices should stop mining
- `[OPTIONS]` is a (possibly empty) list of options to be used during discovery scanning and stop
- `[IP_LIST]` is a list of IP addresses or ranges separated by space(s) with each member having the form of `...`, where each `` is either an integer number between `0` and `255`, `range` of two integers between 0 and 255 (i.e., I1-I2 with I1 ≤ I2) or symbol `*` representing the whole range
- or instead of `[IP_LIST]` it is possible to apply IP addresses as an input from a text file with `--ip-file `
#### Options
Available options are just the global one, [see here](/braiins-toolbox/running.md#global-options).
#### Help
Calling help command serves as a quick description of the command:
```bash
./braiins-toolbox miner stop --help
```
```
Stop Braiins OS miners
Usage: braiins-toolbox miner stop [OPTIONS] >
Arguments:
[IP_LIST]... List of IP addresses or ranges
Options:
-i, --ip-file Path to a file containing a list of IP addresses or ranges, one per line
--include-public-ips This switch removes the restriction that only private and link-local IP addresses
are scanned by default
--pool-presets-file-path Path to file with pool presets
-p, --password Override default password
-t, --timeout Timeout for network operations [default: 10s]
-r, --scan-rate Number of IP addresses scanned per second. Decrease when running over a VPN or
with an unstable or slow connection. Increase when running on the same local
network where all miners are located [default: 250]
--logfile-path Path to file where debug log file
--max-log-size Maximum size for all rolling log files combined [default: 1GB]
--print-results Print a per-device result table after batch operations
--result-format
Output format for per-device results (requires --print-results) [default: table]
[possible values: table, csv]
--result-file Write per-device results to a file instead of stderr (requires --print-results)
-h, --help Print help
```
#### Usage Examples
Stop mining on defined IP address(es)
```bash
./braiins-toolbox miner stop '10.10.10.2'
```
```
2023-05-07T20:32:49.227703Z INFO scan: braiins_toolbox::scanner: scanning 1 ip addresses...
2023-05-07T20:32:49.395999Z INFO scan: braiins_toolbox::scanner: discovered 1 miners
2023-05-07T20:32:49.396000Z INFO scan: braiins_toolbox::scanner: miner stop is supported for 1/1 miners
2023-05-07T20:32:49.396025Z INFO braiins_toolbox::commands: running miner stop on 1 miners...
2023-05-07T20:32:49.524623Z INFO braiins_toolbox::commands: 1/1 miners stopped successfully
```
```bash
./braiins-toolbox miner stop '10.10.10.*'
```
```
2023-05-07T20:32:49.227703Z INFO scan: braiins_toolbox::scanner: scanning 256 ip addresses...
2023-05-07T20:32:49.395999Z INFO scan: braiins_toolbox::scanner: discovered 10 miners
2023-05-07T20:32:49.396000Z INFO scan: braiins_toolbox::scanner: miner stop is supported for 10/10 miners
2023-05-07T20:32:49.396025Z INFO braiins_toolbox::commands: running miner stop on 10 miners...
2023-05-07T20:32:49.524623Z INFO braiins_toolbox::commands: 10/10 miners stopped successfully
```
```bash
./braiins-toolbox miner stop '10.10.10.1-10'
```
```
2023-05-07T20:32:49.227703Z INFO scan: braiins_toolbox::scanner: scanning 10 ip addresses...
2023-05-07T20:32:49.395999Z INFO scan: braiins_toolbox::scanner: discovered 10 miners
2023-05-07T20:32:49.396000Z INFO scan: braiins_toolbox::scanner: miner stop is supported for 10/10 miners
2023-05-07T20:32:49.396025Z INFO braiins_toolbox::commands: running miner stop on 10 miners...
2023-05-07T20:32:49.524623Z INFO braiins_toolbox::commands: 10/10 miners stopped successfully
```
Stop mining on IP address(es) defined in the text file `input.txt`
```bash
./braiins-toolbox miner stop --ip-file 'input.txt'
```
```
2023-05-07T20:32:49.227703Z INFO scan: braiins_toolbox::scanner: scanning 1 ip addresses...
2023-05-07T20:32:49.395999Z INFO scan: braiins_toolbox::scanner: discovered 1 miners
2023-05-07T20:32:49.396000Z INFO scan: braiins_toolbox::scanner: miner stop is supported for 1/1 miners
2023-05-07T20:32:49.396025Z INFO braiins_toolbox::commands: running miner stop on 1 miners...
2023-05-07T20:32:49.524623Z INFO braiins_toolbox::commands: 1/1 miners stopped successfully
```
### Restart
Users can restart mining remotely in a batch by using the `restart` command as follows:
```bash
./braiins-toolbox miner restart [OPTIONS] >
```
where:
- the fact that `miner restart` command is used tells the Toolbox that the defined devices should restart mining
- `[OPTIONS]` is a (possibly empty) list of options to be used during discovery scanning and restart
- `[IP_LIST]` is a list of IP addresses or ranges separated by space(s) with each member having the form of `...`, where each `` is either an integer number between `0` and `255`, `range` of two integers between 0 and 255 (i.e., I1-I2 with I1 ≤ I2) or symbol `*` representing the whole range
- or instead of `[IP_LIST]` it is possible to apply IP addresses as an input from a text file with `--ip-file `
#### Options
Available options are just the global one, [see here](/braiins-toolbox/running.md#global-options).
#### Help
Calling help command serves as a quick description of the command:
```bash
./braiins-toolbox miner restart --help
```
```
Restart Braiins OS miners
Usage: braiins-toolbox miner restart [OPTIONS] >
Arguments:
[IP_LIST]... List of IP addresses or ranges
Options:
-i, --ip-file Path to a file containing a list of IP addresses or ranges, one per line
--include-public-ips This switch removes the restriction that only private and link-local IP addresses
are scanned by default
--pool-presets-file-path Path to file with pool presets
-p, --password Override default password
-t, --timeout Timeout for network operations [default: 10s]
-r, --scan-rate Number of IP addresses scanned per second. Decrease when running over a VPN or
with an unstable or slow connection. Increase when running on the same local
network where all miners are located [default: 250]
--logfile-path Path to file where debug log file
--max-log-size Maximum size for all rolling log files combined [default: 1GB]
--print-results Print a per-device result table after batch operations
--result-format
Output format for per-device results (requires --print-results) [default: table]
[possible values: table, csv]
--result-file Write per-device results to a file instead of stderr (requires --print-results)
-h, --help Print help
```
#### Usage Examples
Restart mining on defined IP address(es)
```bash
./braiins-toolbox restart '10.10.10.2'
```
```
2023-05-07T20:32:49.227703Z INFO scan: braiins_toolbox::scanner: scanning 1 ip addresses...
2023-05-07T20:32:49.395999Z INFO scan: braiins_toolbox::scanner: discovered 1 miners
2023-05-07T20:32:49.396000Z INFO scan: braiins_toolbox::scanner: miner restart is supported for 1/1 miners
2023-05-07T20:32:49.396025Z INFO braiins_toolbox::commands: running miner restart on 1 miners...
2023-05-07T20:32:49.524623Z INFO braiins_toolbox::commands: 1/1 miners restarted successfully
```
```bash
./braiins-toolbox miner restart '10.10.10.*'
```
```
2023-05-07T20:32:49.227703Z INFO scan: braiins_toolbox::scanner: scanning 256 ip addresses...
2023-05-07T20:32:49.395999Z INFO scan: braiins_toolbox::scanner: discovered 10 miners
2023-05-07T20:32:49.396000Z INFO scan: braiins_toolbox::scanner: miner restart is supported for 10/10 miners
2023-05-07T20:32:49.396025Z INFO braiins_toolbox::commands: running miner restart on 10 miners...
2023-05-07T20:32:49.524623Z INFO braiins_toolbox::commands: 10/10 miners restarted successfully
```
```bash
./braiins-toolbox miner restart '10.10.10.1-10'
```
```
2023-05-07T20:32:49.227703Z INFO scan: braiins_toolbox::scanner: scanning 10 ip addresses...
2023-05-07T20:32:49.395999Z INFO scan: braiins_toolbox::scanner: discovered 10 miners
2023-05-07T20:32:49.396000Z INFO scan: braiins_toolbox::scanner: miner restart is supported for 10/10 miners
2023-05-07T20:32:49.396025Z INFO braiins_toolbox::commands: running miner restart on 10 miners...
2023-05-07T20:32:49.524623Z INFO braiins_toolbox::commands: 10/10 miners restarted successfully
```
Restart mining on IP address(es) defined in the text file `input.txt`
```bash
./braiins-toolbox miner restart --ip-file 'input.txt'
```
```
2023-05-07T20:32:49.227703Z INFO scan: braiins_toolbox::scanner: scanning 1 ip addresses...
2023-05-07T20:32:49.395999Z INFO scan: braiins_toolbox::scanner: discovered 1 miners
2023-05-07T20:32:49.396000Z INFO scan: braiins_toolbox::scanner: miner restart is supported for 1/1 miners
2023-05-07T20:32:49.396025Z INFO braiins_toolbox::commands: running miner restart on 1 miners...
2023-05-07T20:32:49.524623Z INFO braiins_toolbox::commands: 1/1 miners restarted successfully
```
### Pause
Users can pause mining remotely in a batch by using the `pause` subcommand as follows:
```bash
./braiins-toolbox miner pause [OPTIONS] >
```
where:
- the fact that `miner pause` command is used tells the Toolbox that the defined devices should pause mining
- `[OPTIONS]` is a (possibly empty) list of options to be used during discovery scanning and pause
- `[IP_LIST]` is a list of IP addresses or ranges separated by space(s) with each member having the form of `...`, where each `` is either an integer number between `0` and `255`, `range` of two integers between 0 and 255 (i.e. I1-I2 with I1 ≤ I2) or symbol `*` representing the whole range
- or instead of `[IP_LIST]` it is possible to apply IP addresses as an input from a text file with `--ip-file `
#### Options
Available options are just the global one, [see here](/braiins-toolbox/running/index.md#global-options).
#### Help
Calling help command serves as a quick description of the command:
```bash
./braiins-toolbox miner pause --help
```
```
Pause mining
Usage: braiins-toolbox miner pause [OPTIONS] >
Arguments:
[IP_LIST]... List of IP addresses or ranges
Options:
-i, --ip-file Path to a file containing a list of IP addresses or ranges, one per line
--include-public-ips This switch removes the restriction that only private and link-local IP addresses
are scanned by default
--pool-presets-file-path Path to file with pool presets
-p, --password Override default password
-t, --timeout Timeout for network operations [default: 10s]
-r, --scan-rate Number of IP addresses scanned per second. Decrease when running over a VPN or
with an unstable or slow connection. Increase when running on the same local
network where all miners are located [default: 250]
--logfile-path