New version: 3.12.1, 7th February 2014
Mostly lots of bugfixes and heaps of new features for hashfast devices with upgraded firmware (due out soon).Human readable changelog:
- Dynamic temperature based fanspeed and per-die clockspeed control for hashfast devices with the following new commands.
--hfa-fan <arg> Set fanspeed percentage for hashfast, single value or range (default: 10-85)
--hfa-temp-target <arg> 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.
- Fix for massive data over the API
- Other random fixes.Full changelog:
- Document new features for antminer U1 and hfa devices.
- Add support for ANU overclocking.
- Increase hfa fanspeed by more if we're rising in temp above the target than if
the temp is staying the same.
- Add debug output when get_work() is blocked for an extended period and add
grace time to the device's last valid work to prevent false positives for device
- Issue a shutdown prior to a reset command for hfa devices and lock access to
reads awaiting the response if the device is already running.
- Do not register as successful a hfa init sequence that reports the clockrate
- Show device info in noffset nonce share above target message.
- Widen lines in top menu to fit extra large share values.
- Only show one decimal place if pool diff is not an integer.
- Show serial number as a hex value in hfa verbose startup.
- Slowly remove work even if it's not being used to keep the getwork counter
incrementing even if work is not used and as a test that pools are still
- Increase the maximum diff between hfa dies to 100Mhz.
- Show which hfa die is bringing down all the others when decreasing all the
- Increase the decrease when temp has increased more and we want to decrease it
- Give device info with share above target message.
- Allow throttling of hfa dies more frequently and increasing of speeds less
- Wait after sending a hfa shutdown to allow the device to properly shut down
before possibly sending it more commands.
- Minimise the die clock differences in hfa to no more than 50Mhz.
- Check for when errno is set on windows as well as the windows variant for
- Revert "Update to libusb-1.0.18"
- Disable fan/die clock control in hfa if the firmware does not support it, with
- Add ability to enter ANU frequency as a multiple of 25 from 150-500.
- Decrease hfa clock by 10 if a reset is attempted due to the device remaining
- ifdef out icarus options unused without icarus built in.
- Reorder command line options alphabetically.
- Add no matching work to hfa API output.
- Change various logging message levels in the hfa driver.
- Only adjust clocks if there is no restart in hfa to avoid 2 restarts back to
- Ensure we iterate over all dies adjusting temperate for hfa by starting
iterating after the last die modified.
- Clamp initial hfa fanspeed to min/max if passed as parameters.
- Allow hfa fanspeed to be set via command line.
- Further relax the target temperatures on hfa driver, targetting 88 degrees.
- Try one more time to get the hfa header on init since it can take 2 seconds
for all 3 boards on a sierra.
- Update authors for removal of gpu/scrypt.
- Wait for 5 temperature updates in hfa before adjusting fanspeed.
- Have some leeway before starting to throttle hfa dies.
- Use increments of 10 when increasing hfa clock since it may not have 5 MHz
- Only perform a hfa fan speed update if we have new temps to work with.
- Correctly measure the hfa max temp and smooth out the changes in its value.
- Choose better defaults for min/max/default fan settings for hfa driver.
- bab - reduce def speed, fix speed staying in ranges and report bank/chips in
- bab - add info about number of boards/chips to each Dead Chain
- These may not be longs (eg: OSX)... fo a safe cast to ensure.
- bab - add dead boards and dead chains to stats
- Add fanspeed to hfa api output and set initial fanspeed to 10%
- Add hfa fanspeed control to try and maintain a target temperature.
- API-README correct new text format documentation
- API allow multiple commands/replies in one request
- Add op commands necessary to control hfa fanspeeds.
- Add OP_FAN to hf protocol header.
- Always show the stratum share lag time in debug mode.
- Add stratum share response lag time to verbose output if it's greater than 1
- Add stratum share submission lag time to verbose information if it's over 1
- Check for more interrupted conditions in util.c and handle them gracefully.
- Send a ping to hfa devices if nothing is sent for over 5 seconds.
- Add OP_PING to hfa commands
- Display the hfa serial number as a hexadecimal value.
- Add the ability to display a hexadecimal 32 bit unsigned integer to the API.
- Limit all hfa restarts for temperature control to no closer than 15 seconds
- Allow the hfa temp target to be disabled by setting it to zero.
- Handle interruptions to various select calls in util.c
- Add sanity check for silly overflows in hfa die temperature readings.
- Add per-die throttling control for hfa driver based on each die's temperature,
issuing a suitable reset to maintain the temperature below a configurable target
- Update hf protocol
- Do not memcpy in usbutils unless data was transferred.
- Send a full allotment of jobs to the hfa device after a restart instead of
reading the status.
- Export the flush_queue function for use by drivers.
- Remove wrong goto
- Remove the unqueued work reference when we discard work from get queued as
- Wake the global work scheduler when we remove a work item from the unqueued
- Discard work that is stale in the get_queued() function, returning NULL
- Add a call to a driver specific zero stats function when zero stats is called
to allow each driver to reset its own stats as well if desired.