cgminer Changelog

What's new in cgminer 4.3.3

May 13, 2014
  • Fix for a huge long-standing memory leak with the BXF driver which affected bi*fury, hex*fury and OneString miners.
  • Formatting fixes for miner.php

New in cgminer 4.3.2 (May 3, 2014)

  • 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.
  • Support for OSM debugging and LED modes.
  • A1 driver updates.

New in cgminer 4.3.0 (Apr 24, 2014)

  • 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.

New in cgminer 4.2.3 (Apr 4, 2014)

  • 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.
  • Other low level bugfixes/improvements.

New in cgminer 4.2.2 (Apr 1, 2014)

  • Fix for memory leaks when mining solo
  • Fix for a rare corruption possibility with solo mining.
  • Support for a whole lot more USB hubs on windows.
  • 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.
  • Support reading configuration files with -c command from web URLs.
  • Fixes for building with libcurl disabled.
  • Other minor bugfixes and trivial changes.

New in cgminer 4.2.1 (Mar 27, 2014)

  • 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.
  • Low level optimisations for solo mining
  • AntminerS1 fixes to decrease CPU usage and actually honour overheat conditions.
  • Network diff when submitting a block is shown correctly on screen when >2billion.
  • Build fixes for avalon2
  • miner.php improvements

New in cgminer 4.1.0 (Mar 10, 2014)

  • Zero stats will now show the correct average hashrate per device.
  • Fixed the high CPU usage which led to eventually slowing down of hashrates over time.
  • Respect the -Q value by slightly changing its meaning to be the highest value it can reach, defaulting to 9999. Regular users need not do anything with this value.
  • Fixed the hex32 api values (currently only hashfast serial number) returning invalid JSON over the API.
  • New driver - BXM for an upcoming two bitfury chip USB stick courtesy of Goodney, along with an overclocking option with --bxm-bits
  • New driver - merged the bitmain S1 driver
  • Try harder to shut cgminer down fully on quit/restart/--shares end.
  • Fix cgminer shutting down and hanging when a grossly invalid stratum message is received.
  • Fix cointerra hashrate display to show a share based hashrate so that the displayed hashrate should match the pool hashrate.
  • Other low level bugfixes and improvements and anticipatory changes.
  • Hashfast improvements:
  • Dramatic decrease in CPU usage for all existing firmwares since they don't internally nroll time.
  • Latest version now works with older 0.2 firmwares
  • Only decrease the clockspeed if a device fails in less than an hour at its current clock speed
  • New feature allows per-device settings

New in cgminer 4.0.1 (Mar 1, 2014)

  • 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
  • More information in API stats
  • Updated udev rules file to allow regular users to update firmware
  • Fixes for corrupt message reading and runs of crc errors
  • Ability to disable the core shedding feature in new firmware
  • Numerous low level fixes

New in cgminer 4.0.0 (Feb 21, 2014)

  • Cointerra driver
  • Bitmine A1 driver [not included in Mac build]
  • Avalon2U driver
  • Wider status window
  • 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
  • Bab driver updates disabling cores that stop working and reduce the cpu usage substantially
  • miner.php updates
  • Allow benchmarking from a --benchfile
  • Other minor bugfixes and trivial cosmetic differences

New in cgminer 3.12.3 (Feb 10, 2014)

  • Fix for the sitting idle doing nothing bug.
  • Add temperature to API devs call for hash fast devices

New in cgminer 3.12.2 (Feb 8, 2014)

  • Fix for the sitting idle doing nothing bug.
  • Brought back USB reset attempts on communication errors.
  • Fixed the need for adding icarus-timing when overclocking antminer U1devices.

New in cgminer 3.12.0 (Jan 31, 2014)

  • Antminer U1 support
  • 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.
  • Fixed a crash in the nanofury USB stick code.
  • Fixed the displayed diff shown being wrong when solo mining.
  • bab driver fixes courtesy of Kano.

New in cgminer 3.11.0 (Jan 27, 2014)

  • 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.
  • The crash on device removal has been fixed.
  • Fixes for lean configurations that failed to build.

