BFGMiner
BFGMiner is free software for Bitcoin and other proof-of-work mining. It is written in C and has supported ASIC, FPGA, GPU, and CPU mining devices, along with pool failover, monitoring, dynamic clocking, fan-speed controls, proxy support, and a remote-control API. The upstream repository describes it as a multi-threaded, multi-blockchain, multi-pool miner.[1] It also includes support for OpenWrt-capable routers.
BFGMiner was important during the transition from GPU and FPGA mining to ASIC mining. For current Bitcoin mainnet mining, specialized SHA-256 ASIC hardware dominates. GPU and CPU mining is now mainly historical, educational, testing-oriented, or relevant to non-Bitcoin use cases unless a user has a specific supported purpose.
Features
Historically, BFGMiner has included support for ASIC and FPGA mining devices, OpenCL GPU mining workflows, CPU mining support for testing or non-Bitcoin use cases, multiple pools and pool failover, proxy support, local device monitoring and control, overclocking and fan-speed controls for supported hardware, getblocktemplate, APIs for monitoring and management, and OpenWrt-capable routers.
Hardware support has changed over time. Users should verify support for a specific device from the upstream repository, release notes, and current build options before purchasing or configuring mining hardware.
Device support
BFGMiner has included a variety of device drivers for Bitcoin SHA256d mining.
ASIC and FPGA devices
- Butterfly Labs's BitForce SC (ASIC) product line
- Avalon ASIC mining rig
- Butterfly Labs's FPGA BitForce Singles and MiniRigs
- Enterpoint's Cairnsmore1 FPGA mining board
- FPGA Mining X6500
- Qi Hardware's Icarus and Lancelot FPGA mining boards
- BTCFPGA's ModMiner Quad FPGA-based mining device
- Ztex's FPGA boards
- ASICMINER ASICs
- any other device provided for development
OpenCL GPUs
OpenCL GPU support has included devices such as AMD Radeons.
- Kernels, including BFI_INT patching: Diablo, DiaKGCN, Phatk, and poclbm
- VECTOR support
- Dynamic intensity that keeps the desktop interactive under load and maximises throughput when the desktop is idle
- Integrated overclocking and fan control, including automatic adjustment if configured
- ADL device reordering by PCI bus ID
- GCN (79x0) support
CPU
CPU mining support has existed, but was not enabled by default or included in the Windows build described by the older feature list.
Mining protocols and algorithms
- Support for the getblocktemplate decentralized mining protocol
- Scrypt mining support for both CPU and OpenCL GPU mining
- Long poll support, using longpoll from any pool if the primary pool does not support it
- Local generation of more valid work (rollntime) whenever possible, as supported on a per-work-item basis
- Prevention of stale work submission on new block;
submitoldis also supported - X-Reject-Reason support
Bitcoin Core's current mining RPC documentation includes getblocktemplate, getmininginfo, getnetworkhashps, submitblock, and related RPCs.[2][3]
Pool and network behavior
- Automatically detects failing pools and disables them
- Supports multiple pools with multiple intelligent failover mechanisms
- Trickling of extra work to backup pools if the primary pool is responding but slow
- Caching of submissions during transient network outages
- Preemptive fetching of work prior to completion of current work
- Self-detection of new blocks with a mini-database for slow or failing longpoll scenarios, maximum work efficiency, and minimum rejects
- Reuses persistent connections when possible
- Ability to cope with slow routers
Monitoring and control
- Multi-device support, including all-device or discrete-device selection
- Summarised and discrete device statistics for requests, accepts, rejects, hardware errors, efficiency, and utility
- Watchdog thread to restart idle threads without crashing the machine if they do not respond
- Summary displayed when quitting
- On-the-fly menu-based management of most settings
- On-the-fly enabling, disabling, and restarting of devices
- Device temperature monitoring for devices that support it
- RPC +/- JSON interface for remote control
Performance and platform details
- Very low overhead free C code for Linux and Windows with very low CPU usage
- Heavily threaded code that hands work retrieval and work submission to separate threads so device work is not hindered
- epoll support for interrupting FPGA waiting when new work is available without timeout-looping
- Support for OpenWrt-capable routers
Installation and security
Mining software has direct access to hardware and pool credentials, and may run for long periods on networked machines. Download BFGMiner only from trusted upstream sources, review release signatures or hashes where available, and avoid running unverified binaries on machines that hold wallet private keys or exchange credentials.
See also
External links
- BFGMiner source repository and project page on GitHub
- Binaries and Source - All Versions
- BitcoinTalk forum thread
- bfgminer compiled for Mac OS X
- Bitcoin Mining Software
References
- ↑ "BFGMiner source repository". GitHub. https://github.com/luke-jr/bfgminer. Retrieved 23 June 2026.
- ↑ "getblocktemplate (31.0.0 RPC)". Bitcoin Core. https://bitcoincore.org/en/doc/31.0.0/rpc/mining/getblocktemplate/. Retrieved 23 June 2026.
- ↑ "getmininginfo (31.0.0 RPC)". Bitcoin Core. https://bitcoincore.org/en/doc/31.0.0/rpc/mining/getmininginfo/. Retrieved 23 June 2026.