Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
0 - January 3, 2018
- bitmain: Use more portable PRIu64 rather than %llu (which fails on Windows)
- icarus: Use more portable PRIu64 rather than %llu (which fails on Windows)
- Bugfix: openwrt: Fix bitmain option
- Bugfix: antminer: Avoid strstr(NULL, ...) when device has no [available]
product string
- Update libblkmaker to 0.5.2
- openwrt: Add option to enable bitmain driver
- openwrt: Update libusb device list
- FTDI scan: Use intptr_t to avoid warning about different size type cast
- Bugfix: proxy: Add missing unistd.h include
- Bugfix: bifury: Precision specifications should be int, not size_t
- Bugfix: klondike: Include config.h first
- Bugfix: binloader: Include config.h first
- README.ASIC: Include support URI for bi*fury driver and firmware
- Added MultiMiner as an example of a GUI application that wraps bfgminer using
the RPC interface
- Silence non-issue warnings
- bifury: Add support for hwerror message
- inc_hw_errors2: Support reporting hw errors without a known nonce
- bifury: Initialise cutofftemp to 75 C
- bifury: Turn chips off and on when disabled and enabled
- bifury: Split out bifury_send_clock
- Bugfix: bifury: Avoid double-free and double-close on version parse errors
during probe
- bifury: Add support for clock command
- bifury: Update for "job" protocol change
- bifury: Update to current git
- bifury: Workaround bugs in older firmware by flooding device with work until
it proves it has needwork
- bifury: Attempt to submit shares even if maxroll limit is ignored
- Clone cgminer's submit_noffset_nonce interface
- Bugfix: bifury: Check that there is a line before comparing it to "version "
- bifury: Prune jobs older than 16 queued, to eventually clean up discarded work
(from flushes)
- Replace ucs2tochar* with ucs2_to_utf8* to handle Unicode
- README.ASIC: Document Bi*Fury firmware upgrade
- bifury: Free work when we know it's complete
- bifury: Implement hashrate reporting using "job" messages
- bifury: Tolerate other data before version reply
- bifury: Abstract line parsing into bifury_readln function
- Bugfix: bifury: Use a char array, rather than pointer to char array, for
bifury_init_cmds
- bifury: Unify SEND devprotodump logging code
- fpgautils: Skip SetCommConfig on Windows if baud is not to be set
- Check for U+2022 and replace it with "*" is unprintable
- Use replacement character for non-printable Unicode
- Use UTF-8 for Unicode
- Implement a utf8_decode function to produce wchar_t needed by curses
- bifury: New driver
- Bugfix: twinfury: Handle flash request for both chips, and avoid using proc
uninitialised
- Bugfix: twinfury: Fix various technicalities
- Bugfix: twinfury: Remove incorrect tcflush
- Twinfury communication protocol changed to be more robust. A preamble is sent
before the actual command.
- LED flashing changed: - setting a flag and flash the LED during the poll
cycle - mutex removed
- Renamed bf2 driver -> twinfury driver bin2hex utility used to convert the
serial number
- BF2 driver comment edited
- BF2 - Twin Bitfury USB miner driver added
- Deprecate --ndevs|-n (redundant with -d? and GPU-only)
- Never abort startup just because we have no devices (there may be cases this
is pointless, but at least it's consistent)
- cgpu_match: Accept ranges for letter processor specification
- cgpu_match: Accept ranges for numeric elements
- test_cgpu_match: Test with more than one device/processor
- configure: Condense configuration options summary a bit
- configure: Put configuration options summary back after everything completes
- Workaround bug in MinGW-w64: Check for strtok_r to be defined at compile-time,
and don't override it unless we really want to override
- Bugfix: configure: Use new need_lowl_vcom instead of need_fpgautils
- configure: Explicitly check for sleep
- Bugfix: Set LIBUSB_LIBS for non-pkgconf non-header-subdir libusb installations
- Move unused winsock2.h includes to the end of config.h
- Use lround instead of llround, since it has better compatibility with older
MingW and Cygwin versions
- lowl-hid: Save and use hid_enumerate results from library test
- Silence Windows build warnings
- mcp2210: Remove cruft leftover from HID code (moved out)
- lowl-vcom: sysfs scan: Simplify maybe_strdup into _sysfs_do_read
- lowl-vcom: sysfs scan: Don't bother getting product string until we confirm it
is in fact a tty device
- input_pool: Accept a null password
- Bugfix: Move const data into the scope it needs to be in
- Bugfix: Restore case insensitivity to --scan driver names
- Accept "@" separator for serial/path in --scan to match --device and
--set-device better
- README: Uppercase the sequence letter when talking about multiple pools
- README: Mention "make install" and clarify saving settings
- Bugfix: avalon: Don't "probe" with -S <path/serial>
- bitforce: Add lowl_* to bitforce_queue so it can be specified by name as a
driver
- Bugfix: devpath_to_devid: Be strict about COM port specifications on Windows
- Bugfix: avalon: Don't "probe" with -S all
- Bugfix: Only count devices in -d?
- RPC: {dev,proc}details: Add 'Processors', 'Manufacturer', 'Product',
'Serial', 'Target Temperature', 'Cutoff Temperature'
- debian: Need to explicitly add opencl support to build.
- Correctly document klondike as being enabled by default
- Simplify logic for README.ASIC and README.FPGA install
- Split fpgautils into lowl-vcom and binloader, and fix internal build
dependencies
- Add README.CPU to "make install" distribution when built with CPU mining
support
- line 2913 added urlencode
- Bugfix: RPC: Release apisock on error in tidyup
- klondike - dont try to flush if not initialised
- Rename --scan-serial to --scan
- Bugfix: Handle invalid driver names cleanly
- Workaround libcurl bug to properly support HTTP proxies for stratum
- Bugfix: Write klondike options for klondike-options (not icarus options)
- README.OpenWrt: Change example repository to "latest", and document
alternatives
- mcp2210: Add support for --device-protocol-dump
- Bugfix: Initialise dynamic osc6_bits variables
- README: Fixed a few typos here and there and improved wording (Thanks
miningpenguin!)
- README: Moved CPU sections to README.CPU and elaborated more on it
- README*: Grammatical cleanups
- README.ASIC: More KnCMiner
- README.ASIC: Add section about KnCMiner
- Bugfix: opencl: Dynamic mode should disable threads for this device, not just
N after the first
- Bugfix: Make curses_input return NULL on a blank line, as most callers expect
- Duplicate (hidden) --userpass option before --pool-priority so it can be used
in config files
- Only probe VCOM devices on bare "all" scan-serial request
- Provide backports of uthash LL_{PREPEND,FOREACH{,_SAFE}}2 (only added in
1.9.7, not yet in major distros)
- Upgrade required uthash version to 1.9.4 for LL_CONCAT
- README: Update documentation for scan-serial
- README: Bitstreams no longer included with BFGMiner source
- README: Remove incomplete and unnecessary list of ASIC/FPGA devices
- write_config: Add scan-serial and set-device
- write_config: Update to make JSON Array of named parameters
- Remove support for comma-separated values in --device, and update
documentation
- lowlevel: Collapse multiple lowlevel drivers on the same devid to a secondary
linked list, and only spawn one thread to probe all lowlevels on a given devid
- Bugfix: vcom_devinfo_scan: Clean up hashtable when done
- README: Update cgminer driver FAQ with Windows-specific answer, now that we
have a workaround for *nix
- cpu/opencl: Always disable by default; removes deprecated -G option entirely
- vcom_lowl_probe_wrapper: Attempt to reattach detached USB devices
- Bugfix: erupter: Prioritise Emerald after Sapphire
- Bugfix: Allow "drv:auto" to override general "noauto"
- Bugfix: _probe_device_match: Fix inverted logic
- Bugfix: Don't try to call lowl_probe for drivers that don't support that
interface
- lowl-hid: Use usb devids for libusb-based hidapi devices
- Replace bfg_claim_hid with lowlevel_claim
- lowlevel: Generic claim interface for lowlevel info
- cgpu_match: Compare dev_t under paths
- Rework -d? output to display more useful information now that device ordering
is non-deterministic
- cgpu_match: Add support for matching by serial number or path
- Unit tests for cgpu_match
- Rework --device option to accept a pattern and JSON Array in config; removes
support for processor ranges
- Remove --remove-disabled option, as it conflicts with hotplug, per-processor
stuff, etc already
- Bugfix: Reimplement "noauto" flag
- Bugfix: Restore "-S foo" without driver name functionality
- Bugfix: scan-serial: Compare dev_t as well
- littlefury: Convert to lowl_probe
- hashbuster: Convert to lowl_probe
- avalon: Convert to lowl_probe
- cairnsmore/erupter/icarus: Convert to lowl_probe
- bigpic: Convert to lowl_probe
- ztex: Convert to lowl_probe
- x6500: Convert to lowl_probe
- nanofury: Convert to lowl_probe
- modminer: Convert to lowl_probe
- klondike: Convert to lowl_probe
- bitforce: Convert to lowl_probe
- fpgautils: Wrapper to easily adapt an old detectone to new lowl_probe
- lowlevel: Add match variants of detect functions
- DevAPI: add_cgpu: Use mutex to ensure thread safety
- Make detectone_meta_info thread-local
- New threaded device probe framework
- bigpic: Probe sooner than most drivers, but still after icarus/erupter
- cpu/opencl: Fix probe priorities to be last
- Bugfix: RPC: Correct per-device Work Utility to be per-minute instead of
per-second
- Bugfix: Fix Windows VCOM enumeration to work with new lowlevel code
- Bugfix: nanofury: Use maybe_strdup in case strings may be missing
- Bugfix: bitfury: Fix processor disable/enable for all bitfury-based devices
- hashbuster: Get temperature when available
- Bugfix: hashbuster: Use maybe_strdup where there might not be a string
- hid: Treat null-length strings as missing entirely
- hashbuster: Enable dynamic osc6_bits
- hashbuster: New driver
- Split a hid lowlevel out of mcp2210
- ztex: Convert to use lowlevel usb enumerator
- A quick flag to allow drivers to convey the desire to rescan devices (from
lowlevel up)
- Lowlevel USB enumerator for libusb
- dname for lowlevel drivers
- Bugfix: lowlevel: Avoid null pointer dereference on devices that are missing
USB strings
- lowlevel: Add a userpointer to lowl_found_devinfo_func_t and use it for
serial_autodetect
- Rework VCOM autodetection to go through lowlevel interface, avoiding repeat
USB string fetching
- lowlevel: Keep track of the claimed devid and debuglog every found device
- ft232r: devinfo_scan: Don't skip claimed USB devices
- ft232r: Be more tolerant of USB open failure or missing strings
- RPC: Build most of CONFIG "Device Code" by iterating over registered driver
list
- drv_detect_all: Use priority-sorted list of registered drivers
- Build hash tables to find drivers by dname or name
- Build a linked list of registered drivers
- BFG_REGISTER_DRIVER macro to commonly pre-define device_drv structures
- Move have_libusb checks out of drv_detect_all
- Replace opt_nogpu with simple function that adds opencl:noauto to scan-serial
list
- opencl: Remove ancient gpu_threads variable, not really needed anymore
- Bugfix: Stop waiting for pool testing as soon as one is active
- bitfury: Clean up by making private functions static, and naming public ones
with [lib]bitfury_ prefix
- bitfury: Remove old (unused) driver code
- bitfury_gpio: Convert to using current bitfury driver code
- Bugfix: littlefury: Upgrade to use current bitfury driver (old one didn't work
with littlefury anymore anyway)
- Bugfix: test_work_current: Make hexstr buffer large enough for blkhashstr
later on (issuing old work msg)
- README: Document --enable-knc configure option
- README: Document --disable-nanofury configure option
- Windows autodetect: clear detectone meta info
- Check for Windows DDK headers, and where they are (and build without them if
unavailable)
- Windows SetupAPI-based detection for USB VCOM devices (tested with CP210x and
CDC)
- ucs2tochar{,_dup} functions to convert USB string descriptors to char* format
- bfg_strerror: Support for Windows system errors
- Introduce applogfail* macros
- Bugfix: scrypt: Add missing include stdbool.h
- Bugfix: Explicitly cast uses of be32toh to uint32_t
- Bugfix: Add missing includes of config.h, stdbool.h, and stdint.h
- lowlevel: Convey device manufacturer up to nanofury cgpus
- nanofury: Store device HID path for RPC
- lowlevel: Promote path to a normal element for devices to simplify things a
bit
- nanofury: Claim mcp2210/hid devices
- mcp2210: Implement claim on HID paths
- fpgautils: Use string identifiers for internal hardware claims
- ztex: Keep interface claimed as a lock
- Bugfix: mcp2210: Check for NULL hid device strings before trying to convert
them to ASCII
- FTDI autodetect: Enable populating USB product and serial number
- Bugfix: FTDI autodetect: Add missing parameter values and remove unused buffer
- Bugfix: bigpic: Don't active poll event without a poll function
- Bugfix: knc: Use separate DEV_RECOVER_DRV deven when doing automatic core
disable/re-enable, so user-initiated disables are left alone
- Document existing enum dev_enable usage
- Bugfix: knc: Only try to re-enable cores after we've actually asserted them as
disabled, otherwise we won't actually assert the enable either
- knc: Automatically disable and re-enable problematic cores
- AUTHORS: Add Dmitry Sorokin
- bitfury: Disable dynamic osc6_bits when manually setting a specific value
- bitfury_do_io: Make use of timer_elapsed
- bitfury: Only use dynamic osc6_bits with boards that support it explicitly
(BFSB and Metabank for now)
- bitfury: More debugging info for dynamic osc6_bits
- Bugfix: bitfury: Fix tv_stat to persist
- bitfury: Remove useless debugging
- bitfury: Simplify dynamic osc6_bits logic such that the range is defined in
one place
- bitfury: Remove unused skip_stat
- Bugfix: bitfury: Stick to tracking best_done per-chip, and never call
zero_stats (which is for users, not drivers)
- Bugfix: bitfury: Use proc_repr rather than incorrectly calculated chip_id
- Bugfix: bitfury: struct bitfury_device is already chip-specific
- bitfury: dynamic osc_6 bits
- bitfury: Improve frequency calculation - fixes occasional miscalculations as
well as makes it safer with multiple devices
- bitfury: Added frequency calculation
- tm_i2c: Corrected copyright
- Allow --set-device opt=val without a device specification to attempt setting
it on every device
- Bugfix: knc: Maintain queue_full for all cores, so they continue to queue work
even if the first is disabled
- bitfury: Allow setting osc6_bits up to 60
- Bugfix: Set status to LIFE_DEAD2 when killing threads at shut off, to avoid
calling driver code
- Skip "testing stability" message at startup
- 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.
- ManageTUI: Slash key performs processor selection by search
- nanofury: Populate dev_product and dev_serial
- mcp2210: Implement mcp2210_close
- Bugfix: mcp2210: hid_write needs a report id, especially on Windows
- mcp2210: Workaround some Windows snprintf not handling wide strings correctly
by simply copying character-per-character (only works for ASCII data)
- Bugfix: chroot: Check that chdir succeeds
- AUTHORS: Add pontus
- knc: Expose Voltage and DCDC Current to TUI Manage device
- knc: Expose Voltage and DCDC Current to RPC status
- knc: Store volt/current on knccore
- knc: Read voltage/current from DCDCs
- Bugfix: knc: Fix temperature readout of half-celcius
- Bugfix: Only define have_libusb if building with libusb support
- littlefury: Remove unused code
- bitfury: RPC procset: Ignore extra data (like newline) after numbers
- Add --set-device option to allow setting default procset commands
- README: Document hidapi dependency for NanoFury sticks
- AUTHORS: Include Vladimir Strinski for NanoFury code
- mcp2210: Set GPIO output mode atomically with their output values
- nanofury: Power off device when shutting down
- make-release: Include libhidapi-0.dll
- mcp2210: Port to Windows
- configure: Find hidapi.h for mcp2210 using pkg-config
- bitfury: Provide read/write access to osc6_bits from the Manage TUI
- nanofury: Reduce oscillator bits to 50 to stay within USB specs
- bitfury: If multiple integers differ after 4 tries, just go with the first so
we can start mining
- nanofury: Implement actual mining code
- nanofury: Turn off device after checkport
- nanofury: New driver; detect device
- mcp2210: Implement protocol required for NanoFury USB sticks
- mcp2210: Skeleton low-level driver for MCP2210 USB to SPI Master bridge
- ft232r: Use lowlevel interface for ft232r_open
- Abstract ft232r scan+probe interface into new generic lowlevel driver
interface
- configure: Error if knc driver is requested, but linux/i2c-dev.h is missing or
not from i2c-tools
- knc: Attempt to express core enable/disable to controller
- knc: Put knc_device on every processor device_data
- Refactor device disable/enable logic so that drv.thread_{disable,enable}
actually get called
- Bugfix: knc: Check that device actually has work queued, before trying to find
the most recent one
- knc: Read temperature sensors
- DevAPI: minerloop_queue: Run watchdog in device thread
- knc: Pass queue flush to device when its most recent job produces stale shares
- knc: Issue flush command at init
- Bugfix: knc: Perform le32toh on unknown-work nonces
- knc: Use independent device_id for works to enforce 15-bit size
- Bugfix: spi_emit_nop: Correct counter logic
- knc: Implement mining
- knc: Use FPGA i2c to identify present ASICs
- knc: Basic detection of boards on expected i2c buses
- DevAPI: generic_detect: Just use an enum for flags
- Use list of drivers/algos/options generated by configure in --help info
- 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
- RPC: Include more info in per-device/processor status
- API add 'MHS %ds' to 'summary'
- Icarus remove unneeded opt_debug tests due to applog being a macro
- We should only yield once in cg_wunlock
- Provide a function to downgrade a cglock from a write lock to an intermediate
variant.
- 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.
- 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.
- Add subdir-objects to automake options.
- 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.
- More README about quotas.
- Document quotas and new load-balance strategy.
- 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.
- Change --socks-proxy option to default to SOCKS5
- Cope with trailing slashes in stratum urls.
- 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
- 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
- take_queued_work_bymidstate should use a write lock.
- API mcast add a description option with miner.php
- Skip dissecting opt->names in parse_config if it doesn't exist.
- ICA optional limit timing with short=N or long=N
- logging - applogsiz() for large messages
- Provide a funcion that looks up queued work by midstate and then removes it
from the device hash database.
- Wait until all pools are done testing before giving up, regardless of how long
they take to fail
- AUTHORS: Add Ricardo Iván Vieitez Parra and Paul Wouters
- Bugfix: Check that setgid succeeds
- When using --chroot, chdir to the new root
- Bugfix: Add missing drivers to --help list
- Bugfix: Zero stats: cgpu->diff_stale
- fpgautils: serial_close: Explicitly release advisory lock before closing, in
case fd has been inherited by a process forked by system()
- Use serial_close to pair with every serial_open
- Workaround bug in Plibc by resetting locale to "C" at startup
- Bugfix: bitfury: Check for necessity of linux/i2c.h so build succeeds with
i2c-tools's userspace linux/i2c-dev.h
- bitforce: Workaround bugs in current firmware for the Chili
- Bugfix: DevAPI: Reduce race-collision delay to 1ms so thread_shutdown actually
gets called before threads are killed forcefully
- Bugfix: configure: Use AC_SYS_LARGEFILE to ensure nonce/share log files can
safely grow bigger than 2 GB
- Bugfix: Correct argument type for --submit-threads option
- littlefury: Workaround Xcode bug initialising fields in anonymous unions
- Bugfix: write_config: Make intensity list writing more readable, and avoid
extraneous argument in dynamic intensity case
- DevAPI: Trigger mt_disable_start after init, if a device is disabled before
minerloop starts
- icarus: Skip sending new work if entering DEV_RECOVER* modes
- icarus: When disabling, close device fd and stop sending new work
- RPC: Use get_api_extra_device_status for full-device status, for devices with
only a single processor
- Only show long-poll message in pool summary if it's not using stratum.
- README.ASIC: Clarify syntax of --scan-serial usage for USB Erupters
- Bugfix: RPC: Defer allocation of apisock until after we check for --api-listen
- make-release: Only try to include libmicrohttpd if bfgminer.exe depends on it
- Bugfix: make-release: Include libplibc-1.dll if available
- SGW: For Windows builds, include winsock2.h instead of POSIX networking
headers
- configure: Display getwork proxy server support in summary
- Bugfix: SGW: Pass actual cgpu_info to prune_worklog_thread instead of silently
casting one from getwork_client
- Bugfix: Get total_staged with lock for TS stat, before getting console lock
- Bugfix: bitforce: Correct fanmode RPC help
- bitforce: Hide fan control when disabled in firmware
- Bugfix: bitforce: Correct fanspeed TUI setting
- Bugfix: logging: Allow up to 4 KB for log lines
- Bugfix: icarus: Ensure last2_work exists before trying to check nonces fit it
- README.OpenWrt: Include serialusb drivers
- README: Include OpenWrt serialusb driver package names
- Bugfix: Initialise notifier (as invalid) for no-thread devices (SGW)
- Bugfix: Free temporary kernel path copy when writing config file
- Bugfix: Put kernel path on the (main) stack after initialisation from
commandline/config, to avoid appending an argv or jansson string
- Bugfix: Always allow startup with curses enabled (since the user can use
Manage devices to add new ones, and display Ctrl-C for text-only quit help
- Bugfix: Ignore/reject libmicrohttpd before 0.9.5, which introduced symbols we
need
- README: Elaborate on format of BW
- Bugfix: Try to initialise libusb later, so any mutexes applog might need are
initialised
- Bugfix: Implicitly initialise timer_set_now when it is first called
- util: Eliminate unsafe const-removing casts
- configure: Cleanup CFLAGS/LDFLAGS display
- Show RT_LIBS in ./configure output.
- Bugfix: configure: Move actual roundl macro back to miner.h after math.h
should be included
- Bugfix: configure: Use dummy pointer to correctly detect roundl when conftest
main is missing argc parameter
- Bugfix: configure: Use variable argument to roundl to prevent compilers from
optimizing it out entirely
- Remove bitstreams from Windows binary distributions (README directs users to
download source and copy them)
- make-release: Remove autom4te.cache from distributed source
- Bugfix: Omit --no-opencl-binaries option from build if OpenCL is not being
compiled
- Bugfix: Check that all pools have URIs set before starting
- Bugfix: bitforce: Make noncebuf large enough for max qresults +1 (for OK line)
- opencl: Ability to avoid using binary kernels with new --no-opencl-binaries
option
- README: Include jansson PKG_CONFIG_PATH in example for Mac
- Include trailing \0 with coinbase sigs if there's room
- Differentiate socket closed from socket error in recv_line.
- Add new best share info to verbose logging.
- Add notice for when network diff is changed.
- convert sleep(const) to nmsleep()
- Rename longpoll threads according to what pool they're associated with
- miner.php report 'Last Valid Work' as time before request
- API V1.25 - add 'Last Valid Work' time for each device
- add 'count' to customsummarypage 'calc'
- Bugfix: ztex: Initialize fw_buf pointer to NULL so a free before allocation is
safe
- Cleanup when stratum curl fails to initialise.
- LTC text typo
- Recreate cURL for new stratum connections, and clear stratum_notify on
suspending them
- clear_stratum_shares: Rename diff_stale variable to diff_cleared
- MMQ it's a bitstream
- Update a pool's last work time when the work is popped as well as staged.
- Extend stratum connections another minute (total 2 minutes) after the last
work item was staged, and maintain last_work_time for non-stratum pools.
- Fix --benchmark generating valid work for cgminer.
- Bugfix: Correct pdbuilder result directory
- Omit add_serial_all code when serial support is not wanted
- Use configure to detect presence of roundl to avoid redefining an actual
function (possibly inline)
- Bugfix: roundl: Add needed parenthesis to perform ?: before +
- Bugfix: ft232r: Defer allocating structure until after USB endpoint is
successfully opened, so it won't leak in case of failure
- Bugfix: ztex: Free bitstream in memory when done with it
- Bugfix: Safely handle all-space cURL debug messages, should they ever happen
- Silence warnings about poor format usage for quit()
- Apply noreturn and printf-format attributes to quit() function definition
- Bugfix: set_serial_rts get flags to manipulate them correctly
- Bugfix: Missing return for /dev globbing
- Bugfix: Free unused work when retrying failed lp request
- Display processor name with thread disabled/re-enabled messages
- Move best share to top summary line, and add network difficulty to block line
- opencl: Default to phatk kernel for Mesa platform
- opencl: Default to single thread with Mesa OpenCL
- opencl: Check for Mesa OpenCL and avoid using binary kernels with it
- bitforce: Never increase bulkqueue poll wait time during queue underruns
- bitforce: Start off polling bulk queue every 100ms
- bitforce: Log device queue size after getting bulk results
- bitforce: Ensure bulkqueue polling occurs at least once a second
- opencl: Include OpenCL platform in kernel binary filenames
- bitforce: Use bulk queue mode for all SC devices
- Bugfix: bitforce: When reinitializing, free all known works to avoid
decrementing reset queued counter
- bitforce: Handle timeout during ZOX as cleanly as possible
- Bugfix: bitforce: Make reinitialization more complete and safe
- Bugfix: bitforce: Close opened fd if reinit fails
- Bugfix: bitforce: Retry ZGX until device is NOT busy
- bitforce: Log when zero queued results are received
- Revert "x6500: Whenever we get a hardware error, purge buffers just in case
of read/write desync"
- Bugfix: libblkmaker: Check that zero-padding on base58check input matches
output (needed to properly reject addresses with too many or too few prefix/pad
'1's)
- Bugfix: Free bin2hex output in __update_block_title
- Bugfix: Allocate space for the terminating null byte on new current_hash
- Display tail end of prevblock hash rather than start+32bits
- Try to extract block height from coinbase scriptSig, when mining stratum
- Display next block height when using GBT
- Use suffixes for target-difficulty also, in share accept/reject loglines
- Bugfix: Implement common target_diff function, fixing scrypt-specific bugs in
and simplifying common code shared by set_blockdiff, calc_diff, and share_diff
- Set DISPLAY to :0 by default (on non-Windows)
- Bugfix: Reset pool bytes received when zeroing stats
- miner.php trim trailing zeros on some of the STATS numbers
- Semi-Cherrypick: API stats - include pool network bytes + in miner.php
- Best Share readme
- API zero - zero statistics - all or bestshare - with optional on screen
summary
- api.c pgaenable not re-enabling the device - plus related debug
- diffexactone pool diff1 used for share value calculation is ffffffff... not
100000000... :P
- miner.php user/pass fix 'usr' is readonly
- miner.php optional user/pass login restrictions
- zero (most) API stats
- Remember best share per pool and return in API pools
- ztex: precheck the secondary solutions to avoid hw errors the ztex bitstreams
gives back the latest checked nonce and its hash7 value and two possible
solutions.
- Bugfix: configure: if blocks require at least one command, so fill with true
- Bugfix: Only log stratum resume if it was actually "idle" before
- Zero the best share string memory when zeroing stats.
- Change the pool stratum socket buffer to new cgminer implementation, to
allocate it in a grow-only fashon and reduce virtual memory fragmentation at
the expense of CPU time.
- 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.
- Document Mac OS X configure usage with Homebrew pkg-config path
- Clean up post-configure display of compile environment
- Bugfix: If native ncurses detection fails, print "none?" result before moving
on to try AC_SEARCH_LIBS scan
- Fix more printf-format non-compatibilities
- Update windows-build.txt
- Bugfix: Copy share hash to work->hash before doing 4-byte flip required by
fulltest
- driver-ztex: libztex_setFreq() must be called before ztex_releaseFpga()
- libztex: Make log messages say bitstream when refering to bitstreams
- Increase FD_SETSIZE to 4096 on Windows
- Bugfix: Use AC_PROG_CPP in libusb include subdirectory detection for improved
portability
- Bugfix: Free input memory after prioritising pools in TUI
- Bugfix: Free filename entry for writing config file when done with it
- Bugfix: Free stratum nonce1 before replacing it with new value on reconnect
BFGMiner Version 2.9.4 - December 4, 2012
- Revert "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."
- Stop special-casing worksize default to 256 for Cypress, since it incurs a 5
MH/s hit with stock config
- New "--scan-serial all" feature to probe all enumerated serial ports
- modminer: Revamp dynamic clocking algorithm per request from cablepair
- 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.
- Fix for non-ADL OpenCL device formatting issue
- 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
- 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.
- fpga serial I/O extra debug (disabled by default)
- 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.
- 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.
- 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().
- Don't try to get bitforce temperature if we're polling for a result to
minimise the chance of interleaved responses.
- Fix harmless unused warnings in scrypt.h.
- Check we are not lagging as well as there is enough work in getwork.
- Fix BitFORCE driver to not silenty discard valid shares (bug introduced by
CGMiner merges)
- 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
- Fix race condition in thread creation that could under some conditions crash
BFGMiner at startup
- Change device API "name" to reflect driver name abbreviation instead of device
type name
- miner.php allow a separate user settings file
- modminer: Implement extended device stats to expose each Board to the RPC API
- Bugfix: Use new cgpu->thr for longpoll waking
- bitforce: Remove 4.5s delay before polling starts, since MiniRig finishes sooner
- FPGA - allow device detect override without an open failure
- Bugfix: Missing printf value in merge from cgminer
- Ensure C compiler is in C99 mode
- Add CPU core count detection for BSD/Mac
- Set CPU mining idle priority on Windows
- 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
- Use epoll to immediately interrupt Icarus with new work on longpolls (Linux)
- 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
- New maintainership of code with modular FPGA/GPU focus, under BFGMiner name
- Complete working support for cross-compiling Windows builds on Linux.
- Fix usage of low --scan-time settings so it doesn't busy-loop
- JSON API: Add new 'devdetail' command to get fixed device information
- JSON API: Implement driver abstraction for extra device status
- Icarus: Use epoll to wait for serial port input properly, when available
- Icarus: Workaround buggy USB-UART that causes Icarus to stop mining rarely
- Icarus: Estimate mining hashrate correctly, calibrated from real-world data
- Icarus: Parallelize work setup with Icarus hash search improving performance
- Icarus: More reliable detection and runtime
- OpenCL: Move GPU-specific data fetching from JSON API to OpenCL driver
- OpenCL: Dynamically load OpenCL library, to be more vendor-independent and
allow use without actually having OpenCL (i.e. FPGA-only rigs).
- 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.
- 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
- 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.
- 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.
- 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
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.
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
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
Major feature upgrade - GPU monitoring, (over)clocking and fan control for ATI
GPUs.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Add new option: --monitor <cmd> Option lets user specify a command <cmd> 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.
- 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.
- 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.
CGMiner 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.
- 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.
- 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.
- 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.
- 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.
- OSX support
- 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
- 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.
- 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
- Initial release.