New in cgminer 3.10.0 (Jan 9, 2014)

  • Human readable changelog:
  • Minion driver courtesy of Kano. (More info about this from him hopefully).
  • 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.
  • Hashfast driver fixes (no I still don't have one).
  • Fixed BXF devices slowing down over time.
  • Full changelog:
  • Set the mcp2210 transfer setting only when it changes.
  • Buffer sizes in nanofury device data are unnecessarily large.
  • Only perform spi reset on init, not with each transaction.
  • Remove spi_detect_bitfury at nanofury startup and fix incorrect refresh time.
  • Use a simple serialised work model for nanofury
  • Use bitfury_checkresults to avoid hashing results twice in nanofury.
  • Export bitfury_checkresults in libbitfury
  • Pass extra parameters for later use in libbitfury_sendHashData
  • Avoid double handling bswap of the nonce value in nanofury
  • Avoid unnecessary rehashing in nanofury nonce checking.
  • Remove the unused portions of atrvec in the nanofury driver
  • Age work in nf1_scan to avoid risk of losing a work item and leaking memory.
  • bitfury_work_to_payload is double handling the data unnecessarily
  • Default bitrate on nanofury should be 200kHz
  • localvec should be only 80 bytes not 80 words
  • Wrong init value for nanofury
  • Remove unused rehash values from nanofury driver.
  • Only update info work in nanofury driver when it's empty.
  • Fill the appropriate type of usb transfer when we know if it's an interrupt
  • transfer instead of a bulk one.
  • Use the internal knowledge of the usb epinfo to determine whether we should be
  • doing an interrupt instead of a bulk transfer, and do not send a ZLP if so, and
  • limit read transfer to expected size automatically.
  • Avoid bin2hex memleak when we start getting nanofury nonces
  • Set atrvec only once and use a local array for each device's work.
  • Cancel any spi transfers on nf1 close
  • Add bitfury detection loop to nanofury startup
  • Move spi init code to libbitfury
  • Remove inappropriate extra config reg in nanofury setup.
  • Status 0x30 should never happen with spi transfers.
  • Fix spi transfer data size transmission mistakes.
  • Minor correctness change in spi_add_data
  • spi_txrx should always send and receive the same size message
  • Random libbitfury changes.
  • Set value of gpio pins to low on closing nanofury.
  • Fix more init sequence for nanofury.
  • Add basic initialisation for nf1 devices
  • Add basic nf1_scan function.
  • Basic import of libbitfury functions from nanofury branch
  • Import functions from nanofury fork for libbitfury
  • Meter out spi sends to only 2 bytes at a time, offsetting according to how
  • much data returns.
  • Use the usb read limit function for mcp2210 reads.
  • Provide a way for usb reads to just read the size asked for with a limit bool.
  • Get pin value after an nf1 spi reset.
  • Make sure what we send in the buffer doesn't change during spi reset for
  • nanofury
  • Remove all standalone gpio setting change functions in mcp2210 and just use
  • the one global setting function.
  • Set gpio values in the one function with all values for nanofury.
  • Provide a helper function for setting all mcp2210 gpio settings.
  • Add a helper function for getting all mcp2210 gpio settings.
  • Set all pin designations and directions in one call for nanofury and don't
  • bother storing their values in the info struct.
  • Provide helper functions for setting all pins and dirs on mcp2210
  • Set all nanofury pin designations in one call
  • Provide a helper function for setting all pin designations on mcp2210
  • Store the spi settings in a struct for nanofury devices.
  • Check the received status in mcp2210 spi transfers and repeat a zero byte send
  • if it's in progress.
  • Set the bytes per spi transfer prior to each mcp2210 transfer.
  • Separate out the send and receive functions for mcp2210 and check response
  • value in return.
  • Check that mcp2210 spi settings have taken and check the value of the pin
  • during nanofury setup.
  • Don't set GPIO pin designations after initial setting in nanofury since the
  • direction and values will be changed.
  • Provide an mcp 2210 set gpio input helper function that sets a pin to gpio and
  • input.
  • Move the set gpio output function to a generic mcp2210 version from nanofury
  • which also sets the pin to gpio.
  • Implement a nanofury txrx with a larger buffer and cycling over data too large
  • to send.
  • Implement magic spi reset sequence for nanofury.
  • Add more spi magic to the nanofury init sequence.
  • Add lots of magic spi initialisation to nanofury.
  • Export reused components of bitfury management into a libbitfury and use for
  • bab and bitfury drivers.
  • More init sequence for nanofury and implement a close function that sets all
  • pins to input.
  • Reword offset header handling in hfa_get_header
  • Sanity check in hfa_get_header
  • Add more checks in hashfast driver for lost devices.
  • Change spimode and send more data in nanofury setup.
  • Add basic setup  comms to nanofury.
  • Implement an mcp2210 spi transfer function.
  • Set the initial spi settings for nanofury driver.
  • Provide a helper function for gettings mcp2210 spi settings.
  • Implement an mcp2210 set spi transfer settings function.
  • Cancel any SPI transfers in progress in nanofury after initial setup.
  • Implement an mcp2210 spi cancel function.
  • Return only binary values for mcp2210 GPIO values.
  • Set GPIO LED and power to high in nanofury driver.
  • Implement initial part of nanofury init sequence for GPIO pin settings and add
  • output debugging of set values.
  • Add helper functions for getting and setting mcp2210 gpio pin designations.
  • Don't return an error in usb read if we've managed to get the whole read
  • length we've asked for.
  • Use correct endpoint order for nanofury devices and read with a short timeout
  • on return loop from send_recv.
  • Add mcp2210 helper functions for getting and setting one GPIO pin val and
  • direction.
  • Create a generic gpio pin struct and add helpers for mcp get pin val and dirs.
  • Check the receive msg of a send/receive cycle on mcp2210 matches the send
  • message.
  • Add a set of usb commands to the usbutils defines for mcp2210 comms, and use
  • the same command name for send and receive.
  • Create a generic mcp2210 send_rcv function.
  • Include mcp header for bitfury and fix extra params in macro.
  • Add basic SPI comms defines for mcp2210 and build rules for bitfury.
  • Minion set some core defaults similar to final requirements
  • minion compile warnings
  • move driver-minion.c to main directory
  • Minion with ioctl() stats, settings to attempt to emulate 21TH/s
  • minion driver with results interrupt working
  • tested working driver-minion.c without interrupts
  • Working driver-minion.c v0.1
  • driver-minion.c compilable untested
  • minion driver incomplete
  • Add minion driver into cgminer
  • Add basic device detection and updated udev rules for nanofury devices.
  • Remove GPU from share logging example.
  • Don't keep resetting BXF clockspeed to default.
  • If no pools are active on startup wait 60s before trying to reconnect since we
  • likely have the wrong credentials rather than all the pools being out.
  • Discard bad crc packets for hashfast driver instead of trying to process them.
  • Update documentation for modified avalon options syntax and document relevant
  • 55nm details.
  • Modify the auto tuning sequence to work with the 50MHz changes required to
  • work with 55nm Avalon.
  • 55nm avalon requires the delays between writes reinstated for stability.
  • Use an equation instead of a lookup table to set the frequency for 55nm avalon
  • allowing arbitrary values to be used.
  • Make the result return rate low detection on avalon less trigger happy.
  • Always send the bxf device a clockspeed after parsing the temperature in case
  • the device has changed the clockspeed itself without notification.
  • Fix BXF being inappropriately dependent on drillbit.

New in cgminer 3.9.0 (Dec 27, 2013)

  • Driver for drillbit ASICs.
  • 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.
  • Much more API output for bxf devices.
  • Less spewing of errors when bxf devices are removed/die
  • Updates to hashfast driver code
  • Fixes for working with proxies that use small nonce2 sizes

New in cgminer 3.8.5 (Dec 10, 2013)

  • 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.
  • Dramatically improved communications for USB1.1 devices on hubs that don't have multiple transaction translators or have none (like USB3 hubs). The USB1.1 devices currently affected are Asicminer Block Erupters and Red/Blue fury USB sticks.
  • Fixes for leaving too many open files problem with repeatedly hotplugging devices on low resource systems (eg RPi).
  • Fix a potential API crash.
  • The build will be much quieter around the jansson part now.
  • More hashfast driver additions (no, the real hardware still doesn't exist).

New in cgminer 3.8.4 (Dec 2, 2013)

  • More fixes to make usb communications more forgiving and robust which may improve reliability and speeds.
  • Timeout overruns won't show unless you have verbose mode on now.
  • Voltage displayed for BFL SC devices is the 2nd voltage which is allegedly more relevant.
  • API stats for BFL SC devices now show a nonce and hardware error count per core.
  • Json API commands should work again.
  • More fixes for upcoming hashfast hardware.
  • Lowmem mode has been extended to use USB sync transfers
  • BXF devices should align better with other devices on the display.
  • Devices will now initialise before trying to connect to pools.

New in cgminer 3.8.3 (Nov 25, 2013)

  • Average hashrate shown for BF1 and BXF devices will now rise quickly on startup.
  • The bi*fury device in its release form had different firmware from my development one so the driver has been updated to work with it.
  • Fixed the bxf device to align in the display column if temperature went above 100 degrees.
  • Don't keep displaying json auth failed on stratum pools that are misbehaving except at verbose logging level.
  • Very small improvement in hardware error rate on some USB devices due to the way return messages are handled.
  • Fix a memory leak when json is used to communicate with the RPC API
  • Avalon improvements to fix the sudden drops in hashrate (these fixes are all already in the last avalon firmware I uploaded).
  • Unlimited re-hotplugging of devices that have USB failures and turn into zombies but have had their USB reset by the operating system.

New in cgminer 3.8.2 (Nov 18, 2013)

  • Human readable changelog:
  • 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
  • Fix for a rare crash on startup
  • Other low level fixes
  • More verbose documentation
  • Full changelog:
  • Add more verbose documentation to the readme files for windows users.
  • Add more information on libusb failure to init telling users to check README
  • file.
  • Add information on unloading cdc drivers on osx to README
  • Prevent a deadlock with use of restart_threads by spawning a thread to send
  • the driver flush work messages.
  • Set priority of various threads if possible.
  • Add bxf data to api output.
  • Do not hold the mining thread lock in restart_threads when calling the driver
  • flush work commands.
  • Send extra work regularly to the bxf device and parse the needwork command by
  • sending the amount of work it requests.
  • Allow messages to have arbitrary offsets in the bxf parser in case we have
  • lingering buffered data.
  • Send the maxroll command to the bxf driver and store the value to see if we
  • need to update it.
  • Add sending of flush command to bxf on flush_work
  • Add flush and version commands to bxf start up, flush buffer and try to parse
  • version response string.
  • Abstract out bxf recv message.
  • Add extra bxf commands to usbutils
  • Abstract out bxf send message to allow us to easily add extra commands.
  • Don't run device restart code if the device is not enabled.
  • Expand size of bitfury statline
  • Various driver fixes for bitfury devices, including a flag from when first
  • valid work appears.
  • Look up work results in bxf driver from correct variable.
  • Correct incorrect error code in bxf driver for usb writes and add debugging.
  • Add bxf details to usbutils.
  • Implement a statline showing temperature for bxf
  • Add api data for bxf device, sharing the hashrate function with bf1.
  • Count no matching work as a hw error on bxf
  • Add BXF to udev rules.
  • Work id should be hexadecimal in bxf messages.
  • Add unrecognised string debugging to bxf driver.
  • Implement the main scanloop for bxf, trying to prevent it from ntime rolling
  • work if the work protocol does not allow it.
  • Parse bxf work submits fully, submitting the results.
  • Provide a function for setting the work ntime.
  • Implement a skeleton parse bxf submit function.
  • Use the bxf read thread to set the device target and send its first work item.
  • Implement a bxf send work function and set update and restart functions to
  • sending new work since that's the equivalent for that device.
  • Add temperature parsing to bxf driver
  • Create and destroy a basic bxf read thread.
  • Remove the buffer from bitfury info since it is only used on one pass in the
  • bf1 device.
  • Add a rudimentary bxf detect one function.
  • Rename all bf1 specific functions in the bitfury driver, using a switch to
  • choose correct function.
  • Rename bitfury_getinfo to bf1_getinfo since it's unique to bf1 devices.
  • Separate out the bf1 reset from bitfury reset.
  • Store the bitfury identity in the info struct.
  • BaB updated tested OS comment
  • Uniquely identify the BF1 and BXF bitfury devices.
  • Remove the default libusb WinUsb pipe policies that don't suit us.
  • Only set the winusb pipe policy if it doesn't match our requirements instead
  • of every transfer.
  • klondike dont try to flush if not initialised
  • api.c trylock() add missing locklock
  • Use our new zero length packet support directly in windows.
  • Enable support for zero length packet on windows and auto clear pipe stalls.
  • util.c: Decreasing reference count on allocated JSON obects to prevent memory
  • leak
  • api.c: Release apisock on error in api()
  • api.c: Release io_data->ptr when releasing io_data in io_free()
  • We can't connect to a GBT pool at all with fix protocol enabled.
  • Initialise the stgd lock mutex earlier to prevent dereferences when pool
  • testing occurs before it.
  • Klondike support I2C USB layout also as KLI
  • Return error codes in avalon_read() if they're not timeouts.
  • Break out of the avalon idle loop if we get a send error.
  • Set avalon ftdi latency to just less than the time it would take to fill the
  • ftdi buffer at 115200 baud
  • Update example.conf
  • Only limit packetsize on usb out writes.
  • We must chop up every 64 bytes returned on an ftdi chip, not just the first 2
  • bytes so revert to parsing the data internally in the avalon instead of using
  • usbutils' simple ftdi parser.
  • Only retry 3 times in hfa_reset.
  • Only add_cgpu in hashfast driver once we have a real driver set up.
  • Clean up properly if hfa_detect_common fails in the hashfast driver.
  • --shares should be scaled to diff1 not absolute number of shares

New in cgminer 3.6.6 (Oct 29, 2013)

  • Fix for avalon type hardware hanging.

New in cgminer 3.6.5 (Oct 29, 2013)

  • 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.
  • Buffering extra bytes message no longer shows up in verbose mode since it's a routine operation now.
  • More information is now shown when a usb error occurs.
  • miner.php updates
  • api updates
  • Lots of low level features added in preparation for newer drivers in development for upcoming hardware.

New in cgminer 3.6.4 (Oct 21, 2013)

  • Found the source of the memory leak on windows AND the source of the too many files open error on OSX. Both have been rectified, and fully asynchronous transfers are used on all OSes.
  • Fixed numerous causes of problems on shutdown.
  • Fixed some BFLSC parameters not being read properly.
  • Fixed the problem of lost communications and lots of errors on devices on shutdown and possibly unsuccessful shutdown/reset.
  • Fixed a bug where bogus work was being generated at extreme hashrates.
  • Decreased the overhead in generating more work for queued devices (eg BFLSC).
  • Fixes to klondike driver
  • Fixing the memory leak for remaining semaphores means we can go back to using
  • async transfers on other OSes with our own timeout management again.
  • Use the forcelog function on shutdown to cope with indeterminate console lock
  • states due to killing of threads.
  • Add a forcelog variant of applog which invalidates any console lock to force
  • output.
  • Send pthread_cancel to failed completion_timeout that has timed out.
  • Simplify queued hashtable by storing unqueued work separately in a single
  • pointer.
  • bflsc use getinfo chip parallelization if it is present
  • bflsc - fix brackets so [Chips] isn't always null
  • Remove unused variables.
  • Use cgcompletion timeouts for the unreliable shutdown functions on kill_work.
  • Fix cgcompletion return code and free on successful completion.
  • Provide a cg_completion_timeout helper function for unreliable functions that
  • takes arbitrary functions and parameters and reliably returns.
  • Perform sync transfers on shutdown to allow final transfers to complete.
  • Destroy cgsems used after transfers to not leave open files on osx.
  • klondike rewrite work control
  • allow __work_complete() access
  • miner.h allow devices to tv_stamp work

New in cgminer 3.5.1 (Oct 12, 2013)

  • 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.

New in cgminer 3.5.0 (Oct 5, 2013)

  • Add magic init sequence required on BF1 devices to get them mining on windows.
  • usbinfo.devlock is only ever write locked so convert it to a mutex
  • Icarus remove unneeded opt_debug tests due to applog being a macro
  • Icarus - CMR shouldn't wait the full timeout due to handle sharing
  • We should only yield once in cg_wunlock
  • Provide a function to downgrade a cglock from a write lock to an intermediate variant.
  • Deuglify use of _PARSE_COMMANDS macro expansions.
  • Deuglify use of usb parse commands macro in usbutils.
  • Use the driver add commands macros in api.c to avoid individually listing them.
  • Separate out asic fpga and opencl drivers in the driver parse commands macro for use individually as needed.
  • Use macro expansion in usb_find_devices to avoid explicitly listing them all.
  • Use macro expansion to iterate over all the drivers without explicitly writing them out in usbutils.c
  • Iterate over the bitfury offsets in order of decreasing likelihood.
  • Reattach the kernel driver on linux on usb_uninit.
  • Attach the kernel driver on failure to usb init on linux.
  • libusb kernel driver operations are only available on linux.
  • There is no need to get the external prototypes for drivers in cgminer.c any more.
  • Remove unnecessary gpu_threads initialisation.
  • Put avalon last in the sequence of adding drivers to prevent it trying to claim similar chip devices on startup.
  • Use macro expansion to iterate over all device drivers without needing to explicitly code in support in all places. Pass a hotplug bool to the detect() function to prevent opencl trying to hogplug GPUs.
  • Forward declare all device drivers in miner.h avoiding the need to export them everywhere else.
  • Add a noop function for driver detect when it's missing.
  • Reuse the DRIVER_ macros to avoid having yet another definition for DRV_
  • Use macro expansion to generate extern device_drv prototypes.
  • Create a macro list of drivers to enable easier addition of further drivers.
  • There is no point setting the BF1 preferred packet size to the maximum since it will do so automatically.
  • icarus ensure all cmr interfaces are initialised properly
  • usbutils - fix USBDEBUG warnings
  • Remove unnecessary steps in communicating with BF1 and just use USB interface 1.
  • usbutils - usb_bulk_transfer fix the buf/data fix
  • usb_bulk_transfer - use the allocated buffer
  • Set preferred packet sizes per interface on BF1.
  • usbutils allow PrefPacketSize per endpoint
  • Remove magic control sequences on open/close on BF1 and just flush the read buffers.
  • Check return codes in getinfo and reset and fail as needed in BF1.
  • Check return code for bitfury_open and release resources properly on failed initialisation.
  • Abstract out flushing of interrupt reads in BF1 devices.
  • Perform interrupt read after close message on BF1 as per serial close.
  • Perform interrupt read flush as per serial open on BF1 devices.
  • Add information for 2nd USB interface on BF1 devices and choose interface 1 for bulk transfers.
  • usbutils - bulk transfer copy test fix
  • usbutils - add USBDEBUG for usb_bulk_transfer
  • Add more read_ii variants to usbutils.
  • Name remainder of BFU usb commands used.
  • Use submit_tested_work in bitfury driver to avoid unnecessarily re-testing the work for validity.
  • Abstract out work submission once it's been tested, to be used by drivers that do their own internal validity testing.
  • Store the hash2 array in struct work for further reuse.
  • usbutils - which_intinfo not requried
  • Use the test_nonce function within submit_nonce and store the uint32 corresponding to hash2 37 for further use.
  • usbutils - interfaces must all be on one handle - ep implies the interface
  • avalon stats use exact type
  • Only set share diff if we've confirmed it's a share first.
  • Update ASIC-README for bitfury devices.
  • Use an array of offsets when checking nonces in bitfury_checkresults
  • Limit the duration we wait for reads in BF1 based on time already elapsed to account for other delays such as work restart messages or out of work.
  • Minimise size of serial string we copy in BF1 stats to avoid overflow.
  • Implement basic API stats for BF1 and increase array of results to check for the rare straggling result.
  • Space debug output for bf1 to separate from numerals.
  • Abstract out the bitfury open close and reset functions and use them on reinit.
  • Rename BF1 devices BF1
  • Check for work restart, breaking out early after usb reads in BF1.
  • Do not lose the first sets of results from BF1.
  • There is no point checking for results from the next round of work on BF1.
  • Last result returned by BF1 is an end of results marker so ignore it.
  • restart_wait should return 0 if thr_restart is true.
  • Remove unused code by bitfury driver since current driver uses serialized scanhash.
  • Meter out return of estimated hashes in BF1 to smooth out visible hashrate.
  • Optimise inner scanhash loop for bf1.
  • Add yet another backup work for triple buffering of work in bf1 to account for extra late results returned and don't check nonce offsets which appear to never return.
  • Name the work request and result usb commands for BF1
  • Define a mandatory upper limit to waiting for reset and data on BF1 based on full nonce duration.
  • Decrease usb buffering to verbose logging.
  • Add in first draft for a serialised work model sending/receiving data for BF1 devices.
  • Add complete close sequence to bf1 as it happens on serial.
  • Provide a bitfury identify function for bf1.
  • Reliably extract BF1 information at startup and reset the device.
  • Add commands for getting BF1 bitfury info
  • Add magic BF1 bitfury open and close control sequences.
  • Add BF1 detection code to bitfury driver.
  • Create basic placeholders for bitfury driver code.
  • Add bf1 device information to usbutils to enable device detection.
  • Add basic defines for building for bitfury devices.
  • Add redfury device to udev rules.
  • avalon: display the FPGA controller version on API
  • pool_active uninitialised_var rolltime
  • Use macro expansion to only need to define usb enums and commands in one place.
  • usbutils saving incorrect overflow buffer
  • ignore libusb.la and *.lo on linux
  • icarus support CMR with no extensions
  • usbtils - interfaces dont work yet in libusb windows so disable for that only
  • Provide a --disable-libcurl config option to build support for stratum mining only.
  • Fix the api-example.c compile under Linux
  • usbutils - only release the device once - for the first intinfo
  • usbutils set_interface is no longer valid
  • ubsutils interfaces much each have their own handle
  • usbutils kernel_detach should use the interface number
  • usbutils - allow the driver to change which_intinfo
  • Reset quotas on load balance for all pools at the same time to avoid running out during selection and unintentionally dropping to fallback.
  • Break out of select pool from a common point for appropriate debug messages and to avoid further tests.
  • usbutils correct/reverse CMR product numbers
  • usbutils specifically track handles and interfaces
  • change drivers to use usb_interface() - required for multi interface change
  • usbutils - allow a device to use multiple interfaces (and better var names)
  • Cast -1 to (char) to cope with different default char types on ARM.

New in cgminer 3.4.3 (Sep 14, 2013)

  • Build fixes for cgminer releases to build on OSX (building from git still requires massaging).
  • Fix for an extremely rare cause of crashes.
  • Updated the screen to show when there is block change notification with multipool strategies and stratum.
  • Don't show the "waiting for work" message unless it is longer than it takes to switch pools during lag periods.
  • Cope with trailing slashes being used on stratum based URLs.
  • miner.php updates.
  • Native proxy support on stratum for http1.0, http1.1, socks4, socks4a, socks5 and socks5h proxies without using libcurl for maximum stability.
  • A completely rewritten load-balance strategy that now supports per pool quota support.

New in cgminer 3.3.4 (Sep 3, 2013)

  • Fixed the breakage when mining on bitminter.
  • Fixed the performance regression on avalons
  • Added extra % counts to devs fields in API