System requirements:

ASICs or FPGAs such as those from Avalon, ASICMINER, Butterfly Labs, BitForce, Icarus and BlueFury

Discrete GPU (v3.7.2 and lower only)

nVidia, AMD or Intel Iris

Warning:

The cooling design of most compact Macs such as MacBooks, iMacs and Mac Minis, despite having powerful GPUs, will usually not cope with constant usage leading to a high risk of thermal damage. It is highly recommended not to mine on a "compact" Mac unless it is to a USB device. Take steps to adequately cool your device and/or proceed at your own risk.

This page hosts unofficial universal binaries for Mac OS X 10.5 through 10.9 (Intel and PPC), which you can use to run cgminer on your Apple Mac. Original documentation and author notes for cgminer are available here. To support further development of cgminer, please consider a bitcoin donation to the primary cgminer developer, Con Kolivas, at 15qSxP1SQcUX3o4nhkfdbgyoWEFMomJ4rZ.

If your are having problems with cgminer recognizing your devices, you may have conflicting third-party USB drivers installed on your Mac. See the included README file for details on how to temporarily disable them.

Previous cgminer for Mac OS X releases

There's a workaround in this version to minimise the risk of the man-in-the-middle attack of redirecting you to a different pool you don't want to be hashing on. Stratum reconnect will only honour the request if the reconnect is to a server with the same domain name.

Fix for some overflow errors on stats with massive hashrates/shares.

Fix a major memory leak which mostly affected hashfast users.

Fix for a failed connection after a redirection that would then never return.

Devices with unique serial numbers of 4 or more characters will now be displayed by their serial number in the status bar.

Support for new firmware for OneStringMiners that will identify themselves as OSM devices.

Spondoolies driver. Note this is for dedicated hardware attached to a beaglebone so the code should not be compiled into a generic use-everywhere binary.

Add API output for spondoolies driver.

Add temperature to spondoolies API output.

Update to bi*fury driver (bxf) to support many chips, it will report up to 6 chips as HXF for hex*fury and more than that generically as MXF which currently is how the onestring miners appear until newer firmware comes out uniquely identifying them.

Fixed the output for the proper amount of chips in *XF devices.

Fix for solo mining to detect when we are mining on an orphan branch and switch to the correct one.

Fix for syslog.

Fixes for building on windows.

Much faster startup for hashfast devices, the more devices the bigger the speedup.

During network outages the devices hashrate would appear static, this has been fixed.

Did a major rewrite of the code that writes and parses the config files. Now if you choose [W]rite from the [ S]ettings menu it should write most of the options you've given on the command line. Some options were never written correctly and many weren't written at all previously.

Changed the toggling display to sit on the most important screen and not toggle by default, but it can be re-enabled via the [D]isplay menu.

The hashrate line for per-device also includes the Work Utility at the end now instead of the alternate screen to better fit within 80 columns.

Added a --widescreen option by request which does not toggle and shows all information. This can be enabled/disabled via the display menu.

The --device and --remove-disabled commands have been removed. They are a hangover from the GPU days and choosing devices with this command does not give any meaningfully reliable way of choosing devices.

Added checking for any number of chips on bi*fury (BXF) devices and added the extra output in the API for them.

Hexfury USB sticks should now be detected and come up as HXF instead of BXF.

BXF bits can now be configured on the command line in case people wish to push the maximum for hardware modded devices (normally 54).

Solo miners can now add their own signature of up to 32 characters to the coinbase with the --btc-sig option.

miner.php updates.

Fixed getwork share submission which was broken for the rare pools remaining that still use it.

Added rules for using cointerra on PC in case anyone besides me actually does this.

Revamped the hashrate meter to be far more reliable internally.

Added rolling hashrates for 1 min, 5 min and 15 mins to the main display and per device to the API as well.

Revamped the display since it was getting too wide: It now is back to the narrower size it was a few versions ago and toggles between the different data at regular intervals based on the opt log interval variable. Toggling can be disabled via the Display menu.

Added serial number to the unique identifier on-screen when it exists instead of an arbitrary device number. This currently only tags hashfast, cointerra and BF1 devices which have serial numbers.

