diff --git a/NEWS b/NEWS deleted file mode 100644 index 48f7f7f0..00000000 --- a/NEWS +++ /dev/null @@ -1,5262 +0,0 @@ -Version 3.7.2 - 5th November 2013 - -- Clean up completely on avalon shutdown. -- Use cgsem timed waits in avalon driver to not miss any queued wake ups to -account for async messages coming during a flush work. -- Statline before is too long on icarus that doesn't have monitoring. -- Different windows+usb combinations respond with varying levels of reliability -wrt timeouts so use a nominal extra 40ms before cancelling transfers that fail -to time out on their own. -- Do all hotplug_process under the write mining_thr_lock -- Fix for opt_worktime on big endian machines. -- Correct set_blockdiff for big endian machines. -- Make sure cgpu exists in the restart threads loop in cases of hotplug etc. -- Treat usb write timeout errors as unrecoverable. -- Transfer errors are filtered out in usbutils now so no need to look for them -in NODEV checks. -- Remove now unused entries from struct cg_usb_device -- Do not double up with checking for end of timeout measurements in usb -read/write. -- Do get_work in fill_queue without holding other locks. -- Initialise usb after all the locks and conditionals are initialised. -- Use only a trylock in flush queue to prevent deadlocks. -- Add a wr_trylock wrapper for pthread rw lock write trylock. -- Scale diff for scrypt when testing for block solves. -- Fix for non curses build. - - -Version 3.7.0 - 4th November 2013 - -- Use WRITEIOERR macro check for all usb writes. -- Always use a usb read buffer instead of having to explicitly enable it. -- Force unlocking of the console lock on restart to avoid corrupting the console -state when we finally quit. -- Never wait indefinitely for a pthread conditional in the hash_pop loop in case -the work scheduler misses the last wakeup. -- Make hash_pop signal the work scheduler each time it waits on the conditional -that it should look for more work. -- Discriminate between libusb transfer errors and regular libusb errors and make -sure to capture them all. -- Always read a full sized transfer for bulk reads. -- Deprecate preferred packet size functions in usbutils since they're unhelpful. -- Copy known transferred amount back to buffer for usb reads instead of -requested length. -- Treat timeout errors on usb writes as IO errors. -- Ignore iManufacturer from bitfury devices to support bluefury as well as -redfury. -- Add more debugging info for when usb details don't match. -- Look for timeout overruns in usb read/write. -- Use an int for usb_read/write to identify overruns. -- Use the callback timeout as a safety mechanism only on windows. -- Instead of using complicated sleeps to emulate characters per second on usb -writes, submit only as many characters as can be transferred per usb poll of -1ms, and use timeouts in bulk transfers, cancelling transfers only as a -failsafe. -- Remove discarded work from quota used. -- Display works completed in summary and API data. -- Store how many work items are worked on per pool. -- Make each pool store its on reference for what the most current block is and -fine tune management of block change in shared pool failover strategies using -the information. -- Rationalise use of current_hash to a single hex string the length of the -previous block and display only the first non zero hex chars of the block in the -status window. -- Update uthash to latest. -- show_hash doesn't know the size of the string so hard code the max size. -- Remove as many initial zeroes as exist on share display, abstracting out a -hash show function to use across different submission mechanisms. -- Add missing endian swap functions for 64bits. -- Sanity check for absurd target setting and divide by zero. -- Abstract out conversion of a 256 bit endian number to a double, correcting -errors and use it for determining any magnitude share diff. -- Avoid the extra generation of a byte flipped hash2 in struct work and directly -use the LE work hash. -- Add a sanity check to avoid divide by zero crashes in set_target -- Calculate diff from target accurately for all 256 bits. -- Set a true 256bit binary target based on any diff value in set_target() -- Provide a copy_work_noffset function for copying a work struct but changing -its ntime. -- Make calls to flush queue and flush work asynchronous wrt to the main work -loops. -- Share is also above target for submit noffset nonce. -- Use round for displaying current pool diff. -- Use round for stratum share diff display instead of floor. -- Use round instead of floor for displayed pool difficulty. -- Allow arbitrary diffs to be tested against nonces via a test_nonce_diff -function. -- Abstract out the rebuilding of hash2 in work. -- Share is above, not below target, when it doesn't meet it. -- Add the ability to add uint8 and uint16 entities to api data. -- Use a non blocking connect with a 1 second select timeout when initiating -stratum to allow us to iterate over all IPs returned by getaddrinfo in round -robin DNS pools. -- Minor style changes to output. -- Revert two different hash_sequence(_head)'s to one variable, use -HF_SEQUENCE_DISTANCE in both places -- Remove duplicate HF_SEQUENCE_DISTANCE() macro, and duplicate hash_sequence -from info structure -- Change SEQUENCE_DISTANCE() macro to HF_SEQUENCE_DISTANCE() -- Structure changes for OP_NONCE, add big endian header -- klondike - initialise stat_lock -- klondike - better to unlock locks than to lock them twice :) -- Add copyright notice to knc driver. -- Trivial style changes to knc driver. -- Improve performance of work generation by optimizing hex2bin and bin2hex -- klondike - change options to clock and temptarget only -- klondike - fix another uninit dev warning -- klondike - downgrade 'late update' but add an idle detect - and correct error -levels -- klondike - fix isc uninit warning -- Use a mutex to protect data in the knc structure, to prevent loading more work -during a flush, and unlock and return to main between calls to get_queued_work. -- Use the existing device_data for knc state data. -- Only count successful nonces as hashrate in the knc driver. -- Fix trivial warnings in knc driver. -- Add KNC to api -- klondike - drop the device for hotplug if it's unresponsive -- usbutils - usb_nodev() allow a driver to drop a device -- klondike - single 'shutdown' and ensure it happens -- klondike remove SCNu8 - unsupported on windows -- Correctly calculate sleep_estimate in usbutils that may have been preventing -usecps from working. -- Use a sanity check on timeout on windows. -- Better HW error count; disable permanently those cores which fail often -- KnC driver: knc-spi-fpga ASIC driver -- Fixup jansson & libusb include paths when using separate build directory -- 'llround' is more suitable here than 'roundl' -- Silence warning if MAX/MIN is already defined -- Remove prebuild ccan/opt dependencies -- Reinstate block solve testing. -- Dramatically simplify the calculation of blockdiff. -- Simplify the set_target function, allowing it to work properly for fractional -diffs. -- Merge hashfast driver -- Merge KnC driver - - -Version 3.6.6 - 26th October 2013 - -- Remove inappropriate extra locking in _usb_transfer_read - - -Version 3.6.5 - 26th October 2013 - -- klondike - fix uninitialised dev bug -- Adjust the binary ntime data in submit_noffset_nonce even when there is no hex -ntime string for eg. gbt. -- Put an entry into the work struct telling drivers how much they can roll the -ntime themselves. -- Only set libusb cancellable status if the transfer succeeds. -- Remove the applog on miner threads dying to prevent deadlocks on exit. -- Do one extra guaranteed libusb event handling before testing if there are any -pending async usb transfers. -- Use a linked list for all usb transfers instead of just cancellable ones. -- Provide a mechanism for informing drivers of updated work templates for -stratum and gbt mining. -- Add cancellable transfers correctly to the ct_list -- Check for presence of thr in icarus get nonce for startup nonce testing to -work. -- Use cancellable usb transfers in the icarus driver to avoid having to loop and -poll when waiting for a response and to speed up work restart response time. -- Add a usb_read_ii_timeout_cancellable wrapper -- Add usb transfer cancellation on shutdown and documentation regarding where -cancellable transfers are suitable. -- Use cancellable transfers on bitfury device. -- Cancel cancellable usb transfers on work restart messages. -- Don't bother having a separate cancellable transfer struct for usb transfers, -simply include the list in the usb_transfer struct. -- Add wrappers for usb_read_cancellable and usb_read_timeout_cancellable -- Specifically set the cancellable state for it to not be uninitialised in the -usb transfer struct. -- Alter the usb cancellable list only under cgusb_fd_lock write lock. -- Pass the cancellable option to _usb_read options to decide on whether to add -usb transfers to the list of cancellable transfers. -- Create a linked list of potentially cancellable usb transfers. -- Don't attempt to disable curses or print a summary during an app restart to -prevent deadlocks. -- Keep the libusb event handle polling thread active until there are no async -usb transfers in progress. -- Keep a global counter of how many async usb transfers are in place. -- Perform libusb_submit_transfer under the write variant of cgusb_fd_lock -- klondike - error condition handling -- Avoid entering static libusb directory if --with-system-libusb is enabled. -- Minor opencl build corrections. -- Enable dynamic linking against system libusb --with-system-libusb -- Modify Makefile to only include opencl related code when configured in. -- Convert opencl to need to be explicitly enabled during build with ---enable-opencl -- Implement a cglock_destroy function. -- Implement a rwlock_destroy function. -- Implement a mutex_destroy function. -- Add usb command name to critical libusb error reporting. -- Use windows' own higher resolution time and handlers allowing us to have -higher precision absolute timeouts. -- Fix lldiv error in windows cgminer_t calculation. -- miner.php correct sort gen field names largest to smallest -- api ... the code related to device elapsed -- api add device elapsed since hotplug devices Elapsed is less than cgminer -Elapsed -- Drop usb buffering message to debug logging level. -- Do the ntime binary modification to the work struct when submitting an ntime -offset nonce within submit_noffset_nonce -- Code cleanup and improved documentation -- Improvements to support for BitBurner boards -- Convert libusb transfer errors to regular libusb error messages to allow for -accurate message reporting. - - -Version 3.6.4 - 18th October 2013 - -- Fixing the memory leak for remaining semaphores means we can go back to using -async transfers on other OSes with our own timeout management again. -- Use the forcelog function on shutdown to cope with indeterminate console lock -states due to killing of threads. -- Add a forcelog variant of applog which invalidates any console lock to force -output. -- Send pthread_cancel to failed completion_timeout that has timed out. -- Simplify queued hashtable by storing unqueued work separately in a single -pointer. -- bflsc use getinfo chip parallelization if it is present -- bflsc - fix brackets so [Chips] isn't always null -- Remove unused variables. -- Use cgcompletion timeouts for the unreliable shutdown functions on kill_work. -- Fix cgcompletion return code and free on successful completion. -- Provide a cg_completion_timeout helper function for unreliable functions that -takes arbitrary functions and parameters and reliably returns. -- Perform sync transfers on shutdown to allow final transfers to complete. -- Destroy cgsems used after transfers to not leave open files on osx. -- klondike rewrite work control -- allow __work_complete() access -- miner.h allow devices to tv_stamp work - - -Version 3.6.3 - 17th October 2013 - -- API add 'MHS %ds' to 'summary' -- Optional lock tracking and stats via the API -- Speed up polling repeat again in usb poll thread and handle async after the -message to disable polling is complete. -- Revert to using timeouts on !linux since libusb leaks memory without them. -- Revert to libusb instead of libusbx - - -Version 3.6.2 - 17th October 2013 - -- Remove unused components of jansson -- Remove unused parts of libusb -- Work around older libtoolize that fails without top ltmain.sh not being -present during autogen -- Fix open coded use of autoreconf in autogen -- Update jansson to only build parts we require and suited to our build -environment. -- Initial import of jansson-2.5 -- Prevent further USB transfers from occurring once the shutdown signal has been -sent to prevent transfers getting stuck and libusb failing to shut down. -- Make the USB polling thread poll every second to potentially aid longer -timeout transfers. -- Set device_diff on work in get_work to not be missed with drivers that use -get_work directly. -- Convert icarus driver to hash_driver_work model. -- bflsc - also allow ' 0' in DEVICES IN CHAIN -- bflsc - allow a 0 in DEVICES IN CHAIN -- Add needed EXTRA_DIST for libusbx. -- Update libusbx configure.ac changes. -- Revert libusb Makefile changes from going to libusbx. -- Fix trivial libusbx warnings. -- Convert libusb-1.0.16-rc10 to libusbx-1.0.17 - - -Version 3.6.1 - 14th October 2013 - -- Emulate the libusb_control_transfer sync setup in our async variant. -- usbutils - make all libusb_error_name messages the same - - -Version 3.6.0 - 14th October 2013 - -- increasing max miners for avalon driver -- using separate identifier for bitburner fury boards -- changes to bitburner driver for bitburner fury boards -- hexstr is too small in test_work_current -- Windows uses errno for WSAETIMEDOUT -- Convert the usb callback function to using cgsem_t timed waits to avoid race -conditions with conditionals/mutexes. -- Give correct return code in cgsem_mswait -- Check for correct timeout error in cgsem_mswait -- Fix util.h exports for cgsem_mswait -- Implement a generic cgsem_mswait similar to sem_timedwait -- Use the one LIBUSB_ERROR_TIMEOUT for cancelled transactions since this error -is explicitly tested for in various drivers. -- Do not use locking on usb callback function pthread signalling to prevent -deadlock with libusb's own event lock. -- Use a write lock when performing any USB control transfers to prevent -concurrent transfers. -- Free a libusb transfer after we have finished using it to avoid a dereference -in usb_control_transfer -- Do not perform bfi int patching for opencl1.2 or later. -- Although async transfers are meant to use heap memory, we never return before -the transfer function has completed so stack memory will suffice for control -transfers, fixing a memory leak in the process. -- klondike - correct/reverse min/max stats -- api incorrect message name -- klondike - use a link list queue rather than a circular buffer - and add -timing stats -- Use a timeout with usb handle events set to a nominal 200ms and wait for the -polling thread to shut down before deinitialising libusb. -- Use stack memory for hex used in stratum share submissions. -- Use stack memory in test_work_current, avoiding a malloc/free cycle each time. -- Provide a lower level __bin2hex function that does not allocate memory itself. -- Convert the bitfury driver to use the hash_driver_work version of hash_work. -- Add a hash_driver_work function to allow for drivers that wish to do their own -work queueing and management. -- Convert all usb control transfers to asynchronous communication with our own -timeout management as well. -- Klondike - increase circular read buffer size -- Klondike - extra zero value and range checking in temp conversion -- klondike - display MHz also -- Make pthread conditional timeouts handle all bulk usb transfer timeouts -performing libusb_cancel_transfer, disabling timeouts within libusb itself. -- Avoid calling get_statline_before on exit to avoid trying to use it on drivers -in an indeterminate state. -- Avoid calling get_statline on exit. -- Add a small amount to the usb timeout before cancelling to allow for a regular -usb polling interval to pass. -- Do not attempt to clear a usb halt before sending the cancel message since all -transfers should normally be cancelled before attempting to clear a halt -condition, and only change the return message to a timeout if it's consistent -with a cancellation. -- Retry up to USB_RETRY_MAX times to clear a halt condition before failing. -- Show the error number as well as the description in erroring bulk transfers. -- Drop logging level for failed to connect to stratum to verbose mode only since -we hit it regularly. -- We are always dependent on libusb handling events so use the blocking -libusb_handle_events in the polling thread and use a bool to know if we should -continue polling. -- Use fractional hashrate return values in bitfury_scanhash to minimise the -number of times we return 0 based on hashrate so far to further damp out -displayed hashrate. -- Check for presence of driver name in DRIVER_COUNT_FOUND to prevent strcmp on a -null pointer when a driver is not built in. -- CMR allow sending flash and clock commands -- Kill off threads that have failed using hash_sole_work instead of just -disabling them. -- Make the bf1 getinfo size a macro -- Failing to add_cgpu in bitfury should be a terminal failure. -- Check return values when attempting to open a BF1 device and set the msg size -as a macro. -- Display errors on failed usb read and write and consider sequential IO errors -a permanent failure. -- Use libusb's own error name function instead of hand coding the error names. -- Limit ms_tdiff to 1 hour as a sanity check. -- Enable the usb buffer in avalon driver. -- Check for async transfer variants of error messages. -- Remove unused variables. -- Try switching pools if for some reason we end up with only idle pools and have -ended up current_pool set to an idle one. -- Check a pool is stable for >5 mins before switching back to it. -- Minimise the time between dropping the read devlock and grabbing the write -devlock to avoid tons of logging spam in the interim. -- Check for libusb transfer stall error to be consistent with async IO errors -returned for a halt condition. -- Check for continuous IO errors on USB and consider the device inactive if more -than retry max. -- Make the devlock a cglock in usbutils and only grab the write lock for -fundamental changes allowing us to send and receive transfers concurrently -without lock contention. -- Prevent overflows in us_tdiff and ms_tdiff. -- Change second initialise message on bitfury verbose mode. -- Submitting an ntime offset nonce needs to be done on a copy of the work -instead of the original so abstract out shared components as much as possible, -minimising strdups in copy_work and make submit_work_async work take copied -work, cleaning up code in the process. -- Provide a way for drivers to submit work that it has internally rolled the -ntime value by returning the amount it has ntime rolled to be added. -- Typo in configure.ac -- Remove unmaintained broken ztex driver. -- Icarus - use a data structure for I/O rather than magic numbers -- delete old tracked ccan/opt/*.o files -- klondike correct cvtKlnToC() temperature calculation -- klondike - correct 1st reply debug based on define -- klondike - debug dump structured replies -- klondike - avoid division by zero if maxcount is unexpectedly zero -- klondike store and report errorcount and noise -- klondike - fix chipstats api stats buffer overrun with 16 chips -- klondike add new nonecount only once -- klondike - report mh/s based on nonces found + put old estimate into API stats -- klondike use a memcpy -- klondike fix bracket tabs indenting -- api.c missing Klondike from ASIC list -- Klondike update code to current git -- Add 2nd CMR to 01-cgminer.rules -- Add Klondike to 01-cgminer.rules -- Klondike to main directory -- Klondike consistent code spacing -- Klondike update driver code to current git -- update firmware for 16 chips, add dist files -- beta final 0.3.0 release -- updated firmware, IOC method -- prevent nonces when not state W -- added driver config option support -- fixes for 300 MHz, fix K1 parts list -- update driver, docs -- update firmware & utils -- updated cgminer driver for 3.3.1 -- update firmware and driver, create new cgminer fork -- update klondike driver -- add cgminer driver file as-is -- Add API output displaying USB cancellations. -- Store statistics on how often we have to cancel async bulk transfers and add a -debug message whenever we do. -- Treat any unexpected timeouts waiting for async transfers as though there may -be a usb halt condition and attempt to clear the halt before cancelling the -tranfer. -- Remove zero packet flag on usb as it's unsupported outside linux and -unnecessary. -- Fake the libusb transfer timed out message if we force cancel it with our own -async functions. -- Use asynchronous transfers for all bulk transfers, allowing us to use our own -timers and cancelling transfers that take too long. -- Add libusb error warning message when significant error occurs. -- Icarus CMR2 detect FPGA setup -- Disable bitfury device thread on it disappearing. - - -Version 3.5.0 - 29th September 2013 - -- Add magic init sequence required on BF1 devices to get them mining on windows. -- usbinfo.devlock is only ever write locked so convert it to a mutex -- Icarus remove unneeded opt_debug tests due to applog being a macro -- Icarus - CMR shouldn't wait the full timeout due to handle sharing -- We should only yield once in cg_wunlock -- Provide a function to downgrade a cglock from a write lock to an intermediate -variant. -- Deuglify use of _PARSE_COMMANDS macro expansions. -- Deuglify use of usb parse commands macro in usbutils. -- Use the driver add commands macros in api.c to avoid individually listing -them. -- Separate out asic fpga and opencl drivers in the driver parse commands macro -for use individually as needed. -- Use macro expansion in usb_find_devices to avoid explicitly listing them all. -- Use macro expansion to iterate over all the drivers without explicitly writing -them out in usbutils.c -- Iterate over the bitfury offsets in order of decreasing likelihood. -- Reattach the kernel driver on linux on usb_uninit. -- Attach the kernel driver on failure to usb init on linux. -- libusb kernel driver operations are only available on linux. -- There is no need to get the external prototypes for drivers in cgminer.c any -more. -- Remove unnecessary gpu_threads initialisation. -- Put avalon last in the sequence of adding drivers to prevent it trying to -claim similar chip devices on startup. -- Use macro expansion to iterate over all device drivers without needing to -explicitly code in support in all places. Pass a hotplug bool to the detect() -function to prevent opencl trying to hogplug GPUs. -- Forward declare all device drivers in miner.h avoiding the need to export them -everywhere else. -- Add a noop function for driver detect when it's missing. -- Reuse the DRIVER_ macros to avoid having yet another definition for DRV_ -- Use macro expansion to generate extern device_drv prototypes. -- Create a macro list of drivers to enable easier addition of further drivers. -- There is no point setting the BF1 preferred packet size to the maximum since -it will do so automatically. -- icarus ensure all cmr interfaces are initialised properly -- usbutils - fix USBDEBUG warnings -- Remove unnecessary steps in communicating with BF1 and just use USB interface -1. -- usbutils - usb_bulk_transfer fix the buf/data fix -- usb_bulk_transfer - use the allocated buffer -- Set preferred packet sizes per interface on BF1. -- usbutils allow PrefPacketSize per endpoint -- Remove magic control sequences on open/close on BF1 and just flush the read -buffers. -- Check return codes in getinfo and reset and fail as needed in BF1. -- Check return code for bitfury_open and release resources properly on failed -initialisation. -- Abstract out flushing of interrupt reads in BF1 devices. -- Perform interrupt read after close message on BF1 as per serial close. -- Perform interrupt read flush as per serial open on BF1 devices. -- Add information for 2nd USB interface on BF1 devices and choose interface 1 -for bulk transfers. -- usbutils - bulk transfer copy test fix -- usbutils - add USBDEBUG for usb_bulk_transfer -- Add more read_ii variants to usbutils. -- Name remainder of BFU usb commands used. -- Use submit_tested_work in bitfury driver to avoid unnecessarily re-testing the -work for validity. -- Abstract out work submission once it's been tested, to be used by drivers that -do their own internal validity testing. -- Store the hash2 array in struct work for further reuse. -- usbutils - which_intinfo not requried -- Use the test_nonce function within submit_nonce and store the uint32 -corresponding to hash2 37 for further use. -- usbutils - interfaces must all be on one handle - ep implies the interface -- avalon stats use exact type -- Only set share diff if we've confirmed it's a share first. -- Update ASIC-README for bitfury devices. -- Use an array of offsets when checking nonces in bitfury_checkresults -- Limit the duration we wait for reads in BF1 based on time already elapsed to -account for other delays such as work restart messages or out of work. -- Minimise size of serial string we copy in BF1 stats to avoid overflow. -- Implement basic API stats for BF1 and increase array of results to check for -the rare straggling result. -- Space debug output for bf1 to separate from numerals. -- Abstract out the bitfury open close and reset functions and use them on -reinit. -- Rename BF1 devices BF1 -- Check for work restart, breaking out early after usb reads in BF1. -- Do not lose the first sets of results from BF1. -- There is no point checking for results from the next round of work on BF1. -- Last result returned by BF1 is an end of results marker so ignore it. -- restart_wait should return 0 if thr_restart is true. -- Remove unused code by bitfury driver since current driver uses serialised -scanhash. -- Meter out return of estimated hashes in BF1 to smooth out visible hashrate. -- Optimise inner scanhash loop for bf1. -- Add yet another backup work for triple buffering of work in bf1 to account for -extra late results returned and don't check nonce offsets which appear to never -return. -- Name the work request and result usb commands for BF1 -- Define a mandatory upper limit to waiting for reset and data on BF1 based on -full nonce duration. -- Decrease usb buffering to verbose logging. -- Add in first draft for a serialised work model sending/receiving data for BF1 -devices. -- Add complete close sequence to bf1 as it happens on serial. -- Provide a bitfury identify function for bf1. -- Reliably extract BF1 information at startup and reset the device. -- Add commands for getting BF1 bitfury info -- Add magic BF1 bitfury open and close control sequences. -- Add BF1 detection code to bitfury driver. -- Create basic placeholders for bitfury driver code. -- Add bf1 device information to usbutils to enable device detection. -- Add basic defines for building for bitfury devices. -- Add redfury device to udev rules. -- avalon: display the FPGA controller version on API -- pool_active uninitialised_var rolltime -- Use macro expansion to only need to define usb enums and commands in one -place. -- usbutils saving incorrect overflow buffer -- ignore libusb.la and *.lo on linux -- icarus support CMR with no extensions -- usbtils - interfaces dont work yet in libusb windows so disable for that only -- Provide a --disable-libcurl config option to build support for stratum mining -only. -- Fix the api-example.c compile under Linux -- usbutils - only release the device once - for the first intinfo -- usbutils set_interface is no longer valid -- ubsutils interfaces much each have their own handle -- usbutils kernel_detach should use the interface number -- usbutils - allow the driver to change which_intinfo -- Reset quotas on load balance for all pools at the same time to avoid running -out during selection and unintentionally dropping to fallback. -- Break out of select pool from a common point for appropriate debug messages -and to avoid further tests. -- usbutils correct/reverse CMR product numbers -- usbutils specifically track handles and interfaces -- change drivers to use usb_interface() - required for multi interface change -- usbutils - allow a device to use multiple interfaces (and better var names) -- Cast -1 to (char) to cope with different default char types on ARM. - - -Version 3.4.3 - 13th September 2013 - -- Put corefoundation and iokit separate in ldflags for darwin. -- Add rules for libusb Makefile.am building on osx -- Add flags for building libusb statically on osx. -- Find the greatest common denominator in quotas and use the smallest number of -consecutive work items per pool in quota load balance mode to smooth hashrate -across pools with large quotas. Give excess quota to priority pool 0 instead of -pool 0. -- Avoid dynamically adding stack memory for nonce2 in the stratum send thread -and check the pool's nonce2_len will not cause an overflow. -- Add subdir-objects to automake options. -- Use inet_addr instead of inet_network to fix windows build. -- Remove unused pbase variable. -- Add support for socks4/4a proxies with stratum, and drop back to socks4 -support via the global --socks-proxy command to not break previous -configurations. -- Fix warning on mingw build. -- Only show long-poll message in pool summary if it's not using stratum. -- Increase the time for the waiting for work message to be given to be greater -than that required for a pool swap in the scheduler which is set to 5s. -- Change message in status when using a balanced pool strategy to notify if -there's a stratum pool as well. -- Use the --failover-only flag to have special meaning in combination with -load-balance mode to distribute any unused quota back to pool 0 to maintain -ratios amongst other pools. -- Display quota and allow it to be modified via the pool menu. -- Add API commands and modify output to support pool quota displaying and -changing. -- Change message in status when using a balanced pool strategy to notify if -there's a stratum pool as well. -- Add quota support to configuration files. -- Rotate pools on all failures to set a pool in select_pool. -- Use quotas for load-balance pool strategy. -- Provide a mechanism for setting a pool quota to be used by load-balance. -- Use the --socks-proxy option with stratum, changing it to defaulting to socks5 -and give appropriate message should it fail to connect. -- Cope with trailing slashes in stratum urls. -- Add more debugging messages when negotiating with proxies for stratum. -- Test specifically for socks5h in socks support for stratum. -- Add support for socks5 proxy with stratum -- Provide support for negotiating a stratum connection via http proxies. -- Connect to the proxy URL and port if specified for stratum sockets instead of -the pool directly. -- Extract any proxy url and port to be used by sockaddr if possible using -extract_sockaddr. -- Make extract_sockaddr set variables passed to it rather than pool struct -members. -- 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 - -- take_queued_work_bymidstate should use a write lock. -- miner.php coding warning -- miner.php disable 'gen' by default -- miner.php allow formula generation of new fields -- miner.php add doctype -- miner.php remove incorrect echo -- miner.php optional error if not enough mcast rigs are found - - -Version 3.4.1 - 31st August 2013 - -- API mcast add a description option with miner.php -- Always use a maxpacketsize buffer in usb_bulk_transfer -- bflsc ensure getinfo cannot overflow it's storage buffer -- Don't decref json values in stratum parsing due to memory corruption. -- Use 64 bytes for all libusb control transfers. -- Skip dissecting opt->names in parse_config if it doesn't exist. -- Use an internal buffer in _usb_transfer_read in case the read is larger than -the buffer passed to it. -- ICA optional limit timing with short=N or long=N -- Revert to old custom tolines function since strtok_r is not portable. -- bflsc remove unused commented out code -- logging - code mistake -- logging - applogsiz() for large messages -- Provide base structures for getaddrinfo. -- Include string.h in bflsc driver. -- Get rid of linear removal of spaces in bflsc text parsing and use strstr -throughout instead. -- Use reentrant strtok in tolines() function in bflsc to avoid racing on -contextless calls. -- Show how small a too small result in bflsc is. -- Duplicate the buffer in process_results in bflsc since strtok modifies it -making debugging output limited to one line. -- Only process nonces in bflsc if the breakdown function succeeds. -- Ignore zero count messages in bflsc instead of trying to parse them. -- Return ok in tolines when it doesn't match inprocess message for bflsc. -- Remove inprocess line instead of deleting all following responses in bflsc. -- Change ok testing logic in breakdown() in bflsc and return if not ok at any -stage. -- Check the return value of tolines in bflsc driver. -- Use strtok to parse lines in bflsc driver. -- Add libusb-1.0 m4 directory and gitignore file. -- Properly convert from ranlib to lt_init in configure.ac -- Make autoconf always build for libusb. -- More autoconf fixes. -- Unconditionally build jansson statically from the cgminer source tree. -- Only test for all usb devices once in configure.ac -- Fix various libusb warnings and possible bugs on linux build. -- Add make clean and maintainer-clean to autogen -- Remove examples from libusb Makefile and generated autoconf files. -- Fix libusb subdirectory builds. -- Remove cached files from libusb autoconf on running autogen.sh -- Remove unused HAVE_LISBUSB macro and use USE_USBUTILS everywhere. -- Use direct auto* files to avoid failure of autoreconf -- Remove unused and maintainer cleaned files -- Show RT_LIBS in ./configure output. -- First import of libusb-1.0 -- bflsc xlinkstr use snprintf -- Fix win32 build. -- Use take_queued_work_bymidstate in the bflsc driver to avoid the rare chance -repeated results come back from the same work item. -- Provide a funcion that looks up queued work by midstate and then removes it -from the device hash database. -- Fix no -rt library on darwin. -- Update included jansson to v2.4 -- Fix OSX build. -- Provide an osx fix for cgtimers and a fallback to timevals for all other -platforms !linux !win32 !osx. -- Move two more timer functions out of define macros to enable them to be used -by future osx code. -- cgtimer_sub is now the same since cgtimer_t should be the same on all -platforms. -- miner.php fix missing global -- Only count submitted nonces as diff1shares if they're valid. -- Substantially raise the maximum avalon frequency for water-cooled, over-volted -designs. -- Compile MCast.java with an old java -- API Multicast sample MCast.java+MCast.class -- BTB show C/MHz/mV for device -- api.c remove unused reply string -- api.c fix mcast debug message bug -- miner.php implement API Multicast handling to automatically find your local -net miners -- API mcast only reply to remote IP's that are allowed access -- Initial API Multicast response v0.1 to find cgminer APIs -- Use timespecs on windows as cgtimer_t to capitalise on the higher resolution -clock changes. -- Abstract out the conversion of system time to an lldiv_t in decimicroseconds. -- Use our own gettimeofday implementation on windows for it to be consistent -across ming builds and higher resolution. - - -Version 3.4.0 - 21st August 2013 - -- Use stack data for HW error% in avalon stats. -- Add avalon HW error% to stats and only show BTB variables if avalon is a BTB. -- Check for cnx_needed on each loop through wait_lp_current. -- Return positive for cnx_needed when no_work is true. -- Stratum is used more often so test for it first. -- Reorder support names alphabetically. -- Only display the no pool work message once if there are multiple waiters in -hash_pop -- Provide a message and set a bool when no work is available from any pools and -when it resumes again. -- We don't want to continue into the hash_pop function if the getq is frozen. -- Only report threads in and out in queued work devices across a get work since -the rest happens asynchronously and the get work is what the device might be -waiting on. -- Thread reportin and out can be static non inline. -- usbutils cps sleep_estimate is not an underestimate -- usbutils add cps stats estimates -- Provide cgtimer_sub helper functions. -- Provide cgtimer_to_ms helper functions. -- Rename cgsleep_prepare_r as cgtimer_time to get time in cgtimer_t format and -call cgsleep_prepare_r as a macro for cgtimer_time -- Use the reentrant cgsleep functions for usecps in usbutils. -- TimeBeginPeriod and TimeEndPeriod do not add significant overhead when run the -entire time for cgminer so avoid trying to maintain balanced numbers of them for -specific time calls to simplify code. -- Replace all references to the old n*sleep functions with the equivalent -cgsleep_*s replacements. -- timeGetTime uses huge resources on windows so revert to using timevals for its -implementation of cgtimer_t -- Quotient/remainder error in ms division. -- Only grab a queued work item if we successfully grab the lock to submit work -in bflsc_send_work -- BTB get version from Firmware -- Carve out the unused portions of sha2 implementation. -- Import Aaron D. Gifford's fast sha256 implementation. -- Increase the que_low watermarks on BFLSC for they are too low to keep the -device busy on scanwork loops. -- Provide cgtimer_to_timeval helper functions. -- Provide a timeval_to_cgtime helper function to reuse values. -- Check for thr->work_restart in restart_wait. -- We should be using que_low to decrease scan sleep time in bflsc. -- Prepare sleep time on bflsc if no dev needs work yet to avoid busy waiting. -- Simplify cgsleep code for windows by using a typedef for cgtimer_t that -resolves to clock resolution, using that internally. -- On windows use the higher accuracy timegettime function to really get 1ms -clock and timer accuracy. -- Use the cgsleep reentrant function to sleep for bflsc between read results to -account for time taken to perform reads. -- Use 100ms delay between checking for results on all bflsc devices as the -buffering of results mean checking more frequently just wastes CPU and causes -more lock contention for only marginally better latencies. -- Fix missed endtimeperiod in overrun timer on windows. -- Make cgsleep_us_r take an int64_t for us. -- Make the cgsleep functions build on windows. -- Use the cgsleep reentrant function in avalon_send_task. -- Use the reentrant cgsleep functions within the avalon_send_tasks function. -- Set high resolution timing on windows within the cgsleep functions. -- Use the reentrant cgsleep function to time sleeps on reading from avalon. -- Provide reentrant versions of cgsleep functions to allow start time to be set -separately from the beginning of the actual sleep, allowing scheduling delays to -be counted in the sleep. -- Make the nmsleep and nusleep functions use the new cgsleep functions -internally till functions are migrated to the new cgsleep API. -- Add a ms_to_timespec helper function, and create a cgsleep_ms function that -uses absolute timers with clock_nanosleep to avoid overruns. -- Add rt lib linkage to enable use of clock_nanosleep functions with older -glibc. -- Add necessary time header include to avalon driver. -- Do a sleep of the full duration it would take to do all the work using -clock_nanosleep in avalon_send_tasks to avoid sleep overruns before polling to -see if it's ready. -- Add a timeraddspec helper function. -- Provide a us_to_timespec helper function. -- Use the us_to_timeval helper function in the avalon driver. -- Provide a us_to_timeval helper function. -- Use timeval_to_spec helper in avalon driver. -- Add helper functions to convert timespec to timeval and vice versa. -- simplifying buffer full check -- forking bitburner write thread function -- making sure original Avalon is unaffected by BitBurner changes -- changes to queueing strategy for BitBurner boards -- Do not poll in avalon_get_results without sleeping if we have finished parsing -a full result. -- Add c to ambient temperature display for avalon driver. -- BTB allow up to 1400mV as per firmware limits -- avalon for timeout allow d='calculate it' and fix uninitialised -- Use cloned work when finding avalon results since another thread can discard -the work item while it's in use. -- Provide a variant of find_work_bymidstate that returns a clone of the found -work. - - -Version 3.3.4 - 14th August 2013 - -- API/miner.php add some % fields -- Nonce2 stratum submission is not working with nonce2 lengths >4, revert the -buggy __bin2hex function and use bin2hex. -- The write thread in avalon is only ever actually woken up by timeout so remove -the write semaphore and use a simple sleep poll. -- Fix warning. -- Interrupting reads on the avalon to start writes loses data so remove the -cgsem_post in the read code. -- Add room for the null byte at the end of the nonce2 string on stratum share -submission and zero the allocated ram. - - -Version 3.3.3 - 13th August 2013 - -- Only perform the bin2hex on nonce2 data if it's required for stratum -submission, thereby removing the last conversion of that type from stratum work -generation. -- Create a work data template when receiving stratum notification, allowing a -simple memcpy of the merkle root avoiding more hex2bin conversions on each work -generation. -- Export the workpadding char in miner.h -- Avoid a potential overflow should a pool specify a large nonce2 length with -stratum. -- Avoid one more hex2bin in gen stratum work. -- Rename work gbt_coinbase to coinbase to be in line with pool variable name. -- Perform merkle bin hex2bin on stratum notify to avoid doing it on each work -generation. -- Reuse just the one pool coinbase variable in stratum, avoiding more string -functions and storage in gen_stratum_work on each work generation. -- Rename pool gbt_coinbase variable to coinbase to combine it with the stratum -coinbase data. -- Use a nonce2 offset variable for both gbt and stratum to consolidate -requirements on work generation. -- Merge pull request #474 from kanoi/master -- util.c update quit call for new functions -- use correct define for OSX in util.c -- miner.h inline semaphores increase information on failure -- util.c expand quit to show file/func/line -- Merge remote-tracking branch 'conman/master' -- Cache as much of the gbt coinbase as possible to avoid doing unnecessary -hex2bin conversion on every work generation with gbt. -- We should be using a cg_wlock initially in generating stratum and gbt work -before downgrading the lock. -- Add the ability to downgrade a write variant of the cglocks. -- Fix --scrypt being required before scrypt intensities on command line or not -working at all via config files. -- Cache the hex2bin of pool nonce1 in stratum, avoiding hex2bin on each work -generation. -- Cache the binary generation of coinbase1 and 2 on stratum, avoiding a hex2bin -of coinbase1 and 2 on each work generation. -- cgsem - increase information on failure -- avalon init write_sem before use - - -- 3.3.2 - 9th August 2013 - -- Fix uninit variable warnings. -- usbutils - force check every combination -- Fix warning. -- Recreate curses windows on windows when a device is hotplugged to allow window -resizing without crashing. -- Update copyright notice. -- Limit intensity range according to whether scrypt is in use or not. -- Do not allow benchmark mode to be used with scrypt. -- Add a --bflsc-overheat command which allows you to set the throttling -temperature for BFLSC devices or disable it. -- Move bflsc defines to a header file. -- avalon allow frequency to be set via the API -- BTB voltage management via the API - and set default on startup -- Avalon BTB allow partial work to be transferred -- avalon_cts use correct buffer -- miner.php format Best Share -- remove unnecessary memcpy -- using more concise description -- using usb_ident -- forgot a return -- changes to Avalon driver for BitBurner boards -- Revert "Sleep after sending icarus work to emulate working at 115200 baud." -- api correct timeout stat display -- usb timeouts - min/max also -- log USB timeouts in API stats -- usbutils report failed timeouts -- usbutils ensure stats macros are using the macro arguments -- Check for negative wait time in socket_full. -- Fix extra argument passed to statline before. -- Adjust socket wait timeout in recv_line according to how long we've already -waited to avoid a 60 second wait dropping to 1 second due to a blocked socket. -- usbutils use a heap buffer for bulk read rather than stack -- usbutils only one bulk transfer call per stat -- set device_drv function noops when first add_cgpu -- usbutils - in init only change the config if needed -- bflsc nonce per work item stats -- bflsc increase flush count to handle parallel work -- force type checking on curses -- logging - size check sprintf -- usbutils - size check all sprintf -- cgminer - size check all sprintf -- size check get_datestamp/get_timestamp and remove unused cgpu->init -- make all statline overflow safe -- WU only needs +2 width -- Check for a timeout in avalon_scanhash and post to the write sem if we receive -one. -- Decay result count in avalon more slowly to not falsely detect idle periods as -low result return rates. -- Count the number of miners idled in avalon to account more accurately for when -its result return rate is too low. -- Fix potential dereference when starting avalon with all new work. -- Convert the decay_time function into one that truly creates an exponentially -decaying average over opt_log_interval. -- Only throttle avalon clockspeed in avalon_auto in non optimal temperature -settings if the fanspeed has reached maximum. -- Reinstate more aggressive <2% HW error target for avalon-auto -- Set avalon fan min and fan max to PWM values instead of percentage. -- Provide an --avalon-freq command line to give a valid range of frequencies for -avalon in auto mode. -- Set the avalon idle frequency to lowest if avalon auto is enabled and we have -an overheat condition. -- Decrease avalon frequency in auto mode if we are unable to maintain the -temperature in the optimal range. -- Don't count invalid nonces as hashrate for bflsc. -- Use a more conservative upper limit of 1% for hardware errors with avalon auto -frequency. -- Allow the avalon fanspeed range to be passed as parameter on the command line, -default to 20-100% -- Just display A: and R: for difficulty accepted and rejected to preserve screen -real estate and decrease decimal places for WU. -- correct device DR: and remove global U: -- Update all screen A/R to instead use DA/DR and device U to WU -- miner.php add ASC fields -- GPU fan rpm display 9999 when it overflows -- bflsc get volts stats needs its own GETVOLTS -- Support all avalon frequencies on the command line. -- Move to slightly more relaxed timeouts for avalon. -- MMQ turn on cps delays -- bflsc x-link header different to documentation -- Reset the other auto counters in avalon when idling a device. -- usbutils/icarus include more locking to usbdev access -- Icarus turn on cps delays by default -- usbutils cps correct time measurement - - -Version 3.3.1 - 25th June 2013 - -- Add an avalon-auto option which enables dynamic overclocking based on hardware -error rate for maximum effective hashrate. -- Add an --avalon-cutoff feature which puts the avalon idle should it reach this -temperature, defaulting to 60, re-enabling it when it gets to target -temperature. -- Change default avalon target temperature to 50 degrees. -- usbutils - incorrect test for * in bus:dev -- Redo +1 fix in bflsc. - - -Version 3.3.0 - 24th June 2013 - -- Add an --avalon-temp option to allow a user specified target temperature. -- Demote no matching work message to verbose logging only on avalon. -- Make the fan control on the avalon a simple PID controller with a target -temperature of 45. -- Demote bflsc hw error messages to verbose logging only. -- bflsc - handle xlink timeouts by having generic IO functions -- Demote the invalid nonce warning to log info. -- Ignore iManufacturer for BFLSC devices since the device name will still match -and some unbinned chips are missing it. -- sc_count shouldn't be +1 in bflsc. -- Use the info timeout for read_nl in getidentify bflsc. -- Add a usb_read_nl_timeout macro. -- bflsc try getinfo twice -- set MSG_ASCUSBNODEV always defined -- Hard code the preferred packet size for AMU, BLT and ICA. -- API V1.26 update ASIC support -- Icarus enable the read buffer for the detect nonce -- Support new overclocking speeds for avalon: 325, 350 and 375 -- undo icarus show errno, put it as debug in ubsutils -- icarus add errno to rerr and werr -- Sleep after sending icarus work to emulate working at 115200 baud. -- Use the nusleep function for sleeping after sending work in avalon. -- Show an integer only for diff if it is one. -- Set the avalon preferred packet size to 512. -- Reinstate the maxPacketSize determined by the end descriptor but allow the -driver to override it. -- Only update hashmeter if we have done hashes or haven't updated longer than -the log interval, fixing a us/ms error. -- Use only one cgsem in avalon signalling when the write thread should commit -work by reading the status bytes off during an avalon_read, minimising the -number of usb calls and resetting from only one place. -- Change avalon no valid work message to no matching work to match API -terminology. -- Use low latency usb transfers on the avalon, sleeping up to half a buffer's -worth only if no data is returning to increase hashrate, abolish lost work and -decrease CPU. -- Minimise the sleep times in avalon read to avoid result loss. -- Use a half nonce range before cycling through avalon's scanwork to ensure it -gets a chance to fill work if time is tight for the write thread to signal a -wakeup. -- Temporarily limit usb transfer sizes to 512 till we provide a way for each -driver to choose the upper limit. -- Increase watchdog sick time to longer than it takes for a pool to be detected -dead. -- Limit USB transfers to the max size reported by the descriptors. -- Increase the BFLSC timeout to allow the maximum number of results to be -returned for BAS in time. -- Decrease BAL and BAS latency to be just larger than one result read. -- disable curses device resize that crashes on windows -- BFLSC latest firmware has its own thermal cutoff set to 90, so use the same -value in case we have an old firmware that isn't throttling by itself. -- Drop watermark low limits for bflsc. -- Set the fanspeed on bflsc to max if we don't know the temperature. -- Use a low watermark for queueing mandatory work on bflsc instead of zero. -- Only mandatorily grab the bflsc mutex on submitting work when the queue is -empty. -- Adjust bflsc v2 watermarks. -- Only increase sleep time on bflsc if the queue isn't emptying at all over the -sleep duration. -- Fix warning. -- bflsc yet more API stats -- bflsc add some more API stats -- bflsc correct firmware matching -- bflsc correct comment -- Fixed Commands with No params -- bflsc driver support for v2 firmware -- Odd Issues -- Fixed Python Example -- Added Python Api Example -- Added Python Api Example -- Multiplier fail for microseconds vs milliseconds when updating hashmeter in -hash_queued_work. -- Only make threads report in/out across the actual driver code and update their -status on reporting out as well as in. -- usbutils initialise close key/sem -- usbutils cleanup linux semaphores on release -- Difficulty should be unconditionally byteswapped, not swapped to big endian. -- We should be setting cancelstate, not canceltype when disabling it for usb -locking. -- Pthread cancel state should be set to disable on usb DEVLOCK. -- Fanauto on bflsc is Z9X according to the source code, not 5 as per the draft -protocol document. - - -Version 3.2.2 - 16th June 2013 - -- Record and report USB pipe errors via API stats -- Suspend stratum connections when we know they've failed and don't try to recv -data from them once the socket no longer exists. -- Pipe error is quite common on usb3 so drop logging to verbose level only. -- ocl.c fix applog warnings on windows -- applog/quit fix GPU errors created -- usbutils - DEVLOCK other usbdev access -- applog usb device list can be > LOGBUFSIZ -- fix windows log warnings -- logging remove extra added -- remove varargs from logging/quit/in general as much as possible -- Don't yield when downgrading a cg ilock. -- Don't yield on grabbing the read lock variant of cglocks. -- Off by one error in device count for display. -- Don't display devices beyond the most_devices count in the curses status. -- Only display as many device rows as the maximum live existed at any time. -- usb lock out use cg locks -- usb lock out transfers during open/close -- Add error message to libusb pipe error -- Differentiate libusb control transfer pipe errors from transfer errors since -they're not fatal. -- Create a usb_bulk_transfer wrapper for libusb_bulk_transfer to cope with pipe -errors. -- Only show efficiency in pool information for pools that don't support local -work generation. -- Create a pool_localgen bool function for testing when a pool can generate work -locally. -- ignore file that is generated on Macs -- compile unix code on Mac OS X fixes not finding the config file in $HOME -- Use mining start time for device MH/U calculations -- Decrease the sleep duration before reading in avalon to not let the read -buffer overflow. -- Failure to read and write on pseudo semaphores on apple happens routinely on -shut down so should not be a quit error, just a warning. -- Unlock usb dev lock in the same place in usbutils. -- Sleep if the avalon buffer is empty and we've requested a read to allow the -write thread to take precedence. -- Yield after releasing a lock in case we are on a device with limited CPU -resources. -- Add the cgpu_info structure before avalon reset. -- Tidy up DEVLOCK/UNLOCK to have consistent use of the pstate variable without -needing brace level match. -- Icarus driver elaspsed timeout shouldn't be just USB I/O -- usbutils avoid leaving devlock locked when thread cancelled -- MMQ fix nodev failure caused by changes -- ubsutils lock all access to nodev and cgusb -- USB make device_path handled by usbutils -- tidy up free in device detect functions -- USB control creation and free of cgpu -- Add FAQ regarding Work Utility. -- Throttling the BFLSC at 80 seems to prevent generating garbled responses of -higher temps. -- Return after failed bin2hex conversion in bflsc. -- Demote failed hex2bin result to LOG_INFO and check return result in -driver-bflsc to avoid doing find_work_by_midstate. -- Set BFLSC fan speed coarsely to keep it under 60 or auto as per specs saying -it tries to stay below 60. -- Limit usbutils LATENCY_STD to 32ms to keep transfers under 512 bytes. -- Move macro definition to bflsc driver -- Use a longer timeout for retrieving bflsc details. -- Add a usb_read_ok_timeout wrapper to cope with slow init'ing devices. -- cgsem_post after creating the thread info -- Fix build. -- Use cgsem structures instead of the flaky pings in the work queue to start -mining threads and remove the unused thr_info_freeze function. - - -Version 3.2.1 - 7th June 2013 - -- Shorten the avalon statline to fit in the curses interface and show the lowest -speed fan cooling the asic devices. -- Set usbdev in usbutils after checking for nodev to avoid trying to access a -dereferenced value. -- AMU usbstatus correct name from enable UART -- Icarus AMU enable the UART -- Only libusb close if libusb release succeeds. -- Failed reads and writes on cgsem_post and cgsem_wait should be extremely rare. -- Implement cgminer specific cgsem semaphores to imitate unnamed semaphore -behaviour on osx which does not support them. -- Set cgusb->buffer to NULL when doing usb_buffer_disable. -- Temporarily fix apple not having semtimedop by ignoring the timeout value. -- BFLSC enable buffered USB reading -- Icarus use buffered USB reading -- bflsc & icarus use usb_ftdi_set_latency -- usb_ftdi_set_latency LOG_ERRs if called incorrectly -- add usb_ftdi_set_latency -- usbutils optional read buffering -- Set the avalon read transfer latency to avoid sleeping when no data is -returned after very short latency settings. -- correct bflsc BFLSC_BUFSIZ max calculation -- Fix build for !curses -- restore max code - since timeout is unsigned -- compile warning - remove unused max -- usb set FTDI latency higher to minimise status bytes -- Check for zero timeout on _usb_write. -- Check for zero timeout in usb read. -- Define a minimum polling time based on frequency of mandatory updates of ftdi -responses at 40ms. -- Sleep right up to the timeout instead of the first half if we find ourselves -polling in _usb_read -- Enforce half timeout sized sleeps in usb_read if we find the device is not -respecting libusb timeouts to avoid polling frequently. -- Add more ASIC documentation. -- Update README -- 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 -- add icarus to hotplug -- usbutils add rest of icarus -- simple serial-USB python test script -- icarus->USB v0.1 incomplete - missing initialise() -- README spelling -- Update documentation for icarus switch to USB -- Add USB rules for supported USB devices -- switch icarus configuration to usb -- usbutils new command for icarus -- usb add a numeric sub-indentity for each name -- usbutils - make FTDI handling automatic -- fix duplicate name -- usbutils set Black Arrow Lancelot's as BAL and match the lot->llt name -- usbutils identify Icarus devices -- libusb_control_transfer 16 bit words are endian specific. -- usb_applog separate amt display -- Show pool difficulty more verbosely if it changes via stratum. -- Attribute whatever stats we can get on untracked stratum shares based on -current pool diff. -- Provide a --lowmem option which does not cache shares on failed submission to -prevent low memory hardware (eg Avalon) from crashing. -- Update util.c - - -Version 3.1.1 - May 11th, 2013 - -- Use a discrete device target for scrypt that dynamically changes to ensure we -still report a work utility even if no shares are submitted such as in solo -mining. -- Make set_work_target a function to set a specified char as target for use -elsewhere. -- Further consolidate the hash regeneration between sha and scrypt doing it only -once and always checking the share diff for both before submission. -- Regenerate the hash before checking the share diff in hashtest(). -- Minor typo. -- Use a scantime of 30 seconds for scrypt if none is specified. -- Support more shares to be returned for scrypt mining. -- Update the write config to properly record device entries and remove disabled -option. -- Show a different warning and loglevel for failure to resolve a URL on first or -subsequent testing of stratum pool URLs. -- Fix the problem of seting up termio of ttyUSB0 for icarus. the CSIZE is the -mask of CS2/4/8 From: navyxliu -- Set all stratum sockets to nonblocking to avoid trying to use MSG_DONTWAIT on -windows. -- Fix warnings on win32 build. -- Only use MSG_NOSIGNAL for !win32 since it doesn't exist on windows. -- Use MSG_NOSIGNAL on stratum send() -- Set TCP_NODELAY for !linux for raw sockets. -- Use TCP_NODELAY with raw sockets if !opt_delaynet -- Make raw sockets compile on windows -- Recheck select succeeds on EWOULDBLOCK for stratum. -- usbutils/mmq fixed size usb_read default to wait for all data -- usbutils optional (disabled by default) dev debug -- Add an ftdi usb read macro without newline -- Avalon usb interface should be 0. -- Add more debug for failure to USB init. -- Recv() should all be non-blocking for raw sockets in stratum. -- Change verbosity and error for getaddrinfo warnings in setup stratum socket. -- Free servinfo after p is checked in setup stratum socket. -- Use raw sockets without curl for stratum communications. -- Sacrifice curl handle memory on stratum disconnects on all versions of libcurl -to avoid curl corruption. -- Don't use TCP_NODELAY if opt_delaynet is enabled with stratum. -- Fix warnings in avalon driver. -- Make FULLNONCE an ULL to fix a warning on 32 bit. -- ztx correct applog typing -- ocl correct applog typing -- util correct applog typing -- api correct applog typing -- cgminer correct applog typing -- scrypt correct applog typing -- bfl correct applog typing -- ica correct applog typing -- mmq correct applog typing -- adl fix trailing % -- usbutils correct applog typing -- applog - force type checking -- Simplify the many lines passed as API data in the avalon driver now that the -API does not need persistent storage for the name. -- Duplicate the name string always in api_add_data_full to not need persistent -storage for names passed to it. -- Add extra matching work count data in API for Avalon with 4 modules. - - -Version 3.1.0 - April 28th, 2013 - -- va_copy is meant to be matched by a va_end in log_generic. -- usbutils remove_in_use break -- usbutils remove_in_use missing prev -- usbutils missing add_in_use -- Clean up summary slightly better on exit. -- Make the scan sleep time after scanwork in bflsc dynamic to keep queues -between watermark levels. -- Remove unused temp counts in bflsc. -- Calculate a rolling 5 min average set of temperatures for bflsc. -- Damp the display of voltage for BFLSC devices. -- Damp the temperature display measurement for bflsc since it fluctuates so -wildly. -- bflsc add volt stats -- Handle failed tolines command in bflsc driver. -- Can use a read lock instead of a write lock in bflsc scanwork. -- Since we are filling a queue on the bflsc devices, there is no need to run -through scanwork frequently provided we use the restart_wait function to abort -early during a block change. -- Remove flushed work in bfl scanwork from the hash table. -- Set correct device in process_nonces in bflsc driver. -- bflsc add work reply INPROCESS: missing from the spec -- bflsc put in some error messages not yet written -- bflsc get completed hashes as late as possible -- Fix potential memory leak with unused work items in bflsc_queue_full -- Reverse bools in bflsc_queue_full -- Avoid recursive loop calling correct function instead. -- bflsc fix details identification -- Differentiate BFLSC device from regular bitforce and give warning if no -support is compiled in. -- util.c str_text make a fully text readable version of str -- BFLSC fix FPGA identity overlap -- Locking error in bflsc_send_work -- Use htobe32 function for converting nonce in bflsc. -- Replace deprecated bzero with memset in bflsc driver. -- Fix compilation of bflsc driver without opencl. -- Check for realloc failures in bflsc driver. -- Check for failure to calloc in bflsc driver. -- Trivial style change -- Use copy_time function in bflsc driver. -- Use cgtime in bflsc driver and update copyright notice. -- Use a separate function for bfl initialise that doesn't require locking. -- Fix BFLSC building. -- bflsc v0.1 - - -Version 3.0.1 - April 25th, 2013 - -- Bypass attempting to read and save binary files on OSX to avoid crashes on >1 -GPU. -- Receive failures in recv_line should unconditionally fail. -- Use sock_blocks in api.c -- Use sock_blocks function for stratum send and receive. -- Create an OS specific sock_blocks function. - - -Version 3.0.0 - April 22nd, 2013 - -- Further fix distdir for hexdump.c -- Fix build and distdir. -- Remove all CPU mining code. -- compile on win32 -- Update SCRYPT README with improved hashrates for 7970. -- Use copy_time helper throughout cgminer.c -- Provide wrappers for commonly used timer routines with API stats. -- Avoid one cgtime call in sole_hash_work. -- Fulltest is true if value is <= target. -- Use system host to endian functions for clarity in fulltest. -- Provide endian_flipX functions to avoid special casing big endian in cgminer.c -- Provide a flip128 helper to simplify big endian flipping. -- Use flip helpers to simplify code for calculation of midstate. -- Use flip32 function instead of open coding it in gen_stratum_work. -- Move util.c exports to util.h -- Fix warning on building avalon on win32 -- Use cgtime in driver-avalon.c -- Use cgtime in driver-icarus.c -- Use cgtime in driver-bitforce.c -- Use cgtime in logging.c -- Use cgtime in usbutils.c -- Use cgtime in driver-opencl.c -- Use cgtime wrapper in driver-modminer.c -- Use cgtime in driver-ztex.c -- Use cgtime in compat.h -- Use cgtime instead of gettimeofday in fpgautils.c -- Replace gettimeofday usage in cgminer.c with cgtime -- Create a cgminer specific gettimeofday wrapper that is always called with tz -set to NULL and increases the resolution on windows. -- Add high resolution to nmsleep wrapper on windows. -- Set default ocl work size for scrypt to 256. -- define le32toh if needed -- fliter out the wrong result from adjust fan code -- compile avalon driver on win32 and win64 -- Restart threads on the rare chance we found the block ourselves. -- Add more FAQs about crossfire. -- Set last device valid work on adding device. -- Increment last device valid work count in submit_nonce to cover scrypt. -- Set opt_scrypt drv max diff for correctness. -- Make scrypt submission use the submit_nonce code, with nonces matching -endianness. -- Do testing for HW errors on submit nonce for both scrypt and sha. -- Increment hardware error count from the one site. -- Rename scrypt regenhash function for consistency. -- Add new best share info to verbose logging. -- Add notice for when network diff is changed. -- Convert error getting device IDs in ocl code to info log level only since -multiple platforms may be installed and the error is harmless there. -- Unnecessary extra array in ocl code. -- Further driver FAQs. -- Add MAC FAQ. -- Add more FAQ details. -- Check for work restart after disable in the hash queued work loop since it may -be a long time before we re-enable a device. -- Unconditionally test for many wrong results on avalon and reset to avoid -passing a corrupt avalon result to temperature code. -- build out of source dir -- Set device_diff for queued work or there will be no diff1 share count. -- Only reset an avalon device with no results when there are no results -consecutively. -- More FAQs. -- More FAQs. -- Cleanup when stratum curl fails to initialise. -- Avoid applog in recalloc_sock. -- Avoid applog under stratum_lock in recv_line. -- Avoid applog under stratum_lock in __stratum_send. -- Put spacing around locking in util.c for clarity. -- Avoid applog under cg_wlock. -- Put spacing around locking code for clarity. -- Avoid applog under pool_lock. -- Avoid more recursive locks. -- Avoid applog while ch_lock is held. -- Avoid recursive locks in fill_queue. -- Variable is already initialised in global scope. -- More GPU faqs. -- More README faqs. -- Yet more README faqs. -- Add more faqs to README. -- Wrap result wrong tests in avalon scanhash in unlikely() and only consider a -hash count of zero wrong if a restart wasn't issued. -- avalon: if result_wrong >= get_work_count jump out the read loop -- Fix warning on 32bit. -- Fix warning on 32bit. -- Avoid curl_easy_cleanup on old curl versions in setup_stratum_curl as well. -- fix the fan control on max temp2/3 -- for some reason network down. one simple cgminer command: "cgminer -o -127.0.0.1:8888 -O fa:ke --avalon-options 115200:32:10:50:256" can idle the -avalon for safe power and protect chip -- if hash_count == 0; reinit avalon, fix the 0MHS bug use the max value of temp1 -and temp2 for fan control -- Reinstate the matching_work_count per subdevice on avalon based on the work -subid. -- Avalon driver is missing the drv_id. -- Rationalise and simplify the share diff and block solve detection to a common -site. -- Rationalise and simplify the share diff and block solve detection to a common -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 - -- 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. -- usbutils allow read termination match to be a string -- Set default GPU threads to 1 for scrypt. -- Connect backup stratum pools if the primary pool cannot deliver work. -- Use a new algorithm for choosing a thread concurrency when none or no shader -value is specified for scrypt. -- Do not round up the bufsize to the maximum allocable with scrypt. -- Remove the rounding-up of the scrypt padbuffer which was not effectual and -counter-productive on devices with lots of ram, limiting thread concurrencies -and intensities. -- bufsize is an unsigned integer, make it so for debug. -- Update the hashmeter once per second but only display the extra logs every -opt_log_inteval. -- add a dummy ztex to usbutils so cgminer -n lists ztex also -- nDevs required for -n with usb -- USB device list - convert some common error numbers to messages -- USB -n 'known' text only without ---usb-list-all -- USB modify -n and --usb-dump to only show known devices or use new ---usb-list-all option to see all -- Make pool adding while running asynchronous, using the pool test thread -functionality. -- Only curl easy cleanup a stratum curl if it exists. -- Sacrifice the ram of curl handles in stratum disconnects when we have built -with old libcurl to avoid crashes. -- cgminer -n to include a USB device list -- usbutils allow call of usb_all() from other code -- Convert gbt_lock to a cg_lock. -- Add intermediate variants of cglocks that can be up or downgraded to read or -write locks and use them for stratum work generation. -- Move the stratum and GBT data to be protected under a new cg_lock data_lock. -- Convert the ch_lock to cg_lock. -- Convert the control_lock to a cg_lock. -- Remove unused qd_lock. -- Implement cg_lock write biased rwlocks. -- do usb_initialise() after the started message so we see it -- --usb-dump display brief dump if value = 0 -- USB add --usb options to limit USB device selection v0.1 - - -Version 2.11.2 - March 9, 2013 - -- Whitelist AMD APP SDK 2.8 for diablo kernel. -- Cope with the highest opencl platform not having usable devices. -- Fix memory leak with share submission on GPU work structures as discovered by -twobitcoins. -- usb_cleanup() without locking. -- Use curl_easy_cleanup to close any open stratum sockets. -- Show pool number in switch message -- Don't start testing any pools with the watchpool thread if any of the test -threads are still active. -- Set sockd to false should curl setup fail on stratum. -- Close any open sockets when reusing a curl handle and reopen the socket -whenever we're retrying stratum. -- Set pool died on failed testing to allow idle flag and time to be set. -- Remove unused pthread_t typedefs from struct pool. -- Perform pool_resus on all pools that are found alive with the test pool -threads. -- Use pool_unworkable in select_balanced as well. -- Differentiate pool_unusable from pool_unworkable. -- Keep a connection open on higher priority stratum pools to fail back to them. -- Rename threads according to what pool they're associated with as well. -- Set the wrong bool in pool_active -- Start the stratum thread only if we successfully init and authorise it, -otherwise unset the init flag. -- Make the initialisation of the stratum thread more robust allowing the -watchpool thread safe access to it after the stratum thread is started. -- API no longer ignore send() status -- API make the main socket non-static - - -Version 2.11.1 - March 7, 2013 - -- Shorten the time before keepalive probes are sent out and how frequently -they're sent with stratum curls. -- Only set stratum auth once to prevent multiple threads being started. -- Display select return value on select fail in stratum thread. -- Clear the socket of anything in the receive buffer if we're going to retry -connecting. -- Allow pools to be resuscitated on first startup by the watchpool thread. -- Check all pools simultaneously at startup switching to the first alive one to -speed up startup. -- Clear just the socket buffer when we don't care what is left in a stratum -socket. -- Clear the stratum socket whenever we are closing it since the buffer is going -to be reused. -- Do not continue work from a stratum pool where the connection has been -interrupted. -- Reset stratum_notify flag on suspend_stratum as well. -- Close any sockets opened if we fail to initiate stratum but have opened the -socket. -- Close any existing stratum socket if we are attempting to restart stratum so -the pool knows the connection has gone. -- Show mechanism of stratum interruption if select times out. -- Make stratum connection interrupted message higher priority to be visible at -normal logging levels. -- Implement client.show_message support for stratum. -- API add 'Network Difficulty' to 'coin' -- Setup BFLSC support -- API use control_lock when switching pools -- Make sure to retry only once with noresume support for stratum. -- Instead of keeping track of when the last work item was generated to keep -stratum connections open, keep them open if any shares have been submitted -awaiting a response. -- usbutils.c copy full size to 'Last Command' -- configure - set USE_USBUTILS when usbutils is required and use it in the code -- Clear last pool work on switching pools if the current pool supports local -work generation or we are in failover only mode. -- make rw locks: mining_thr_lock and devices_lock -- Release MMQ device only once (not 4 times) -- api.c fix MSG overlap -- Hotplug - allow setting interval via --hotplug or API -- curses - fix - put a dev_width inside #ifdef -- usb_cleanup() use correct locking mechanism -- Implement and use usb_cleanup() on shutdown or restart -- miner.php report 'Last Valid Work' as time before request -- API - return Last Valid Work -- api -> drv -- ZTX bug set missing drv_id - - -Version 2.11.0 - March 2, 2013 - -- Update kernel file names signifying changes. -- Update a pool's last work time when the work is popped as well as staged. -- API always report failed send() replies -- Update diff stale: total and pools when stratum throws away shares -- Keep stratum connections open for 2 minutes after the last work item was -staged to allow stray shares to be submitted on pool switching. -- Try to extract the sessionid associated with mining.notify on 3rd level array -and submit it along with the userid to support mining resume, failing gracefully -and restarting if the pool rejects it. -- Speed up watchdog interval and therefore display updates to 2 seconds. -- Update copyright dates. -- Cope with misread sessionid on stratum for now. -- Use constants from the array of __constants throughout the diablo kernel. -- Create a __constant array for use within diablo kernel. -- Fix --benchmark generating valid work for cgminer. -- Use the sessionid as passed on stratum connect to attempt to resume a -connection once and then clear it if it fails, to use a new connection. -- Move to storing the nonce1 in the work struct instead of the sessionid for the -now defunct first draft mining.resume protocol. -- Use global constant arrays for all other constants used in scrypt kernel. -- Use global __constants for sha functions in scrypt kernel. -- Use constants for endian swap macros. -- Revise scrypt kernel copyright notice. -- Separate out additions in scrypt kernel. -- Reuse some Vals[] variables that can be assigned to constants earlier in the -poclbm kernel, making for fewer ops. -- Put all constants used in poclbm kernel into __const memory array to speed up -concurrent reads on the wavefront. -- BFL stop 1st init command if no device -- Add a get_queued function for devices to use to retrieve work items from the -queued hashtable. -- Bugfix: Duplicate stratum sessionid when copying work, to avoid double-free -- Bugfix: Missing pool_no parameter to applog for no-stratum-sessionid debug -message -- Add the choice of hash loop to the device driver, defaulting to hash_sole_work -if none is specified. -- Add comments. -- Add a driver specific flush_work for queued devices that may have work items -already queued to abort working on them on the device and discard them. -- Flush queued work on a restart from the hash database and discard the work -structs. -- Create a central point for removal of work items completed by queued device -drivers. -- Create a fill_queue function that creates hashtables of as many work items as -is required by the device driver till it flags the queue full. -- Create the hash queued work variant for use with devices that are fast enough -to require a queue. -- Update copyright year. -- Fix tv_lastupdate being made into tv_end and update the hashmeter on cycle, -not opt_log_interval. -- Fix tv_lastupdate being made into tv_end and update the hashmeter on cycle, -not opt_log_interval. -- Only continue submitting shares with mining.resume support on stratum when the -session id matches. -- Provide support for mining.resume with stratum, currently re-authorising after -successful resumption pending finalising of the protocol process. -- Provide basic framework for restarting stratum depending on whether resume -support exists or not. -- Abstract out the setting up of the stratum curl socket. -- Free sessionid in clean_work and remove redundant setting of strings to NULL -since the whole work struct is zeroed. -- Only clear stratum shares mandatorily on stratum dropouts when the pool does -not support resume. -- Try resubmitting stratum shares every 5 seconds for up to 2 minutes if the -pool session id exists and matches on failure to submit. -- Do as much outside of mutex locking of sshare_lock as possible. -- Remove last reference to struct work used outside the sshare_lock in -submit_work_thread -- Unlock the sshare_lock in submit_work_thread when all references to work and -sshare are complete. -- Add timestamps to stratum_share structs as they're generated and copy the -stratum sessionid if it exists to stratum work generated. -- Store session id for stratum if the pool supports it for future mining.resume -support. -- API.java allow partial reads -- debug_cb buffer type warning -- MMQ rewrite the last of the old scanhash loop and drastically reduce CPU -- hash_sole_work can be static -- Make the numbuf larger to accept larger scrypt parameters. -- Keep the unique id of each work item across copy_work to prevent multiple work -items having the same id. -- Abstract out the main hashing loop to allow us to use a separate loop for -devices that are fast enough to require queued work. -- Provide a noop thread_enable function for drivers that don't support it. -- Provide a noop thread_shutdown function for drivers that don't support it. -- Provide a noop hw_error function for drivers that don't support it. -- Provide a noop prepare_work for drivers that don't support it. -- Provide a noop thread_init for drivers that don't support it. -- Provide a noop can_limit_work for devices that don't support it. -- Provide a noop thread_prepare function for drivers that don't use -thread_prepare. -- Use blank_get_statline_before for GPU devices that don't support adl -monitoring. -- Provide a noop get_stats function for drivers that don't support it. -- Provide a blank get_statline for drivers that don't support it. -- Provide a blank get_statline_before function for drivers that don't have one. -- Fill drivers missing reinit_device with a noop version. -- add 'count' to cumstomsummarypage 'calc' -- hotplug use get_thread() where appropriate -- convert sleep(const) to nmsleep() -- remove empty #ifdef -- call a separate get_devices() with locking, as required -- usbutils - avoid free cgusb twice -- usbutils hotplug v0.1 -- Report USB nodev as ZOMBIE on the screen -- Change file modes. - - -Version 2.10.5 - February 7, 2013 - -- Fix logic fail on partial writes with stratum send that was leading to corrupt -message submissions. -- Do not consider every call to stratum_resumed a pool recovery unless it was -actually idle. -- Do not enable the pool disable on reject feature unless explicitly enabled -with --disable-rejecting. -- Stratum disconnect shares - count total against stale -- Use sanity checking to prevent a possible overflow with invalid data being -given by the pool for difficulty as reported by luke-Jr. -- Check for calloc failure for completeness in gen_stratum_work. -- Cache the coinbase length to speed up stratum work generation. -- Cache the header length when generating stratum work to avoid calculating it -on every work generation, and to only need one alloc+sprintf, speeding up work -generation. -- Use heap ram for coinbase in gen_stratum_work, zeroing it before use. -- Provide a wrapper for aligning lengths of size_t to 4 byte boundaries. -- Fix memory leak on stratum share submission. -- Zero the best share string memory when zeroing stats. - - -Version 2.10.4 - December 29, 2012 - -- Change the pool stratum socket buffer to be dynamically allocated to -accomodate any size coinbase and keep receiving data in recv line for up to 60s -if no end of line has been received. -- Differentiate socket full from sock full. -- Allow stratum to startup without notify but check it is valid before creating -stratum work. -- Do not try to generate stratum work unless the notify command has succeeded. -- Reset total diff1 shares when zeroing stats as well to show correct work -utility. - - -Version 2.10.3 - December 26, 2012 - -- Do not give the share submission failure message on planned stratum -disconnects. -- Parse anything in the stratum socket if it's full without waiting. Empty the -socket even if a connection is not needed in case there are share returns. -- Provide a mechanism to zero all the statistics from the menu. -- Display the current pool diff in the status line. -- Display block diff in status line. -- Generalise the code for solving a block to enable block solve detection with -scrypt mining. -- Generate the output hash for scrypt as well and use the one function to set -share_diff. -- Use the flip80 function in regeneratehash and the correct sized hash array. -- Use one size for scratchbuf as a macro in scrypt.c -- Stage work outside of the stgd lock to prevent attempted recursive locking in -clone_available. -- share_diff needs to be performed on a BE version of the output hash to work, -leading to false best_share values as spotted by luke-Jr. -- Remove the unused sha224 functions. -- Use the flip functions in hashtest. -- Simplify the setting of the nonce data field in work on submitting nonces. -- Scrypt code does not enter the hashtest function. -- Go back to cloning available work under staged lock. -- Updated links to AMD APP SDK -- Updated link to ADL SDK -- scrypt_diff uses a uint64_t as well. -- Correct target for stratum support with scrypt mining. -- libztex: fixed a typo -- libztex: check returnvalue of libusb_claim_interface() and release the -interface in case of early exit - - -Version 2.10.2 - December 19, 2012 - -- Stop all work from the current pool if it's a stratum pool once it is -disconnected since it will be invalid upon reconnecting. -- Discard all staged work from stratum pools as well as the shares upon -disconnection since all the work becomes invalid. -- Use correct cbreak after 15 second delay when no pool is found alive. -- MMQ missing firmware -> ERR not DEBUG -- Allow stratum to work with scrypt. -- MMQ ensure delta clock can never exceed limits -- MMQ lowercase new string constants -- MMQ add api pgaset for clock -- API V1.23 - new pgaset command, to be used soon -- Protect the best_share/best_diff values under control lock. -- MMQ style police -- MMQ count work check timeout failures -- MMQ allow partial work replies and count them -- Check a stratum pool hasn't gone dead while being a backup pool and missed -having its idle flag cleared. -- MMQ overheat: remove clockdown (doesn't help) + ensure no lost shares -- API-README grammar -- API-README explain custom page extensions in miner.php -- miner.php add a sample group pool report -- miner.php allow where,group,having on cumstom pages - - -Version 2.10.1 - December 14, 2012 - -- Check for EWOULDBLOCK when supported in send and recv as well. -- Use the raw send() command instead of curl_easy_send since curl raw socket -usage introduces random bugs on windows. -- Use raw recv() command in place of curl_easy_recv since the curl -implementation introduces random bugs on windows builds when the recv fails. -- miner.php when displaying a single rig, add prev/next rig buttons if they -exist, next to refresh -- miner.php allow custom page joins for STATS -- API show if pool has GBT (so people know not to use that pool) -- miner.php - include windows easyphp link -- driver-ztex: use the correct size for the swap array -- API stats - display pool byte transfer stats -- Pool store data transfer stats -- README ModMiner dependency -- Benchmark incorrect work size -- ChangeLog refer to NEWS -- MMQ handle over temp differently and hash longer -- driver-ztex: search the complete noncerange based on the actual speed -- README - update ModMiner details -- API-README update -- api use a dynamic io buffer, truncated before it reaches the current ~64k -limit - - -Version 2.10.0 - December 10, 2012 - -- Include prctl header for thread renaming to work. -- Set tv_idle time if a pool is not active when input from the menu. -- usb display message when device is in use/another cgminer -- libztex: avoid the use of libusb_error_name() -- minor unlikely zero pointer test -- BeaverCreek doesn't like BFI INT patching. -- Only stratum pools that are idle need to be kicked via cnx_needed. -- mmq - abbreviate the temperature numbers -- Do not do any setup if opt_api_listen is disabled in api.c. -- usbutils.c uninitialised usbstat for non-primary mmqs -- Only set the lagging flag for select_pool() on failed getwork if we're not in -opt_fail_only mode. -- libztex: in case the selectFpga() failed set the selected fpga to unknown -- Modified windows-build.txt to update git instructions. -- libztex: use a function for the twice called firmware reset code -- libztex: removed an unused struct member (ztex->valid) -- driver-ztex: support for broken fpga on a multifpga board -- Set the pool lagging flag on startup to avoid it being shown initially, and -only unset it once the maximum number of staged work items has been reached. -- Avoid recursive locking of the stgd lock. -- Return value of keep_sockalive is no longer used. -- Remove dependency on mstcpip.h for windows build by making curl version >= -7.25.0 mandatory on windows builds, and use curl functions for keepalive -whenever possible instead. -- Make main() the getwork scheduler once everything is set up, so that all app -exits use the kill_work and quit paths. -- ztex: more style and whitespace fixes -- libztex: silenced another warning -- Set successful connect to true on auth stratum to allow summary on exit from -single stratum pool. -- Only consider work stale for stratum of different job_id if it's not a share. -- Increment version preempting changed version signifying different codebase to -2.9 -- Hash_pop should signal further waiters on its own pthread conditional in case -there are multiple waiters. -- Check the job_id has not changed on stratum work when deciding if the work is -stale as might occur across disconnections. -- Perform pool_resus on getwork pool that generates work in getwork_thread. -- Set pool lagging message for getwork pool that falls to zero staged in getwork -thread. -- Stage extra work when the primary pool is a getwork pool without rolltime. -- Do not try to clean up twice if kill message is given. -- Only recalculate total_staged in getwork thread if required. -- Include the correct config header in libztex and include it before other -includes. -- Implement a completely new getwork scheduler. Stage all work from the one -thread, making it possible to serialise all requests minimising the number of -getworks requested or local work generated. Use a pthread conditional to wake up -the thread whenever work is removed to generate enough work to stay above the -watermark set by opt_queue. Remove all remnants of the old queueing mechanism, -deleting the now defunct queued count. -- libztex: fixed some warnings and removed some whitespaces -- libztex: silenced some warnings -- Remove all references to the now unused workio_cmd structure. -- Remove the old workio command queue thread, replacing it with a kill -conditional to exit the program. -- Remove getwork command from workio_cmd queues and do them directly from -queue_request. -- Begin tearing down the old workio command queues by removing submit commands -from there and submit them asynchronously via their own threads. -- Update windows build instructions. -- Set pool probed to true on successful authorisation with stratum to avoid it -being pinged later with pool_getswork. -- driver-ztex: libztex_setFreq() must be called before ztex_releaseFpga() -- driver-ztex: changed two pairs of malloc()/memset() to calloc() -- libztex: Read bitstream file in 2kb blocks with simpler and faster code -- Added the binary versions of ztex_ufm1_15d4.ihx and ztex_ufm1_15y1.ihx -- Trivial space removal. -- libztex: Add firmware download support for ZTEX 1.15d and 1.15x -- libztex: Factor out local version of libusb_get_string_descriptor_ascii() -- Shut up some boring old cpu warnings. -- Style changes. -- Allow pool active to be called on stratum or disabled pools in the watchpool -thread if the pool has not been probed. -- libztex: Make log messages say bitstream when refering to bitstreams -- libztex: Don't return error when a bitstream was already configured -- libztex: Read bitstream file in 64kb blocks with simpler and faster code -- libztex: Verify that the mining firmware is not a dummy firmware -- libztex: Match mining firmware ZTEX descriptor against the dummy firmware -- Combine shared padding into one char. -- libztex: Start download sequence only after reading in the new firmware -- libztex: Download mining firmware to all devices with dummy firmware -- lock (most of) the threaded statistics updates -- README stats don't add up -- usbutils.c remove compiler warning -- Make need connection return true if a pool is idle. -- API add Best Share to summary -- Check on creating new GBT work if the structures are up to date and update -them as required rather than regularly. -- Update windows build instructions. -- Enable backup stratum connections for getwork when the primary pool doesn't -have longpoll aka solo mining. -- Check for correct absence of opt_fail_only in cnx_needed. -- Remove unused variable. -- The specification for stratum has been elaborated to say that a changed diff -applies only to new work so do not retarget when submitting shares. -- Use a variable length string array in submit_upstream_work to cope with -massive GBT submissions. -- API lock access to some summary statistics (and copy them) -- Suspend stratum connections to backup pools when there is no requirement to -potentially grab work from them. -- Fix missing export for RenameThread. -- enumerate the mining threadnames -- MMQ avoid possible number overrun crashes -- mmq usb v0.4 + api usb stats -- setting the name of the threads for linux,freebsd,openbsd and osx code is -borrowed from bitcoins util.c, so it is already tested -- Don't show broken WU value with scrypt mining. -- Style police. -- Remove unused getwork times in getswork. -- Fix readme wordwrap. - - -Version 2.9.6 - December 2, 2012 - -- Make gen_stratum_work more robust by using a dynamically allocated array for -the header in case bogus data is sent by the pool to avoid overflowing a static -array. -- scrypt_diff now returns a uint64_t -- Support monitoring and reporting much higher diffs for scrypt mining, -truncating irrelevant zeroes from displayed hash. -- Pass ostate values around in scrypt to be able to extract full hashes if -needed later on. -- Since we will be using calloc_str to put a string into it, convert the -function to calloc_strcat which does it automatically. -- Revert "Handle crash exceptions by trying to restart cgminer unless the ---no-restart option is used." -- Count longpoll and GBT decodes as queued work since the count otherwise -remains static. -- 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 - -- Make header larger on gen stratum work to accomodate \0 at the end. - - -Version 2.9.2 - November 11, 2012 - -- Use stratum block change from backup pools as an alternative to longpoll for -pools that don't support LP. -- Check share target diff for best_share to be calculated when solo mining. -- Round some more static string arrays to 4 byte boundaries. -- There is no need for the static arrays to be larger than required, so long as -they're 4 byte aligned to appease ARM. -- Store the full stratum url information in rpc_url for correct configuration -file saving. -- Put in a hack to prevent dud work from sneaking into test_work_current being -seen as a new block. -- Reset the work->longpoll flag where it will affect stratum work items as well. -- Check for both coinbase/append and submit/coinbase support before using GBT -protocol. -- First pass through testing for GBT should not set probed to true since we are -about to probe again. -- Hash1 is only used by the deprecated cpu mining code and never changes so -remove it from the work struct and bypass needing to process the value for all -other mining. -- Get a work item once per minute for all getwork and GBT pools to test they're -still alive and to maintain a current GBT template. -- Get a fresh block template with GBT pools on switching to them. - - -Version 2.9.1 - November 6, 2012 - -- Reset work flags to prevent GBT shares from being submitted as stratum ones -after switching. - - -Version 2.9.0 - November 6, 2012 - -- Add endian swap defines for where missing. -- Only retarget stratum shares to new pool diff if diff has dropped. -- Remove resetting of probed variable when detecting GBT. -- Count lost stratum share submits and increase message priority to warning. -- Only retrieve a new block template for GBT pools that are the current pool. -- Show which pool untracked share messages have come from. -- Add management for dead GBT pools. -- Count lost shares with stratum as submit stale lost. -- Discard record of stratum shares sent and report lost shares on disconnection -since they will never be reported back. -- Swab, don't just swap the bytes in the GBT target. -- Change status window message for GBT connected pools versus LP. -- Generate a gbt work item from longpoll when required to set new block and -message appropriately. -- Use existing pool submit_old bool from gbt data. -- Retrieve a new block template if more than 30 seconds has elapsed since the -last one to keep the data current and test the pool is still alive. -- Update GBT longpollid every time we request a new longpoll. -- Manage appropriate response codes for share submission with GBT. -- Allow the longpoll thread to start with GBT and only set the longpollid once. -- Correct last few components of GBT block generation courtesy of Luke-jr. -- Use correct length for offsetting extra nonce and remaining data. -- Flip all 80 bytes in the flip function which was wrongly named flip256 for its -purpose. -- 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. -- Shorten the stratum timeout on read to 90 seconds to detect unresponsive pool. -- Display best share difficulty on exit. -- Make stratum socket fail more robust on windows by disabling the send buffer. -- Reuse the same curl handle forcing a new connection instead of risking -derefencing. -- Add information about submission failure to stratum send. -- Only add stratum share to database if we succeeded in submitting it, with a -debug output saying it succeeded. -- Use keepalive with stratum sockets to improve its ability to detect broken -connections. -- Show only the URL in the status bar to avoid long prefixes making for extra -long lines. -- Display compact status in menu and update README to reflect current menu -entries. -- Add a compact display mode that does not list per device statistics in the -status window. -- Add blank spaces after best share displayed. -- Round a few static string arrays up to 4 byte boundaries for ARM. -- Display best share diff for scrypt as well. -- Show the best diff share as "best share" and add info to the README. -- Display the best diff share submitted so far. -- Redundant check. -- The work struct pointer in struct pc_data in findnonce is never freed yet -there is no need to allocate it separately so make struct work a static part of -the struct pc_data. s - - -Version 2.8.5 - October 23, 2012 - -- Handle crash exceptions by trying to restart cgminer unless the --no-restart -option is used. -- Switch queued count when choosing a different pool from a failed stratum pool -in getwork thread. -- Put a mandatory 5s wait between reattempting a getwork on failure to avoid -hammering requests. -- The ATI stream / AMD APP SDK environment variables appear to only interfere -with win32 builds so bypass them. -- Make sure to check pool stratum curl exists under lock before attempting any -recv to not risk dereferencing upon attempting to reinitiate stratum. -- Avoid redefining macros and align to 4 byte boundaries. -- API - add Stratum information to pools -- update FPGA-README for MMQ - - -Version 2.8.4 - October 18, 2012 - -- Time for dynamic is in microseconds, not ms. -- x86_64 builds of mingw32 are not supported directly and should just configure -as generic mingw32 builds since they're NOT 64 bit. -- Cope with both ATI stream and AMD APP SDK roots being set when building. -- Use 3 significant digits when suffix string is used and values are >1000. -- MMQ new initialisation (that works) and clocking control -- Get rid of unused warning for !scrypt. -- Use select on stratum send to make sure the socket is writeable. -- Cope with dval being zero in suffix_string and display a single decimal place -when significant digits is not specified but the value is greater than 1000. -- Pad out the suffix string function with zeroes on the right. -- Failure to calloc in bin2hex is a fatal failure always so just check for that -failure within the function and abort, simplifying the rest of the code. -- Provide locking around the change of the stratum curl structures to avoid -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. -- Create machinery to divert work requests to stratum. -- Generate the work target in gen_stratum_work, setting default diff to 1 in -case it is not yet set. -- Generate work data, midstate and hash1 in gen_stratum_work. -- Generate header created from stratum structures in gen_stratum_work. -- Generate merkle root hash in gen_stratum_work. -- Generate the coinbase for generation of stratum based work. -- The number of transactions is variable so make merkle a variable length -dynamically allocated array and track how many there are for stratum. -- Rename nonce2 to n2size reflecting that it's a size variable and not the -actual nonce. -- Provide rudimentary support for stratum clean work command in the stratum -thread. -- Cope with pools being removed in the stratum thread. -- Use the pool sock value directly in the stratum thread in case it changes -after reconnecting. -- Create a stratum thread per pool that has stratum that monitors the socket and -serves received data. -- Check return value of stratum_parse. -- Complete authorisation in stratum. -- Implement stratum parsing of notify parameters and storing them in the pool -stratum work structure. -- Create helper functions for duplicating json strings to avoid keeping json -references in use. -- Append \n in the sock_send function instead of adding it when constructing -json in stratum. -- Don't keep any json references around with stratum structures. -- Create parse_stratum function that hands off stratum parameters to other -functions to manage pool stratum work struct variables. Implement mining -difficulty setting. -- Create helper functions for checking when a socket is ready to read on and -receive a single line at a time. Begin stratum authorisation process. -- Provide a helper function for reading a single \n terminated string from a -socket. -- Create a stratum work structure to store current work variables. -- Test specifically for stratum being active in pool_active. -- Detect stratum in common place when adding urls, and use a bool to tell us -when it's active. -- Fix warnings. -- Extract and store various parameters on stratum init confirming successful -mining notify. -- Use existing socket macros and close the socket on failure in init stratum. -- Initiate stratum and grab first json result. -- Get detailed addressinfo from the parsed URL for future raw socket usage when -possible. IPV4 only for now. -- Prepare for getaddrinfo call. -- Add data structures to pool struct for socket communications. -- Put all socket definitions in util.h to allow reusing by added socket -functions to be used in util.c. - - -Version 2.7.7 - October 7, 2012 - -- Fix unused warnings on ming build. -- Fix sign warning in ocl.c -- fds need to be zeroed before set in modminer. -- Put scrypt warning on separate line to avoid 0 being shown on windows as -bufsize. -- Display correct pool number when block is found. -- Prevent corrupt values returned from the opencl code from trying to read -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 -- api.c Correct diff1 field name -- count device diff1 shares -- API-README more debug parameter information -- API allow full debug settings control - - -Version 2.7.5 - August 31, 2012 - -- Adjust opencl intensity when adjusting thread count to prevent it getting -pegged at a value below the minimum threads possible. -- miner.h max_hashes -> int64_t -- Keep the local block number in the blocks structs stored and sort them by -number to guarantee we delete the oldest when ageing the block struct entries. -- Use correct sdk version detection for SDK 2.7 -- Revert "Pick worksize 256 with Cypress if none is specified." -- Test for lagging once more in queue_request to enable work to leak to backup -pools. -- There is no need to try to switch pools in select_pool since the current pool -is actually not affected by the choice of pool to get work from. -- Only clear the pool lagging flag if we're staging work faster than we're using -it. -- needed flag is currently always false in queue_request. Remove it for now. -- thr is always NULL going into queue_request now. - - -Version 2.7.4 - August 23, 2012 - -- Perform select_pool even when not lagging to allow it to switch back if needed -to the primary. -- Simplify macros in output kernels avoiding apparent loops and local variables. -- Carry the needed bool over the work command queue. -- Move the decision to queue further work upstream before threads are spawned -based on fine grained per-pool stats and increment the queued count immediately. -- Track queued and staged per pool once again for future use. -- OpenCL 1.0 does not have native atomic_add and extremely slow support with -atom_add so detect opencl1.0 and use a non-atomic workaround. -- Pools: add RollTime info to API 'stats' and 'Stats' button in miner.php - - -Version 2.7.3 - August 22, 2012 - -- Minimise the number of getwork threads we generate. - - -Version 2.7.2 - August 22, 2012 - -- Pick worksize 256 with Cypress if none is specified. -- Give warning with sdk2.7 and phatk as well. -- Whitelist sdk2.7 for diablo kernel as well. -- Only keep the last 6 blocks in the uthash database to keep memory usage -constant. Storing more is unhelpful anyway. -- BFL Flash - always distribute source -- Increase kernel versions signifying changed APIs. -- BFL flash - include source in builds and more FPGA-README -- Check we haven't staged work while waiting for a curl entry before proceeding. -- Use atomic ops to never miss a nonce on opencl kernels, including nonce==0, -also allowing us to make the output buffer smaller. -- Remove compile errors/warnings and document compile/usage in FPGA-README -- bitforce-firmware-flash.c by Luke-jr -- Ignore the submit_fail flag when deciding whether to recruit more curls or not -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 - - - -Version 2.7.0 - August 18, 2012 - -- Introduce a new statistic, Work Utility, which is the number of difficulty 1 -shares solved per minute. This is useful for measuring a relative rate of work -that is independent of reject rate and target difficulty. -- Implement a new pool strategy, BALANCE, which monitors work performed per pool -as a rolling average every 10 minutes to try and distribute work evenly over all -the pools. Do this by monitoring diff1 solutions to allow different difficulty -target pools to be treated equally, along with solo mining. Update the -documentation to describe this strategy and more accurately describe the -load-balance one. -- Getwork fail was not being detected. Remove a vast amount of unused variables -and functions used in the old queue request mechanism and redefine the getfail -testing. -- Don't try to start devices that don't support scrypt when scrypt mining. -- 0 is a valid return value for read so only break out if read returns -1. -- Consider us lagging only once our queue is almost full and no staged work. -- Simplify the enough work algorithm dramatically. -- Only queue from backup pools once we have nothing staged. -- Don't keep queueing work indefinitely if we're in opt failover mode. -- Make sure we don't opt out of queueing more work if all the queued work is -from one pool. -- Set lagging flag if we're on the last of our staged items. -- Reinstate clone on grabbing work. -- Grab clones from hashlist wherever possible first. -- Cull all the early queue requests since we request every time work is popped -now. -- Keep track of staged rollable work item counts to speed up clone_available. -- Make expiry on should_roll to 2/3 time instead of share duration since some -hardware will have very fast share times. -- Do the cheaper comparison first. -- Check that we'll get 1 shares' worth of work time by rolling before saying we -should roll the work. -- Simplify all those total_secs usages by initialising it to 1 second. -- Overlap queued decrementing with staged incrementing. -- Artificially set the pool lagging flag on pool switch in failover only mode as -well. -- Artificially set the pool lagging flag on work restart to avoid messages about -slow pools after every longpoll. -- Factor in opt_queue value into enough work queued or staged. -- Roll work whenever we can on getwork. -- Queue requests for getwork regardless and test whether we should send for a -getwork from the getwork thread itself. -- Get rid of age_work(). -- 0 is a valid return value for read so only break out if read returns -1. -- Offset libusb reads/writes by length written as well in ztex. -- Cope with timeouts and partial reads in ztex code. -- fpga serial I/O extra debug (disabled by default) - - -Version 2.6.5 - August 15, 2012 - -- Don't try to get bitforce temperature if we're polling for a result to -minimise the chance of interleaved responses. -- Set memory clock based on memdiff if present from with engine changes, -allowing it to parallel manual changes from the menu as well. -- Increase the timeout on bitforce as per Paul Sheppard's suggestion to account -for throttling + work time + excess. -- Fix ADL gpu-map not working when there are more ADL devices than openCL. -Initial patch supplied by Nite69. Modified to suit. -- Windows' timer resolution is limited to 15ms accuracy. This was breaking -dynamic intensity since it tries to measure below this. Since we are repeatedly -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. -- Add scrypt documentation in the form of a separate readme. -- Fix build error without scrypt enabled. -- Limit total number of curls recruited per pool to the number of mining threads -to prevent blasting the network when we only have one pool to talk to. -- bitforce: Skip out of sending work if work restart requested -- Keep a counter of enabled pools and use that instead of iterating over the -pool list. Use that value to ensure we don't set the last remaining active pool -to the rejecting state. -- fpgautils: add support for 57.6 kBd serial -- miner.php add a socket RCV timeout for if cgminer is hung and the API thread -is still running -- Limit thread concurrency for scrypt to 5xshaders if shaders is specified. -- Simplify repeated use of gpus[gpu]. in ocl.c -- Find the nearest power of 2 maximum alloc size for the scrypt buffer that can -successfully be allocated and is large enough to accomodate the thread -concurrency chosen, thus mapping it to an intensity. -- Don't make opt_scrypt mandatory blocking with opencl code. -- Update kernel versions reflecting changes in the API. -- Make the thread concurrency and lookup gap options hidden on the command line -and autotune parameters with a newly parsed --shaders option. -- Fix target testing with scrypt kernel as it would have been missing shares -below target. -- Bugfix: Use a mutex to control non-curses output -- Simplify code to a single vprintf path for curses-less printing -- Move opt_quiet check to my_log_curses, so it works for curses-less builds -- Use log_generic for vapplog to cut down on code duplication -- Add space to log output now that there is more screen real estate available. -- BFL force all code to timeout to avoid hanging -- Bugfix: Copy argv[0] given to dirname() -- Always create the largest possible padbuffer for scrypt kernels even if not -needed for thread_concurrency, giving us some headroom for intensity levels. -- Use the detected maximum allocable memory on a GPU to determine the optimal -scrypt settings when lookup_gap and thread_concurrency parameters are not given. -- Check the maximum allocable memory size per opencl device. -- Add debugging output if buffer allocation fails for scrypt and round up -bufsize to a multiple of 256. -- Nonce testing for btc got screwed up, leading to no accepted shares. Fix it. -- Display size of scrypt buffer used in debug. -- Allow intensities up to 20 if scrypt is compiled in. -- Add name to scrypt kernel copyright. -- Allow lookup gap and thread concurrency to be passed per device and store -details in kernel binary filename. -- Ignore negative intensities for scrypt. -- Change the scale of intensity for scrypt kernel and fix a build warning. -- Correct target value passed to scrypt kernel. -- Use 256 output slots for kernels to allow 1 for each worksize. -- Test the target in the actual scrypt kernel itself saving further -calculations. -- Reinstate GPU only opencl device detection. -- Decrease lookup gap to 1. Does not seem to help in any way being 2. -- Fix build. -- Make pad0 and pad1 local variable in scrypt kernel. -- Constify input variable in scrypt kernel. -- Send correct values to scrypt kernel to get it finally working. -- Create command queue before compiling program in opencl. -- Detach pthread from within the api thread in case it is terminated due to not -being instantiated before pthread_cancel is called from main, leading to a -segfault. -- Debug output per thread hashrate is out by a factor of 1000. -- Initialise mdplatform. -- 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 -- Change BFL driver thread initialising to a constant 100ms delay between -devices instead of a random arrangement. -- Spelling typo. -- Time opencl work from start of queueing a kernel till it's flushed when -calculating dynamic intensity. -- Modify te scanhash API to use an int64_t and return -1 on error, allowing zero -to be a valid return value. -- Check for work restart after the hashmeter is invoked for we lose the hashes -otherwise contributed in the count. -- Remove disabled: label from mining thread function, using a separate -mt_disable function. -- Style changes. -- Missed one nonce-range disabling. -- Add average return time to api stats -- miner.php allow rig names in number buttons -- Remove bitforce_thread_init The delay thing does nothing useful... when long -poll comes around, all threads restart at the same time anyway. -- Change timeouts to time-vals for accuracy. -- fix API support for big endian machines -- Cope with signals interrupting the nanosleep of nmsleep. -- Use standard cfsetispeed/cfsetospeed to set baud rate on *nix -- miner.php split() flagged deprecated in PHP 5.3.0 -- More BFL tweaks. Add delay between closing and reopening port. Remove buffer -clear in re-init Add kernel type (mini-rig or single) -- Make long timeout 10seconds on bitforce for when usleep or nanosleep just -can't be accurate... - - -Version 2.5.0 - July 6, 2012 - -- Fix --benchmark not working since the dynamic addition of pools and pool -stats. -- Make disabling BFL nonce range support a warning since it has to be explicitly -enabled on the command line now. -- miner.php allow renaming table headers -- Make bitforce nonce range support a command line option --bfl-range since -enabling it decrease hashrate by 1%. -- Add sanity checking to make sure we don't make sleep_ms less than 0 in -bitforce. -- The fastest minirig devices need a significantly smaller starting sleep time. -- Use a much shorter initial sleep time to account for faster devices and nonce -range working, and increase it if nonce range fails to work. -- Use nmsleep instead of usleep in bitforce. -- Provide a ms based sleep function that uses nanosleep to avoid the inaccuracy -of usleep on SMP systems. -- delay_time_ms is always set so need not be initialised in bitforce. -- Increase bitforce timeout to 10 seconds. -- Add more hysteresis and poll ~5 times to allow for timer delays in bitforce -devices. -- miner.php allow alternating line colours (off by default) -- Display the actual duration of wait when it is greater than the cutoff. -- Set nonce to maximum once we determine nonce range support is broken. -- Initial wait time is always known so no need to zero it beforehand in -bitforce. -- No point counting wait time until the work is actually sent to bitforce -devices. -- Use string comparison functions instead of explicit comparisons. -- Account for wait_ms time when nonce_range is in use on BFL. -- Split nonces up into 1/5 chunks when nonce range is supported. -- limit clear buffer iterations. -- Ad fd check to clear buffer. -- miner.php remove incorrect 'DATE' error message -- miner.php allow summary header in custom pages -- Disable nonce range support in BFL when broken support is detected. -- Restart_wait is only called with a ms value so incorporate that into the -function. -- Only try to adjust dev width when curses is built in. -- miner.php define custom sum fields as a simple array -- Fix off-by-one error in nonce increment in bfl. -- Use BE when setting nonce in bitforce nonce range work. -- Enable nonce range in the normal init sequence for bfl. -- Queue extra work at 2/3 differently depending on whether we're using nonce -range or not. -- Initially enable support for nonce range support on bfl, splitting nonces up -into 3/4 size and only disable it if it fails on work submit. -- Attempt to detect nonce range support in BFL by sending work requring its -support. -- Limit retrying on busy for up to BITFORCE_TIMEOUT_MS -- Attempt to initialise while bitforce device returns BUSY. -- Extend length of string that can be passed to BFL devices. -- Fix signedness warning. -- Adjust device width column to be consistent. -- Use cgpu-> not gpus[] in watchdog thread. -- Add api stats (sleep time) -- Timing tweaks Added long and short timeouts, short for detecting throttling, -long to give up totally. Reset sleep time when device re-initialised Still check -results after timeout Back up a larger time if result on first poll. -- Add API Notify counter 'Comms Error' -- Style police on api.c -- Do all logging outside of the bitforce mutex locking to avoid deadlocks. -- Remove applog call from bfwrite to prevent grabbing nested mutexes. -- Bitforce style changes. -- Minor style changes. -- Remove needless roundl define. -- Made JSON error message verbose. -- Fine-tune timing adjustment. Also remove old work_restart timing. -- Check for gpu return times of >= 0, not just 0, to fix intensity dropping to --10. -- Restart is zeroed in the mining thread so no need to do it inside the bitforce -code. -- More improvements to comms. BFL return nothing when throttling, so should not -be considered an error. Instead repeat with a longer delay. -- Polling every 10ms there's not much point checking the pthread_cond_timedwait -as it just adds overhead. Simply check the value of work_restart in the bfl main -polling loop. -- Use a pthread conditional that is broadcast whenever work restarts are -required. Create a generic wait function waiting a specified time on that -conditional that returns if the condition is met or a specified time passed to -it has elapsed. Use this to do smarter polling in bitforce to abort work, queue -more work, and check for results to minimise time spent working needlessly. -- Add busy time to wait time. -- api.c put version up to 1.14 -- Add tiny delay after writing to BFL Change BFL errors to something more human -readable Send work busy re-tries after 10ms delay - - -Version 2.4.4 - July 1, 2012 - -- Fix builds on non gnu platforms. -- api.c ensure old mode is always available when not using --api-groups + quit() -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. -- Work out a rolling average getwork delay stored in pool_stats. -- Getwork delay in stats should include retries for each getwork call. -- Walk through the thread list instead of searching for them when disabling -threads for dynamic mode. -- Extend nrolltime to support the expiry= parameter. Do this by turning the -rolltime bool into an integer set to the expiry time. If the pool supports -rolltime but not expiry= then set the expiry time to the standard scantime. -- When disabling fanspeed monitoring on adl failure, remove any twin GPU -association. This could have been leading to hangs on machines with dual GPU -cards when ADL failed. -- modminer: Don't delay 2nd+ FPGAs during work restart -- Disable OpenCL code when not available. -- Fix openwrt crashing on regeneratehash() by making check_solve a noop. -- FPGA - allow device detect override without an open failure -- Fix sign warning. - - -Version 2.4.3 - June 14, 2012 - -- can_roll and should_roll should have no bearing on the cycle period within the -miner_thread so remove it. -- Check for strategy being changed to load balance when enabling LPs. -- Check that all threads on the device that called get_work are waiting on -getwork before considering the pool lagging. -- Iterate over each thread belonging to each device in the hashmeter instead of -searching for them now that they're a list. -- When using rotate pool strategy, ensure we only select from alive enabled -pools. -- Start longpoll from every pool when load balance strategy is in use. -- Add mandatory and block fields to the work struct. Flag any shares that are -detected as blocks as mandatory to submit, along with longpoll work from a -previously rejecting pool. -- Consider the fan optimal if fanspeed is dropping but within the optimal speed -window. -- Fix typo in some API messages (succeess/success) -- api.c MMQ stat bugs -- Bugfix: Fix warnings when built without libudev support -- Bugfix: slay a variety of warnings -- Bugfix: modminer: Fix unsigned/signed comparison and similar warnings -- API add ModMinerQuad support -- Bugfix: Honour forceauto parameter in serial_detect functions -- modminer: Temperature sensor improvements -- modminer: Make log messages more consistent in format -- Only adjust GPU speed up if the fanspeed is within the normal fanrange and -hasn't been turned to maximum speed under overheat conditions. -- ModMiner use valid .name -- New driver: BTCFPGA ModMiner -- Abstract generally useful FPGA code into fpgautils.c -- API add stats for pool getworks -- miner.php option to hide specific fields from the display -- miner.php add version numbers to the summary page -- Update debian configs to v2.4.2 -- Add API and FPGA READMEs into Makefile to be included in source distribution. -- Icarus - fix unit64_t printf warnings - - -Version 2.4.2 - June 2, 2012 - -- API.class compiled with Java SE 6.0_03 - works with Win7x64 -- miner.php highlight devs too slow finding shares (possibly failing) -- API update version to V1.11 and document changes -- API save default config file if none specified -- api.c save success incorrectly returns error -- api.c replace BUFSIZ (linux/windows have different values) -- Move RPC API content out of README to API-README -- Open a longpoll connection if a pool is in the REJECTING state as it's the -only way to re-enable it automatically. -- Use only one longpoll as much as possible by using a pthread conditional -broadcast that each longpoll thread waits on and checks if it's the current pool -before -- If shares are known stale, don't use them to decide to disable a pool for -sequential rejects. -- Restarting cgminer from within after ADL has been corrupted only leads to a -crash. Display a warning only and disable fanspeed monitoring. -- Icarus: fix abort calculation/allow user specified abort -- Icarus: make --icarus-timing hidden and document it in FPGA-README -- Icarus: high accuracy timing and other bitstream speed support -- add-MIPSEB-to-icarus-for-BIG_ENDIAN -- work_decode only needs swab32 on midstate under BIG ENDIAN -- add compile command to api-example.c -- save config bugfix: writing an extra ',' when no gpus -- Add dpkg-source commits - - -Version 2.4.1 - May 6, 2012 - -- In the unlikely event of finding a block, display the block solved count with -the pool it came from for auditing. -- Display the device summary on exit even if a device has been disabled. -- Use correct pool enabled enums in api.c. -- Import Debian packaging configs -- Ensure we test for a pool recovering from idle so long as it's not set to -disabled. -- Fix pool number display. -- Give cgminer -T message only if curses is in use. -- Reinit_adl is no longer used. -- API 'stats' allow devices to add their own stats also for testing/debug -- API add getwork stats to cgminer - accesable from API 'stats' -- Don't initialise variables to zero when in global scope since they're already -initialised. -- Get rid of unitialised variable warning when it's false. -- Move a pool to POOL_REJECTING to be disabled only after 3 minutes of -continuous rejected shares. -- Some tweaks to reporting and logging. -- Change FPGA detection order since BFL hangs on an ICA -- API support new pool status -- Add a temporarily disabled state for enabled pools called POOL_REJECTING and -use the work from each longpoll to help determine when a rejecting pool has -started working again. Switch pools based on the multipool strategy once a pool -is re-enabled. -- Removing extra debug -- Fix the benchmark feature by bypassing the new networking code. -- Reset sequential reject counter after a pool is disabled for when it is -re-enabled. -- Icarus - correct MH/s and U: with work restart set at 8 seconds -- ztex updateFreq was always reporting on fpga 0 -- Trying harder to get 1.15y working -- Specifying threads on multi fpga boards extra cgpu -- Missing the add cgpu per extra fpga on 1.15y boards -- API add last share time to each pool -- Don't try to reap curls if benchmarking is enabled. - - -Version 2.4.0 - May 3, 2012 - -- Only show longpoll warning once when it has failed. -- Convert hashes to an unsigned long long as well. -- Detect pools that have issues represented by endless rejected shares and -disable them, with a parameter to optionally disable this feature. -- Bugfix: Use a 64-bit type for hashes_done (miner_thread) since it can overflow -32-bit on some FPGAs -- Implement an older header fix for a label existing before the pthread_cleanup -macro. -- Limit the number of curls we recruit on communication failures and with -delaynet enabled to 5 by maintaining a per-pool curl count, and using a pthread -conditional that wakes up when one is returned to the ring buffer. -- Generalise add_pool() functions since they're repeated in add_pool_details. -- Bugfix: Return failure, rather than quit, if BFwrite fails -- Disable failing devices such that the user can attempt to re-enable them -- Bugfix: thread_shutdown shouldn't try to free the device, since it's needed -afterward -- API bool's and 1TBS fixes -- Icarus - minimise code delays and name timer variables -- api.c V1.9 add 'restart' + redesign 'quit' so thread exits cleanly -- api.c bug - remove extra ']'s in notify command -- Increase pool watch interval to 30 seconds. -- Reap curls that are unused for over a minute. This allows connections to be -closed, thereby allowing the number of curl handles to always be the minimum -necessary to not delay networking. -- Use the ringbuffer of curls from the same pool for submit as well as getwork -threads. Since the curl handles were already connected to the same pool and are -immediately available, share submission will not be delayed by getworks. -- Implement a scaleable networking framework designed to cope with any sized -network requirements, yet minimise the number of connections being reopened. Do -this by create a ring buffer linked list of curl handles to be used by getwork, -recruiting extra handles when none is immediately available. -- There is no need for the submit and getwork curls to be tied to the pool -struct. -- Do not recruit extra connection threads if there have been connection errors -to the pool in question. -- We should not retry submitting shares indefinitely or we may end up with a -huge backlog during network outages, so discard stale shares if we failed to -submit them and they've become stale in the interim. - - -Version 2.3.6 - April 29, 2012 - -- Shorten stale share messages slightly. -- Protect the freeing of current_hash under mutex_lock to prevent racing on it -when set_curblock is hit concurrently. -- Change default behaviour to submitting stale, removing the --submit-stale -option and adding a --no-submit-stale option. -- Make sure to start the getwork and submit threads when a pool is added on the -fly. This fixes a crash when a pool is added to running cgminer and then -switched to. -- Faster hardware can easily outstrip the speed we can get work and submit -shares when using only one connection per pool. -- Test the queued list to see if any get/submits are already queued and if they -are, start recruiting extra connections by generating new threads. -- This allows us to reuse network connections at low loads but recuit new open -connections as they're needed, so that cgminer can scale to hardware of any -size. - - -Version 2.3.5 - April 28, 2012 - -- Restarting cgminer leads to a socket that can't be bound for 60 seconds, so -increase the interval that API binding waits to 30 seconds to minimise the -number of times it will retry, spamming the logs. -- Give a longpoll message for any longpoll that detects a block change, primary -or backup, and also display which pool it was. -- Decrease utility display to one decimal place. -- Small cosmetic output alignment. -- Add pool number to stale share message. -- Add space to log output now that there is more screen real estate available. -- Indentation clean up. -- Merge branch 'master' of github.com:ckolivas/cgminer -- Remove thread id display from rejected shares as well. -- Merge pull request #185 from Diapolo/diakgcn -- add goffset support for diakgcn with -v 1 and update kernel version -- Set have_longpoll to true when there is at least one pool with longpoll. -- Don't display the thread ID since it adds no useful information over the -device number. -- Don't display the first 8 bytes of a share since they will always be zero at ->= 1 difficulty. -- work->longpoll is reset across test_work_current so we need to recheck what -pool it belongs to. -- Use longpolls from backup pools with failover-only enabled just to check for -block changes, but don't use them as work. -- Start longpoll only after we have tried to extract the longpoll URL. -- Check for submitold flag on resubmit of shares, and give different message for -stale shares on retry. -- Check for submitold before submitstale. -- Don't force fresh curl connections on anything but longpoll threads. -- Create one longpoll thread per pool, using backup pools for those pools that -don't have longpoll. -- Use the work created from the longpoll return only if we don't have -failover-enabled, and only flag the work as a longpoll if it is the current -pool. -- This will work around the problem of trying to restart the single longpoll -thread on pool changes that was leading to race conditions. -- It will also have less work restarts from the multiple longpolls received from -different pools. -- Remove the ability to disable longpoll. It is not a useful feature and will -conflict with planned changes to longpoll code. -- Remove the invalid entries from the example configuration file. -- Add support for latest ATI SDK on windows. -- Export missing function from libztex. -- miner.php change socktimeoutsec = 10 (it only waits once) -- Bugfix: Make initial_args a const char** to satisfy exec argument type warning -(on Windows only) -- miner.php add a timeout so you don't sit and wait ... forever -- Create discrete persistent submit and get work threads per pool, thus allowing -all submitworks belonging to the same pool to reuse the same curl handle, and -all getworks to reuse their own handle. -- Use separate handles for submission to not make getwork potentially delay -share submission which is time critical. -- This will allow much more reusing of persistent connections instead of opening -new ones which can flood routers. -- This mandated a rework of the extra longpoll support (for when pools are -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. -- Allow the worksize to be set per-device. -- Allow different vectors to be set per device. -- If we're well below the target temperature, increase gpu engine speed back to -maximum in case we have gotten lost between profiles during an idle period. -- We should be setting the value of fan_optimal, not its address. -- As all kernels will be new versions it's an opportunity to change the .bin -format and make it simpler. Specifying bitalign is redundant and long can be l. -- Use any() in kernel output code. -- Put the nonce for each vector offset in advance, avoiding one extra addition -in the kernel. -- Reset times after all mining threads are started to make estimating hashrates -easier at startup. -- Bugfix: allow no-exec (NX) stack -- Fix minor warning. -- fix the bitforce.c code style follow 1TBS -- fix icarus.c compile warning -- small changes to speedup no vec for AMD 898.1 OCL runtime -- Update licensing to GPL V3. -- Reset the longpoll flag after it's been used once to prevent it restarting -work again. -- Begin import of DiabloMiner kernel. -- Modify API debug messages to say API instead of DBG -- When API shuts down cgminer don't kill itself -- Don't make rolled work from the longpoll be seen as other longpoll work items. -- API add 'privileged' command so can verify access level -- Set the lp_sent variable under lock since there will almost always be a race -on setting this variable, potentially leading to multiple LPs being sent out. -- API restrict access to all non display commands by default -- Update API version to 1.2 for new 'Log Interval' -- API add --log Interval to 'config' reply -- --api-allow special case 0/0 means all - - -Version 2.2.7 - February 20, 2012 - -- Send out extra longpolls when we have switched pools and the longpoll thread -is still bound to the old one. This is particularly useful with p2pool where -longpolls do not correlate with main bitcoin block change and would have led to -high reject rates on failover. -- Store whether a work item is the result of a longpoll or not in struct work -and use it to help determine block changes directly from the work longpoll bool. -- Keep track of when a longpoll has been sent for a pool and if the current pool -is requesting work but has not sent a longpoll request, convert one of the work -items to a longpoll. -- Store the longpoll url in the pool struct and update it from the pool_active -test in case it changes. This is to allow further changes to longpoll management -on switching pools. -- Re-check for a longpoll supporting pool every 30 seconds if none is found -initially. -- Report threads as busy waiting on getwork on startup to avoid them being -flagged sick on startup during slow networking. -- Allow devices that are disabled due to overheating to be flagged as recovering -instead of disabling them and re-enable them if they're below ideal temperatures -- Tahiti prefers worksize 64 with poclbm. -- No need to expressly retain the opencl program now that the zero binary issue -is fixed. This actually fixes cgminer to work with the latest SDK included with -the ATI catalyst driver 12.2. -- Show error code on any opencl failure status. -- Add detection for version 898.1 SDK as well but only give SDK 2.6 warning once -on startup instead of with each device initialisation. -- Always use a fresh connection for longpoll as prolonged persistent connections -can fail for many reasons. -- Keep track of intended engine clock speed and only adjust up if it's higher -than the last intended speed. This avoids setting the clock speed to one -relative to a lower profile one by mistake. -- Use gpu-memdiff on startup if an engine clockspeed is set and a memdiff value -is set. -- Revert "Adjust engine speed up according to performance level engine setting, -not the current engine speed." - ineffectual. -- Freeze the queues on all threads that are sent the pause message to prevent -them trying to start up again with saved pings in their queues. -- Updates to diakgcn kernel/ -- Consolidate all screen updates to the watchdog thread and touch both windows -before refresh. -- Curses will be disabled in clean_up so don't do it early in kill_work, and -disable_adl so that GPU settings may be restored to normal in case shutting down -curses leads to instability on windows. -- Stop the mining threads before trying to kill them. -- Plain refresh() does not give reliably screen updates so get rid of all uses -of it. -- First release with working diakgcn kernel. - -Version 2.2.6 - February 16, 2012 - -- Provide warning on each startup about sdk 2.6 -- Fix unused warnings on win32. -- bitforce: Simplify BFopen WIN32 ifdef/else -- Fix initialization warning with jansson 1.3 -- bitforce: Cleanup extraneous TODO that isn't needed -- Move tcsetattr (and new tcflush) into *nix BFopen to simplify things a bit -- Add message explaining 2nd thread disabling for dynamic mode and how to tune -it. -- Move logwindow down once number of devices is known. -- Automatically choose phatk kernel for bitalign non-gcn ATI cards, and then -only select poclbm if SDK2.6 is detected. -- Allow the refresh interval to be adjusted in dynamic intensity with a ---gpu-dyninterval parameter. -- Make curses display visible right from the beginning and fix the window sizes -so the initial messages don't get lost once the status window is drawn. -- The amount of work scanned can fluctuate when intensity changes and since we -do this one cycle behind, we increment the work more than enough to prevent -repeati -- bitforce: Set a 30 second timeout for serial port on Windows, since the -default is undefined -- Use PreVal4addT1 instead of PreVal4 in poclbm kernel. -- Import PreVal4 and PreVal0 into poclbm kernel. -- Import more prepared constants into poclbm kernel. -- Keep variables in one array but use Vals[] name for consistency with other -kernel designs. -- Replace constants that are mandatorily added in poclbm kernel with one value. -- Remove addition of final constant before testing for result in poclbm kernel. -- Hand optimise variable addition order. -- Hand optimise first variable declaration order in poclbm kernel. -- Radical reordering machine based first pass to change variables as late as -possible, bringing their usage close together. -- fix strcpy NULL pointer if env HOME unset. -- bitforce: Disable automatic scanning when at least one device is specified -manually -- Unroll all poclbm additions to enable further optimisations. - - -Version 2.2.5 - February 13, 2012 - -- Make output buffer write only as per Diapolo's suggestion. -- Constify nonce in poclbm. -- Use local and group id on poclbm kernel as well. -- Microoptimise phatk kernel on return code. -- Adjust engine speed up according to performance level engine setting, not the -current engine speed. -- Try to load a binary if we've defaulted to the poclbm kernel on SDK2.6 -- Use the poclbm kernel on SDK2.6 with bitalign devices only if there is no -binary available. -- Further generic microoptimisations to poclbm kernel. -- The longstanding generation of a zero sized binary appears to be due to the -OpenCL library putting the binary in a RANDOM SLOT amongst 4 possible binary -locations. Iterate over each of them after building from source till the real -binary is found and use that. -- Fix harmless warnings with -Wsign-compare to allow cgminer to build with -W. -- Fix missing field initialisers warnings. -- Put win32 equivalents of nanosleep and sleep into compat.h fixing sleep() for -adl.c. -- Restore compatibility with Jansson 1.3 and 2.0 (api.c required 2.1) -- Modularized logging, support for priority based logging -- Move CPU chipset specific optimization into device-cpu - - -Version 2.2.4 - February 11, 2012 - -- Fix double definition of A0 B0 to zeroA zeroB. -- Retain cl program after successfully loading a binary image. May decrease -failures to build kernels at startup. -- Variable unused after this so remove setting it. -- BFI INT patching is not necessarily true on binary loading of files and not -true on ATI SDK2.6+. Report bitalign instead. -- Various string fixes for reject reason. -- Generalize --temp-cutoff and implement support for reading temperature from -BitFORCE FPGAs -- Change message from recovered to alive since it is used on startup as well as -when a pool has recovered. -- Start mining as soon as any pool is found active and rely on the watchpool -thread to bring up other pools. -- Delayed responses from testing pools that are down can hold up the watchdog -thread from getting to its device testing code, leading to false detection of -the GPU not checking in, and can substantially delay auto gpu/auto fan -management leading to overheating. Move pool watching to its own thread. -- Bugfix: BitFORCE index needs to be static to count correctly -- Space out retrieval of extra work according to the number of mining threads. -- Make shutdown more robust. Enable the input thread only after the other -threads exist. Don't kill off the workio thread and use it to exit main() only -if there is an unexpected problem. Use kill_work() for all anticipated shutdowns -where possible. Remove unused thread entry. -- Change poclbm version number. -- One array is faster than 2 separate arrays so change to that in poclbm kernel. -- Microoptimisations to poclbm kernel which increase throughput slightly. -- Import diablominer kernel. Currently disabled as not working. -- Import diapolo kernel. Currently disabled as not working. -- Conflicting entries of cl_kernel may have been causing problems, and -automatically chosen kernel type was not being passed on. Rename the enum to -cl_kernels and store the chosen kernel in each clState. -- Set cl_amd_media_ops with the BITALIGN flag and allow non-bitselect devices to -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 -fails on trying to speed up the fan. -- Do not bother resetting values to old ones if changes to GPU parameters report -failure, instead returning a failure code only if the return value from get() -differs. -- Remove redundant check. -- Only display supported values from fanspeed on change settings. -- Missing bracket from output. -- Display fan percentage on devices that only support reporting percent and not -RPM. -- Properly substitute DLOPEN flags to build with ADL support when -ldl is needed -and not when opencl is not found. - - -Version 2.0.1 - September 9, 2011 - -- Fix building on 32bit glibc with dlopen with -lpthread and -ldl -- ByteReverse is not used and the bswap opcode breaks big endian builds. Remove -it. -- Ignore whether the display is active or not since only display enabled devices -work this way, and we skip over repeat entries anwyay. -- Only reset values on exiting if we've ever modified them. -- Flag adl as active if any card is successfully activated. -- Add a thermal cutoff option as well and set it to 95 degrees by default. -- Change the fan speed by only 5% if it's over the target temperature but less -than the hysteresis value to minimise overshoot down in temperature. -- Add a --no-adl option to disable ADL monitoring and GPU settings. -- Only show longpoll received delayed message at verbose level. -- Allow temperatures greater than 100 degrees. -- We should be passing a float for the remainder of the vddc values. -- Implement accepting a range of engine speeds as well to allow a lower limit to -be specified on the command line. -- Allow per-device fan ranges to be set and use them in auto-fan mode. -- Display which GPU has overheated in warning message. -- Allow temperature targets to be set on a per-card basis on the command line. -- Display fan range in autofan status. -- Setting the hysteresis is unlikely to be useful on the fly and doesn't belong -in the per-gpu submenu. -- With many cards, the GPU summaries can be quite long so use a terse output -line when showing them all. -- Use a terser device status line to show fan RPM as well when available. -- Define max gpudevices in one macro. -- Allow adapterid 0 cards to enumerate as a device as they will be non-AMD -cards, and enable ADL on any AMD card. -- Do away with the increasingly confusing and irrelevant total queued and -efficiency measures per device. -- Only display values in the log if they're supported and standardise device log -line printing. - - -Version 2.0.0 - September 6, 2011 - -Major feature upgrade - GPU monitoring, (over)clocking and fan control for ATI -GPUs. - -New command line switches: ---auto-fan- Automatically adjust all GPU fan speeds to maintain a target -temperature ---auto-gpu- Automatically adjust all GPU engine clock speeds to maintain -a target temperature ---gpu-engine Set the GPU engine (over)clock in Mhz - one value for all or -separate by commas for per card. ---gpu-fan Set the GPU fan percentage - one value for all or separate -by commas for per card. ---gpu-memclock Set the GPU memory (over)clock in Mhz - one value for all -or separate by commas for per card. ---gpu-powertune Set the GPU powertune percentage - one value for all or -separate by commas for per card. ---gpu-vddc Set the GPU voltage in Volts - one value for all or separate -by commas for per card. ---temp-hysteresis Set how much the temperature can fluctuate outside -limits when automanaging speeds (default: 3) ---temp-overheat Set the overheat temperature when automatically managing -fan and GPU speeds (default: 85) ---temp-target Set the target temperature when automatically managing fan -and GPU speeds (default: 75) - -- Implement ATI ADL support for GPU parameter monitoring now and setting later -(temp, fan, clocks etc.). -- Check for the presence of the ADL header files in ADL_SDK. -- Import adl_functions.h from amd overdrive ctrl. -- Implement a setup function that tries to detect GPUs that support the ADL and -link in the parameters into the gpus struct. -- Put a summary of monitoring information from the GPU menu. -- Implement changing memory speed and voltage on the fly. -- Implement fan speed setting. -- Minor corrections to set fan speed by percentage. -- Make sure to read off the value in RPM only. -- Implement auto fanspeed adjustment to maintain a target temperature and -fanspeed below 85%, with an overheat check that will speed the fan up to 100%. -- Add an --auto-fan command line option to allow all GPUs to have autofan -enabled from startup. -- Add a gpu autotune option which adjusts GPU speed to maintain a target -temperature within the bounds of the default GPU speed and any overclocking set. -- Avoid a dereference if the longpoll thread doesn't exist. -- Clean up by setting performance profiles and fan settings to startup levels on -exit. -- Add a small amount of hysteresis before lowering clock speed. -- Allow target, overheat and hysteresis temperatures to be set from command -line. -- Combine all stats collating into one function to avoid repeating function -calls on each variable. -- Add gpu statistics to debugging output via the watchdog thread. -- Implement menus to change temperature limits. -- Implement setting the GPU engine clock speed of all devices or each device as -a comma separated value. -- Implement setting the GPU memory clock speed of all devices or each device as -a comma separated value. -- Implement setting the GPU voltage of all devices or each device as a comma -separated value. -- Implement setting the GPU fan speed of all devices or each device as a comma -separated value. -- Add support for monitoring powertune setting. -- Implement changing of powertune value from the GPU change settings menu. -- Get the value of powertune in get_stats. -- Implement setting the GPU powertune value of all devices or each device as a -comma separated value. -- Remove the safety checks in speed setting since confirmation is done first in -the menu, then show the new current values after a short pause. -- Force the speed to high on startup and restore it to whatever the setting was -on exit. -- 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 - -- Copy cgminer path, not cat it. -- Switching between redrawing windows does not fix the crash with old -libncurses, so redraw both windows, but only when the window size hasn't -changed. -- Reinstate minimum 1 extra in queue to make it extremely unlikely to ever have -0 staged work items and any idle time. -- Return -1 if no input is detected from the menu to prevent it being -interpreted as a 0. -- Make pthread, libcurl and libcurses library checks mandatory or fail. -- Add a --disable-opencl configure option to make it possible to override -detection of opencl and build without GPU mining support. -- Confusion over the variable name for number of devices was passing a bogus -value which likely was causing the zero sized binary issue. -- cgminer no longer supports default url user and pass so remove them. -- Don't show value of intensity since it's dynamic by default. -- Add options to explicitly enable CPU mining or disable GPU mining. -- Convert the opt queue into a minimum number of work items to have queued -instead of an extra number to decrease risk of getting idle devices without -increasing risk of higher rejects. -- Statify tv_sort. -- Check for SSE2 before trying to build 32 bit SSE2 assembly version. Prevents -build failure when yasm is installed but -msse2 is not specified. -- Add some defines to configure.ac to enable exporting of values and packaging, -and clean up output. -- Give convenient summary at end of ./configure. -- Display version information and add --version command line option, and make -sure we flush stdout. -- Enable curses after the mining threads are set up so that failure messages -won't be lost in the curses interface. -- Disable curses after inputting a pool if we requested no curses interface. -- Add an option to break out after successfully mining a number of accepted -shares. -- Exit with a failed return code if we did not reach opt_shares. -- The cpu mining work data can get modified before we copy it if we submit it -async, and the sync submission is not truly sync anyway, so just submit it sync. - - -Version 1.6.0 - August 26, 2011 - -- Make restarting of GPUs optional for systems that hang on any attempt to -restart them. Fix DEAD status by comparing it to last live time rather than -last attempted restart time since that happens every minute. -- Move staged threads to hashes so we can sort them by time. -- Create a hash list of all the blocks created and search them to detect when a -new block has definitely appeared, using that information to detect stale work -and discard it. -- Update configure.ac for newer autoconf tools. -- Use the new hashes directly for counts instead of the fragile counters -currently in use. -- Update to latest sse2 code from cpuminer-ng. -- Allow LP to reset block detect and block detect lp flags to know who really -came first. -- Get start times just before mining begins to not have very slow rise in -average. -- Add message about needing one server. -- We can queue all the necessary work without hitting frequent stales now with -the time and string stale protection active all the time. This prevents a -pool being falsely labelled as not providing work fast enough. -- Include uthash.h in distro. -- Implement SSE2 32 bit assembly algorithm as well. -- Fail gracefully if unable to open the opencl files. -- Make cgminer look in the install directory for the .cl files making make -install work correctly. -- Allow a custom kernel path to be entered on the command line. -- Bump threshhold for lag up to maximum queued but no staged work. -- Remove fragile source patching for bitalign, vectors et. al and simply pass it -with the compiler options. -- Actually check the value returned for the x-roll-ntime extension to make sure -it isn't saying N. -- Prevent segfault on exit for when accessory threads don't exist. -- Disable curl debugging with opt protocol since it spews to stderr. - - -Version 1.5.8 - August 23, 2011 - -- Minimise how much more work can be given in cpu mining threads each interval. -- Make the fail-pause progressively longer each time it fails until the network -recovers. -- Only display the lagging message if we've requested the work earlier. -- Clean up the pool switching to not be dependent on whether the work can roll -or not by setting a lagging flag and then the idle flag. -- Only use one thread to determine if a GPU is sick or well, and make sure to -reset the sick restart attempt time. -- The worksize was unintentionally changed back to 4k by mistake, this caused a -slowdown. - - -Version 1.5.7 - August 22, 2011 - -- Fix a crash with --algo auto -- Test at appropriate target difficulty now. -- Add per-device statics log output with --per-device-stats -- Fix breakage that occurs when 1 or 4 vectors are chosen on new phatk. -- Make rolltime report debug level only now since we check it every work -item. -- Add the ability to enable/disable per-device stats on the fly and match -logging on/off. -- Explicitly tell the compiler to retain the program to minimise the chance of -the zero sized binary errors. -- Add one more instruction to avoid one branch point in the common path in the -cl return code. Although this adds more ALUs overall and more branch points, the -common path code has the same number of ALUs and one less jmp, jmps being more -expensive. -- Explicitly link in ws2_32 on the windows build and update README file on how -to compile successfully on windows. -- Release cl resources should the gpu mining thread abort. -- Attempt to restart a GPU once every minute while it's sick. -- Don't kill off the reinit thread if it fails to init a GPU but returns safely. -- Only declare a GPU dead if there's been no sign of activity from the reinit -thread for 10 mins. -- Never automatically disable any pools but just specify them as idle if they're -unresponsive at startup. -- Use any longpoll available, and don't disable it if switching to a server that -doesn't have it. This allows you to mine solo, yet use the longpoll from a pool -even if the pool is the backup server. -- Display which longpoll failed and don't free the ram for lp_url since it -belongs to the pool hdr path. -- Make the tcp setsockopts unique to linux in the hope it allows freebsd et. al -to compile. - - -Version 1.5.6 - August 17, 2011 - -- New phatk and poclbm kernels. Updated phatk to be in sync with latest 2.2 -courtesy of phateus. Custom modified to work best with cgminer. -- Updated output buffer code to use a smaller buffer with the kernels. -- Clean up the longpoll management to ensure the right paths go to the right -pool and display whether we're connected to LP or not in the status line. - - -Version 1.5.5 - August 16, 2011 - -- Rework entirely the GPU restart code. Strike a balance between code that -re-initialises the GPU entirely so that soft hangs in the code are properly -managed, but if a GPU is completely hung, the thread restart code fails -gracefully, so that it does not take out any other code or devices. This will -allow cgminer to keep restarting GPUs that can be restarted, but continue -mining even if one or more GPUs hangs which would normally require a reboot. -- Add --submit-stale option which submits all shares, regardless of whether they -would normally be considered stale. -- Keep options in alphabetical order. -- Probe for slightly longer for when network conditions are lagging. -- Only display the CPU algo when we're CPU mining. -- As we have keepalives now, blaming network flakiness on timeouts appears to -have been wrong. Set a timeout for longpoll to 1 hour, and most other -network connectivity to 1 minute. -- Simplify output code and remove HW errors from CPU stats. -- Simplify code and tidy output. -- Only show cpu algo in summary if cpu mining. -- Log summary at the end as per any other output. -- Flush output. -- Add a linux-usb-cgminer guide courtesy of Kano. - - -Version 1.5.4 - August 14, 2011 - -- Add new option: --monitor Option lets user specify a command that -will get forked by cgminer on startup. cgminer's stderr output subsequently gets -piped directly to this command. -- Allocate work from one function to be able to initialise variables added -later. -- Add missing fflush(stdout) for --ndevs and conclusion summary. -- Preinitialise the devices only once on startup. -- Move the non cl_ variables into the cgpu info struct to allow creating a new -cl state on reinit, preserving known GPU variables. -- Create a new context from scratch in initCQ in case something was corrupted to -maximise our chance of succesfully creating a new worker thread. Hopefully this -makes thread restart on GPU failure more reliable, without hanging everything -in the case of a completely wedged GPU. -- Display last initialised time in gpu management info, to know if a GPU has -been re-initialised. -- When pinging a sick cpu, flush finish and then ping it in a separate thread in -the hope it recovers without needing a restart, but without blocking code -elsewhere. -- Only consider a pool lagging if we actually need the work and we have none -staged despite queue requests stacking up. This decreases significantly the -amount of work that leaks to the backup pools. -- The can_roll function fails inappropriately in stale_work. -- Only put the message that a pool is down if not pinging it every minute. This -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. - - -Version 1.4.1 - July 24, 2011 - -- Do away with GET for dealing with longpoll forever. POST is the one that works -everywhere, not the other way around. -- Detect when the primary pool is lagging and start queueing requests on backup -pools if possible before needing to roll work. -- Load balancing puts more into the current pool if there are disabled pools. -Fix. -- Disable a GPU device should the thread fail to init. -- Out of order command queue may fail on osx. Try without if it fails. -- Fix possible dereference on blank inputs during input_pool. -- Defines missing would segfault on --help when no sse mining is built in. -- Revert "Free up resources/stale compilers." - didn't help. -- Only try to print the status of active devices or it would crash. -- Some hardware might benefit from the less OPS so there's no harm in leaving -kernel changes that do that apart from readability of the code. - -Version 1.4.0 - July 23, 2011 - -- Feature upgrade: Add keyboard input during runtime to allow modification of -and viewing of numerous settings such as adding/removing pools, changing -multipool management strategy, switching pools, changing intensiy, verbosity, -etc. with a simple keypress menu system. -- Free up resources/stale compilers. -- Kernels are safely flushed in a way that allows out of order execution to -work. -- Sometimes the cl compiler generates zero sized binaries and only a reboot -seems to fix it. -- Don't try to stop/cancel threads that don't exist. -- Only set option to show devices and exit if built with opencl support. -- Enable curses earlier and exit with message in main for messages to not be -lost in curses windows. -- Make it possible to enter server credentials with curses input if none are -specified on the command line. -- Abstract out a curses input function and separate input pool function to allow -for live adding of pools later. -- Remove the nil arguments check to allow starting without parameters. -- Disable/enable echo & cbreak modes. -- Add a thread that takes keyboard input and allow for quit, silent, debug, -verbose, normal, rpc protocol debugging and clear screen options. -- Add pool option to input and display current pool status, pending code to -allow live changes. -- Add a bool for explicit enabling/disabling of pools. -- Make input pool capable of bringing up pools while running. -- Do one last check of the work before submitting it. -- Implement the ability to live add, enable, disable, and switch to pools. -- Only internally test for block changes when the work matches the current pool -to prevent interleaved block change timing on multipools. -- Display current pool management strategy to enable changing it on the fly. -- The longpoll blanking of the current_block data may not be happening before -the work is converted and appears to be a detected block change. Blank the -current block be -- Make --no-longpoll work again. -- Abstract out active pools count. -- Allow the pool strategy to be modified on the fly. -- Display pool information on the fly as well. -- Add a menu and separate out display options. -- Clean up the messy way the staging thread communicates with the longpoll -thread to determine who found the block first. -- Make the input windows update immediately instead of needing a refresh. -- Allow log interval to be set in the menu. -- Allow scan settings to be modified at runtime. -- Abstract out the longpoll start and explicitly restart it on pool change. -- Make it possible to enable/disable longpoll. -- Set priority correctly on multipools. Display priority and alive/dead -information in display_pools. -- Implement pool removal. -- Limit rolltime work generation to 10 iterations only. -- Decrease testing log to info level. -- Extra refresh not required. -- With huge variation in GPU performance, allow intensity to go from -10 to +10. -- Tell getwork how much of a work item we're likely to complete for future -splitting up of work. -- Remove the mandatory work requirement at startup by testing for invalid work -being passed which allows for work to be queued immediately. This also -removes the requirem -- Make sure intensity is carried over to thread count and is at least the -minimum necessary to work. -- Unlocking error on retry. Locking unnecessary anyway so remove it. -- Clear log window from consistent place. No need for locking since logging is -disabled during input. -- Cannot print the status of threads that don't exist so just queue enough work -for the number of mining threads to prevent crash with -Q N. -- Update phatk kernel to one with new parameters for slightly less overhead -again. Make the queue kernel parameters call a function pointer to select -phatk or poclbm. -- Make it possible to select the choice of kernel on the command line. -- Simplify the output part of the kernel. There's no demonstrable advantage from -more complexity. -- Merge pull request #18 from ycros/cgminer -- No need to make leaveok changes win32 only. -- Build support in for all SSE if possible and only set the default according to -machine capabilities. -- Win32 threading and longpoll keepalive fixes. -- Win32: Fix for mangled output on the terminal on exit. - - -Version 1.3.1 - July 20, 2011 - -- Feature upgrade; Multiple strategies for failover. Choose from default which -now falls back to a priority order from 1st to last, round robin which only -changes pools when one is idle, rotate which changes pools at user-defined -intervals, and load-balance which spreads the work evenly amongst all pools. -- Implement pool rotation strategy. -- Implement load balancing algorithm by rotating requests to each pool. -- Timeout on failed discarding of staged requests. -- Implement proper flagging of idle pools, test them with the watchdog thread, -and failover correctly. -- Move pool active test to own function. -- Allow multiple strategies to be set for multipool management. -- Track pool number. -- Don't waste the work items queued on testing the pools at startup. -- Reinstate the mining thread watchdog restart. -- Add a getpoll bool into the thread information and don't restart threads stuck -waiting on work. -- Rename the idlenet bool for the pool for later use. -- Allow the user/pass userpass urls to be input in any order. -- When json rpc errors occur they occur in spits and starts, so trying to limit -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. -- Fix opencl tests for osx. -- Only do local generation of work if the work item is not stale itself. -- Check for stale work within the mining threads and grab new work if -positive. -- Test for idle network conditions and prevent threads from being restarted -by the watchdog thread under those circumstances. -- Make sure that local work generation does not continue indefinitely by -stopping it after 10 minutes. -- Tweak the kernel to have a shorter path using a 4k buffer and a mask on the -nonce value instead of a compare and loop for a shorter code path. -- Allow queue of zero and make that default again now that we can track how -work is being queued versus staged. This can decrease reject rates. -- Queue precisely the number of mining threads as longpoll_staged after a -new block to not generate local work. - - -Version 1.2.6 - July 15, 2011 - -- Put a current system status line beneath the total work status line -- Fix a counting error that would prevent cgminer from correctly detecting -situations where getwork was failing - this would cause stalls sometimes -unrecoverably. -- Limit the maximum number of requests that can be put into the queue which -otherwise could get arbitrarily long during a network outage. -- Only count getworks that are real queue requests. - - -Version 1.2.5 - July 15, 2011 - -- Conflicting -n options corrected -- Setting an intensity with -I disables dynamic intensity setting -- Removed option to manually disable dynamic intensity -- Improve display output -- Implement signal handler and attempt to clean up properly on exit -- Only restart threads that are not stuck waiting on mandatory getworks -- Compatibility changes courtesy of Ycros to build on mingw32 and osx -- Explicitly grab first work item to prevent false positive hardware errors -due to working on uninitialised work structs -- Add option for non curses --text-only output -- Ensure we connect at least once successfully before continuing to retry to -connect in case url/login parameters were wrong -- Print an executive summary when cgminer is terminated -- Make sure to refresh the status window - -Versions -> 1.2.4 - -- 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. -- Implement total hash throughput counters, per-card accepted, rejected and - hw error count. -- Staging and watchdog threads to prevent fallover. -- Stale and reject share guarding. -- Autodetection of new blocks without longpoll. -- Dynamic setting of intensity to maintain desktop interactivity. -- Curses interface with generous statistics and information. -- Local generation of work (xroll ntime) when detecting poor network -connectivity. - -Version 1.0.2 - -- Linux x86_64 optimisations - Con Kolivas -- Optimise for x86_64 by default by using sse2_64 algo -- Detects CPUs and sets number of threads accordingly -- Uses CPU affinity for each thread where appropriate -- Sets scheduling policy to lowest possible -- Minor performance tweaks - -Version 1.0.1 - May 14, 2011 - -- OSX support - -Version 1.0 - May 9, 2011 - -- jansson 2.0 compatibility -- correct off-by-one in date (month) display output -- fix platform detection -- improve yasm configure bits -- support full URL, in X-Long-Polling header - -Version 0.8.1 - March 22, 2011 - -- Make --user, --pass actually work - -- Add User-Agent HTTP header to requests, so that server operators may - more easily identify the miner client. - -- Fix minor bug in example JSON config file - -Version 0.8 - March 21, 2011 - -- Support long polling: http://deepbit.net/longpolling.php - -- Adjust max workload based on scantime (default 5 seconds, - or 60 seconds for longpoll) - -- Standardize program output, and support syslog on Unix platforms - -- Suport --user/--pass options (and "user" and "pass" in config file), - as an alternative to the current --userpass - -Version 0.7.2 - March 14, 2011 - -- Add port of ufasoft's sse2 assembly implementation (Linux only) - This is a substantial speed improvement on Intel CPUs. - -- Move all JSON-RPC I/O to separate thread. This reduces the - number of HTTP connections from one-per-thread to one, reducing resource - usage on upstream bitcoind / pool server. - -Version 0.7.1 - March 2, 2011 - -- Add support for JSON-format configuration file. See example - file example-cfg.json. Any long argument on the command line - may be stored in the config file. -- Timestamp each solution found -- Improve sha256_4way performance. NOTE: This optimization makes - the 'hash' debug-print output for sha256_way incorrect. -- Use __builtin_expect() intrinsic as compiler micro-optimization -- Build on Intel compiler -- HTTP library now follows HTTP redirects - -Version 0.7 - February 12, 2011 - -- Re-use CURL object, thereby reuseing DNS cache and HTTP connections -- Use bswap_32, if compiler intrinsic is not available -- Disable full target validation (as opposed to simply H==0) for now - -Version 0.6.1 - February 4, 2011 - -- Fully validate "hash < target", rather than simply stopping our scan - if the high 32 bits are 00000000. -- Add --retry-pause, to set length of pause time between failure retries -- Display proof-of-work hash and target, if -D (debug mode) enabled -- Fix max-nonce auto-adjustment to actually work. This means if your - scan takes longer than 5 seconds (--scantime), the miner will slowly - reduce the number of hashes you work on, before fetching a new work unit. - -Version 0.6 - January 29, 2011 - -- 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 - -Version 0.5 - December 28, 2010 - -- Exit program, when all threads have exited -- Improve JSON-RPC failure diagnostics and resilience -- Add --quiet option, to disable hashmeter output. - -Version 0.3.3 - December 27, 2010 - -- Critical fix for sha256_cryptopp 'cryptopp_asm' algo - -Version 0.3.2 - December 23, 2010 - -- Critical fix for sha256_via - -Version 0.3.1 - December 19, 2010 - -- Critical fix for sha256_via -- Retry JSON-RPC failures (see --retry, under "minerd --help" output) - -Version 0.3 - December 18, 2010 - -- Add crypto++ 32bit assembly implementation -- show version upon 'minerd --help' -- work around gcc 4.5.x bug that killed 4way performance - -Version 0.2.2 - December 6, 2010 - -- VIA padlock implementation works now -- Minor build and runtime fixes - -Version 0.2.1 - November 29, 2010 - -- avoid buffer overflow when submitting solutions -- add Crypto++ sha256 implementation (C only, ASM elided for now) -- minor internal optimizations and cleanups - -Version 0.2 - November 27, 2010 - -- Add script for building a Windows installer -- improve hash performance (hashmeter) statistics -- add tcatm 4way sha256 implementation -- Add experimental VIA Padlock sha256 implementation - -Version 0.1.2 - November 26, 2010 - -- many small cleanups and micro-optimizations -- build win32 exe using mingw -- RPC URL, username/password become command line arguments -- remove unused OpenSSL dependency - -Version 0.1.1 - November 24, 2010 - -- Do not build sha256_generic module separately from cpuminer. - -Version 0.1 - November 24, 2010 - -- Initial release. - diff --git a/NEWS.md b/NEWS.md new file mode 100644 index 00000000..4b751e0b --- /dev/null +++ b/NEWS.md @@ -0,0 +1,19 @@ +Version 4.0.0 - 15th January 2014 + +* Fork `veox/sgminer` from `ckolivas/cgminer` version 3.7.2. +* Remove code referencing SHA256d mining, FPGAs and ASICS. Leftovers most probably still remain. +* AMD ADL crash fix on R9 chipsets by Benjamin Herrenschmidt. +* Maximum allowed intensity increased to 42. +* Move documentation to directory `doc`. +* `--gpu-threads` support for comma-separated values by Martin "Kalroth" Danielsen. +* AMD ADL SDK 5 mandatory, preparation for ADL Overdrive 6 support by Martin. +* Allow changing TCP keepalive packet idle time using `--tcp-keepalive`. +* Automatic library presence detection by `configure`. +* `--scrypt` option removed (no other choice now). +* `--vectors` option removed (current kernel only supports 1). +* Display per-GPU reject percentage instead of absolute values by Martin. +* Do not show date in log by default (switch with `--log-show-date`). +* Fix network difficulty display to resemble that of cgminer 3.1.1. +* Forward-port relevant bugfixes form `ckolivas/cgminer`, up to cgminer version 3.10.0. + +Previous NEWS file available [here](https://github.com/veox/sgminer/blob/829f0687bfd0ddb0cf12a9a8588ae2478dfe8d99/NEWS). diff --git a/configure.ac b/configure.ac index ac0c2bd7..4197f16c 100644 --- a/configure.ac +++ b/configure.ac @@ -1,8 +1,8 @@ ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## -m4_define([v_maj], [3]) -m4_define([v_min], [7]) -m4_define([v_mic], [2]) +m4_define([v_maj], [4]) +m4_define([v_min], [0]) +m4_define([v_mic], [0]) ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## m4_define([v_ver], [v_maj.v_min.v_mic]) m4_define([lt_rev], m4_eval(v_maj + v_min))