Beruflich Dokumente
Kultur Dokumente
- Implement support for pool ping and json integers of zero in getversion and
ping
- Fix segfault when writing config with hashratio built in
- Save pools in priority order at time of writing config
- Set the correct flag for close on exec for sockets
- Suspend stratum on removing a pool
- Set CLOEXEC on sockets on linux
- Drivers that take a diff should specify a max diff or it is assumed they don't
support one so set max_diff to 1 if unset
- Send hfa generic frame only if voltage was specified on the command line for
that device
- Set hashfast voltage settings only when really needed
- Hashfast voltage support
- Increase max diff on sp30 to 1024
- Reset ipv6 flag to false in every api-allow loop
- undeclared identifier 'IPV6_ADD_MEMBERSHIP' fix for apple
- two back temps spondoolies2
- two back temps spondoolies
- correct suggest_difficulty json rpc call
- Add more usb3 hub identifiers for windows
- Set driver max diff to large value if unset
- Wake gws on get queued
- Implement blacklisting of attempting to match known products from ones without
identifiers
- Fix hfa driver building without libcurl
- Enable building libusb without udev
- Fix off by one calculation error in sp30 leading zeroes
- Send correct diff work to sp30 for hashmeter to be correct
- Do the sleep in spondoolies_queue_full_sp30 after dropping the lock
- Minor tidy in sp30 driver
- Fix sp30 warnings
Version 4.7.0 - 14th October 2014
- Implement generic inet_pton for windows
- Fix warnings
- Fix bulk of remaining style in blockerupter.c
- Tidy style in blockerupter.h
- Tidy bulk of style in blockerupter.c
- Fix missing minimum diff setting for blockerupter
- Fix unused variable warnings
- remove unnecessary sleep; fix potenital div by 0 errs; use min_diff in driver
definition
- Fix coding style
- Make the sp30 hashrate meter based on valid share generation
- Change default max queue back to 1 in line with speed of most current asic
controllers
- Change diff limits to values suitable for sp30
- Add pool number to response from addpool to the API
- Make the restart and quit API commands valid json responses
- Fix number of nos
- Add option to set clock ('--bet-clk X' actual clock is (X+1)*10 )
- compatible with X24 board
- Fix error when using v6 without mask in api-allow
- Support ipv6 multicast
- Set min_diff to 1
- Allow arbitrary clamping of lower device diffs for slow controllers by driver
- Don't set default fan to max on hashratio
- The 2nd read never gets anything on ava2 so remove it entirely and just return
an error if we are out of sync
Fix typo
Work should be freed when aged, fixing a massive memory leak for bxf devices
miner.php fix single rig summary/config field formatting
miner.php fix single rig total formatting
- Provide support for writing anu freq from menu write option
- Update to diver-avalon2.c
- Generalise a lot more of the command line options simplifying the write config
function and making it write far more values unaided
- Use the general opt_set_charp functions for setting api parameters
- Json escape any strings written to the config file
- Store standard charp options when writing config files
- Add support for all the integer range options when writing the config file
from the menu
- Remove the --device and --remove-disabled options which don't work in a
meaningful way any more
- Make the bxf bits configurable on the command line
- Provide a --btc-sig option to optionally add a custom signature to the solo
mining coinbsae
- Compact gbt solo extra data and store the length, allowing it to be variable,
leaving room for a signature
- miner.php - Kano summary Pool Acc/Rej should be only work submitted
- miner.php add best share and gen formatting for pool summary
- miner.php - remove BGEN/GEN eval() errors from the web log
- miner.php allow optional fields when gen is disabled
- miner.php dont format missing gen fields
- miner.php make Summary a custompage
- miner.php allow uers and system lists of customsummarypages and add more
examples
- Fix getwork share submission
- Cosmetic fix to udev rules
- Put WU on the hashrate status to compact lines further
- miner.php show api/rig errors at the top of a customsummarypage
Version 4.2.2 - 29th March 2014
- Minor correctness fix for unnecessary free
- Clean up various curl build issues
- allow url based config files
- Frequency only needs 3 digits for cointerra statline
- Use the serial number as unique_id for cta display
- Make it possible to enable/disable the status window from switching via the
display menu
- We should not update the tv hashmeter time unless we're updating the hashrates
- Add cointerra devices to udev rules.
- Use hashfast unique id instead of number since the unique id is displayed
- Remove displayed space
- Left align the displayed unique id
- Use the hashfast opname as its unique identifier
- Display BF1 serial number as its unique identifier
- Display a unique identifier instead of a number if the device has one
- Use an alternating status display to return to a compact width of 80
characters, allowing more information to be displayed.
- No need for looking for khash hashrates in summary any more
- Fix two potential minor mem leaks
- Fix memory leaks in setup and generate work for gbt solo.
- Fix off by one malloc size error
- Fix memory leak in update_gbt_solo
- Put sanity check on decay_time to prevent updates with no time
- Add 3 rolling average hashrates to API output for summary and devs.
- Use the extra status screen real estate better, displaying rolling 1/5/15min
average hashrates as well.
- Revamp the ageing crufty hashmeter code to have proper exponential decaying
values and store rolling 1/5/15min hashrates.
speed
- Drillbit: Fix typo in previous commit
- Drillbit: Remove default config in cgminer, rely on defaults in firmware
- Drillbit: Combine split USB transfer for sending new work, reduce overhead
- Drillbit: Add support for protocol V4, with device-agnostic board
configuration data
- Drillbit driver: Add support for Avalon-based Drillbit miners
- API - add edevs and estats - to only show enabled devices
- Check device data exists on a hfa instance before trying to reinit it.
- Print off what quadrant regulator failed if known in hfa driver.
- Reset all the stats on autovoltage complete in cta driver.
- Use correct diff instead of diffbits in cta driver.
- Whitelist all firmwares <= 0.5 on hfa for software rolling of ntime.
- Avoid a memory leak by reusing the ntime field when rolling stratum work.
- Clear the pipe bitmap on cta only when no share has occurred for 2 hours
instead of 1.
- Cta share_hashes should be added, and we can base it on device wdiff instead
of pool work difficulty for more accurate hashrates.
- Since the device runtime is now reset, the Raw hashrate entry in the cta API
output is no longer meaningful.
- Look for autovoltage returning to zero on cta driver and reset stats at that
point since the hashrate is unreliable till then.
- ants1 - cgminerise applog calls
- Default to stratum+tcp:// on any urls that don't have a prefix instead of
http.
- Trivial cta style changes.
- ants1 - fix/enable temperature checking and remove unneeded temp_old
- ants1 - move local cgpu variables to info structure
- ants1 use a klist to store work and copied work
- Simplify dramatically the cross-process cgminer locking through use of flock
instead of sysv semaphores.
Version 4.1.0 - 8th March 2014
- Correct fix for dev start time being adjusted for stat zeroing.
- Make per device stats work for average after a stat zeroing.
- Add an hfa-options command line that allows the clockspeed to be chosen per
device by name comma separated, with a function that can be expanded with more
options in the future.
- Off by one drv_rolllimit check against jobs
- Free the work that may be lost, leaking memory, in a failed hfa_send_frame
- Roll the ntime for work within the hfa driver for firmware we know doesn't do
it internally as an optimisation.
- Export the roll_work function to be usable by driver code and make it
compatible with rolling stratum work.
- Make opt_queue be respected as a maximum value for staged items.
- Disable mistakenly enabled lock tracking.
- api version update for HEX32
- api.c - HEX32 type needs quotes
- Disable the MAX_CLOCK_DIFF check for newer hashfast firmwares since it's not
required.
- Store the hardware and firmware revision in the info struct for easy use in
the hfa driver.
- Only decrease the hfa clock rate if the device has been running for less than
an hour before dying.
- Change lack of op name response message in hfa driver
- Check for lost devices at every write/read in hfa_detect_common
- Make bxm bits configurable.
- Move avalon2 options to ~alphabetic position in help.
- 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
starts.
- 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
hashfast device.
- 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
- Add the ability to whitelist previously blacklisted usb devices from the menu.
- Use a bool in struct cgpu to know when a usb device has been blacklisted,
avoiding blacklisting it more than once.
- bab - ensure disabled chips are counted in the screen dead chip counter
- bab - only disable the chip once ...
- bab - short work list skip disabled chips
- api.c avoid incorrect gcc warning
- cgminer -h crash fix
- Add blacklisting as an option to the USB menu.
- Add a mechanism to blacklist a usb device from its cgpu.
- Add an option to the USB menu to list all known devices.
- Add an option to send a USB reset via the USB menu.
- Add a usb_reset by cgpu function to usbutils.
- Add warning for attempting to unplug a usb device that is already removed.
- Add USB Unplug option to USB management device management menu.
- Add enable and disable USB device functions to the menu.
- Add a [U]SB menu item, initially with just statistics per device, adding
device number to the device status window display.
- Reuse the cgpu temp entry for avalon and bitfury devices, changing avalon to a
damped value.
- Store the cointerra maximum temperature in the cgpu struct as an exponentially
changing value based on the maximum temperature.
- Reuse the cgpu->temp entry for max temperature in hfa driver.
- bab - disable chips that return only bad results
- Add driver for cointerra devices.
- Add Avalon2 (2U size machine) support
- miner.php - define a default rigport (that can be changed) and don't require a
port number in the rigs array
- miner.php allow links for rig buttons in tables and allow using the 4th IP
octet if no rig name - default disabled for both
- format fix and bad variable usage fix for --benchfile
- Allow running cgminer in benchmark mode with a work file --benchfile
- ANU frequency is in MHz, not hex.
- Remove bitfury devices from the usb list on shutdown in case they have stopped
responding but have not had a fatal usb error.
Version 3.12.3 - 8th February 2014
- Put the hashfast temperature into the cgpu structure so that it shows up in
the devs API call.
- We shouldn't block on no work situations directly from the getwork scheduler
itself.
- Revert "Make the pthread cond wait in the getwork scheduler a timed wait in
case we miss a wakeup."
Version 3.12.2 - 8th February 2014
- Adjust antminer U1 timing according to command line frequency set, fixing the
need for icarus timing on the command line.
- Read pipe errors that don't clear are worth attempting to reset the usb.
- Revert "Do away with usb resets entirely since we retry on both pipe and io
errors now and they're of dubious value."
- Make the pthread cond wait in the getwork scheduler a timed wait in case we
miss a wakeup.
Version 3.12.1 - 7th February 2014
hashmeters used.
- Look for hfa usb init header for 2 seconds, then resend the init twice more
before failing.
- Really only set up the hfa crc table once.
- Generically increase the queue if we are mining on a pool without local work
generation each time we run out of work.
- Change new block detection message since longpoll is rarely relevant today.
- Change the default clockspeed bits on nanofury devices to 50 and add a command
line option to allow it to be changed.
- Use unused line at the top of the log window which often gets stuck
unchanging.
- Clear pool work on a stratum reconnect message.
- bab record/report spie and miso errors
- bab - cleanup old work for dead chips also
- bab add avg fail tests to API stats
- bab report bank/board/chip for dead and v.slow chips
- bab process all nonce replies per chip together
- bab reduce work delays
- bab record the number of E0s discarded
- bab - modified result parsing
- bab restore removed unused flag
- configure - correct minion name
- bab only scan valid nonce offsets
- bab record continuous (and max) bad nonces
- bab display Banks/Boards/Chips in the device window
- Modify thread naming to make them easier to identify
- bab reduce the work send delay
- bab remove results polling
- bab report SPI wait in seconds
- bab report missing chips at start and API
- bab ensure there's enough space for the nonce reply
- bab correct stats 'Send Max'
- bab allow long enough wait on ioctl() per board
- bab more I/O stats
- api.c 2014
- api allow any size stats data
- bab add processed links which excludes expired links skipped
- bab report chips per bank, hw% and ghs per chip
- bab lock access to new_nonces to ensure correct reporting
- bab report V2 banks/boards during initialisation
- bab expire chip work
- bab use only k_lists and make work handling more refined
- klist - allow adding to tail
- bab remove old unused #define
- bab correct for master git
- correct klist reallocs
- klist lists for bab
- api.c correct DEVICECODE and ordering
- Maxchips should be 384 (16 chips/board 24 boards/controller)
- bab more detailed stats and delay less when waiting for a buffer
- api add data type AVG float 3 decimal
- bab - add V2 detect with bug fix in detect
- api.c set the actual version number to 3.0
- API V3.0 unlimited socket reply size
- README update --usb
- Check for loss of device in usb read before any other code on the usbdev
- Change stratum strings under stratum_lock in reconnect and free old strings.
- Add mcp2210 compilation to want_libbitfury configs.
- Fix HF driver typo.
- Add support for newer protocol bi*fury commands job, clock and hwerror,
setting clock to default 54 value, turning parsing into a compact macro.
- Look for the thermal overload flag in the gwq status message in the hashfast
driver and send it a shutdown followed by an attempted reset.
- Log message fixups
- Fix for "Timing out unresponsive ASIC" for pools which send early reconnect
requests, and then take a short time to send work (ie BTCGuild)
- Shorten initial config line, win32/pdcurses doesn't like long lines during
early logging
- Pull back the very long timeouts set in fe478953cf50
- Fix bug where work restart during results scan could lead to bad device state
- Align device status lines same regardless of number of temp status or >10
ASICs
- Tag log lines from brand new devices as DRB-1 until they are initialised
- Tag log lines as 'DRB0' rather than 'DRB 0', same as other places in cgminer
- Print a summary of the device settings at level NOTICE during initialisation
- Allow chosing device settings based on 'short' product names shown in status
line
- Allow per-device settings to use "DRBnn" as an identifier instead
- Issue an ASIC restart during a work_restart, removes spurious timeout messages
from ASICs and probably some rejected shares
- Check all results against all work instead of just taking the first match
(avoids some rejected submissions to the pool, ASIC can produce multiple
candidate results.)
- Fix memory leak caused by unnecesarily copied work
- Fix bug with find_settings not returning default value
- Set timeouts on write, set very long timeouts
- Merge drillbit driver
Version 3.8.5 - 10th December 2013
- Increase the BFLSC overtemp to 75 for fanspeed to maximum.
- Set bflsc cutoff temperature to 85 degrees and throttle 3 degrees below the
cutoff temperature.
- Only set LIBUSB_TRANSFER_ADD_ZERO_PACKET for libusb versions we know include
support for.
- Provide a helper function that can reset cgsems to zero.
- Add to cgminer_CPPFLAGS instead of redefining them.
- Attempt a libusb reset device on usb devices that have stopped responding.
- Replace deprecated use of INCLUDES with _CPPFLAGS.
- Remove more unused GPU code.
- Attempt USB device resets on usb read/write errors that will normally cause
the device to drop out.
- Quieten down jansson component of build.
- Cache the bool value for usb1.1 in _usb_write
- Initialise usb locks within usbutils.c instead of exporting them.
- Imitate a transaction translator for all usb1.1 device writes to compensate
for variable quality hubs and operating system support.
- Rationalise variables passed to usb_bulk_transfer.
- Unlink files opened as semaphores on releasing them.
- Remove user configuration flag from pll bypass enabling in hashfast driver.
- Provide an hfa-dfu-boot option for resetting hashfast devices for
reprogramming.
- Fixed one byte stack overflow in mcast recvfrom.
- Having changed C_MAX means we don't calloc enough for usb stats, off by one.
- Don't free the info struct on hashfast shutdown since it's still accessed
after a device is removed.
marker.
- Don't lose data beyond the end of message in a usb read.
- Silence irrelevant warning.
- Only check strlen on end if end exists.
- Simplify the end of message detection in _usb_read and allow it to return
without doing another read if the message is already in the buffer.
- Increase work ageing time to 90 seconds for bxf driver to account for firmware
changes.
- Use the age_queued_work function in the bitfury driver.
- Provide a function to discard queued work based on age.
- The json_val in api.c is a borrowed reference, not a new one so don't decref
it.
- Decrement json references in api.c to not leak memory.
- line 2913 added urlencode
- With reliable writes to the avalon there is no need for the sleep delays
between writes.
- There is no need to limit usb write transfers to maxpacketsize and it's
harmful for large transfers on slow devices such as wrt routers.
- Disable USB stats which were not meant to be enabled by default and add extra
memory for a memory error when stats are enabled.
- Set limit and count to integers to not overflow during failed hotplug attempts
and then not trying again.
- Update api example compilation instructions.
Version 3.8.2 - 16th November 2013
- 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.
- 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.
- miner.php sort the mcast rigs so they are always in the same relative order
- miner.php allow sending the muticast message multiple times
- miner.php mcast ignore duplicate replies
Version 3.4.2 - 3rd September 2013
-
- Remove start device limitation on log window size to allow it to get larger
with hotplugged devices.
- Switch logsize after hotplugging a device.
- Change switch_compact function name to switch_logsize to be used for other
changes.
- Only adjust cursor positions with curses locked.
- devs display - fix GPU duplicate bug
- Do not hotplug enable a device if devices have been specified and the hotplug
device falls outside this range.
- Change the --device parameter parsing and configuration to use ranges and
comma separated values.
- basic copyright statement in API.java
- devs display - show ZOMBIEs after all others
- Modify scrypt kernel message.
- Check for pool_disabled in wait_lp_current
- usbutils semun use proper def for linux which fixes OSX also
- Check for pool enabled in cnx_needed.
- Icarus add delays during intialisation
- Update documentation.
- Update copyrights of modified files.
Version 3.2.0 - 31st May 2013
- Add FAQ about windows USB keyboards and hotplug interactions.
- Fix mingw build warnings in icarus driver.
- Make usb_ftdi_cts use the _usb_transfer_read function.
- Update ASIC-README with avalon info regarding default behaviour.
- Break out of idling loop in avalon_idle if the buffer is full.
- Provide some defaults for avalon if none are specified and do not try to claim
the device if it fails to reset with them and no options are specified.
- usbutils automatically track IO errors
- usbutils allow a short wait for resources to be released
- correct semaphore timeout comment
- Set the fanspeed to the nominal chosen for GPUs.
- Inverted sem_init logic.
- Document avalon options in ASIC-README
- Do avalon driver detection last as it will try to claim any similar device and
they are not reliably detected.
- Clamp initial GPU fanspeed to within user specified range.
- Use a counting semaphore to signal the usb resource thread that it has work to
do.
- Avalon fan factor is already multiplied into the info values.
- Get rid of zeros which corrupt display.
- Logic fail on minimum fanspeed reporting.
- Provide a workaround for fan0 sensor not being used on avalon and pad fan RPM
with zeros.
- Add ambient temp and lowest fan RPM information to avalon statline.
- Display max temperature and fanspeed data for avalon.
- Set devices to disabled after they exit the hashing loops to prevent the
watchdog thread from trying to act on them.
- Add avalon driver to hotplug.
- Shut down the avalon mining thread if the device disappears.
- Check for no usb device in usb_ftdi_cts
- Check for valid usbdev in _usb_read in case the device has been unplugged.
- Scanhash functions perform driver shutdown so don't repeat it.
- Change the opencl shutdown sequence.
- Send the shutdown message to threads and do the thread shutdown functions
before more forcefully sending pthread_cancel to threads.
- Use the cgpu_info shutdown to determine when to stop the avalon read and write
threads.
- Use semaphores to signal a reset to pause the read thread while the write
thread does the actual reset, making all writes come from the same place.
- Remove now unneeded fgpautils.h include from avalon.
- usb_transfer_read should also not play with the endianness.
- Use the USB wrappers for avalon, telling usbutils that we want the raw data.
- Use separate ep for avalon tasks vs avalon reset and do not loop in write
indefinitely.
- Remove unneeded function and checks in avalon write code.
- CMR handle baud options
- work_restart is reset within the queued hash work loop.
- Fix avalon shutdown sequence.
- Execute driver shutdown sequence during kill_work.
- Use nusleep in avalon_get_results in place of nmsleep.
- Provide an nusleep equivalent function to nmsleep.
- usb/ica add more (incomplete) CMR settings
- Give a buffer of perceived results in avalon during idle periods to allow for
results once it becomes active again.
- libusb_control_transfer are meant to be endian specific, but host endianness
so no conversion is needed.
- Reuse old MTX Handle
- usbutils check all memory allocation
- usb separate thread for resource locking and modified windows locking code
- Icarus report data direction with comms errors
- Set the read and write threads for avalon to not cancel within libusb
functions and wait for the threads to pthread_join on shutdown.
- Offset needs to be incremented after avalon reads.
- Make the avalon_read function parse the ftdi responses appopriately.
- Use the avalon read timeout to completion if no data has been read.
- wait_avalon_ready should only be used before writes.
- Ask for the correct amount to read in avalon get results.
- Spawn the avalon read thread first with info->reset set to discard any data
till work is adequately queued.
- Use direct usb read commands to avoid ftdi data being automatically cut off in
avalon reads.
- Do a simple usb_read_once for the avalon result from a reset command.
- Make sure avalon is ready to receive more usb commands before sending them.
- Implement avalon_ready and avalon_wait_ready functions for when usb is ready
to receive commands.
- avalon_read should not loop but just return whatever it has succeeded in
reading.
- Set avalon_info to device data void struct.
- Specify avalon in avalon_reset.
- First pass rewriting serialdev into direct usb dev for avalon driver.
- Define a cts equivalent for direct usb and use it for avalon driver full.
- Compile usbutils into avalon driver.
- Check results come in at least at 2/3 the rate they should be on avalon and if
not, reset it.
- Give a warning but don't reset if the avalon buffer is full early.
- Discard any reads obtained from the avalon get results thread during a reset.
- Differentiate initial reset in avalon from subsequent ones.
- Perform a mandatory reset if the avalon buffer signals it's full before it has
queued its normal quota of work.
- Wait till buffer is cleared after sending idle tasks to avalon before
returning from avalon_idle.
- Lock qlock mutex during reset from read thread in avalon to prevent more work
being sent till the reset is over.
- Reset avalon if we continue to be unable to send all the work items.
- Add avalon reset response to debugging output.
- Do a wait_avalon_ready before sending a reset code.
- Iterate over spare bytes in the avalon result returned from a reset request
trying to find the beginning of the reset.
- Idle avalon after reset.
- Check for nothing but consecutive bad results on avalon and reset the FPGA if
it happens.
- Make submit_nonce return a bool for whether it's a valid share or not.
- Unset the work restart flag sooner in avalon_flush_work to avoid re-entering
the flush work function and just reset the queued counter instead of rotating
the array to avoid runs of no valid work.
- Implement an avalon_flush_work function for work restarts.
- Shut down avalon read and write threads and idle the miners on closing it.
- Tighter control over work submissions in avalon allows us to use a smaller
array.
- Rotate avalon array to reset the queued count before releasing the lock so
work will always be available on next pass.
- Move avalon read thread start till after conditional wait, store idle status
in avalon_info and use it to determine whether an error is appropriate or not.
- Wait till the avalon_send_tasks thread has filled the avalon with idle work
before starting the avalon_get_results thread.
- Use AVA_GETS_OK macro in avalon_read.
- Do all writes on avalon with a select() timeout to prevent indefinite blocking
and loop if less than desired is written.
- Check explicitly that ava_buffer_full equals the macro.
- Send initial reset as an avalon task to remove avalon_write function.
- avalon_clear_readbuf is no longer required.
- Check for 2 stray bytes on avalon reset.
- Create a separate thread for handling all work and idle submission to the
avalon which messages the scanhash function it has completed to update
statistics.
- usbutils ensure it compiles without stats
- usbutils include transfer mode in usbstats
- Give the avalon get results thread name the device number as well.
- Make sure we're not adjusting temps on every successful work retrieval on
avalon.
- Count missing work items from behind a successful work read in avalon as well.
- Change message for work not found in avalon parser.
- usbutils handle bulk_transfer partial writes
- Simplify debugging and only discard from avalon read buffer if at least one
full result has been discarded.
- Only display discarded bytes in avalon if they're not used as nonces.
- Only loop once through avalon_parse_results, but do so after timeouts as well.
- Only debug and move ram if spare bytes exist in avalon buffer.
- Remove off by one error.
- Inverted logic.
- Add more debugging to avalon reads.
- Convert unsigned size_ts to ints for parsing avalon messages.
- Cope with not finding nonces in avalon parsing gracefully by not overflowing
buffers.
- Adjust avalon temp values on one lot of valid nonces from the parser.
- Created a threaded message parser for avalon reads.
- Avalon_wait_write is not effective during resets so do it after going idle.
- Send only a single byte reset.
- Repeat going idle after avalon reset, and wait for write ready before sending
each reset request instead of some arbitrary sleep time.
- Timeouts on avalon_read and avalon_write should be 100ms.
- Don't close avalon after detecting it until we're cleaning up, instead using
reset for comms failures.
- Check for avalon_wait_write before sending reset command.
- Sleep in avalon_write_ready.
- Make avalon_wait_write a bool function and check its return value.
- Show how many idle tasks are sent to avalon if it aborts on buffer full.
- Reset avalon->device_fd after it is closed.
- Create an avalon_wait_write function that is used before sending avalon idle
command.
- Avoid repeating avalon_idle in do_avalon_close and extra sleep.
- Pass fd to avalon_idle.
- Do avalon_reset after info structure is set up.
- Rework avalon reset sequence to include idling of chips and waiting for them
to go idle followed by 2nd reset and then checking result.
- Do a non-blocking read of anything in the avalon buffer after opening the
device.
- Assign the avalon info data to the device_data in cgpu_info.
- thread shutdown is different on windows
- usbutils make all windows timeouts 999ms
- usb add another Cairnsmore1 USB chip
- icarus do the full detect test twice if required
- CMR usb config guess
- usb add transfer_read and commented out in icarus
- usbutils allow unrounded control transfers
- icarus ICA initialisation
- icarus report err on read failure
- icarus correct device_id and use device_data for icarus_info
- miner.h remove unused device_file and add device_data
- miner.h icarus no long uses fd
- icarus AMU config transfers
- Create a logwin_update function which mandatorily updates the logwin and use
it when input is expected to prevent display refresh delays.
- usbutils force an unknown IDENT for zero
- icarus set default options/timing based on device
- Must unlock curses as well in logwin_update.
- Create a logwin_update function which mandatorily updates the logwin and use
it when input is expected to prevent display refresh delays.
- icarus report usb write error information
- Add name to icarus copyright notice.
- Check for *pth dereference on pthread_join
- usbutils name latency correctly
- Check for restart before buffering more reads in Icarus.
- Icarus should timeout if it's greater than the timeout duration even if it's
receiving data.
- We should check for amount buffered in icarus get_nonce against amount already
received.
- Make mining threads report out during work submission.
- submit_work_async is no longer used directly by driver code.
- Fix first read timeout on icarus get nonce.
- Retry icarus_initialise if the first read attempt fails.
- Properly pthread_join miner threads on shutdown.
- Properly pthread_join miner threads on shutdown.
- Use a persistent single separate thread for stratum share submission that uses
workqueues since all stratum sends are serialised.
- All stratum calls to recv_line are serialised from the one place so there is
no need to use locking around recv().
- Only allow the mining thread to be cancelled when it is not within driver
code, making for cleaner shutdown and allowing us to pthread_join the miner
threads on kill_work().
- Only allow the mining thread to be cancelled when it is not within driver
code, making for cleaner shutdown and allowing us to pthread_join the miner
threads on kill_work().
- Set pool->probed to true after an attempt to resolve the url via stratum code.
- icarus test nodev everywhere
- usbutils/icarus separate FTDI transfer values and more debug
site.
- Make the avalon array size a macro.
- Use replacement of work items in the avalon buffer as needed instead of
flushing them.
- Reinstate wrong work count to reset avalon regardless and display number of
wrong results.
- Revert "The result_wrong measurement for avalon is continually leading to
false positives so remove it."
- select() on serial usb in avalon does not work properly with zero timeout.
- The result_wrong measurement for avalon is continually leading to false
positives so remove it.
- Revert "Use only 2 queued work arrays in avalon."
- Use no timeout on further reads in avalon_gets
- Do sequential reads in avalon_get_reset to cope with partial reads.
- Show read discrepancy in avalon_get_reset.
- Reuse avalon_get_work_count variable.
- Check for AVA_GETS_RESTART when deciding if avalon has messed up.
- Make the detection of all wrong results on avalon much more conservative to
avoid false positives on work restarts.
- Show error codes on select and read fail in avalon.
- If we get a restart message in avalon_gets still check if there's a receive
message to parse first without a timeout before returning AVA_GETS_RESTART.
- Use only 2 queued work arrays in avalon.
- avalon_gets is always called from the one call site so inline it.
- The read_count is unused by the avalon get result code and no longer required
for avalon reset so simplify code removing it.
- Use a separate avalon_get_reset function for resetting avalon instead of using
avalon_get_result.
- The current hash count returned by avalon scanhash is just an obfuscated
utility counter so make it explicit.
- Check for a restart before a timeout in message parsing code in avalon.
- We should check for a restart message before checking for a timeout in avalon
scanhash.
- Store the subid for the work item in avalon.
- usbutils more stats for bflsc
- Fix record_temp_fan function in avalon driver. Patch by Xiangfu
<xiangfu@openmobilefree.net>
- Remove inappropriate memset of struct avalon result which was corrupting fan
values.
- Fix warning with no curses built in.
- Bump version to 2.11.4
- Add API support for Avalon.
- Only do_avalon_close once on multiple errors.
- Reset the result_wrong count on block change in avalon scanhash to prevent
false positives for all nonces failed.
- Small timeouts on select() instead of instant timeout increase reliability of
socket reads and writes.
- Only get extra work in fill_queue if we don't have any unqueued work in the
list.
- Small timeouts on select() instead of instant timeout increase reliability of
socket reads and writes.
- Rotate the avalon work array and free work on AVA_SEND_BUFFER_EMPTY as well.
- Only get extra work in fill_queue if we don't have any unqueued work in the
list.
- Don't get any work if our queue is already full in avalon_fill.
- Differentiate socket closed from socket error in recv_line.
- Differentiate socket closed from socket error in recv_line.
- Free avalon->works in the event we call avalon_prepare on failure to
initialise.
- Fix warnings.
- Create an array of 4 lots of work for avalon and cycle through them.
- Remove unused per unit matching work count for avalon.
- Rename the confusing avalon_info pointer.
- Simplify avalon scanhash code using the new find_queued_work_bymidstate
function. Partially works only.
- Members of cgpu_info for avalon are not meant to be in the union.
- Use correct struct device_drv for avalon_drv.
- cgminer.c -S help to only say Icarus
- Check enough work is queued before queueing more in avalon_fill.
- Actually put the work in the avalon queue.
- Rneame avalon_api to avalon_drv.
- First draft of port of avalon driver to new cgminer queued infrastructure.
- Add Makefile entry for driver-avalon.
- Add configure support for avalon.
Version 2.11.4 - April 5th, 2013
- Remove bfl-sc option from configure for 2.11 branch.
- Only update hashrate calculation with the log interval.
- Update the total_tv_end only when we show the log to prevent failure to update
logs.
- Minor README updates.
- Add example 7970 tuning for scrypt in readme.
- Update driver recommendations.
- Add extensive GPU FAQs for the flood of new Scrypt miners.
- Remove help option for cpumining in build environment.
- Remove scripts that make it too easy to compile CPU mining support.
- Win32 and win64 build updates
- Remove references to CPU mining from README.
- Show share hash as little endian as needed.
- usbutils extra message requirements
- Make hashmeter frequency for hash_queued_work match sole_work.
- Update links and recommended SDKs.
- Update scrypt readme re drivers and sdk.
- usbutils.c usb_cmdname() usb_cmds -> string name
- BFL FPGA Windows timeout set to 999ms
- AUTHORS - spam update time (one year since the last)
- Update README for x970 memdiff values.
- Update README to match changes to display.
- Remove increasingly irrelevant discarded work from status lines.
- Remove increasingly irrelevant queued and efficiency values from status and
move WU to status line.
- Allow cgminer to start if usb hotplug is enabled but no devices yet exist.
- Do not scan other gpu platforms if one is specified.
- Update README for sync objects on windows.
- Update README about intensity.
- Add information for setting gpu max alloc and sync parameters for windows with
scrypt.
- If the hashmeter is less than the log interval and being updated by the
watchdog, don't update the hashrate.
Version 2.11.3 - March 17, 2013
- Update docs and reorder README to show executive summary near top.
- Update the hashmeter at most 5 times per second.
- Usbutils use its own internal read buffer
- Calculate work utility for devices that support target diffs of greater than
1, and update scrypt code to use it.
- Use the string helper functions to create gbt blocks of any length.
- Provide helper functions calloc_str and realloc_strcat to create and extend
arbitrary length arrays based on string length.
Version 2.9.5 - November 25, 2012
- fixes target calc for mips openwrt
- openwrt needs roundl
- Get rid of unused last_work in opencl thread data.
- Do away with the flaky free_work api in the driver code which would often lose
the work data in opencl and simply flush it before exiting the opencl scanhash.
- Use base_work for comparison just for cleanness in __copy_work
- Remove all static work structs, using the make and free functions.
- Add pool no. to stale share detected message.
- Add info about which pool share became stale while resubmitting.
-b Copy the work on opencl_free_work
- Add an extra slot in the max backlog for ztex to minimise dupes.
- Do not use or count the getworks submitted which are simply testing that pools
are still up. This was increasing share leakage and making stats not reflect
real work.
- Track all dynamically allocated memory within the work struct by copying work
structs in a common place, creating freshly allocated heap ram for all arrays
within the copied struct. Clear all work structs from the same place to ensure
memory does not leak from arrays within the struct. Convert the gbt coinbase and
stratum strings within the work struct to heap ram. This will allow arbitrary
lengths without an upper limit for the strings, preventing the overflows that
happen with GBT.
- libztex: Work around ZTEX USB firmware bug exposed by the FreeBSD libusb
- opencl: Use new dev_error function for REASON_DEV_NOSTART
Version 2.9.4 - November 18, 2012
- Provide rudimentary support for the balancing failover strategies with stratum
and GBT by switching pools silently on getwork requests.
- Convert remaining modminer and bfl uses of usleep to nmsleep.
- Convert libztex to nmsleep where possible.
- Convert unreliable usleep calls to nmsleep calls in ztex driver.
- Support workid for block submission on GBT pools that use it.
- Provide rudimentary support for literal ipv6 addresses when parsing stratum
URLs.
- Work around libcurl cflags not working on hacked up mingw installations on
windows.
- Only increase gpu engine speed by a larger step if the temperature is below
hysteresis instead of increasing it to max speed.
- Convert pool not responding and pool alive message on backup pools to verbose
level only since they mean a single failed getwork.
- Update work block on the longpoll work item before calling restart threads to
ensure all work but the longpoll work item gets discarded when we call
discard_stale from restart_threads.
- Do not attempt to remove the stratum share hash after unsuccessful submission
since it may already be removed by clear_stratum_shares.
- Check against a double for current pool diff.
- Support for fractional diffs and the classic just-below-1 share all FFs diff
target.
Version 2.9.3 - November 11, 2012
- Calculate midstate for gbt work and remove now unused variable.
- Use a standard function for flipping bytes.
- Insert the extra nonce and remaining data in the correct position in the
coinbase.
- Remove txn size debugging and enlarge gbt block string to prevent overflow.
- Remove varint display debugging.
- Build varint correctly for share submission and sleep 5 seconds before
retrying submit.
- Make gbt_coinbase large enough for submissions, swap bytes correctly to make a
header from GBT and encode the number of transactions in share submission.
- Store the fixed size entries as static variables in GBT in binary form,
byteswapping as is required.
- 32 bit hex encoded variables should be in LE with GBT.
- Target and prevblockhash need to be reversed from GBT variables.
- Construct block for submission when using GBT.
- Use same string for debug as for submission and make string larger to cope
with future GBT messages.
- Skip trying to decipher LP url if we have GBT support.
- Store all the transaction hashes in pool->txn_hashes instead of separating
txn0 and correct generation of merkle root, fixing memory overwrites.
- Hook into various places to generate GBT work where appropriate.
- Create extra work fields when generating GBT work.
- Generate header from correct hashing generation of the merkle root for GBT.
- Generate the merkle root for gbt work generation.
- Create a store of the transactions with GBT in the minimum size form required
to generate work items with a varied coinbase.
- Create a function that generates a GBT coinbase from the existing pool
variables.
- Extract and store the various variables GBT uses when decoding gbt work.
- Check for invalid json result in work_decode.
- Decode work in separate functions for getwork vs gbt.
- Check for the coinbase/append mutable in GBT support to decide whether to use
it or not.
- Add a gbt mutex within the pool struct for protecting the gbt values.
- Convert work decode function to prepare for decoding block templates.
- Check for GBT support on first probing the pool and convert to using the GBT
request as the rpc request for that pool.
- Make the rpc request used with getwork a pool variable to allow it to be
converted to/from gbt requests.
- Changes to build prototypes to support building on FreeBSD 9.1-RC2 amd64
- Free old stratum_work data before replacing it
- There is no need for addrinfo any more.
- server and client sockaddr_in are no longer used in struct pool.
- Merge pull request #322 from luke-jr/bugfix_stratum_tmpwork
- Set sshare id and swork_id within the sshare mutex to avoid multiple share
submits with the same id.
- Initialize temporary stratum work
Version 2.8.7 - October 29, 2012
- Fail on select() failing in stratum thread without needing to attempt
recv_line.
- Add share to stratum database before sending it again in case we get a
response from the pool before it's added.
Version 2.8.6 - October 29, 2012
- Shorten the initiate stratum connect timeout to 30 seconds.
possible races.
- Bump opencl kernel version numbers.
- Remove atomic ops from opencl kernels given rarity of more than once nonce on
the same wavefront and the potential increased ramspeed requirements to use the
atomics.
- Clear the pool idle flag in stratum when it comes back to life.
- Display correct share hash and share difficulty with scrypt mining.
- Use explicit host to BE functions in scrypt code instead of hard coding
byteswap everywhere.
- Show work target diff for scrypt mining.
- Ease the checking on allocation of padbuffer8 in the hope it works partially
anyway on an apparently failed call.
- Watch for buffer overflows on receiving data into the socket buffer.
- Round target difficulties down to be in keeping with the rounding of detected
share difficulties.
- Dramatically simplify the dynamic intensity calculation by oversampling many
runs through the opencl kernel till we're likely well within the timer
resolution on windows.
- String alignment to 4 byte boundaries and optimisations for bin<->hex
conversions.
- In opencl_free_work, make sure to still flush results in dynamic mode.
- Align static arrays to 4 byte boundaries to appease ARM builds for stratum.
Version 2.8.3 - October 12, 2012
- Left align values that are suffix_string generated.
- Share_diff should not be converting the work data to hex.
- Off by one error.
- Prevent overflows of the port char array in extract_sockaddr.
- Disable stratum detection with scrypt.
- Use the suffix string function when displaying device hashrates.
- Be consistent with the get_statline function.
- Use the suffix string function for displaying hashrate with 4 significant
digits.
- Display the actual share diff next to the pool required diff, using a suffix
creation function to prevent values of >1000 being shown in their entirety.
- Fix 4 * 0 being 0 that would break dynamic intensity mode.
- Fix wrong byteswap macro being used on mingw32 which was breaking target
generation on stratum.
Version 2.8.2 - October 11, 2012
- Reinstate the history on dynamic intensity mode to damp fluctuations in
intensity but use an upper limit on how much the value can increase at any time
to cope with rare overflows.
- Create a fix-protocol option which prevents cgminer from switching to stratum
if it's detected.
- Simplify target generation code.
- Add support for client.get_version for stratum.
- Use a 64 bit unsigned integer on the diff target to generate the hex target.
- Update reconnect message to show whole address including port.
- Look for null values and parse correct separate array entries for url and port
with client reconnect commands for stratum.
- The command for stratum is client.reconnect, not mining.reconnect.
- Only copy the stratum url to the rpc url if an rpc url does not exist.
- Implement rudimentary mining.reconnect support for stratum.
- Ignore the value of stratum_active on calling initiate_stratum and assume
we're always trying to reinitiate it, and set the active flag to false in that
function.
- stratum auth can be unset if we fail to authorise on subsequent calls to
auth_stratum which undoes the requirement of setting it in one place so set it
in pool_active.
Version 2.8.1 - October 8, 2012
- Use the stratum url as the rpc url advertised if we switch to it.
- Count an invalid nonce count as a hardware error on opencl.
- Count each stratum work item as local work.
- Cope with one stratum pool being the only active pool when it dies by sleeping
for 5 seconds before retrying to get work from it instead of getting work
indefinitely.
- Detect stratum outage based on either select timing out or receiving an empty
buffer and properly re-establish connection by disabling the stratum_active
flag, coping with empty buffers in parse_stratum.
Version 2.8.0 - October 7, 2012
- Major upgrade - support for the stratum mining protocol.
- Fix various modminer warnings on mingw.
- Fix sign warning on windows build for bitforce.
- Cast socketfail to integer since SOCKET is an unsigned int on windows.
- Use strtod not strtol for bitforce temp backup.
- Cope with broken drivers returning nonsense values for bitforce temperatures.
- Minor warning fixes.
- Use the stratum thread to detect when a stratum pool has died based on no
message for 2 minutes.
- Only set the stratum auth flag once and once the stratum thread is started,
use that to set/unset the stratum active flag.
- Only hand off to stratum from getwork if we succeed in initiating the
protocol.
- Target should only be 32 bytes copied.
- Use a static array for work submission data instead of stack memory.
- Clear the buffer data before sprinting to it.
- Clear work stratum strings before setting them and add them to debug output.
- Drop stratum connect failed message to verbose level only since it's a regular
probing message.
- TCP Keepalive in curl is only in very recent versions and not required with
regular messages on stratum anyway.
- Move stratum sockets to curl infrastructure with locking around send+recv to
begin support for proxies and ssl.
- Make detect stratum fail if a proxy has been set up.
- Stratum does not currently have any proxy support so do not try to switch to
stratum if a proxy has been specified.
- Windows doesn't work with MSG_PEEK on recv so move to a continuously updating
buffer for incoming messages.
- Alloca is unreliable on windows so use static arrays in util.c stratum code.
- Begin support for mingw stratum build.
- Add space to reject reason.
- Parse the reject reason where possible from stratum share submission.
- Pass json error value to share result function to be able to parse reject
reason in stratum.
- Don't try to parse unneeded parameters in response to mining.subscribe.
- Remove the sshare hash entry if we failed to send it.
- Change notify message to info level to avoid spamming repeatedly when a pool
is down.
- Check the stratum pool difference has not changed compared to the work diff
when testing whether a share meets the target or not and retarget if necessary.
- Bit error in target calculation for stratum.
- Set work_block in gen_stratum_work for when work is reused to avoid thinking
it's all stale.
- Offset the current block detection to the prev block hash.
- We should be testing for id_val, not id in parse stratum response.
- Make target on stratum scale to any size by clearing sequential bits according
to diff.
- Correct target calculation in gen_stratum_work.
- If a share result has an error code but still has an id, it is likely a
reject, not an error.
- Initiate stratum the first time in pool_active only, allowing us to switch to
it on getting a failed getwork and detecting the presence of stratum on the url
at that time.
- Use 5 second timeout on sock full for now as a temporary workaround.
- If no stratum url is set by the end of the detect stratum routine, copy the
sockaddr url.
- Make all buffers slightly larger to prevent overflow.
- Make the stratum recv buffer larger than the recvsize.
- Userpass needs to be copied to user and pass earlier to allow stratum
authorisation to work with it.
- Store a sockaddr url of the stripped url used in determining sockaddr to not
confuse it with the stratum url and fix build warnings.
- Decrease the queued count with stratum work once it's staged as well.
- Allow the stratum retry to initiate and auth stratum in pool_alive to make
sure the stratum thread is started.
- Avoid duplicating pool->rpc_url and setting pool->stratum_url twice to itself.
- Detect if a getwork based pool has the X-Stratum header on startup, and if so,
switch to the stratum based pool.
- Comment update.
- Minor message change.
- Create a work item from a "clean" request from stratum allowing the new block
to be detected and the appropriate block change message to be given.
- Use statically allocated stratum strings in struct work to cope with the
inability to safely deallocate dynamically allocated ram.
- Use the current pool when deciding whether to reuse work from a stratum source
rather than the work's previous pool.
- Copy the stratum url to the rpc url to avoid none being set.
- Provide locking around stratum send operations to avoid races.
- Submit shares from stratum through the abstracted submit share function
detecting what message they belong to and showing the data from the associated
work, and then deleting it from the hash.
- Use a more robust mechanism to obtain a \n terminated string over a socket.
- Abstract out share submit as a function to be useable by stratum.
- Rename parse_stratum to parse_method as it is only for stratum messages that
contain methods.
- Display stratum as mechanism in status line when current pool is running it.
- Count each stratum notify as a getwork equivalent.
- Correct nonce submitted with share.
- Extranonce2 should be added before coinbase2.
- We should be hashing the binary coinbase, not the hex one.
- Fix endianness of nonce submitted for stratum.
- Check that stratum is already active in initiate_stratum to avoid
de-authorising ourselves by subscribing again.
- Begin implementing a hash database of submissions and attempt sending results.
- Copy parameters from stratum work required for share submission.
- Set lagging flag on first adding a pool to prevent pool slow warning at
startup.
- Fix work->target being a 32 byte binary in gen_stratum_work.
- Store and display stripped url in its own variable.
beyond the end of the buffer by masking the value to a max of 15.
- Icarus USB write failure is also a comms error
- api.c DEBUG message has no paramter
- Icarus catch more USB errors and close/reopen the port
- API-README update cgminer verison number
- hashmeter fix stats kh/s on 32bit windows
Version 2.7.6 - September 24, 2012
- Reorder libztex header include order to fix missing struct definition.
- Display share difficulty on log with a shortened hash display on submission.
- API stats add some pool getwork difficulty stats
- Ignore any pings pushed to the worker threads if the thread is still paused to
prevent it being enabled and disabled repeatedly.
- README - FAQ - usermod group - shouldn't remove other groups
- Test for sequential getwork failures on a pool that might actually be up but
failing to deliver work as we may end up hammering it repeatedly by mistake.
- reduce windows compile warnings
- util.c - bug - proxy - no data end condition
- As we average gpu time over 5 work intervals for dynamic GPU intensity, there
is no need to maintain a rolling average and it avoids the potential long term
corruption of a single overflow value.
- Test for the now-automatically exported variable AMDAPPSDKROOT when looking
for the presence of the OpenCL headers.
- API don't change 'Diff1 Shares' - backward compatability FTW
- miner.php highlighting correctly handling difficulty
- API - Add last share difficulty for devices and pool
- Store and report Accepted,Rejected,Stale difficulty in the summary and API
- WorkTime - display prevblock for scrypt
- api.c remove compile warnings
- Calculate work difficulty for each getwork and display with WorkTime debug
- remove MMQ unused variable warning
- FPGA - allow long or short device names in detect code + style police
- WorkTime - multiple nonce per work and identify the work source
- Optional WorkTime details with each Accepted/Rejected work item
- Icarus - ignore hardware errors in timing mode
- miner.php oops - mistype
- miner.php by default don't display IP/Port numbers in error messages
- api.c all STATUS messages automatically escaped
- api.c add missing escape for comma in MSG_PGAUNW
- API add display of and setting queue,scantime,expiry
- HW: dont submit bad shares
- save individual pool proxy settings to config
- --default-config - allow command line to define the default configuration file
for loading and saving
- API-README update for pools proxy info
- README URL proxy must use quote so show in the example
- bug: remove proxy: from the front of the proxy used
- CURL support for individual proxy per pool and all proxy types
- README spelling/etc
- README - FPGA device FAQ
- HW: error counter auto for all devices - ztex code not fixed
- API pgaidentify - unsupported message should be a warning
- API/BFL identify a device - currently only BFL to flash the led
- BFL add throttle count to internal stats + API
- BFL: missing device id in log message
- miner.php correct to new Diff1 Work field names
- API add device diff1 work
- API-README update
since we have upper bounds on how many curls can be recruited, this test is
redundant and can lead to problems.
- API-README update cgminer version number
- API-README fix groups P: example mistake
- API-README add COIN and other edits
- gpu->hit should be reset on new work as well.
- Do not add time to dynamic opencl calculations over a getwork.
- miner.php allow 'coin' is custom pages
Version 2.7.1 - August 21, 2012
- Update windows build instructions courtesy of sharky.
- Increase max curls to number of mining threads + queue * 2, accounting for up
and downstream comms.
- Queue enough requests to get started.
- There is no point trying to clone_work in get_work() any more since we clone
on every get_work_thread where possible.
- There is no point subtracting 1 from maxq in get_work_thread.
- Only set lagging flag once there are no staged work items.
- select_pool does not switch back to the primary once lagging is disabled.
- miner.php allow page title to be defined in myminer.php
- Free work before retrying in get_work_thread.
- Increment total work counter under mutex lock.
- Increment the queued count after the curl is popped in case there's a delay
waiting on curls and we think we've queued work when in fact we're waiting
- API new command 'coin' with mining information
- Do the dynamic timing in opencl code over a single pass through scanhash to
make sure we're only getting opencl times contributing to the measured inte
- Increase curl reaping time to 5 minutes since comms between curl requests can
be 2 mins apart with lots of rolltime.
- No need for extra variable in hash_push.
- Remove short options -r and -R to allow them to be reused and remove readme
entries for deprecated options.
- Avoid attempting to recursively lock the console mutex by disabling warnings
in gpu_fanpercent when fanspeed monitoring fails on windows. Debugged by l
- Deprecate the opt_fail_pause parameter, leaving a null placeholder for
existing configurations.
- Don't pause after failed getwork, set lagging flag and reassess.
- Add message to share if it's a resubmit.
- We should not be pausing in trying to resubmit shares.
- Get rid of the extending fail pause on failed connects since we discard work
after a period.
- get_work always returns true so turn it into a void function.
- get_work never returns false so get rid of fail pause loop.
- Get rid of pause and retry from get_upstream_work so we only do it from one
place.
- Deprecate the opt_retries feature as no one wants cgminer to automatically
abort. Leave a null placeholder for configurations that still have it.
- Reinstate fix ADL gpu-map not working when there are more ADL devices than
openCL patch by Nite69. Add virtual adl mapping for when none is specified o
- miner.php show summary Diff1 Shares total
- miner.php fix Work Utility totals
- miner.php format new Work Utility and Diff1 Shares
- API V1.17 show Work Utility and Diff1 Shares
sampling similar timeframes, we can average the gpu_us result over 5 different
values to get very fine precision.
- Fix harmless unused warnings in scrypt.h.
- api.c typo
- API allow display/change failover-only setting
- Check we are not lagging as well as there is enough work in getwork.
- Minimise locking and unlocking when getting counts by reusing shared mutex
lock functions.
- Avoid getting more work if by the time the getwork thread is spawned we find
ourselves with enough work.
- The bitforce buffer is cleared and hw error count incremented on return from a
failed send_work already so no need to do it within the send_work function.
- miner.php allow a custom page section to select all fields with '*' - e.g. to
create a STATS section on a custom page
- Escape " and \ when writing json config file
- miner.php optional single rig totals (on by default)
Version 2.6.4 - August 7, 2012
- Convert the serial autodetect functions to use int instead of char to
enumerate devices.
- Make the serial open timeout for BFL generically 1 second on windows.
- Deuglify windows autodetect code for BFL.
- There is no point zeroing temperature in BFL if we fail to get a response, and
we should register it as a HW error, suggesting throttling.
- Update SCRYPT README with information about HW errors.
- Use the scrypt CPU code to confirm results from OCL code, and mark failures as
HW errors, making it easier to tune scrypt parameters.
- We may as well leave one curl still available per pool instead of reaping the
last one.
- Need to recheck the pool->curls count on regaining the pool lock after the
pthread conditional wait returns.
- Display reaped debug message outside mutex lock to avoid recursive locking.
- Add specific information when ADL detects error -10 saying the device is not
enabled.
- api.c update API start message and include port number
- miner.php ignore arg when readonly
- miner.php allow pool inputs: delete, addpool, poolpriority
Version 2.6.3 - August 5, 2012
- Count likely throttling episodes on bitforce devices as hardware errors.
- Style cleanups.
- Use FTD2XX.DLL on Windows to autodetect BitFORCE SHA256 devices.
- Make pool_disabled the first in the enums == 0, fixing the pool enabled count
which compares if value is not enabled before enabling it.
- Correct writing of scrypt parameters to config file based on command line
parameters only.
- Use different variables for command line specified lookup gap and thread
concurrency to differentiate user defined versus auto chosen values.
- Queue a request on pool switch in case we have no work from the new pool yet.
- Display failover only mode in pool menu and allow it to be toggled live.
- Reinstate check for system queueing lag when the current pool's queue is maxed
out, there is no staged work, and the work is needed now.
- There is no need for pool active testing to be mandatory any more with queue
request changes.
- Fix harmless warnings.
- Check the current staged and global queued as well before queueing requests.
Discard stales before ageing work in the watchdog thread. Queue requests after
discarding and ageing work in watchdog thread. Display accurate global queued in
curses output. Reuse variable in age_work().
- The queueing mechanism has become a complex state machine that is no longer
predictable. Rewrite it from scratch watching only current queues in flight and
staged work available on a pool by pool basis.
- API remove unused warning in non-GPU compile
- api.c in linux allow to open a closed socket in TIME_WAIT
- Queue an extra request whenever staged work drops below mining thread count in
hash_pop.
- Update debian package configs to v2.6.2
Version 2.6.2 - August 3, 2012
- Scrypt mining does not support block testing yet so don't try to print it.
- Clear the bitforce buffer whenever we get an unexpected result as it has
likely throttled and we are getting cached responses out of order, and use the
temperature monitoring as a kind of watchdog to flush unexpected results.
- It is not critical getting the temperature response in bitforce so don't
mandatorily wait on the mutex lock.
- Check there is a cutoff temp actually set in bitforce before using it as a cut
off value otherwise it may think it's set to zero degrees.
- We dropped the temporary stopping of curl recruiting on submit_fail by
mistake, reinstate it.
- Make threads report in either side of the scanhash function in case we miss
reporting in when restarting work.
- Don't make mandatory work and its clones last forever.
- Make test work for pool_active mandatory work items to smooth out staged work
counts when in failover-only mode.
- Add debugging output when work is found stale as to why.
- Print the 3 parameters that are passed to applog for a debug line in
bitforce.c
- Clear bitforce buffer on init as previously.
- Add some headroom to the number of curls available per pool to allow for
longpoll and sendwork curls.
- Revert "Revert "Change BFL driver thread initialising to a constant 100ms
delay between devices instead of a random arrangement.""
- Revert "Remove bitforce_thread_init"
- Show the correct base units on GPU summary.
- Differentiate between the send return value being a bool and the get return
value when managing them in bitforce scanhash.
- 23a8c60 Revert "bitforce: Skip out of sending work if work restart requested"
Version 2.6.1 - July 30, 2012
- Display scrypt as being built in as well.
- Fix build warning about KL_SCRYPT when built without scrypt support.
- Remove the low hash count determinant of hardware being sick. A low hash rate
can be for poor network connectivity or scrypt mining, neither of which are due
to a sick device.
- api.c poolpriority changes
Version 2.6.0 - July 29, 2012
- Display kilohash when suitable, but store the global mhash value still truly
in megahashes to not break the API output.
- Don't try and print curses output for devices that won't fit on the screen.
- Find the gpu platform with the most devices and use that if no platform option
is passed.
- Allow more platforms to be probed if first does not return GPUs.
- Fix external scrypt algo missing.
- Limit scrypt to 1 vector.
- Handle KL_SCRYPT in config write.
- Get rid of stuff.
- Don't enqueuewrite buffer at all for pad8 and pass work details around for
scrypt in dev_blk.
- Set the correct data for cldata and prepare for pad8 fixes.
- Bugfix: Fix build without curses but with OpenCL
- Find the gpu platform with the most devices and use that if no platform option
is passed.
- Allow more platforms to be probed if first does not return GPUs.
- Get rid of spaces in arrays in scrypt kernel.
- Start with smaller amount of hashes in cpu mining to enable scrypt to return
today sometime.
- Show Khash hashrates when scrypt is in use.
- Free the scratchbuf memory allocated in scrypt and don't check if CPUs are
sick since they can't be. Prepare for khash hash rates in display.
- Add cpumining capability for scrypt.
- Set scrypt settings and buffer size in ocl.c code to be future modifiable.
- Cope with when we cannot set intensity low enough to meet dynamic interval by
inducing a forced sleep.
- Make dynamic and scrypt opencl calls blocking.
- Calculate midstate in separate function and remove likely/unlikely macros
since they're dependent on pools, not code design.
- bitforce: Use "full work" vs "nonce range" for kernel name
- Display in debug mode when we're making the midstate locally.
- Fix nonce submission code for scrypt.
- Make sure goffset is set for scrypt and drop padbuffer8 to something
manageable for now.
- Set up buffer8 for scrypt.
- Build fix for opt scrypt.
- Don't check postcalc nonce with sha256 in scrypt.
- Don't test nonce with sha and various fixes for scrypt.
- Make scrypt buffers and midstate compatible with cgminer.
- Use cgminer specific output array entries in scrypt kernel.
- Provide initial support for the scrypt kernel to compile with and mine scrypt
with the --scrypt option.
- Enable completely compiling scrypt out.
- Begin import of scrypt opencl kernel from reaper.
- bitforce_get_result returns -1 on error now.
- Check return value of read in BFgets
- Bugfix: Make our Windows nanosleep/sleep replacements standards-compliant
(which fixes nmsleep) and include compat.h for bitforce (for sleep)
- rpc: Use a single switch statement for both stringifications of cgpu->status
- Fix whitespace mangling.
- miner.php fix rig # when miners fail
- Only try to shut down work cleanly if we've successfully connected and started
mining.
- Use switch statement for cgpu->status and fix spelling.
- Abbrv. correction
- Bugfix: Don't declare devices SICK if they're just busy initialising
- Bugfix: Calculate nsec in nmsleep correctly
- Bugfix: Adapt OpenCL scanhash errors to driver API change (errors are now -1,
not 0)
- Remove superfluous ave_wait
- Put kname change for broken nonce-range back in
- Add average wait time to api stats
on param errors
- Implement rudimentary X-Mining-Hashrate support.
- Detect large swings in temperature when below the target temperature range and
change fan by amounts dependant on the value of tdiff.
- Adjust the fanspeed by the magnitude of the temperature difference when in the
optimal range.
- Revert "Restarting cgminer from within after ADL has been corrupted only leads
to a crash. Display a warning only and disable fanspeed monitoring."
- api.c fix json already closed
- implement and document API option --api-groups
- Put upper bounds to under 2 hours that work can be rolled into the future for
bitcoind will deem it invalid beyond that.
- define API option --api-groups
- api.c allow unwell devices to be enabled so they can be cured
- miner.php - fix/enable autorefresh for custom pages
- miner.php allow custom summary pages - new 'Mobile' summary
- Work around pools that advertise very low expire= time inappropriately as this
leads to many false positives for stale shares detected.
- Only show ztex board count if any exist.
- There is no need for work to be a union in struct workio_cmd
- fpgautils.c include a debug message for all unknown open errors
- Don't keep rolling work right up to the expire= cut off. Use 2/3 of the time
between the scantime and the expiry as cutoff for reusing work.
- Log a specific error when serial opens fail due to lack of user permissions
- Increase GPU timing resolution to microsecond and add sanity check to ensure
times are positive.
- Opencl code may start executing before the clfinish order is given to it so
get the start timing used for dynamic intensity from before the kernel is
queued.
- fpgautils.c - set BAUD rate according to termio spec
- fpgautils.c - linux ordering back to the correct way
- miner.php remove unneeded '.'s
- miner.php add auto refresh options
- miner.php add 'restart' next to 'quit'
- miner.php make fontname/size configurable with myminer.php
- Make the pools array a dynamically allocated array to allow unlimited pools to
be added.
- Make the devices array a dynamically allocated array of pointers to allow
unlimited devices.
- Dynamic intensity for GPUs should be calculated on a per device basis. Clean
up the code to only calculate it if required as well.
- Use a queueing bool set under control_lock to prevent multiple calls to
queue_request racing.
- Use the work clone flag to determine if we should subtract it from the total
queued variable and provide a subtract queued function to prevent looping over
locked code.
- Don't decrement staged extras count from longpoll work.
- Count longpoll's contribution to the queue.
- Increase queued count before pushing message.
- Test we have enough work queued for pools with and without rolltime
capability.
- As work is sorted by age, we can discard the oldest work at regular intervals
to keep only 1 of the newest work items per mining thread.
- Roll work again after duplicating it to prevent duplicates on return to the
clone function.
- Abstract out work cloning and clone $mining_threads copies whenever a rollable
work item is found and return a clone instead.
- api.c display Pool Av in json
- Take into account average getwork delay as a marker of pool communications
when considering work stale.
switched) and this is managed by restarting longpoll cleanly and waiting for a
thread join.
- miner.php only show the current date header once
- miner.php also add current time like single rig page
- miner.php display rig 'when' table at top of the multi-rig summary page
- README - add some Ztex details
- api.c include zTex in the FPGA support list
- api.c ensure 'devs' shows PGA's when only PGA code is compiled
- cgminer.c sharelog code consistency and compile warning fix
- README correct API version number
- README spelling error
- api.c combine all pairs of sprintfs()
- api.c uncomment and use BLANK (and COMMA)
- Code style cleanup
- Annotating frequency changes with the changed from value
- README clarification of 'notify' command
- README update for API RPC 'devdetails'
- api.c 'devdetails' list static details of devices
- Using less heap space as my TP-Link seems to not handle this much
Version 2.3.4 - April 25, 2012
- Extensively document the cause of GPU device issues and the use of --gpu-map.
- Support for share logging
- Detect poorly performing combination of SDK and phatk kernel and add verbose
warning at startup.
- Icarus update to new add_cgpu()
- Icarus driver working with Linux and Windows
- api.c fix unused variable compile warning
- Display all OpenCL devices when -n is called as well to allow debugging of
differential mapping of OpenCL to ADL.
- Add a --gpu-map option which will allow arbitrarily mapping ADL devices to
OpenCL devices for instances where association by enumeration alone fails.
- Increase upper limit on number of extra items to queue as some FPGA code can't
yet reliably keep many devices busy.
- Display configuration file information when -c option is passed and only when
file exists on loading default config file.
- Display configuration file loaded, if any, and debug output if configuration
file parsing failed.
- Add missing ztex header to Makefile for distribution.
- Document long-form COM port device names on Windows, required to specify
serial ports above 9
- Include ztex bitstreams firmware in distribution and install if configured in.
- Style police on driver-ztex.c
- work_restart should only be changed by cgminer.c now
- Shut down the api cleanly when the api thread is cancelled. This should allow
the api socket to be closed successfully to next be reopened with app_restart.
- Make a union for cgpu device handles, and rename "device" to "device_ztex"
since it's Ztex-specific
- Initialise name variable.
- Remove unnecessary check for variable that always has memory allocated.
- Bugfix: Missing "break" no-op in default case
- Make the status window and log window as large as can fit on startup,
rechecking to see if it can be enlarged after the fact. This allows any number
of devices to be displayed provided the window is made long enough without
corrupting the output.
- Style police on libztex.c.
- API add removepool like the screen interface
- api.c escape required characters in return strings + pools returns the
username
- Set lp_path to NULL after free for consistency.
- Removing dmalloc import left behind by mistake
- Fixing leak in resp_hdr_cb
- miner.php warning highlight GPU stats if they are zero (e.g. ADL not enabled)
- miner.php highlight any device that isn't 'Enabled'
- miner.php highlight any Status that isn't 'Alive'
- miner.php optionally support multiple rigs
- Initial Ztex support 1.15x board.
Version 2.3.3 - April 15, 2012
- Don't even display that cpumining is disabled on ./configure to discourage
people from enabling it.
- Do a complete cgminer restart if the ATI Display Library fails, as it does on
windows after running for some time, when fanspeed reporting fails.
- Cache the initial arguments passed to cgminer and implement an attempted
restart option from the settings menu.
- Disable per-device status lines when there are more than 8 devices since
screen output will be corrupted, enumerating them to the log output instead at
startup.
- Reuse Vals[] array more than W[] till they're re-initialised on the second
sha256 cycle in poclbm kernel.
- Minor variable alignment in poclbm kernel.
- Make sure to disable devices with any status not being DEV_ENABLED to ensure
that thermal cutoff code works as it was setting the status to DEV_RECOVER.
- Re-initialising ADL simply made the driver fail since it is corruption over
time within the windows driver that's responsible. Revert "Attempt to
re-initialise ADL should a device that previously reported fanspeed stops
reporting it."
- Microoptimise poclbm kernel by ordering Val variables according to usage
frequency.
Version 2.3.2 - March 31, 2012
- Damping small changes in hashrate so dramatically has the tendency to always
make the hashrate underread so go back to gentle damping instead.
- Revert the crossover of variables from Vals to W in poclbm kernel now that
Vals are the first declared variables so they're used more frequently.
- Vals variables appearing first in the array in poclbm is faster.
- Change the preferred vector width to 1 for Tahiti only, not all poclbm
kernels.
- Use a time constant 0.63 for when large changes in hashrate are detected to
damp change in case the large change is an aliasing artefact instead of a real
chang
- Only increment stale counter if the detected stales are discarded.
- Attempt to re-initialise ADL should a device that previously reported fanspeed
stops reporting it.
- Move the ADL setup and clearing to separate functions and provide a reinit_adl
function to be used when adl fails while running.
- Use slightly more damping on the decay time function in the never-ending quest
to smooth off the hashmeter.
- Set the starting fanspeed to a safe and fairly neutral 50% when autofan is
enabled.
- Provide locking around updates of cgpu hashrates as well to prevent multiple
threads accessing data fields on the same device.
- Display the beginning of the new block in verbose mode in the logs.
- Reinstate old diablo kernel variable ordering from 120222, adding only goffset
and vector size hint. The massive variable ordering change only helped one SDK
on
- Change the version number on the correct kernels.
- api.c devicecode/osinfo incorrectly swapped for json
- Add extensive instructions on how to make a native windows build.
- Update version numbers of poclbm and diablo kernels as their APIs have also
changed.
- Use global offset parameter to diablo and poclbm kernel ONLY for 1 vector
kernels.
- Use poclbm preferentially on Tahiti now regardless of SDK.
- Remove unused constant passed to poclbm.
- Clean up use of macros in poclbm and use bitselect everywhere possible.
- Add vector type hint to diablo kernel.
- Add worksize and vector attribute hints to the poclbm kernel.
- Spaces for non-aligned variables in poclbm.
- More tidying of poclbm.
- Swap Vals and W variables where they can overlap in poclbm.
- More tidying of poclbm.
- Tidy up first half of poclbm.
- Clean up use of any() by diablo and poclbm kernels.
- Minor variable symmetry changes in poclbm.
- Put additions on separate lines for consistency in poclbm.
- Consolidate last use of W11 into Vals4 in poclbm.
- Change email due to SPAM
- api.c miner.php add a '*' to the front of all notify counters - simplifies
future support of new counters
- miner.php add display 'notify' command
- Small change to help arch's without processor affinity
- Fix bitforce compile error
- api.c notify should report disabled devices also - of course
- API returns the simple device history with the 'notify' command
- code changes for supporting a simple device history
- api.c Report an OS string in config to help with device issues
- api.c fix Log Interval - integer in JSON
- api.c config 'Device Code' to show list of compiled devices + README
- api.c increase buffer size close to current code allowable limit
- removed 8-component vector support from kernel, as this is not supported in
CGMINER anyway
- forgot to update kernel modification date, fixed ;)
- reordered an addition in the kernel, which results in less instructions used
in the GPU ISA code for GCN
- miner.php: option for readonly or check privileged access
- Ignore reduntant-with-build options --disable-gpu, --no-adl, and --no-restart
- miner.php: ereg_replace is DEPRECATED so use preg_replace instead
- Make curses TUI support optional at compile-time.
- Bugfix: AC_ARG_WITH provides withval instead of enableval
- miner.php split devs output for different devices
- api.c: correct error messages
- icarus.c modify (regular) timeout warning to only be debug
- icarus.c set the windows TODO timeout
- Allow specifying a specific driver for --scan-serial
- optimized nonce-check and output code for -v 2 and -v 4
- Bugfix: Check for libudev header (not just library) in configure, and document
optional dependency
- Add API support for Icarus and Bitforce
- Next API version is 1.4 (1.3 is current)
- README/api.c add "When" the request was processed to STATUS
- Bugfix: ZLX to read BitFORCE temp, not ZKX -.- Use libudev to autodetect BitFORCE GPUs, if available
- Use the return value of fan_autotune to set fan_optimal instead of passing it
as a pointer.
- Pass the lasttemp from the device we're using to adjust fanspeed in twin
devices.
- fix the name to 3 chars, fix the multi-icarus support
- Bugfix: "-S auto" is the default if no -S is specified, and there is no such
delay in using it
- README add information missing from --scan-serial
- Update README RPC API Version comment
- Bugfix: Allow enabling CPU even without OpenCL support
- Change failed-to-mine number of requested shares messge to avoid segfault on
recursive calling of quit().
- Get rid of extra char which is just truncated in poclbm kernel.
- only small code formating changes
- removed vec_step() as this could lead to errors on older SDKs
- unified code for generating nonce in kernel and moved addition of base to the
end -> faster
Version 2.3.1 - February 24, 2012
- Revert input and output code on diakgcn and phatk kernels to old style which
worked better for older hardware and SDKs.
- Add a vector*worksize parameter passed to those kernels to avoid one op.
- Increase the speed of hashrate adaptation.
- Only send out extra longpoll requests if we want longpolls.
- API implement addpool command
- API return the untouched Total MH also (API now version 1.3)
- Add enable/disablepool to miner.php example and reduce font size 1pt
Version 2.3.0 - February 23, 2012
- Consider extra longpoll work items as staged_extra so as to make sure we queue
more work if queueing regular work items as longpolls.
- Use diablo kernel on all future SDKs for Tahiti and set preferred vector width
to 1 on poclbm kernel only.
- Explicitly type the constants in diakgcn kernel as uint, to be in line with
poclbm kernel.
- Reset all hash counters at the same time as resetting start times to get
accurate hashrates on exiting which is mandatory for benchmarking.
- Report thread out before it starts to avoid being flagged as sick when waiting
for the first work item.
- Don't disable and re-enable devices as they may recover and in the meantime
have their status set to OFF.
- API new commands enablepool and disablepool (version already incremented)
- Tolerate new-format temperature readings for bitforce
- Modify cgminer.c pool control to allow API to call it
- Bugfix: Fix BitFORCE driver memory leak in debug logging
- Extra byte was being unused in poclbm leading to failure on some platforms.
- Explicitly type the constants in poclbm kernel as uint.
- Don't save 'include' when saving the configuration
- Allow configuration file to include another recursively
- Use the SDK and hardware information to choose good performing default
kernels.
- Move phatk kernel to offset vector based nonce bases as well.
- Add a --benchmark feature which works on a fake item indefinitely to compare
device performance without any server or networking influence.
- Allow writing of multiple worksizes to the configuration file.
- Allow writing of multiple vector sizes to the configuration file.
- Allow writing of multiple kernels to the configuration file.
- Allow multiple different kernels to be chosen per device.
build.
- ALlow much longer filenames for kernels to load properly.
- Allow different kernels to be used by different devices and fix the logic fail
of overcorrecting on last commit with !strstr.
- Fix kernel selection process and build error.
- queue_phatk_kernel now uses CL_SET_VARG() for base-nonce(s), too
- added OpenCL >= 1.1 detection code, in preparation of OpenCL 1.1 global offset
parameter support
- Use K array explicitly to make it clear what is being added.
- Work items have a tendency to expire at exactly the same time and we don't
queue extra items when there are plenty in the queue, regardless of age. Allow
extra work items to be queued if adequate time has passed since we last
requested work even if over the limit.
- Discard work when failover-only is enabled and the work has come from a
different pool.
- Missing include to build on newer mingw32.
- Move from the thread safe localtime_r to regular localtime which is the only
one supported on newer pthread libraries on mingw32 to make it compile with the
newer ming. Thread safety is of no importance where localtime is used in this
code.
- Define in_addr_t in windows if required
- sys/wait.h not required in windows
- Allow API to restrict access by IP address
- Add pool switching to example miner.php
- Display X-Reject-Reason, when provided
- Remove the test for whether the device is on the highest profil level before
raising the GPU speed as it is ineffectual and may prevent raising the GPU
speed.
- Remove unnecessary check for opt_debug one every invocation of applog at
LOG_DEBUG level and place the check in applog().
Version 2.2.3 - February 6, 2012
- Revert "Rewrite the convoluted get_work() function to be much simpler and roll
work as much as possible with each new work item." This seems to cause a race on
work in free_work(). Presumably other threads are still accessing the structure.
Version 2.2.2 - February 6, 2012
- Provide support for the submitold extension on a per-pool basis based on the
value being detected in a longpoll.
- Don't send a ping to a dynamic device if it's not enabled as that will just
enable it for one pass and then disable it again.
- Rewrite the convoluted get_work() function to be much simpler and roll work as
much as possible with each new work item.
- Roll as much work as possible from the work returned from a longpoll.
- Rolling work on each loop through the mining thread serves no purpose.
- Allow to stage more than necessary work items if we're just rolling work.
- Replace divide_work with reuse_work function used twice.
- Give rolled work a new ID to make sure there is no confusion in the hashtable
lookups.
- Remove now-defunct hash_div variables.
- Remove unused get_dondata function.
- Silence ADL warnings.
- Silence unused parameter warnings.
- Stagger the restart of every next thread per device to keep devices busy ahead
of accessory threads per device.
- Deprecate the --donation feature. Needlessly complex, questionable usefulness,
depends on author's server and a central pool of some kind, and was not heavily
adopted.
- It's devices that report back now, not threads, update message.
- Continue auto-management of fan and engine speeds even if a device is disabled
for safety reasons.
- No need to check we're highest performance level when throttling GPU engine
speed.
- Abstract out tests for whether work has come from a block that has been seen
before and whether a string is from a previously seen block.
- Probe but don't set the timeout to 15 seconds as some networks take a long
time to timeout.
- Remove most compiler warnings from api.c
- Add last share's pool info in cgpu_info
- Allow the OpenCL platform ID to be chosen with --gpu-platform.
- Iterate over all platforms displaying their information and number of devices
when --ndevs is called.
- Deprecate main.c
- Some networks can take a long time to resolve so go back to 60 second timeouts
instead of 15.
- Only enable curses on failure if curses is desired.
- Fix warnings in bitforce.c
- Bugfix: Need to open BitForce tty for read-write
- Fix various build issues.
- Modularize code: main.c -> device-cpu + device-gpu
- Fix phatk kernel not working on non-bitalign capable devices (Nvidia, older
ATI).
- Update poclbm kernel for better performance on GCN and new SDKs with bitalign
support when not BFI INT patching. Update phatk kernel to work properly for non
BFI INT patched kernels, providing support for phatk to run on GCN and non-ATI
cards.
- Return last accepted share pool/time for devices
- Display accepted share pool/time for CPUs
- Bug intensity always shows GPU 0
- Update example web miner.php to use new API commands
Version 2.2.1 - January 30, 2012
NOTE - The GPU Device reordering in 2.2.0 by default was considered a bad idea
so the original GPU ordering is used by default again unless reordering is
explicitly requested.
- Fix bitforce failing to build into cgminer.
- Add missing options to write config function.
- Add a --gpu-reorder option to only reorder devices according to PCI Bus ID
when requested.
- Fix for midstate support being broken on pools that supported no-midstate
work by ensuring numbers are 32 bits in sha2.c
- Set virtual GPUs to work when ADL is disabled or all mining will occur on GPU
0.
- Add information about paused threads in the menu status.
- Disable all but the first thread on GPUs in dynamic mode for better
interactivity.
- Set the latest network access time on share submission for --net-delay even if
we're not delaying that submission for further network access.
- Clear adl on exiting after probing values since it may attempt to overclock.
- As share submission is usually staggered, and delays can be costly, submit
shares without delay even when --net-delay is enabled.
- Display GPU number and device name when ADL is successfully enabled on it.
- Display GPU ordering remapping in verbose mode.
- Don't fail in the case the number of ADL and OpenCL devices do not match, and
do not attempt to reorder devices unless they match. Instead give a warning
about
- Display error codes should ADL not return ADL_OK in the more critical function
calls.
- Fix unused warning.
- Fix compile warnings in api.c
- Add extensive ADL based device info in debug mode.
- Make --ndevs display verbose opencl information as well to make debugging
version information easier.
- Display information about the opencl platform with verbose enabled.
- Explicitly check for nvidia in opencl platform strings as well.
Version 2.2.0 - January 29, 2012
NOTE: GPU Device order will change with this release with ATI GPUs as cgminer
now can enumerate them according to their Bus ID which means the values should
now correlate with their physical position on the motherboard.
- Default to poclbm kernel on Tahiti (7970) since phatk does not work, even
though performance is sub-standard so that at least it will mine successfully by
defau
- Retain cl program after every possible place we might build the program.
- Update ADL SDK URL.
- Fix potential overflow.
- Map GPU devices to virtual devices in their true physical order based on
BusNumber.
- Change the warning that comes with failure to init cl on a device to be more
generic and accurate.
- Advertise longpoll support in X-Mining-Extensions
- Detect dual GPU cards by iterating through all GPUs, finding ones without
fanspeed and matching twins with fanspeed one bus ID apart.
- Do not attempt to build the program that becomes the kernel twice. This could
have been leading to failures on initialising cl.
- Some opencl compilers have issues with no spaces after -D in the compiler
options.
- Allow intensity up to 14.
- Use calloced stack memory for CompilerOptions to ensure sprintf writes to the
beginning of the char.
- Whitelist 79x0 cards to prefer no vectors as they perform better without.
- Adjust fan speed gently while in the optimal range when temperature is
drifting to minimise overshoot in either direction.
- Detect dual GPU cards via the indirect information of - 1st card has a fan
controller. 2nd card does not have a fan controller, cards share the same device
name
- Instead of using the BFI_INT patching hack on any device reporting
cl_amd_media_ops, create a whitelist of devices that need it. This should enable
GCN architec
- Fixed API compiling issue on OS X
- Add more explanation of JSON format and the 'save' command
- Return an error if using ADL API commands when it's not available
- Read off lpThermalControllerInfo from each ADL device.
- Add ADL_Overdrive5_ThermalDevices_Enum interface.
- Add API commands: config, switchpool, gpu settings, save
- Implement socks4 proxy support.
- Fix send() for JSON strings
- Introduce a --net-delay option which guarantees at least 250ms between any
networking requests to not overload slow routers.
- Generalise locking init code.
- Allow invalid values to be in the configuration file, just skipping over them
provided the rest of the file is valid JSON. This will allow older configurat
- Allow CPU mining explicitly enable only if other mining support is built in.
- BitForce FPGA support
- Configure out building and support of all CPU mining code unless
--enable-cpumining is enabled.
- Allow parsed values to be zero which will allow 0 values in the config file to
work.
- Advertise that we can make our own midstate, so the pool can skip generating
it for us
- Refactor the CPU scanhash_* functions to use a common API. Fixes bugs.
- Don't consider a pool lagging if a request has only just been filed. This
should decrease the false positives for "pool not providing work fast enough".
- Invalidating work after longpoll made hash_pop return no work giving a false
positive for dead pool. Rework hash_pop to retry while finds no staged work u
- Remove TCP_NODELAY from curl options as many small packets may be contributing
to network overload, when --net-delay is enabled.
- Refactor miner_thread to be common code for any kind of device
- Simplify submit_nonce loop and avoid potentially missing FOUND - 1 entry.
Reported by Luke-Jr.
- Micro-optimisation in sha256_sse2 code courtesy of Guido Ascioti
guido.ascioti@gmail.com
- Refactor to abstract device-specific code
Version 2.1.2 - January 6, 2012
- If api-description is specified, save it when writing the config file
- Adjust utility width to be constant maximum as well.
- Add percent signs to reject ratio outputs
- Should the donation pool fail, don't make the fallover pool behave as though
the primary pool is lagging.
- Use an alternative pool should the donation getwork fail.
Version 2.1.1 - January 1, 2012
- Include API examples in distribution tarball.
- Don't attempt to pthread_join when cancelling threads as they're already
detached and doing so can lead to a segfault.
- Give more generic message if slow pool at startup is the donation pool.
- Continue to attempt restarting GPU threads if they're flagged dead at 1 min.
intervals.
- Don't attempt to restart sick flagged GPUs while they're still registering
activity.
- Make curl use fresh connections whenever there is any communication issue
in case there are dead persistent connections preventing further comms from
working.
- Display pool in summary if only 1 pool.
- Adjust column width of A/R/HW to be the maximum of any device and align them.
Version 2.1.0 - December 27, 2011
- Major infrastructure upgrade with RPC interface for controlling via sockets
encoded with/without JSON courtesy of Andrew Smith. Added documentation for
use of the API and sample code to use with it.
- Updated linux-usb-cgminer document.
- Rewrite of longpoll mechanism to choose the current pool wherever possible to
use for the longpoll, or any pool that supports longpoll if the current one
does not.
- Display information about longpoll when the chosen server has changed.
- Fix the bug where longpoll generated work may have been sent back to the
wrong pool, causing rejects.
- Fix a few race conditions on closing cgminer which caused some of the crashes
on exit.
- Only adjust gpu engine speed in autotune mode if the gpu is currently at the
performance level of that being adjusted.
- Various fixes for parsing/writing of configuration files.
- Do not add blank lines for threads of unused CPUs.
- Show which pool is unresponsive on startup.
- Only show GPU management menu item if GPUs are in use.
- Align most device columns in the curses display.
Version 2.0.8 - November 11, 2011
- Make longpoll do a mandatory flushing of all work even if the block hasn't
changed, thus supporting longpoll initiated work change of any sort and merged
mining.
- Byteswap computed hash in hashtest so it can be correctly checked. This fixes
the very rare possibility that a block solve on solo mining was missed.
- Add x86_64 w64 mingw32 target
- Allow a fixed speed difference between memory and GPU clock speed with
--gpu-memdiff that will change memory speed when GPU speed is changed in
autotune mode.
- Don't load the default config if a config file is specified on the command
line.
- Don't build VIA on apple since -a auto bombs instead of gracefully ignoring
VIA failing.
- Build fix for dlopen/dlclose errors in glibc.
Version 2.0.7 - October 17, 2011
- Support work without midstate or hash1, which are deprecated in bitcoind 0.5+
- Go to kernel build should we fail to clCreateProgramWithBinary instead of
failing on that device. This should fix the windows problems with devices not
initialising.
- Support new configuration file format courtesy of Chris Savery which can write
the config file from the menu and will load it on startup.
- Write unix configuration to .cgminer/cgminer.conf by default and prompt to
overwrite if given a filename from the menu that exists.
Version 2.0.6 - October 9, 2011
- Must initialise the donorpool mutex or it fails on windows.
- Don't make donation work interfere with block change detection allowing
donation to work regardless of the block chain we're mining on.
- Expire shares as stale with a separate timeout from the scantime, defaulting
to 120 seconds.
- Retry pools after a delay of 15 seconds if none can be contacted on startup
unless a key is pressed.
- Don't try to build adl features without having adl.
- Properly check shares against target difficulty - This will no longer show
shares when solo mining at all unless they're considered to be a block solve.
- Add altivec 4 way (cpu mining) support courtesy of Gilles Risch.
- Try to use SSL if the server supports it.
- Display the total solved blocks on exit (LOL if you're lucky).
- Use ADL activity report to tell us if a sick GPU is still busy suggesting it
is hard hung and do not attempt to restart it.
Version 2.0.5 - September 27, 2011
- Intensity can now be set to dynamic or static values per-device.
- New donation feature --donation sends a proportion of shares to author's
account of choice, but is disabled by default!
- The hash being displayed and block detection has been fixed.
- Devices not being mined on will not attempt to be ADL managed.
- Intensity is now displayed per GPU device.
- Make longpoll attempt to restart as often as opt_retries specifies.
- We weren't rolling work as often as we could.
- Correct some memory management issues.
- Build fixes.
- Don't mess with GPUs if we don't have them.
Version 2.0.4 - September 23, 2011
- Confused Longpoll messages should be finally fixed with cgminer knowing for
sure who found the new block and possibly avoiding a rare crash.
- Display now shows the actual hash and will say BLOCK! if a block is deemed
solved.
- Extra spaces, which would double space lines on small terminals, have been
removed.
- Fan speed change is now damped if it is already heading in the correct
direction to minimise overshoot.
- Building without opencl libraries is fixed.
- GPUs are autoselected if there is only one when in the GPU management menu.
- GPU menu is refreshed instead of returning to status after a GPU change.
Version 2.0.3 - September 17, 2011
- Various modes of failure to set fanspeeds and adl values have been addressed
and auto-fan should work now on most hardware, and possibly other values
which previously would not have worked.
- Fixed a crash that can occur on switching pools due to longpoll thread races.
- Use ATISTREAMSDKROOT if available at build time.
- Fanspeed management is returned to the driver default on exit instead of
whatever it was when cgminer was started.
- Logging of events deemed WARNING or ERR now will display even during
periods where menu input is being awaited on.
Version 2.0.2 - September 11, 2011
- Exit cleanly if we abort before various threads are set up or if they no
longer exist.
- Fix a rare crash in HASH_DEL due to using different mutexes to protect the
data.
- Flag devices that have never started and don't allow enabling of devices
without restarting them.
- Only force the adapter speed to high if we've flagged this device as being
managed.
- Flag any devices with autofan or autogpu as being managed.
- Use a re-entrant value to store what fanspeed we're trying to set in case the
card doesn't support small changes.
Force it to a multiple of 10% if it
- Add temperature to standard output where possible and use more compact output.
- Move and print at the same time in curses to avoid random trampling display
errors.
- Update the status window only from the watchdog thread, do not rewrite the top
status messages and only refresh once all the status window is complete,
clearing the window each time to avoid corruption.
- Set a safe starting fan speed if we're automanaging the speeds.
- Provide locking around all adl calls to prevent races.
- Lower profile settings cannot be higher than higher profile ones so link any
drops in settings.
- Add new needed text files to distribution.
- Queue requests ignoring the number of staged clones since they get discarded
very easily leading to false positives for pool not providing work fast enough.
- Include libgen.h in opt.c to fix win32 compilation warnings.
- Fix compilation warning on win32.
- Add the directory name from the arguments cgminer was called from as well to
allow it running from a relative pathname.
- Add a --disable-adl option to configure and only enable it if opencl support
exists.
- Retry before returning a failure to get upstream work as a failure to avoid
false positives for pool dead.
- Retry also if the decoding of work fails.
- Use the presence of X-Roll-Ntime in the header as a bool for exists unless N
is found in the response.
Version 1.6.2 - September 2, 2011
- Add --failover-only option to not leak work to backup pools when the primary
pool is lagging.
- Change recommendation to intensity 9 for dedicated miners.
- Fix the bouncing short term value by allowing it to change dynamically when
the latest value is very different from the rolling value, but damp the change
when it gets close.
- Use the curses_lock to protect the curses_active variable and test it under
lock.
- Go back to requesting work 2/3 of the way through the current scantime with
CPU mining as reports of mining threads running out of work have occurred with
only 5 seconds to retrieve work.
- Add start and stop time scheduling for regular time of day running or once off
start/stop options.
- Print summary on quit modes.
- Put some sanity checks on the times that can be input.
- Give a verbose message when no active pools are found and pause before
exiting.
- Add verbose message when a GPU fails to initialise, and disable the correct
GPU.
- Cryptopp asm32 was not correctly updated to the incremental nonce code so the
hash counter was bogus.
- Get rid of poorly executed curl check.
- If curl does not have sockopts, do not try to compile the
json_rpc_call_sockopt_cb function, making it possible to build against older
curl libraries.
- Most people expect /usr/local when an unspecified prefix is used so change to
that.
- Rename localgen occasions to getwork fail occasions since localgen is
unrelated now.
Version 1.6.1 - August 29, 2011
prevents cgminer from saying pool down at 1 minute intervals unless in debug
mode.
- Free all work in one place allowing us to perform actions on it in the future.
- Remove the extra shift in the output code which was of dubious benefit. In
fact in cgminer's implementation, removing this caused a miniscule speedup.
- Test each work item to see if it can be rolled instead of per-pool and roll
whenever possible, adhering to the 60 second timeout. This makes the period
after a longpoll have smaller dips in throughput, as well as requiring less
getworks overall thus increasing efficiency.
- Stick to rolling only work from the current pool unless we're in load balance
mode or lagging to avoid aggressive rolling imitating load balancing.
- If a work item has had any mining done on it, don't consider it discarded
work.
Version 1.5.3 - July 30, 2011
- Significant work went into attempting to make the thread restart code robust
to identify sick threads, tag them SICK after 1 minute, then DEAD after 5
minutes of inactivity and try to restart them. Instead of re-initialising the
GPU completely, only a new cl context is created to avoid hanging the rest of
the GPUs should the dead GPU be hung irrevocably.
- Use correct application name in syslog.
- Get rid of extra line feeds.
- Use pkg-config to check for libcurl version
- Implement per-thread getwork count with proper accounting to not over-account
queued items when local work replaces it.
- Create a command queue from the program created from source which allows us
to flush the command queue in the hope it will not generate a zero sized binary
any more.
- Be more willing to get work from the backup pools if the work is simply being
queued faster than it is being retrieved.
Version 1.5.2 - July 28, 2011
- Restarting a hung GPU can hang the rest of the GPUs so just declare it dead
and provide the information in the status.
- The work length in the miner thread gets smaller but doesn't get bigger if
it's under 1 second.
This could end up leading to CPU under-utilisation and
lower and lower hash rates.
Fix it by increasing work length if it drops
under 1 second.
- Make the "quiet" mode still update the status and display errors, and add a
new --real-quiet option which disables all output and can be set once while
running.
- Update utility and efficiency figures when displaying them.
- Some Intel HD graphics support the opencl commands but return errors since
they don't support opencl. Don't fail with them, just provide a warning and
disable GPU mining.
- Add http:// if it's not explicitly set for URL entries.
- Log to the output file at any time with warnings and errors, instead of just
when verbose mode is on.
- Display the correct current hash as per blockexplorer, truncated to 16
characters, with just the time.
Version 1.5.1 - July 27, 2011
- Two redraws in a row cause a crash in old libncurses so just do one redraw
using the main window.
- Don't adjust hash_div only up for GPUs. Disable hash_div adjustment for GPUs.
- Only free the thread structures if the thread still exists.
- Update both windows separately, but not at the same time to prevent the double
refresh crash that old libncurses has.
Do the window resize check only when
about to redraw the log window to minimise ncurses cpu usage.
- Abstract out the decay time function and use it to make hash_div a rolling
average so it doesn't change too abruptly and divide work in chunks large enough
to guarantee they won't overlap.
- Sanity check to prove locking.
- Don't take more than one lock at a time.
- Make threads report out when they're queueing a request and report if they've
failed.
- Make cpu mining work submission asynchronous as well.
- Properly detect stale work based on time from staging and discard instead of
handing on, but be more lax about how long work can be divided for up to the
scantime.
- Do away with queueing work separately at the start and let each thread grab
its own work as soon as it's ready.
- Don't put an extra work item in the queue as each new device thread will do so
itself.
- Make sure to decrease queued count if we discard the work.
- Attribute split work as local work generation.
- If work has been cloned it is already at the head of the list and when being
reinserted into the queue it should be placed back at the head of the list.
- Dividing work is like the work is never removed at all so treat it as such.
However the queued bool needs to be reset to ensure we *can* request more work
even if we didn't initially.
- Make the display options clearer.
- Add debugging output to tq_push calls.
- Add debugging output to all tq_pop calls.
Version 1.5.0 - July 26, 2011
- Increase efficiency of slow mining threads such as CPU miners dramatically. Do
this by detecting which threads cannot complete searching a work item within the
scantime and then divide up a work item into multiple smaller work items.
Detect the age of the work items and if they've been cloned before to prevent
doing the same work over. If the work is too old to be divided, then see if it
can be time rolled and do that to generate work. This dramatically decreases the
number of queued work items from a pool leading to higher overall efficiency
(but the same hashrate and share submission rate).
- Don't request work too early for CPUs as CPUs will scan for the full
opt_scantime anyway.
- Simplify gpu management enable/disable/restart code.
- Implement much more accurate rolling statistics per thread and per gpu and
improve accuracy of rolling displayed values.
- Make the rolling log-second average more accurate.
- Add a menu to manage GPUs on the fly allowing you to enable/disable GPUs or
try restarting them.
- Keep track of which GPUs are alive versus enabled.
- Start threads for devices that are even disabled, but don't allow them to
start working.
- The last pool is when we are low in total_pools, not active_pools.
- Make the thread restart do a pthread_join after disabling the device, only
re-enabling it if we succeed in restarting the thread. Do this from a separate
thread so as to not block any other code.This will allow cgminer to continue
even if one GPU hangs.
- Try to do every curses manipulation under the curses lock.
- Only use the sockoptfunction if the version of curl is recent enough.
them with the comms error bool doesn't stop a flood of them appearing.
- Reset the queued count to allow more work to be queued for the new pool on
pool switch.
Version 1.3.0 - July 19, 2011
- Massive infrastructure update to support pool failover.
- Accept multiple parameters for url, user and pass and set up structures of
pool data accordingly.
- Probe each pool for what it supports.
- Implement per pool feature support according to rolltime support as
advertised by server.
- Do switching automatically based on a 300 second timeout of locally generated
work or 60 seconds of no response from a server that doesn't support rolltime.
- Implement longpoll server switching.
- Keep per-pool data and display accordingly.
- Make sure cgminer knows how long the pool has actually been out for before
deeming it a prolonged outage.
- Fix bug with ever increasing staged work in 1.2.8 that eventually caused
infinite rejects.
- Make warning about empty http requests not show by default since many
servers do this regularly.
Version 1.2.8 - July 18, 2011
- More OSX build fixes.
- Add an sse4 algorithm to CPU mining.
- Fix CPU mining with other algorithms not working.
- Rename the poclbm file to ensure a new binary is built since.
- We now are guaranteed to have one fresh work item after a block change and we
should only discard staged requests.
- Don't waste the work we retrieve from a longpoll.
- Provide a control lock around global bools to avoid racing on them.
- Iterating over 1026 nonces when confirming data from the GPU is old code
and unnecessary and can lead to repeats/stales.
- The poclbm kernel needs to be updated to work with the change to 4k sized
output buffers.
- longpoll seems to work either way with post or get but some servers prefer
get so change to httpget.
Version 1.2.7 - July 16, 2011
- Show last 8 characters of share submitted in log.
- Display URL connected to and user logged in as in status.
- Display current block and when it was started in the status line.
- Only pthread_join the mining threads if they exist as determined by
pthread_cancel and don't fail on pthread_cancel.
- Create a unique work queue for all getworks instead of binding it to thread 0
to avoid any conflict over thread 0's queue.
- Clean up the code to make it clear it's watchdog thread being messaged to
restart the threads.
- Check the current block description hasn't been blanked pending the real
new current block data.
- Re-enable signal handlers once the signal has been received to make it
possible to kill cgminer if it fails to shut down.
- Disable restarting of CPU mining threads pending further investigation.
- Update longpoll messages.
- Add new block data to status line.
Con Kolivas - July 2011. New maintainership of code under cgminer name.
Massive rewrite to incorporate GPU mining.
Incorporate original oclminer c code.
Rewrite gpu mining code to efficient work loops.
Implement per-card detection and settings.
Implement vector code.
Implement bfi int patching.
Import poclbm and phatk ocl kernels and use according to hardware type.
Implement customised optimised versions of opencl kernels.
Implement binary kernel generation and loading.
Implement preemptive asynchronous threaded work gathering and pushing.
Implement variable length extra work queues.
Optimise workloads to be efficient miners instead of getting lots of extra
work.
Fetch new work unit, if scanhash takes longer than 5 seconds (--scantime)
BeeCee1's sha256 4way optimizations
lfm's byte swap optimization (improves via, cryptopp)
Fix non-working short options -q, -r