Bitcoind did not like lots of persistent connections at once meaning it would fall over if more than one cgminer instance was trying to mine at the same time from the one bitcoind instance. Cgminer now opens and closes the connection every time it talks to bitcoind allowing any number of cgminer instances to mine solo from the one instance. Confirmed working with 200TH of miners aimed at the one bitcoind...

Big endian hosts (like the antminer S1, avalon) did not work with solo mining.

Solo mining setups will not mine unless a btc address is specified now, and the address is displayed on startup if it exists.

Solo mining disconnections to bitcoind are handled better, not spawning more polling threads every failure.

Massive improvements to mining efficiency when using pooled GBT mining.

Stratum low level bugfixes that may have caused random corruption/crashes.

Miner.php updates

Drillbit updates

Antminer S1 updates

Fix for repeatedly trying to reset a usb device when it has failed.

Fix for Icarus devices (such as antminer U1 or block erupters) being switched off and not restarting.

More accurate hashrates on cointerra devices, with a more reliable bitmap of working cores and now a count

Per core cointerra hashrates

Fix for memory leak on hashfast devices.

Fix for crashes on multiple failed inits on hashfast devices.

Show what quadrant of a hashfast core has failed if possible

Fix for hashfast API stats output being invalid json

Hashfast api stats output names are unique making them more easily parseable

