BFGMiner

A modular ASIC, FPGA, GPU and CPU miner written in C, cross platform for Linux, Mac, and Windows including support for OpenWrt-capable routers.
==Features==
* A variety of device drivers for Bitcoin (SHA256d):
** 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
** OpenCL GPUs, such as AMD Radeons
*** Kernels (including BFI_INT patching): Diablo, DiaKGCN, Phatk and poclbm
*** VECTOR support
*** Dynamic intensity that keeps desktop interactive under load and maximises throughput when desktop idle
*** Integrated overclocking and fan control (including automatic adjustment, if configured)
*** ADL device reordering by PCI bus ID
*** GCN (79x0) support
** CPU (not enabled by default nor included in Windows build)
** Coming soon:
*** ASICMINER ASICs
*** any other device provided for development
* Support for new getblocktemplate decentralized mining protocol
* Scrypt mining support for both CPU and OpenCL (GPU)
* Very low overhead free C code for Linux and Windows with very low CPU usage
* Long poll support - will use longpoll from any pool if primary pool does not support it
* epoll support for interrupting FPGA waiting when new work is available without timeout-looping
* Self detection of new blocks with a mini-database for slow/failing longpoll scenarios, maximum work efficiency and minimum rejects
* Heavily threaded code hands out work retrieval and work submission to separate threads to not hinder devices working
* Caching of submissions during transient network outages
* Preemptive fetching of work prior to completion of current work
* 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 (submitold also supported)
* Automatically detects failing pools and disables them
* Multi-device support (all or discrete selection)
* Summarised and discrete device data statistics of requests, accepts, rejects, hw errors, efficiency and utility
* Watchdog thread to restart idle threads but not crash machine if they don't respond
* Summary displayed when quitting
* Supports multiple pools with multiple intelligent failover mechanisms
* On the fly menu based management of most settings
* Trickling of extra work to backup pools if primary pool is responding but slow
* On the fly enabling/disable/restarting of devices
* Device temperature monitoring (for devices that support it)
* Reuses persistent connections when possible
* RPC +/- JSON interface for remote control
* Ability to cope with slow routers
* X-Reject-Reason support
* Lots of other stuff I can't remember. See options.
==See Also==
* Pooled mining
* Why a GPU mines faster than a CPU
==External Links==
* bfgminer project page on GitHub
* Binaries and Source - All Versions
* BitcoinTalk forum thread
* bfgminer compiled for Mac OS X
* Bitcoin Mining Software
==References==
Category:Miners
Category:Free Software
Category:License/GPL-3
Category:Open Source