New version: 4.0.1, 28th February 2014
A few fixes for most users on top of 4.0, and some major improvements for hashfast users that hopefully will run in tandem with their 0.4 firmware release.Human readable changelog:
- 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 hotplug
- Hashfast changes:
Multiple devices are now added one by one by hotplugging according to name and then initialising instead of trying to initialise them together which made them fail previously.
Dropping the clock speed on a device failure is limited to default clock speed of 550 and the amount of drop per failure can be configured or disabled with:
--hfa-fail-drop <arg> Set how many MHz to drop clockspeed each failure on an overlocked hashfast device (default: 10)
If you overclock your hashfast device with --hfa-hash-clock and cgminer detects
it failing to return hashes, it will restart it at a lower clock speed if
possible. Changing this value will allow you to choose how much it will lower
the clock speed or to disable this function entirely.
Devices with newer firmware can be named using the op name feature, or cgminer will generically choose a suitable name for them and display it at startup
--hfa-name <arg> Set a unique name for a single hashfast device specified with --usb or the first device found
This command allows you to specify the unique name stored in nvram on a single
hashfast device. This name can be queried from the API stats command and comes
up as "op name". Discrete names are used by cgminer to try to maintain settings
across restarts, unplugs/hotplugs and so on. If this command is used by itself,
the name will be given to the first hashfast device it encounters and then
cgminer will proceed to go back to regular mining. If you have multiple devices,
it is best to discretely choose the device you wish to use with the --usb
command. For example
'lsusb' on linux shows the following devices (297c:0001 is a hfa device):
Bus 001 Device 079: ID 297c:0001
Bus 004 Device 042: ID 297c:0001
If you wished to name the second device Slug you would add the commands:
--hfa-name Slug --usb 4:42
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:
--hfa-noshed Disable hashfast dynamic core disabling feature
Newer firmwares on hashfast devices dynamically disable cores that generate
invalid data. This command will disable this feature where possible.
Numerous low level fixesFull changelog:
- Refresh the log window on pool failure message at startup.
- Rework the pool fail to connect at startup to not get stuck indefinitely
repeatedly probing pools with new threads and to exit immediately when any key
- Fix for crashes with a failed startup.
- Use an early_quit function for shutting down when we have not successfully
initialised that does not try to clean up.
- Add more information to a hfa bad sequence tail event.
- Increase the work queue at the top end if we've hit the bottom as well.
- Set the work generation thread high priority, not the miner threads.
- Bringing each hfa device online takes a lot of work generation so only ever do
one at a time.
- Increase the opt_queue if we can hit the maximum amount asked for but are
still bottoming out.
- Keep the old hfa device data intact with a clean thread shutdown to allow it
to be re-hotplugged with the old information.
- Cope with the API calling hfa on partially initialised devices having no info.
- Show only as many digits as are required to display the number of devices.
- Cold plug only one hashfast device to get started, and then hotplug many to
minimise startup delays and possible communication delays causing failed first
- Send a shutdown and do a usb_nodev if hfa_reset fails.
- Null a device driver should thread prepare fail.
- Add a function for making all driver functions noops.
- Don't try to reinit a device that's disabled.
- Disable a device that fails to prepare.
- Check for lack of thread in watchdog thread for a failed startup.
- Make all device_data dereferences in the hfa driver safe by not accessing it
in statline before when it's non-existent.
- Add an option to disable dynamic core shedding on hashfast devices.
- Do not remove the info struct on a failure to hfa prepare.
- Detect an hfa device purely on the basis of getting a valid header response to
an OP_NAME query, leaving init to hfa_prepare which will allow multiple devices
to start without holding each other up at startup.
- Store the presence and validity of opname in the hfa info.
- api - buffer size off by 1 for joined commands
- minion - clean up statline
- Only break out of usb_detect_one when a new device is found.
- Use usb_detect_one in the hfa driver.
- Provide a usb_detect_one wrapper which only plugs one device at a time,
breaking out otherwise.
- Issue a usb_nodev on a bad work sequence tail in hfa
- Read in hfa stream until we get a HF_PREAMBLE
- Add shed count to hfa API stats output.
- Display the base clockrate for hfa devices with a different name to per die
clockrates to be able to easily distinguish them.
- Use op_name if possible first with hfa devices to detect old instances and be
able to choose the starting clockspeed before sending an init sequence,
reverting to setting op name and serial number as fallbacks.
- Make hfa resets properly inherit across a shutdown.
- Don't break out of hfa_old_device early if there's no serial number.
- Fix harmless warning.
- Allow the drop in MHz per hfa failure to be specified on the command line.
- Icarus - ignore HW errors in hash rate ... and fix detection of them
- Enable the hfa shed supported feature by default.
- Add to udev rules hfa devices for firmware writing.
- Remove ENV from hashfast udev rules.
- Add a --hfa-name command that allows one to specify the unique opname for a
- Ava2 decode the voltage, get the temp_max
- Set the clock rate with a work restart instead of an init when changing to old
clocks for hfa
- Set opname on hfa devices without a serial number to a hex value based on time
to not overflow the field.
- Add op name to hfa API stats output if it exists.
- Set the actual op_name in hfa devices if cgminer is choosing it itself due to
it being invalid.
- Re-init an hfa device to its old data before setting up info structures as
their sizes may change.
- Remove the usb device whenever we do a running shutdown on hfa and do a
shutdown as the imitated reinit to allow it to hotplug again.
- Reset opt hfa dfu boot after it's used.
- Comment out windows only transfer on hfa startup.
- Clean up structures unused in case of all failures in hfa detect common
- Clear all structures should we fail to hfa reset on adjusting clock on a
- Set master and copy cgpu hash clock rate for hfa when dropping it on a
- Set the master hfa clock speed to lower when shutting down a copy.
- Do a clear readbuf on any hfa reset in case the device has not yet cleanly
- Increase hfa fanspeed slightly more when it's rising in the optimal range than
- Always decrease hfa clock speed on a running shutdown and don't try sending an
init frame since it will be dropped regardless.
- Match hfa devices to old ones based on OP_NAME values before serial numbers if
- Read off the OP_NAME if it exists and is supported on hfa devices, setting it
to the device serial number or a timestamp if it is invalid.
- Updated hf protocol
- Check for an amount along with no error in hfa clear readbuf
- Hfa clear readbuf can return a nonsense amount when there's a return error so
ignore the amount.
- Running resets always cause a shutdown on hfa meaning the device will
disappear with modern firmware so always kill off the threads to allow
- Reset the hfa hash clock rate to the old one if we find an old instance, only
setting the device id in hfa_prepare
- Keep the device_id on the original zombie thread for HFA in case of further
- Break out of hfa inherit if there is no device data.
- Inherit the hfa zombie instance after the device id has been allocated.
- The list_for_each_cgpu macro will dereference when there are no mining threads
- Make hfa hotplug inherit some parameters from a previous instance if the
serial number exists and is matching, avoiding dropping the clock on all
- Per device last getwork won't work if the device stops asking for work.
- Use the share_work_tdiff function in the driver watchdogs.
- Provide a helper function for determining time between valid share and getwork
- Store last_getwork time on a per-device basis.
- Limit the decrease of hfa clock rate on reset to the default clockrate.
- Base the hfa failure time on the current expected hashrate instead of a static
- We shouldn't be trying to read from the hfa_send_shutdown function itself.
- Reset the icarus failing flag only when a valid nonce is found.
- Transferred value is corrupt on a NODEV error in usbutils.
- Set each miner thread last valid work just before starting its hash loop in
case there are delays at startup.
- Only memcopy *transferred data in usbutils if we have received only success or
a non-fatal error.
- Increase to 25 nonce ranges on icarus fail detect.
- Set icarus device fail time to be dependent on device speed to avoid falsely
detecting failure on slower AMU devices.
- Updated hf protocol header.
- Updated BE hf protocol header.
- Take into account shed cores on hfa devices when determining how many jobs to
- Fix compilation error with two avalon types.
- Fix missing A1 files from distribution.