Inputting URLs without a prefix (such as http:// or stratum+tcp://) will now assume stratum to speed up initial connections.

On linux we no longer use sysv semaphores to prevent multiple instances of cgminer trying to use the same device, meaning you will no longer run out of semaphore resources or have failures to grab devices on restarting.

Fixed cgminer getting stuck at startup when no pool is valid and getting itself into an endless loop

Fixed AMUs being detected as failing and resetting them too early

Made the check for failing devices proportional to hashrate to not get false positives

Queue size is now adjusted up dynamically when it bottoms out regularly which it may on very high hashrates/many devices

Fixed ANU and other icarus devices falsely showing higher hashrates by calculating hardware errors - NOTE this means if you were seriously overclocking it before, your hashrate will appear to be lower now, but it was simply reporting wrong before.

Changed the priority of various threads to bias towards work generation instead of giving the mining threads priority.

Fixed a crash when a device drops out during an attempt to initialise

Ava2 voltage detection

Show the device number on the left without padding

Fixes for devices that ended in OFF state instead of dropping out to allow them to hot plug

Hashfast changes

Devices that are re-hotplugged are recognised by their name or serial number if possible and appear back as the same device number on screen

ANU devices aka AntminerU1 usb sticks will now take any arbitrary frequency with --anu-freq and cgminer will try to find the nearest frequency it can set it to, instead of being restricted to 25MHz increments.

Hashfast device failures will be detected sooner

Hashfast fan speeds by default will go down to 5%

The menu now shows hashfast clock speed as detected by the device (which may be different to the requested speed) and fanspeed%

Hashfast board temperature is now taken into consideration when looking for the hottest component and displaying temperature and adjusting fanspeed

Hashfast clock speeds per die in the API should more accurately represent what speed they really are.

Hashfast restarts should be a little more reliable

Klondike, avalon, bab, drillbit will display more info on screen

Pools that silently drop stratum shares submitted will not induce a memory leak in cgminer

If no connection is present at startup, cgminer will be able to connect to a dead pool later when it comes alive

./autogen.sh from git will not error if given no arguments but will instead not try to configure the build

A warning will come up if someone selects system libusb, advising against it (given how few versions of libusb actually work well).

Fix a couple of potential hangs

Temperature for devices that support it will now show up in the api devs command

Icarus and bitfury devices that stop producing shares will now be sent a reset after a minute of no activity, and if they do not respond within another minute will be dropped, allowing cgminer to attempt to re-hotplug them. This has been proven effective at bringing back U1 miners that stop hashing.

Fix unresponsive bitfury devices from ending up OFF that would not disappear and/or restart

Dynamic temperature based fanspeed and per-die clockspeed control for hashfast devices with the following new commands.
--hfa-fan Set fanspeed percentage for hashfast, single value or range (default: 10-85)
--hfa-temp-target Set the hashfast target temperature (0 to disable) (default: 88)
Defaults chosen are based on extensive discussion with the design engineers responsible for the silicon and boards and basically it will keep your hashfast devices as close to the starting clockspeed as possible while keeping under~95 degrees by initially increasing fanspeed, and then decreasing the clockspeed on the hottest dies discretely. The output can be watched via the API. Enduring sweltering temperatures of up to 44 degrees here has made for an excellent real world test for this code.

Numerous startup/reset/shutdown reliability improvements for hashfast

Send a ping to the hashfast device at regular intervals if we don't have any work for it just so it knows cgminer is still alive to try and minimise the dreaded watchdog reboots.

Lots of extra information in the hashfast API stats output.

Hashfast serial number is shown as a hex value now.

Better hashfast flushing of work on restarts - new firmware will build further on this.

Antminer U1 overclocking support with --anu-freq note:
By default, Antminer U1 devices run at a clockspeed of 200. This command allows
you to specify a chosen frequency to attempt to run all ANU devices at and the
value must be in increments of 25. Note that cgminer reports hashrate ONLY
FROM VALID HASHES so if you increase the frequency but your hashrate does not
increase or it decreases and hardware errors start showing up, you have
overclocked it too much. In the worst case scenario it will fail to start at
too high a speed.

You basically must use --icarus-timing=short additionally to get the maximum benefit out of the overclocking (at this stage).

Keep taking a trickle of work even if it's not being used just to keep an eye on pools and to keep the most recent work time up to date

Make the top "window" wider since hashes these days come in the many millions and don't fit into 80 characters

In verbose mode, the share above target message shows for which device

Rolled back to the last good working libusb - the alleged libusb/x merge did not bring improvements and added windows instability with spontaneous exiting

Handle better numerous non-terminal errors (the cgsem ones) that were leading to cgminer exiting

BAB improvements courtesy of Kano

Verbose mode will now show if it takes time to submit a stratum share, or it takes a long time to get a response from pools due to them lagging substantially, to help debug where latencies might be causing high stales.

Added a way to zero other stats within each driver when the zero stats command is given (though no driver currently uses it).

Fix one stale work item being passed to drivers after a block change.

Fix a rare usbutils crash

Pool diffs that are fractions only show one decimal place now.

In debug mode a message will show up if there are substantial delays in getting work.

Numerous fixes for behaviour surrounding USB errors - pipe and IO errors, and no more attempting to reset the device since it's rarely helpful and occasionally harmful.

Libusb and libusbx have finally reconciled their differences and merged all their fixes together into a new official libusb release, so the main change in this version is updating the core code to include this latest libusb. Hopefully this might increase compatibility with some USB3 hubs on windows and make it more reliable (based on the changelogs I can see in libusb). This is the reason for the minor version number update to 12 as it's quite a substantial code change, hopefully only for the better!

Increased the hashfast overheat limit default to 90 after extensive discussions with the engineers who designed the devices.

A proper working hashfast driver tested working on a real device, including the windows version.

Substantially updated BAB driver courtesy of Kano. Hopefully he can give us a summary of the changes there.

Generic fixes for the reconnect bug on btcguild (unsure if other issues still exist).

Work is discarded on a stratum reconnect message from the pool now (as btcguild uses) to avoid working on invalid work on switching URLs.

Fixed the stuck line at the top of the log window.

Message about block change detected no longer mentions longpoll.

API now has a field "Last getwork" in summary which can be used to see that we are still getting work from pools. This is useful if you are trying to determine if a device is dead for device reasons or simply isn't getting work from any pools. It uses the same numbering in seconds with the "Last Valid Work" returned in the device API. If "Last getwork" is not incrementing, there is no work for any devices.

Added a --nfu-bits command to allow you to set the clock speed on nanofury/icefury usb sticks. Note that the default was 54 so is now 50 to be in keeping with USB2 power limit standards. This means IT WILL BE SLOWER compared to 3.10.0 unless you change it with this option back to 54. The driver is otherwise unchanged so any other differences you see are pure variance.

Threads names have been changed so they will show up with different, consistent names in your process manager of choice.

Building will now not include libbitfury on every configuration unnecessarily.

Nanofury driver. These are set up the same as every other USB device is on cgminer. Tested on both windows and linux (sorry no osx to test). Note the hashrate is once again based on only valid shares so may appear lower than other software using this device. No HW errors are currently counted (though they're most definitely there in abundance due to bitfury design). This is a driver based on all the other ones out there with a completely rewritten model to suit how cgminer drivers work.

Fixes for various KnC hardware errors, with improvements to hashrate. Note this is not a comprehensive fix for the hardware errors specific to rEligius - you will find a substantial drop in hardware errors if you start cgminer with the quiet and text only options (-q -T). An updated binary is here: http://ck.kolivas.org/apps/cgminer/kncminer/

Updated bi*fury driver with support for the latest firmware. This includes dynamic clocking based on temperature which tries to maintain a constant temperature set intiially to 82 degrees but adjustable with --bxf-temp-target.

BFL SC devices will now throttle 3 degrees below cutoff (82 degrees) and cut off work at the lower 85 degrees, restarting when they get below 80. If you wish to aim for a higher maximum, use the --temp-cutoff feature (90 was the old maximum). If you set it to zero it will disable this behaviour. (I'm preparing for our summer here Wink)

BFL SC devices will be less aggressive with their fan control now, allowing temps to drift up a little more before going to maximum speed.

Fixes for builds with --with-system-libusb enabled not working with older libusbs. (Note that using this option is not recommended unless you can't install udev anyway).

Fixes for warnings with ./autogen.sh

Code cleanups of unused GPU code

Cgminer will now try to issue a USB reset on devices that have failed to hopefully get them back up and running again.

New driver for bi*fury devices. These will come up as BXF devices. Note that if you have one of these, having 2 bitfury chips they generate a LOT of heat and will need active cooling. The first firmware for them does not have a way to stop them mining so they will get dangerously hot if you don't point a fan at them and stopping cgminer won't even cool them down. This should be fixed in their next version.

Set priority of various threads high and low for poor performing hardware (e.g. wrt routers) or operating systems (i.e. windows) to try to minimise the influence of system usage in other ways from causing communication problems.

Fixed a problem where it was possible for cgminer to hang after getting notification of a new block when mining via getwork.

Low level communication fixes within libusb itself to support sending proper zero length packets on windows for more reliable communications (same as the lulz binary), along with automatically clearing pipe errors and not losing buffered data.

More low level avalon fixes.

Klondike fixes

Hashfast fixes

BaB fixes

Hardware errors on starting BF1 devices are now minimised

Fix for mining directly on a GBT port with --fix-protocol

--shares is now scaled relative to diff1 shares instead of absolute number

Updates to make USB writes more reliable. Should help more on windows than anywhere else.

Slight improvements to the blue and redfury drivers will decrease duplicates at startup, lost work across block changes, and will now show hardware errors - NOTE the hardware errors are not more than before, they simply weren't being reported before.

Numerous tweaks to improve Avalon behaviour (possibly still problematic on wrt hardware but works better on PC).

Updates to make USB writes more reliable. Should help more on windows than anywhere else.

Slight improvements to the blue and redfury drivers will decrease duplicates at startup, lost work across block changes, and will now show hardware errors - NOTE the hardware errors are not more than before, they simply weren't being reported before.

Numerous tweaks to improve Avalon behaviour (possibly still problematic on wrt hardware but works better on PC).

OpenCL now needs to be explicitly built into binaries with --enable-opencl; it is no longer built in by default (binaries built by me still include it).

Updated the build to not install opencl kernels when cgminer is built without opencl.

Added an option to build with the system libusb for when it's difficult to get all the dependencies built (like udev on MIPS) by using the --with-system-libusb option. NOTE: It is recommended to not use this option unless you cannot build udev on linux as the included libusb is the most stable version.

Updated klondike driver, now built into linux binary.

Improvements to support for BitBurner boards.

Lots of fixes for failures to shutdown and restart, including knowing about all USB transfers in flight and waiting till they're complete.

Updated the read mechanism on slower USB devices: instead of polling regularly, cgminer can now wait the full length of time to get results (which can be as slow as 15 seconds on some icarus devices), but it can cancel these transfers immediately once a block change is detected. The advantage of this is much less wasted CPU time, and much faster response to block change - i.e. lower CPU when there are many devices, and lower rejects. Currently this feature has been added to bitfury sticks and icarus devices. The stabilising of async transfers in cgminer made this change possible.

Timer updates on windows now using the native clocks and timers for higher accuracy timing and tighter control.

Fixed a minor timer bug.

Made one off I/O errors non fatal for devices now, so only if a device has repeated I/O errors will it consider the device dead.

Fixed a couple of hangs when shutting down - you will no longer get temps and fanspeeds in the final status line on shutting down, but at least it won't hang.

Failed connect to stratum as a message will only show in verbose logging now.

Smoother reporting of hashrate on BF1 devices.

Fix for the crash when --usb BAS: or similar commands were used when the relevant driver wasn't actually compiled in.

Fixes for CMR

Slower USB devices that die/are unplugged will now properly zombie.

A few more failure checks on starting BF1 devices.

Serious USB read or write errors will now be accompanied by a message during regular logging describing the error.

USB errors now use the internal libusb explanations.

Fixed a bug where some devices would never start hashing if your PC was up for a few days (specifically BF1 devices).

If we switch away from a pool in failover mode, we will now only switch back to it if it's up for at least 5 minutes to avoid reconnecting to pools that are only intermittently up - good for DDoS situations which we've seen a lot of lately.

Ztex driver and its bistreams have been REMOVED. No one was maintaining the code, it wasn't working, and it was making release archives much larger than necessary.

First draft of klondike driver - note binaries do not have this built in since the devices aren't in the wild yet.

When devices are unplugged on windows, cgminer will cleanly remove them now instead of getting into an endless loop of failing to talk to them with IO errors.

Statistics on locking delays in usb code (this will be deprecated in 3.6 branch due to changes in the locking design).

Other internal changes, fixes, low level code for further development.

Support for mining on BPMC redfury/bluefury bitfury based devices on linux and windows. Like every other USB device on cgminer, they will use the same WinUSB driver and require the same setting up. Binaries have bitfury support compiled in and if you are building binaries for yourself, they need to be enabled with --enable-bitfury.

CMR fixes to get it mining half decently again.

Code fixes to support current and devices with multiple USB interfaces.

Code changes to make it a lot less work to add new drivers.

tty devices will be reattached on shutting down cgminer cleanly on linux now.

Bugfixes for use of some usb buffers may lead to less corruption/apparent hw errors.

Buffering of extra data no longer appears on regular logging, only verbose and above.

Fixes for possible extra delays/stale work across longpolls (depended on driver).

Fixes for quota usage in --load-balance.

A fix for a bug that would randomly show a high best share that never happened.

Added ability to compile for stratum mining only, completely removing dependency on libcurl (must be expressly enabled at compile with with --disable-libcurl)

There are new sanity checks to prevent too high/low intensities for sha versus scrypt mining.

Benchmarking, which didn't work on scrypt, is no longer allowed.

New BFLSC command --bflsc-overheat allowing you to specify or disable the throttle temperature.

Bitburner (BTB) avalon clone device support

BTB voltage can be set

Avalon frequency and BTC voltage can now be set via the API.

Minor fix which could lead to less duplicate shares on avalons.

More usb debugging information

Fix a problem where a slow to respond pool would lead to cgminer simply disconnecting, leading to unnecessary disconnects. This has also sped up some communication operations when the other side doesn't respond.

Made the 5 second hashmeter dramatically smoother, being a true exponential decay based on time now.

Accepted and Rejected counts on screen now show shares scaled to difficulty, so each 10 diff share for example will increase accepted by 10. This should fix an awful lot of confusion regarding accepted/rejected/hw error ratios.

Reclaimed screen real estate by doing away with increasingly irrelevant U: figure since so few people run diff 1 now.

Feedback? Problems?

If it's a mac-specific problem or an issue with these builds, feel free to contact me directly using the methods below or start a dialog in the forums here. If your comments are regarding cgminer in general, you can contact the developers here.

Version 4.3.3 of cgminer for Mac OS X has been downloaded 91610 times (out of 294311 for all releases). Most people choose the full package (68%).Visitors downloaded with Mac OS X 10.9 (18%), 10.8 (5%), 10.7 (3%), 10.6 (3%), 10.5 (1%) and Windows (19%). PowerPC users account for 1% of downloads.