CGWatcher version 1.3.6 © 2014 CoinMyne http://www.coinmyne.com/cgwatcher DONATE: This software is provided free of charge by the developer. Support its continued development and the development of related projects like CGRemote by sending a small donation to one of the following addresses: BTC: 12TAYjmSrdDHLNpmix2MG6y3R868SMM7Fx LTC: LM6Un6hZvPzLBggJWiAVG6E6w2GfaHukXY NMC: NJjD4rP5xy2mgSK8gXXsZwFkdknbvtvy3q (Click Donate button in About tab for more options) UPDATE: See the Changelog at the bottom for more information on what has changed in this update. *Do not download CGWatcher from any other website! The program keeps appearing on SourceForge at double the size it should be, meaning it likely has malware added. SourceForge has removed some of these but they keep popping up every so often.* FAQ Q: Why is my hashrate lower when I use CGWatcher to launch the miner? A: In 99.9% of cases, this is due to the gpu-threads config setting. The cgminer readme states that the default gpu-threads value is 2, when in reality it uses 1 by default. So to stay consistent with the readme, CGWatcher defaults to 2. So to get the same results as running cgminer outside of CGWatcher, you may need to set gpu-threads to 1 in your config file or arguments. You can disable CGWatcher using 2 as the default value in Settings->Miner tab. REPORTING BUGS OR PROBLEMS: Please submit questions or problems to our support forum at http://www.coinmyne.com/support, AND include the debug report when submitting a bug. You can create the report by clicking 'Create Debug Report' in the Tests tab. Reporting a problem without providing this information may make it impossible to fix. ANTIVIRUS FALSE-POSITIVES CGWatcher may trigger a false-positive in your antivirus software (specifically Symantec and Kaspersky). If you are concerned that the software is doing something bad, we encourage you to submit a false-positive report to the developer of your antivirus software. This usually involves filling out a web form and uploading the CGWatcher archive (.zip or .rar file) and submitting it to them. They will check the files and report back whether or not it was a false-positive. They'll also whitelist the specific version you send them, but most likely the false-positive will be back on the next update... in which case I'd encourage you to repeat if you're still concerned. I gave up on submitting false-positive reports because they only correct them for one version, and even the slightest change brings them back (meaning they're probably only whitelisting a hash). PURPOSE: CGWatcher is a GUI/monitor for CGMiner and BFGMiner, the bitcoin mining program. It provides a graphical user interface, along with control and monitoring options to help ensure mining runs consistently. CGWatcher continuously watches the miner process and mining statistics to detect problems, and then takes the appropriate action - in some cases whichever action is specified by the user. CGWatcher also provides advanced scheduling, profitability mining (mining most profitable coin), detailed device and pool information, mining profiles, advanced remote management (using CGRemote), statistic reporting, email alerts, automated mining on Windows startup, allows you to modify miner settings while the miner is running instead of requiring a restart, and much more. CGWatcher is the most advanced and full-featured mining interface and monitor available. It eliminates the need to constantly check on your miners by watching them for you. And if you want to be able to check on and manage your miners from anywhere at any time, CGWatcher works with CGRemote (http://minerremote.com) to provide advanced features to manage the miners and even the computers they're running on. HOW IT WORKS: CGMiner and BFGMiner have an API allowing other applications to communicate with them for purposes such as this. CGWatcher sends a command to the miner, and the miner returns a reply message. These commands can be simple requests for information (such as asking what the current hashrate is or what devices it is using) along with commands that tell the miner to do something (change pools, disable a device, or restart, etc.) This allows a GUI to be written with a more user-friendly interface without affecting the miner's performance and hashrate. The miner gets to stay lightweight and as fast as possible, and the slightly more resource-intensive GUI program only sends requests when necessary. This communication is not enough to effect on the miner's performance. REQUIREMENTS: The .NET Framework 4.0 is required. The latest version of CGMiner or BFGMiner is recommended, although changes to these programs may require updates to CGWatcher, which I will try to do as quickly as possible. These miners must be ran with parameters giving CGWatcher full API privilege for full functionality. This is now done automatically any time the miner is started from CGWatcher, regardless of whether or not it is in the config file or arguments. CGWatcher will only ensure full API access is given to 127.0.0.1. If you want to allow full API access to other IP addresses, you can still use the api-allow option as it is not overwritten (CGWatcher just makes sure 127.0.0.1 is listed in W: group.) USING CGWATCHER: SETUP CGWatcher requires no installation. It is recommended to not use the 'Program Files', 'Program Files (x86)', 'ProgramData', 'Windows', or user desktop folders to store CGWatcher or miners because they may require elevated permissions to be able to save files there (including config files and CGWatcher's settings files). ** If you are using Windows 8, it may be necessary to run CGWatcher as Administrator because not doing so causes permissions issues when CGWatcher attempts to get info on the miner's process. This then causes CGWatcher to not correctly match the process to a profile, which can make it ignore the miner completely. MULTIPLE INSTANCES If you'd like to run multiple instances of CGWatcher for running multiple miners on the same computer, you can do so by creating a copy of CGWatcher for each instance. Each copy must have its own folder so they don't overwrite each other's settings. You must also set each copy of CGWatcher to use a unique API port which they'll use when communicating with their miner. To do this, go to the Settings tab and click the Miner sub-tab. Enter a unique port number for each copy (between 1024 and 65535) in the Miner API Port setting. Check the 'Use only this API port' checkbox in each copy to force them to always only use this port, then click Save Settings. This will prevent the copies and their miners from cross-communicating with the other's miner. Example of running two CGWatcher instances on the same computer to monitor two cgminer instances: Copy A folder: C:\Miners\CGWatcherA Copy A port: 4028 Copy B folder: C:\Miners\CGWatcherB Copy B port: 4029 Once you have each copy setup, you can create a shortcut to each on the desktop and rename the shortcuts to better identify what each copy does (e.g. "CGWatcher GPU", "CGWatcher ASIC"). Alternatively, you can copy CGWatcher.exe and paste it into the CGWatcher folder with a new name (e.g. CGWatcher2.exe) and it should create its own INI file called CGWatcher2.exe.ini. This should allow them to work without interfering with each other. NOTIFICATIONS Notifications are messages CGWatcher presents to the user. Notifications are queued, meaning if you close one the next will be displayed and so on. Their default duration is 5 seconds, but this may be longer depending on importance. Clicking anywhere on a notification will close it. Unlike certain message boxes, notifications do not have any effect on the monitor and will not prevent it from continuing to run. The program will continue to work as normal even when a notification is displayed, and no input is required on your part to close notifications (they will close automatically after their duration expires), but you can click on them to close them if they get in the way. There are six types of notifications: - Good - [green] means something good has happened (e.g. a block found, or a GPU being re-enabled after it had been disabled due to overheating.) - Neutral - [yellow] a problem occurred but CGWatcher was able to take action to resolve it (e.g. restarting a miner because criteria for a monitoring check was met.) - Bad - [red] a problem has occurred and CGWatcher was unable to resolve (e.g. failing to restart a miner when it attempted to.) - Schedule - [blue] are displayed when Scheduled Actions are triggered. Information on these actions are also added to the log. - Remote - [purple] are displayed when a command to change something has been sent by CGRemote. - Miscellaneous - [teal] are everything else. You can disable notifications by checking the 'Hide Notifications' option in the Settings tab, and then clicking 'Save Settings'. This is not recommended, though you could still see this information in the log. PROFILES Mining profiles that allow you to easily switch between crypto-currencies. Upon starting CGWatcher for the first time, a default profile will be created for you. If a miner is running when you start it for the first time, it will set that miner to the default profile. If a miner is not running, it will check for a miner (cgminer.exe or bfgminer.exe) in the same directory or subdirectories (miner,cgminer,bfgminer). If it cannot find a miner, you will need to edit the profile and set the miner you want to use for the profile. You can do this as well as add, edit, or delete profiles by clicking 'Manage Profiles...' in the Settings tab. (Note: CGWatcher will only automatically create a profile for a running miner if no profiles exist. Once at least a one profile exists, any miners detected that were not started by CGWatcher will result in a prompt asking if you'd like to create a profile for that miner.) *Notice: Starting with version 1.1.5.0, how CGWatcher checks for running miners that it did not start has changed. Instead of just looking for miner processes, it will now require miners that have API enabled and ignore any that do not. It will start by looking to see if the running miner belongs to any of its profiles, and if so it will check that profile's configuration to find which API port to use to communicate with it. If the running miner does not belong to a profile, it will use the API port set in the Settings tab to communicate with the miner. If communication fails (API is not enabled or is using a different port), the miner will be ignored. To add, edit, or create profiles, use the 'Manage Profiles...' button on the Settings tab to open the Profile Manager. Although the Settings tab displays the active profile's settings, you cannot edit them here. For each profile, you can specify the following: - Profile name (required) - a unique name (e.g. "Bitcoin", "Litecoin") - Miner Path (required) - path to the miner's .exe (or .bat/.cmd file used to launch the miner). Each profile can have its own miner, they can all use the same one, or a mix of both. - Config File (optional) - a config file to use with the miner (does not have to be in the same directory as the miner). If the config file path contains spaces, CGWatcher will automatically put quotes around it to prevent an error in the miner. You can specify the complete file path, or just the filename for config files in the same directory as the miner and CGWatcher will convert it to the complete path for you. If you've named config files in Config File Editor (see below), they will appear in a drop-down list in the Config File textbox allowing you to select a config file by name it it will be automatically converted to its file path. You can also include web addresses (URLs) to config settings. It can be a file like http://web.host.com/myname/myconfig.conf or a direct link to just the config data like Pastebin's raw text URLs like http://pastebin.com/raw.php?i=CEz1Vgvn. Assuming you've entered a valid URL and clicked Save to save the profile, CGWatcher will download the URL to its own folder and link it to the URL so that if you use the URL in other profiles, only one local file is updated. The file is updated from the URL any time you save a profile using it, or when the miner is started or restarted to ensure it has the most up-to-date settings. An example using the basic config file I've uploaded to Pastebin, who's RAW URL is http://pastebin.com/raw.php?i=CEz1Vgvn. In Profile Manager, I would enter http://pastebin.com/raw.php?i=CEz1Vgvn in the Config File path. Upon saving, CGWatcher would download the file to its own folder, or a "webconfig" subfolder, and save it as "rawiCEz1Vgvn.conf". This is the file it will actually use when starting the miner. But before it starts the miner, it will update this file by re-downloading to get the latest version. I can also update this file to the latest version that is online by either saving the profile again, or opening the Config File Editor for this URL and clicking the Refresh button in the bottom next to the URL textbox. You can still use "include" config files in web config files, since the include path is relative to the miner path (not the parent config file.) However including a web config file URL is not supported. - Miner Arguments (optional) - arguments used when launching the miner. Note: if you set a .bat or .cmd file as the Miner Path, any arguments in the .bat or .cmd file will be saved to the .bat or .cmd file. Changing the profile arguments in CGWatcher will not affect other lines in the .bat or .cmd file, so if you're setting GPU_MAX_ALLOC_PERCENT or GPU_USE_SYNC_OBJECTS in your batch/command file before launching the miner, these lines will remain unaffected. Essentially this means that whether your miner path is an .exe, .bat, or .cmd file, you can edit arguments in the Profile Manager. When using CGWatcher, arguments always override config files... meaning if the same option is specified in both, the setting in arguments is used. This is the opposite of how cgminer handles them. I did this to allow for shared config files while letting arguments be used to customize the config at each miner. This can now also be done using variables. - Coin (optional) - If the profile is used to mine one type of crypto-coin, you can select the coin here. Assigning a coin to the profile allows the profile to be considered when determining the most profitable profile to mine with. If you do not assign a coin to the profile, the profile is ignored when determining profitability. It is therefore recommended that you create a profile for each type of coin you mine, and then use Scheduled Actions to switch profiles. - Advanced... - Opens advanced profile options. Currently these are: - CPU Affinity and Priority: set which CPU cores the miner process should use, and the CPU priority it is given. - Include Config File: this is to simplify the "include" option available by cgminer. You can use "include" : "C:\configpath\config.conf" to include an additional config file. If you've set a config file in the Miner Arguments using --config, CGWatcher will automatically extract it from the arguments and set it as the Config File. So if you see the --config option disappear from the Miner Arguments textbox, it is because it is now specified in the Config File textbox... and if it is in the Config File textbox, it will be used when launching the miner. There are two profiles you should be aware of in CGWatcher - the active profile and the current mining profile. The active profile is the one you want to use for mining and you can change this any time in the Settings tab by selecting a profile from the drop-down list and clicking 'Save Settings'. However, if the miner was running while you switched to a new profile, you will need to restart the miner for it to use the new profile. CGWatcher will prompt you to restart the miner when this happens, but if you choose not you will not be actually using the new active profile until you restart the miner. The Status tab, as well as the bottom right corner of the window when the miner is running, display the current mining profile - the profile the miner is currently using. The Settings tab will show you the active profile. This active profile is what is saved and loaded the next time CGWatcher opens. - The only time you need to worry about the current mining profile is if you change profiles while a miner is running and choose not to restart the miner when CGWatcher asks you. - Example of active profile vs. current mining profile: You are mining with a profile called "Bitcoin". While the miner is still running, you go to the Settings tab and change the active profile to "Litecoin" and click 'Save Settings'. You will be asked if you want to restart the miner so it will switch to the "Litecoin" profile now, and declining means the miner will keep running under the "Bitcoin" profile until the next time it is restarted or stopped and started. INTERFACE To keep the interface as small as possible, features are separated into tabs. Tabs can be navigated using function keys F1 to F11. Upon starting for the first time, you should go to the Settings tab and click 'Manage Profiles...' to setup your mining profiles. The Settings tab also allows for changing the miner's API IP address and port, but this will start out set default to the miner's defaults and should not need changed for most people. The API port is only used if the api-port option is not set in the miner's config file or arguments (when starting/restarting miner using CGWatcher, api-port in arguments overrides api-port in config file). If you are running multiple instances of CGWatcher to monitor multiple miners, you should set a unique port in each CGWatcher and miner to avoid cross-communication. For multiple instances, you can also check the 'Force this API port' to override any specified api-port option when the miner is launched from that CGWatcher instance. This will ensure that each of your CGWatcher instances are using unique API ports with their respective miners. Below is a list of the tabs and information on the features each tab contains: STATUS The Status tab provides general information such as hash rate (current and average), accepted and rejected shares, etc. Moving the mouse over a text box will provide you with more information about the data being shown in it. This tab also features a line graph showing the current hash rate and device temperatures (if reported) for the last ten times information was polled from the miner. At any time, you can refresh the information in CGWatcher by clicking the Refresh button. If monitoring is enabled (recommended), this will be done automatically at the interval you specify. However, if you wish to update it instantly without changing the interval, you can use this button at any time. Clicking the Refresh button will update information but it will not perform any checks regarding the miner's status or perform any miner restarts. The Status tab also includes a large Pause/Un-Pause button. If a miner is currently running, the button will be labeled "Pause Mining". Clicking it will shutdown the miner. Once the miner is not running, the button turns into a "Start Mining" button. Clicking it will launch the miner using the active profile and begin mining. The idea behind this button is to have a very easy way to "pause" mining if you wish to do something on the computer (like watch a video, for example) where you will need more performance from your GPU than you can get while mining, since mining usually maxes out your GPU. Depending on your GPU(s) and intensity settings, you may not need to pause the miner to do something like watch a video, but the option is there nonetheless. There is one statistic on the Status tab that you can customize. This means you can select from a list of existing statistics to display, or you can create your own custom statistic by creating a mathematical expression using any of the other available statistics. You can edit this statistic by clicking the Edit link next to the textbox in the Status tab (lower right corner). Q: What is the difference between "Pause Mining" and "Stop" buttons? A: As far as the miner is concerned... nothing. But CGWatcher assumes that if you pause mining, that you want things to carry on as they were prior to pausing once the miner is started again. This means scheduled actions that persist through miner restarts will be re-applied after pause/start, where stop/start they won't. On the bottom of the window underneath all of the tabs, you will see a status display on the left (which only appears when CGWatcher is doing something.) On the right is a miner status display that shows whether an accessible miner is running or not, and if CGWatcher is monitoring it. If the miner was started outside of CGWatcher and CGWatcher does not have API access to it, it will show that no miner is running. If the miner was started using CGWatcher and API access is disabled for some reason, it will show that the miner is running (but no miner data will be available.) MONITOR The Monitor tab provides options for monitoring CGMiner and watching for problems and correcting them. Changes to the settings on this tab are applied instantly and do not need to be "Saved." "Monitor Settings" "Enable monitoring, get miner status every: " - This turns on the monitoring feature which will request mining information from the miner at the interval you set. This option must be turned on in order to enable the other monitoring and recovery options below it, because with it disabled it will not continuously watch the miner. The default value of 10 seconds means every 10 seconds CGWatcher will request data from the miner, update the display, and perform the checks that you've enabled. When this option is turned on, you will see "[Monitoring]" added to the text in the CGWatcher title bar. Each time the monitor refreshes, it will check to see if the miner is running and if it is responding. If the miner being monitored stops responding for 3 consecutive checks, it will kill the process and restart it. You can change the number of consecutive checks required by changing the NotRespondingRestartChecks setting in the [Monitor] section of the INI file. The Windows Error Reporting UI creates a small window that comes up when a program stops responding, listing different options like 'Close the program', 'Check for a solution and restart', etc. In order to prevent this from preventing CGWatcher from killing a non-responding miner, the WER UI is disabled when CGWatcher starts, and its setting is restored when CGWatcher closes. This means that the UI will not be displayed for other programs that stop responding while CGWatcher is running, so if you wish to prevent CGWatcher from doing this you can set AllowDisableWERUI=False in the [Monitor] section of the INI file. "Restart if total hashrate falls below: - On occasion I have seen the hashrate fall to virtually nothing for some unknown reason. To correct this, you can enable this option and set it to a low value such as 10% of your current hashrate. For example, if your current hashrate is 500 Mh/s, you may want to set this at 50 Mh/s (or below). A number this low will avoid restarting due to small fluctuations in hashrates that can occur. If the total hashrate is below this cutoff for 3 consecutive checks, the miner will be restarted. (Note: You can change the number of consecutive checks by editing the HashRateCounter value in CGWatcher.exe.ini) "Restart miner every: (hours of continuous mining): " - As a sort of last resort, you can specify a number of hours of continuous mining before the miner is restarted. For example, the default value of 24 means the miner will be restarted after it runs for 24 continuous hours (without stopping). Whenever the miner is stopped or restarted, this timer resets. As an example, if you set this to 2 hours and a temporary problem disrupted mining, it should ensure that at most you will have 2 hours of downtime. "Restart [miner/computer] if [accepted/total] shares stop increasing for: " - If your accepted share count stops increasing for an unusually long amount of time, this likely indicates a problem with your pool or network. For solo mining, you may find checking the total share count (accepted, rejected, and stale) more helpful. Setting this to 10, for example, means that if your accepted share count doesn't increase for 10 minutes, the miner or computer gets restarted. "Restart [miner/computer] when sick or dead devices are detected" - More often than not, the miner will detect sick or dead GPUs but is unable to restart them and continue mining. When CGWatcher detects these sick or dead GPUs, it restarts the miner. (Note: This option no longer attempts to restart the sick or dead GPU only, as that often fails. Instead it now completely restarts the miner or the computer depending on your selection.) If you find that restarting the miner fails to resolve the problem, you can also select to restart the computer when this happens. If conditions to restart the computer are met, you will be shown a 30-second countdown window from which you can cancel the restart. By default, when a restart is performed CGWatcher will not force close other programs, meaning is another program prompts you to save something before closing, it may prevent or postpone the restart. If you wish for CGWatcher to force close other programs when it performs a restart, you can set the ForceCloseProgramsOnRestart=True under the [Monitor] section in the INI file. Starting in version 1.2.8, the "sick or dead" option now also applies to FPGA and ASIC devices. If you don't wish to have the miner restarted when these devices become sick or dead, you can disable this in CGWatcher.exe.ini. Find the [Monitor] section and the setting RestartOnSickDeadUSBDevices=True. Change this to RestartOnSickDeadUSBDevices=False and restart CGWatcher. "Restart miner if full API access becomes read-only or if API access is lost completely" - If CGWatcher had API access to the currently running miner process but then lost it, it indicates a problem with the miner and it will restart it by killing the process and restarting. Likewise, if CGWatcher had full API access and this became read-only or lost completely, it also performs the kill and restart. If it has read-only access and never had full access, it will not restart the miner. Nor will it restart any miner that it never had API access to. "Ensure miner stays running unless paused or stopped in CGWatcher" - means what it says. If you enable this option and you or some unknown force closes the miner outside of CGWatcher, CGWatcher will start it up again. And it will continue to do this until you enable this option. Stopping the miner by using the Pause Mining or Stop buttons will prevent the miner from being restarted. If starting the miner fails 3 consecutive times, CGWatcher will give up and notify you of a problem. "Restart miner if mining device count is below (all devices):" - set the minimum number of devices that must be mining when the miner start grace period (default 3 min) ends. If this number of devices is not met, the miner is restarted. This does not apply to miners that were running before CGWatcher. "Overheat Protection" "Enable overheat protection for GPUs not protected by the miner" - enable or disable CGWatcher's overheat protection features. See OVERHEAT PROTECTION below. OVERHEAT PROTECTION If the miner is able to detect a GPU's temperatures, it provides overheat protection as long as the auto-gpu option is enabled. If you use both the auto-fan and auto-gpu options, the miner provides additional protection by controlling the GPU's clock and fan speeds to keep it running in the temp-target range. However, the miner is unable to detect information for all GPUs, specifically Nvidia GPUs, because it only uses the AMD ADL library to get this information. So if the miner is not able to get the GPU's temperature but CGWatcher is, CGWatcher will try to provide basic overheat protection also using the temp-target, temp-overheat, and temp-cutoff settings. If the temperature passes the temp-overheat setting, CGWatcher will lower its intensity by one in an attempt to get temperatures back to the temp-target range. It will continue to do this as long as the temperature is too high. If the temperature returns to below the temp-target, CGWatcher will gradually increase its intensity back to the original setting unless the temperature passes the temp-overheat again, in which case it lowers the intensity by one again. If the temperature passes the temp-cutoff, CGWatcher will disable the GPU. Once its temperatures return back to less than or equal to the temp-target, it will re-enable the GPU. For AMD GPUs that the miner is providing overheat protection for (if auto-gpu is enabled), CGWatcher takes a hands-off approach other than when the miner disables them for exceeding temp-cutoff. Although the miner tries to re-enable them once they return to target temperatures, this does not seem to happen successfully so CGWatcher will restart the GPU once it has returned to temp-target or below. (This feature - CGWatcher restarting GPUs that cgminer had disabled once they cool down - no longer requires Overheat Protection to be enabled. This is now done regardless of this setting.) So CGWatcher classifies overheat protection into three types: Miner managed - The miner is capable of getting the GPU's temperature and the auto-gpu option is enabled. This means the only time CGWatcher will act is if the miner disables the GPU for overheating, CGWatcher will make sure it gets restarted successfully once it has cooled down to the target range. CGWatcher managed - If the auto-gpu option is disabled, or if the miner is not capable of getting a GPU's temperature and CGWatcher is, it provides complete overheat protection for the GPU. This includes adjusting intensity and disabling GPUs that exceed temp-cutoff and re-enabling them once they return to the target range. No protection - If neither the miner or CGWatcher can get a valid temperature for the GPU, it has no overheat protection. This also applies to GPUs that do report a valid temperature if auto-gpu is disabled and CGWatcher's overheat protection is disabled. CGWatcher's overheat protection is enabled by default, but you can disable it in the Monitor tab. Keep in mind that temp-target, temp-overheat, and temp-cutoff all have default values of 75, 85, and 95 respectively. This means that even if you don't explicitly set these options, they are still set to their default values. Also, CGWatcher only provides overheat protection for GPUs that report a temperature between 1 and 150. Anything outside this range is considered invalid and unreliable. (Yes, I realize 150 is high but I wanted to cap it conservatively. Usually invalid temperatures are way off, e.g. 500c or -500c.) CGWatcher will only check GPUs that have an "ALIVE" status, as any other status means the GPU is not mining. Q: Why does my intensity end up switching back and forth between two values after being lowered by overheat protection? A: These two values are right on the edge of the temp-overheat temperature. The lower value drops temperatures below temp-overheat, the higher value makes temperatures rise above temp-overheat. So often you end up with the intensity going back and forth between these two. This isn't necessarily a bad thing, and may be preferable to a more constant intensity. If 10 drops temps below temp-overheat, and 11 brings temps above temp-overheat, you'll eventually average an 10.5 intensity. If it were to try to stick with one, you may end up at 10. So by changing back and forth often, you're squeezing a little extra hashrate out of the GPU while the temps permit, then dropping it down a notch when they don't. "Failure Handling" "Failure Handling" These settings allow you to choose how you want CGWatcher to handle occasions where the miner doesn't start correctly. This limit does not apply when you start the miner by clicking on the "Start" or "Start Mining" button. Because you've clicked on the button, CGWatcher knows you're there and able to diagnose and fix whatever problem is causing the miner to not start, so it only tries to start the miner once in these circumstances. "Kill miner and try again if mining hasn't started within " - sets a timeout in which the miner must start by or else CGWatcher kills that miner and tries again. The default value is 60 seconds, meaning CGWatcher will wait up to 60 seconds for the miner to start. If it does not start and initialize its API within 60 seconds, CGWatcher will kill the process and try again by re-launching the miner. If you're using a batch file, CGWatcher may wait up to an additional 30 seconds as it allows extra time for the batch file to launch the miner executable. "Maximum attempts to start miner before taking action" is how many times in a row CGWatcher will try starting the miner. Why would it do this? Because occasionally there are hiccups that cause the miner to not start correctly, while waiting a few seconds and trying again can result in a successful start. This option allows you to control how aggressive CGWatcher is at making sure the miner starts. "Action to take if failed start attempts reach limit" tells CGWatcher what to do if the limit set above has been reached, meaning CGWatcher tried to start the miner that many times in a row, and each time it failed. Actions: - Give up - stops trying to start the miner until either you interact with it, the monitor steps in, a scheduled action occurs, or a request to start the miner is received from CGRemote. - Keep trying - will try to start the miner up to 99 times. Once it reaches 99 it will give up. - Switch to last working profile - activates the last known working profile (in which the miner started properly) and then tries to start the miner using that profile. - Restart computer - restarts the computer. - Send email - sends an email notification that the miner failed to start to the email address specified in Settings->Email tab. "Maximum attempts to perform a scheduled action" is how many times each scheduled action should be attempted if it fails the first time. This gets more complicated when you consider that some scheduled actions may perform several steps, some of which may fail and some may succeed. For example, switching profiles 1) activates the profile, and 2) may restart or start the miner (depending on settings and conditions). It may activate the profile alright, but then fail to restart the miner. In these cases, if the scheduled action has a stop time set, it usually categorizes it as a success so that the stop time will still be honored. If it deemed the entire action a failure, the stop time would not be triggered. This is also the case where the action is set to change something to a value it already is. For example, if an action is created to change intensity to 13 on idle, even if the GPU's intensity is already 13 it will show as successful rather than showing that it failed because the intensity is already at 13. The scheduler has turned out to be one of the more complex features of CGWatcher. It improves with each update, but there may be things that need to be changed or corrected. If you find it is not working as expected, please let me know. I try to take into account that different users may expect different things, and when these differences are far enough apart I try to create a setting the user can change. It is an important feature that many users rely on so letting me know about problems with the way you're using it is the only way these things can be worked out. "Restart computer if unable to kill previous failed miner processes" When CGWatcher is unable to close or kill a miner process, this often indicates a more serious problem is imminent. In these cases, even Windows Task Manager is unable to end the process(es). Although CGWatcher could ignore the unresponding process and launch a new one, this can have unexpected results on mining performance and eventually this often leads to a BSOD (crash) a short time later. The only way to resolve this problem is to restart the computer. If you don't enable this option and CGWatcher is unable to close or kill the previous miner process, it will attempt to ignore it and start a new process. Any time CGWatcher restarts the computer, it makes sure it is set to run at startup and set to launch the miner at startup to ensure continuous mining. If these options are not enabled, it will enable them temporarily to ensure mining resumes after restart. It will then restore these settings the next time it is started. "Continuous Mining" "Ensure mining resumes after CGWatcher restarts the computer" - if CGWatcher performs a computer restart due to a monitor-triggered event or scheduled action, and you have not enabled the "Run when Windows starts" and "Run miner when started" options in the Settings tab, mining will not resume automatically after the computer is restarted. To prevent this from occurring, you can enable this option which will temporarily enable both of these settings until the computer restart is complete. Once CGWatcher is launched again after the restart, it will revert these settings back to their original values. DEVICES This tab shows mining device information, and is broken down into more tabs - one for each type of device. Currently it only supports GPUs. If you would like to help in adding support for other types of devices, please run the Device Test on that device's tab and email me the results. At the top of the GPU tab is the number of GPUs found and a drop-down box for selecting a GPU. Once you select one, you can see information specific to that GPU (hashrate, clock, temperature, etc.) Some of these text boxes are read-only (gray text) and some are editable (black text) if the miner is running, meaning you can change values and click 'Apply Changes' to change those settings on the GPU even while mining. This makes it easier to test and adjust different settings without having to edit the config file and restart the miner, or use the miner's command-driven interface. Towards the bottom is a large text box containing more information for the selected GPU. Underneath is the selected GPU's status (ACTIVE, DISABLED, etc.) and buttons to enable/disable or restart the GPU. (Note that enable/disable and restart are just in terms of mining and will not affect other programs.) If you have a low monitor interval you may not have time to change settings in between refreshes. If you are just changing one setting, you may have enough time to change it and click Apply Changes because CGWatcher will not update a textbox that you are changing. If you find that you need more time, you can click the 'Freeze' button next to the GPU list to stop updates on all editable fields. This will allow you to edit the settings uninterrupted, click 'Apply Changes', then click the same 'Un-freeze' button to resume updates in these fields. Even while frozen, all other fields will continue to update as usual. Changing GPU settings to values outside of their operating ranges can cause system crashes and possibly damage components! Please make sure you know what you are doing before you change these. These settings can all be changed in the miner arguments and config file as well, but neither program is responsible should you push your hardware outside of its operating range and break something. GPU data will refresh every at the same rate as the monitor interval, regardless of whether or not the miner is running. The GPU tab also displays the overheat protection status for each GPU. See OVERHEAT PROTECTION section above for more information. FPGA and ASIC devices - I do not have these devices yet so I added support based on data sent by users. I think it is working fairly well, with the only complaint so far that ASICs are appearing as FPGAs. This is not a CGWatcher issue, it is being reported this way from the miner. In fact, BFGMiner seems to treat all devices as FPGAs and has no ASIC-specific data. To correct this, you can open a device detail (click the device's button in the list) and click the 'Edit this Device' link in the bottom, left corner. This will allow you to reassign the device to FPGA or ASIC and change the code and name of the device. This data remains as original behind the scenes to ensure proper communication with the miner. It is simply making the device "look" like it is being reported correctly from the miner. You can also create new codes and names for future devices that may not yet be correctly identified by the miner or CGWatcher. POOLS This tab is similar to the devices tab, except that it shows pool information. You can select a pool from the drop-down list at the top to see information specific to that pool. You can enable/disable a pool, change the pool's priority (which will adjust other pools' priorities accordingly), and switch to a specific pool (which will enable the pool (if it is disabled) and set its priority to 0). The large text box shows more information specific to the selected pool. If the miner is running, the pool information is retrieved both from the miner and from the miner's config file or arguments. If the miner is not running, pool information is retrieved from the active profile's config file or arguments. Clicking the 'Manage Pools' button will open the current mining profile's config file in Config File Editor. You can change any config settings, including adding, editing, or removing pools. Once changes to the config file are saved, the miner will need to be restarted to load the updated configuration. REPORT This tab's purpose is for all of the data I couldn't fit anywhere else. It shows information regarding CGWatcher and its monitor (if enabled), the current miner, and the active profile. At the bottom is debug information that may be helpful when troubleshooting problems or bugs. If you are having a problem with CGWatcher, submitting the text in this tab along with a description of what is happening should be enough to troubleshoot in most cases. Similar to the GPU tab, you can freeze the report by clicking the 'Freeze Report' button. This prevents any updates to the report data so you can read it without interruption. When you want to resume updates, click the same 'Un-freeze Report' button. REMOTE The Remote tab is for future configuration and use with CGRemote, which will allow you to monitor and control your miners remotely. In order to enable remote access by CGRemote, you have to enable the CGRemote server (Enable CGRemote Access checkbox). Most of the information displayed is just to assist you in setting up the miner in CGRemote. For example, showing your local and public IP address because one of these will be required when setting up the miner in CGRemote. When setting up the miner, you do not have to use the miner's computer name as the miner name. It is just provided as a suggestion. The two options you do need to set in the Remote tab are: - Port: the local port used when listing for CGRemote. You will need to enter this port when setting up the miner in CGRemote. Additionally, port-forwarding may be necessary if accessing the miner from outside of its local network. More information on doing this will be provided with CGRemote. - PassKey: the password you create and set in CGWatcher and CGRemote to authorize CGRemote to make changes to the miner. If the passkey's in the two programs do not match, CGRemote will be unable to connect to the miner. You set the PassKey by clicking the 'Remote Settings...' button. REMOTE SETTINGS - Default Miner Path: when creating a global profile in CGRemote that will be pushed out to all of your miners, it is unlikely that all miners will have the same folder and file structure. Therefore the master profile does not have a miner path set. Instead this profile will use the Default Miner as specified in this option. It is preloaded with the most used miner (according to the rig's profiles) or the first profile's miner if a most used cannot be determined. If the first profile uses a batch file, it will keep looking in an attempt to find a miner executable. Although batch/command files can be used here, it is recommended to point to the miner executable so arguments in the batch file do not interfere. Note: When using CGRemote, you can also edit each rig's profiles individually, which does allow you to set the miner path because you can navigate the rig's filesystem to select the miner. If you do this, this miner will be used instead of the default miner. - PassKey: cgminer and bfgminer allow you to secure remote access by specifying which IP addresses can access their API. Because I wanted CGRemote to work from anywhere without having to constantly add or change the allowed IP addresses every time you wanted to access your miner from a new IP address (for example, taking a laptop with CGRemote to a friend's house and therefore using their IP address), I chose to go with a password, or key, or passkey, to authenticate CGRemote. You create the passkey, and set it in CGWatcher and CGRemote. If a request is made to CGWatcher without the correct passkey, the request is denied. Note: Except for the initial communication between CGWatcher and CGRemote, all messages are compressed and encrypted using the passkey to provide additional security. If you are using CGRemote to access the miner directly (non-Windows miners, for example), you will have to set the allowed IP addresses as usual and the passkey would not be used. Data going directly from CGRemote to the miner is not compressed or encrypted. UPnP Port Mapping In order to access a miner over the Internet, most users will need to forward the necessary port(s) in their router to tell it which computer to pass incoming connections to. Most routers allow you to setup port-forwarding (sometimes called Virtual Servers) in their configuration pages (e.g. 192.168.1.1). For example, if I want to use CGRemote to connect to CGWatcher running on local IP 192.168.1.10 from over the Internet, I would set CGWatcher's Remote Port (e.g. 5121) and then set CGRemote to connect to the router's public IP address and the same port (5121). The problem is that routers often include firewalls to block unsolicited connections from over the Internet, which is what CGRemote will be sending. So by forwarding port 5121 to 192.168.1.10 in our router, we're telling it that when a connection comes in on port 5121, forward that connection to the computer at 192.168.1.10 instead of blocking it. UPnP port maps are essentially the same thing as forwarded ports, only they can be setup by applications automatically instead of the user needing to do it manually in their router configuration pages. With CGWatcher, you can click the 'Map Port (UPnP)' button to have CGWatcher attempt to automatically forward the specified port in your router. If you want to see all of the UPnP port maps on your router created by all applications, click the 'Show Maps' button. If you want to clear all CGWatcher port maps on your router, click the 'Clear Maps' button. If CGWatcher fails to create a UPnP port map, you will need to forward the port manually in order to access that miner from over the Internet. You can find more information on port forwarding at http://portforward.com. SCHEDULE (The monitor has to be enabled for any scheduling option to work.) "Scheduled Actions" - starting with version 1.2, you can create scheduled actions that are triggered at a specific time and day, or every so many hours. These actions are displayed in the Settings tab, and each has an 'Enabled' checkbox and Edit and Delete button to modify or remove them. Each type of action is displayed in a different colored font. For each action listed, you can check or un-check the checkbox to enable/disable it. Clicking Delete will obviously remove it, and clicking Edit will open the Scheduled Action window to change its settings. Scheduled Action window: You can think of the Scheduled Action window as building a sentence describing what you want CGWatcher to do. Changing one option may filter other options available or change them completely. The actions are: - Start mining: starts the miner when triggered if it is not already running. - Stop mining: stops the miner when triggered if the miner is running. - Restart mining: restarts the miner if it is running. If it is not running, the action is ignored. - Change intensity: changes intensity the specified GPU to the specified value. - Change all intensities: changes intensity of all enabled and alive GPUs to the specified value. - Enable device: enables the specified device. - Disable device: disables the specified device. - Restart device: restarts the specified GPU. - Switch profile: switches (activates) the specified profile. If the miner is running and using a different profile, the miner is restarted using the new active profile. If the miner is not running, the active profile is switched but the miner is not started. To start it, you can create a 'Start mining' action after. - Restart computer: restarts the computer when triggered. To ensure mining resumes after restart, ensure CGWatcher is set to start with Windows and to launch the miner when started. Also keep in mind that a Windows login screen will require user input before mining resumes. - Run program: runs the specified program with (optional) specified arguments. An example where this may be useful is setting TeamViewer to run when TeamViewer closes (caused by TeamViewer crashing). This should help allow you to re-connect instead of waiting until you can get physical access to the miner. - Send API commands to miner: you can enter miner API commands directly (see miner's API-Readme) to be sent to the miner when the scheduled action is triggered. You can enter multiple commands, each separated by a space. All commands will be ran in the order you've entered them, regardless of the outcome (if one fails, the following commands are still sent). - Send e-mail. Enter an email address and you will receive an email when the scheduled action is triggered. This is designed more for use with scheduled actions triggered by events (see below), but can be set to run at any frequency. Depending on mail volume of all users, there may be a maximum limit per computer per day. This will initially start at 25 and may change depending on usage. If you reach the limit, the email will instead be displayed as a notification in CGWatcher and added to the log. * E-mail addresses used are not stored or shared. They are only stored on your computer in CGWatcher.exe.ini (where scheduled actions are recorded). "Persist through miner restarts if condition still exists" Some actions have a "persist through restarts" option that when checked will be reapplied if CGWatcher restarts the miner after it has already been triggered. This applies in the following cases: - Pause Mining button is clicked, then the miner is started again - miner is restarted by Monitor (sick/dead GPU, low hashrate, etc.) - miner is restarted by another scheduled action (restart, switch profiles, etc.) - miner is restarted by CGRemote These actions are not re-applied in the following cases: - Stop button is clicked - Restart button is clicked - the action reaches its stop time - the action is disabled - the action is deleted - the miner is restarted when user prompted after changing something (changing profile, save settings, etc.) "Event-triggered actions" These are actions triggered by an event rather than a time or time interval. The list of available events will continue to grow, and feel free to suggest events that you'd find helpful. To create an event-triggered scheduled action, instead of selecting a day or time in the drop-down list, select "{when event occurs...}". The 'Send Email' action may be ignored for events initiated by the user directly. For example, if you create a scheduled action to send you an email when the miner restarts... and then you click the 'Restart' button in CGWatcher, you will not get an email. In these cases it will only send an email if the restart was initiated by the scheduler or monitor. The intelligence of this feature will get better over time, so bear with me. You may initiate an event and get an email shortly after, but these situations will be corrected in the the next couple updates. "Stop times" Certain actions can also have stop times, including changing intensity, enabled/disabling devices, switching profiles, and running a program. When the stop time is reached, CGWatcher will return whatever was changed back to its previous condition. If its a device, it will go back to its previous intensity or enabled state. If the active profile was switched, CGWatcher will go back to the previous profile that was in use before the action was triggered. If a program was started, the program will be closed (only the instance that was started will be closed.) Switching profiles in scheduled actions is self-explanatory with the exception of the options enclosed in braces { }, which signify a conditional profile. By selecting these options, the profile that is switched to depends on the conditions at the time the action is triggered. For coin and profitability related options, it will use the data from http://coinchoose.com to determine which profile is currently the most profitable, highest reward, lowest network hashrate, etc. Any profiles that do not have coins assigned are ignored for coin-related options. If the current miner or active profile is the best for the specified condition, it tries to stick with the current profile rather than restarting the miner to use a different profile mining with the same conditional value. For each of these conditional profile options, you can select 1st, 2nd, 3rd, etc. up to the number of profiles you have assigned coins to. Choosing [2nd] [{most profitable}] will switch to your second most profitable profile. PROFILES THAT HAVE NOT BEEN ASSIGNED COINS WILL NOT BE CONSIDERED WHEN USING COIN-RELATED CONDITIONS! While profitability data is updated at regular intervals in the background, if a 'switch profile to most profitable' action is triggered and the data has not been updated in the past 15 minutes the monitor will attempt to update the data before running the action to ensure it correctly chooses the current most profitable. Each action has a set frequency at which to run. You can set it to run at a specific time on the selected days, set it to run every so many hours, set it to run on a specific date and time, set it to run when the computer is idle or not idle, or set it to run when a program starts or stops. When using the run every X hours option, each action keeps track of the last time it was ran and is ran again after X hours. So creating a Restart miner action to run every 8 hours means this action will occur every 8 hours, and has no dependency on other actions. The last time the action is ran is saved and remembered even if CGWatcher closes in between running. You can set multiple actions to run at the same time as well, and they will be ran one after the other. However, if they are set at the exact same time (including seconds) there is no way to know which will run first. If you want to ensure one runs before the other, make sure there is at least a one-second difference. For actions set to run at intervals (e.g. every 8 hours), modifying or enabling the action resets its timer. You can essentially create as many scheduled actions as you wish. They are listed in the order they will be ran. Moving your mouse over an action in the Schedule tab will display when it will next run in the tooltip. *Note - while monitor options have a startup grace period for the miner where they won't perform a restart if the miner had just started, because of the time-sensitive nature of scheduled actions they do not use this grace period and will act when they are set to, regardless of when the miner started. If this causes any unanticipated problems I can change this, or at least make an option to enable it. "Set intensity of all GPUs to if computer idle for minute(s)" - After the computer is idle for , any GPUs being used by the miner will have their intensities set to the specified value. This will not affect GPUs that meet one of the following conditions: - The GPU's intensity is already equal to or higher than value. This is because you would only be raising intensity when idle, not lowering it. - The GPU's intensity is currently lowered by overheat protection. - The GPU is currently disabled by overheat protection. - The GPU is disabled. - The GPU's status is not "ALIVE" - The GPU's current hashrate is 0 (meaning it is not hashing and my have been disabled by the miner) Once the computer is no longer idle, the GPU intensities will return to their original values unless they meet one of the conditions above. Keep in mind that being returned to their original values will not occur until the first monitor check after the computer is no longer idle. This means if you have your Monitor interval set to 30 seconds, it may take up to 30 seconds after you come back to the computer for the intensities to return to their original values. Note: The "Minutes before idle" value sets the default number of minutes of inactivity needed for CGWatcher to consider the computer idle. You may see log entries reporting that the computer "is idle" or "is no longer idle" even if you have the "Set intensity of all GPUs to X" option disabled. This is normal behavior and does not imply something is happening. It is just an indication of when CGWatcher considers the computer idle for troubleshooting purposes. "Donation Mining" - Support development for CGWatcher and related projects like CGRemote by donating a small portion of your mining time to the developer. This is completely optional, and disabled by default. The following will explain how this works in detail to help users feel confident that no changes are made to the miner without the user's consent. Unless you've disabled notifications, one is displayed any time the pool changes, regardless of why it changed. This information is also recorded to CGWatcher's log, and miner.log in the CGWatcher directory. If you have concerns, I encourage you to use the miner's log option to verify that CGWatcher's logs are accurate. Additionally, you can always see the current pool URL and username at the top of the miner's UI. Donation mining is available for both SHA256 and Scrypt, and will load a pool depending on what hash method you're currently using. There are also backup pools it may try if the first fails. This is all done quickly as the miner will not switch to a dead pool, so this will not affect mining time. By default, this option will be disabled so I ask that you at least consider it. If you don't want to do it on a schedule, you can use the Start/Stop button to manually control donation mining. When donation mining is active, the time started and duration are displayed on the Schedule tab. When it has completed, it will display the next date and time that donation mining will occur. If you have scheduled donation mining enabled and you run donation mining manually by clicking the Start button, the next scheduled donation mining start time will be recalculated based on the manual start time, allowing you to easily set which time of the day you want it to run. Similarly, if you have donation mining set to run an hour and you start it manually using the Start button, it will still stop donation mining after an hour. Donation mining will not modify config files or arguments. When it occurs, it adds the donation pool (sha256 or scrypt, based on the current profile) to the miner via API and switches the miner to this pool. You will see a notification when this happens, and it will be recorded to the log and miner.log. When donation mining is stopped, it switches back to the previous pool and removes the donation pool via API. If the miner is restarted by CGWatcher's Monitor during donation mining, donation mining will resume after the restart but it will not reset the timer, meaning it will resume where it left off and not mine for longer than you've set it to. Donation mining will not occur during the first three minutes of CGWatcher starting, nor the first three minutes of the miner starting (unless a restart occurred during donation mining). This is to help prevent it from interfering if you are tweaking or testing the miner. Additionally, if starting donation mining should fail, it waits one hour before trying again. If stopping donation mining fails, it waits five minutes before trying again. There are several ways it tries to stop donation mining, including switching pools, disabling the donation pool, and ultimately removing it. The only reason it should ever fail to stop donation mining is if all other pools are dead, meaning it can't switch to any of them. My intentions are not to have it continue donation mining beyond when you've specified, and I put a lot of effort into making sure this does not happen. Keep in mind that mining strategies like round-robin set to switch pools before the donation mining time ends may also cause the donation mining to end prematurely. If you disable the donation mining option while it is running, it will stop after the set number of hours. If you want to stop it before that, you can use the Stop button in the Schedule tab or go to the Pools tab and switch to a different pool. The donation pool will be removed after stopping or switching pools. And of course, if you stop or restart the miner using the Start/Stop/Restart/Pause buttons, donation mining will be stopped and will not resume upon restart until the next scheduled date. I did a lot of testing with donation mining to ensure it does not make any changes without your consent. If you experience a problem, please disable donation mining in the Schedule tab and report the issue. SETTINGS This tab is for CGWatcher settings. It is divided up into sub-tabs to fit more options into a smaller space. *Remember to click 'Save Settings' to save any changes to the fields on this tab, including switching profiles. You can see the current active profile displayed in the middle of the tab. Selecting a different profile in the drop-down list will display its settings, but not make it the active profile until you click the 'Save Settings' button. If you change a setting without saving and want to go back to the last saved settings, click the 'Cancel' button. The settings include: [Miner Control] 'Start', 'Stop', 'Restart' buttons - Start, stop, and restart the miner. Note that if you are using the scheduled mining option in the Monitor tab, using these buttons during a scheduled mining time will cancel the 'Stop mining after ' option if you've enabled it. If you would like to stay on the scheduled mining, use the Pause Mining/Start Mining button on the Status tab. [Profiles tab] Here you can set the active profile you want to use. If the miner is running while you change profiles, you will need to restart it for it to use the new profile. The profile's settings are displayed below, but are read-only. If you want to change profile settings, click the 'Manage Profiles...' button. Next to the Miner and Config File paths, you will see buttons that either open the corresponding file's directory, open the config file in Config File Editor, or open the file in Notepad. - "Profitablity" button opens the Coin Profitability window. [Display tab] - "Miner window mode" - For those who don't like seeing the miner, you can select to have it ran hidden or minimized. Minimized will still show its icon in the taskbar, which you can click on to restore the miner's window. Hidden will cause the miner to not appear on the screen or in the taskbar. The only way you can tell it is working is by checking CGWatcher. You will need to use the buttons in CGWatcher to start/stop/restart the miner. Alternatively, you could kill the cgminer.exe or bfgminer.exe process in Task Manager. - "Display share count totals as" - Depending on your pool and hashrate, the difficulty of the shares you mine may vary. As an example, if you have a high hashrate the pool may provide you with a diff4 share, which is equivalent to 4 diff1 shares. This is because faster mining devices (specifically ASICs) can mine diff1 shares so quickly that they would request work so often it would overload the pool server. Instead, the pool may send a diff4 (or diff) which gives the device more work to do before requesting new work, reducing the load on the pool server and network usage. By default, CGWatcher displays share counts regardless of their difficulty, so a diff4 share is counted as 1 just as a diff1 share is. Hardware errors are equivalent to diff1 shares, so if you are mining higher difficulty shares your hardware errors may be disproportional to your accepted, rejected, and stale counts. You can change CGWatcher to instead show share counts in their diff1 equivalents, which will then give you a more proportional hardware errors number because all counts will be based on diff1 shares. These numbers may not be perfectly accurate all of the time, as stated in the cgminer readme. But if you would prefer to see how many diff1 shares you've mined instead of how many 'shares' you've mined, you can set this option to 'Diff1'. Regardless of which option you use, the percentages next to each share count and hardware errors should be correct and take into consideration that hardware errors are equivalent to diff1 shares. - "Hide Notifications" - When checked, you will not be shown notifications when CGWatcher's monitor does something regarding the miner. - "Text Size" - allows you to increase or decrease the size of all text in CGWatcher. This is designed to help correct oversized text on systems where the Windows text size is set to 125% or 150%. [Data tab] In this tab you can set CGWatcher to output the selected values to a file at a regular interval. The values are delimited using the character you specify (default is pipe "|"). Do not set the delimiter to a comma if your culture settings use a comma as the decimal separator. You can set the interval at which to output this data in increments of the Monitor interval. For example, if you have the Monitor interval set to 10 seconds, you can set the data output interval to 10-second increments, with the minimum being 10 seconds. You can then use the output data to create reports or charts in other software like Microsoft Excel by using the "Text-to-columns" wizard to split the data into columns based on the delimiter. [Miner tab] - "Kill miner process during restart instead of sending 'quit' command" - Typically when CGWatcher stops the miner (including during restarts), it does so by sending the 'quit' command. This causes the miner to reset settings that it had modified like GPU clocks, fan, and voltage. This is different from closing the miner by clicking the "X" in the upper-right corner of its window, which kills the process before it has a chance to shutdown. During restarts, you typically don't want the miner to perform the shutdown process because it will be setting those values again when the new process is started, so killing the process instead of shutting it down improves stability by not causing everything to be returned to original values just to have them all modified again a moment later. For GPU mining, it is recommended to leave this option enabled. - "Always kill miner process instead of sending 'quit' command" - If enabled, CGWatcher will never use the 'quit' command to stop the miner. Instead, it will kill the process, meaning any modifications the miner had made to things like GPU clock, fan, or voltage never get returned to their original values. - "Attempt to switch profile without restarting miner when possible" - For increased stability by reducing the number of miner restarts, this option causes CGWatcher to attempt to switch profiles without restarting the miner. There are several things to consider when attempting this: - The profile being switched to must have a coin assigned to it. This allows CGWatcher to verify that the algorithm of the new profile matches the algorithm of the current miner process. You cannot switch algorithms without restarting the miner. - Not all settings may be set via API, meaning if the new profile has different config settings than the current profile, not all changes may be made. CGWatcher will attempt to set any GPU-related settings that it can via API, as well as a few config settings (expiry, queue, scantime). If any of these API changes fail, a warning will be displayed and details of the failure will be logged. If the config settings of the current profile and new profile are similar or only vary by GPU settings, this should work without any problems. - If any problems occur while trying to switch profiles without restarting the miner, CGWatcher will fall back to its normal way of switching profiles and restart the miner using the new profile. - "Use default valuye of 2 for gpu-threads (-g) config setting" - CGMiner documentation stated that the default value for gpu-threads was 2, when in reality it would use 1 if no value was specified. To remain consistent with the documentation and users' expectations, CGWatcher would set 2 as the value if no value was specified, therefore making 2 the default value. Newer CGMiner forks state their default is 1, so you can un-check this option to stop CGWatcher from setting the default to 2. Alternatively, you can explicitly set the gpu-threads value to 1 and CGWatcher will not change it to 2. - "Start miner in troubleshooting mode" - When enabled, CGWatcher will launch the miner using a batch file and the -T argument to make troubleshooting problems and reading errors in the miner window easier. It will also ignore the miner window mode setting to ensure the miner window is visible. [API tab] - "Miner API Address" - This is the miner's API IP address CGWatcher will use when communicating with the miner. The default value is 127.0.0.1, which idenfities the same computer CGWatcher is running on. This value should not be changed because CGWatcher was designed to run on the same computer as the miner process, and monitors the process as well as the data coming back from the miner's API. To monitor miners on another computer(s), see CGRemote at http://www.minerremote.com. - "Miner API Port" - This is the miner's API port CGWatcher will use when communicating with the miner. The default value is 4028. - "Use only this API port - override config settings (multiple instances)" - If an api-port is specified in the miner's config file or arguments, this option will override it using the port you've set above when starting the miner. If this is enabled, CGWatcher will also try to ignore any miners not using this port, which is designed to help manage multiple instances of CGWatcher used to monitor multiple miners at the same time. (Note: Currently running multiple instances of CGWatcher should be done from different folders to avoid one instance overwriting INI settings of another. This will be fixed in the future.) [Storage tab] Allows you to specify file locations for different files CGWatcher creates and uses. [CGWatcher tab] - "Start CGWatcher when Windows starts" adds a startup entry for CGWatcher. This means it will launch automatically when Windows starts. This is useful in the case of system restarts to ensure mining resumes automatically (after a system crash, for example). However, if your computer requires you to login to Windows, you would obviously have to login first before mining could be resumed after a system crash and automatic restart. - "Start CGWatcher minimized" starts CGWatcher minimized. If the "Minimize to system tray" option is also enabled, CGWatcher will start minimized to the system tray. - "Minimize CGWatcher to the system tray" - minimizes CGWatcher to the system tray. This means it will not appear in the taskbar. Instead, its icon will be in the system tray above (or near) the clock. Double-click the CGWatcher icon to restore its window. - "Launch miner automatically when CGWatcher starts, after [Windows login?] -> Launch CGWatcher automatically -> Launch CGMiner automatically = mining resumed - "Don't prompt on exit" - By default, CGWatcher will ask you if you're sure you want to exit if: the miner is running, monitoring is enabled, and the reason for exit is the user is closing the window. Enable this option to prevent any prompts upon exiting. - "Force close other programs when restarting the computer" - When CGWatcher restarts the computer and this setting is enabled, it will tell Windows to force-close any other programs to ensure the restart is performed. Using this option prevents the restart from being halted due to a "Save Changes?" prompt from another program. Keep in mind that if you have unsaved work open in other programs, using this option may cause that unsaved work to be lost because Windows will close programs without saving changes first. [Email tab] - "Email address" - This allows you to specify a default email address for CGWatcher to use when sending email notifications. For example, the failure handling option to send an email when the miner fails to start would use this address. When creating scheduled actions, you can use this address or enter a different email address for each individual action. *Note: The email address is ONLY stored locally (in CGWatcher.exe.ini) unless you check the box to join the mailing list. We do not record any email addresses for any users unless they choose to join our mailing list. - "Subscribe this email address to the CoinMyne mailing list" - Upon saving settings, if this option is checked CGWatcher will add the email address entered to our mailing list. We believe a mailing list is the best way to keep our users updated on our products and projects, so this provides an easy way to join it. [Updates tab] - "Automatically check for updates at startup and then once per day" - When checked, CGWatcher will check for an update when it starts, and then check for an update every 24 hours. If an update is found, it will display a notice for 30 seconds or until you click on it, and a link to the download page will be displayed in the About tab. This option and the resulting notice if a new version is found will not affect monitoring. - "Automatically update CGWatcher when new version is available" - When a new version is found during an update check, CGWatcher will launch its update utility (update.exe) which will download the necessary update files. It will then close CGWatcher, replace the old files with the new files, and then re-launch CGWatcher. It only closes CGWatcher if it has successfully downloaded the update files, and will relaunch even if a problem occurs in replacing files in an attempt to keep CGWatcher running even if not all files were updated successfully. - "Include beta builds when checking for and auto-updating CGWatcher" - Often minor updates do not trigger the update notification or auto-update inside CGWatcher. This is because these are minor fixes or changes that may not affect most users. If you wish to be notified or auto-update to the latest version, regardless of how small the changes, you should enable this option. - The 'Check for Update' button will check for program updates and if available, will provide a download link. If you have the 'Auto-update' option enabled in the Settings tab, this button will also initiate the auto-update process if a new version is available. - 'Other Tools...' button opens a popup menu containing other tools or features, including: - 'Config File Editor' opens a blank/default config file in Config File Editor. You will also see smaller Config File Editor buttons next to textboxes that contain config file paths, allowing you to quickly open those files in the editor. - 'Coin Profitability' displays profitability and other data on the various crypto-coins. - 'GPU Map' opens the GPU map form. I'll try to explain why you would need to use this: The miner has its own gpu-map option because it has to match up GPU information from OpenCL (which is used for mining) and ADL (used to get and set GPU settings like clock, temp, voltage, etc.) These libraries do not provide information to accurately map GPUs to each other 100% of the time, so the miner provides you with a way to manually map a GPU's hashrate (OpenCL) to its name, clock speed, temperature, etc (ADL). CGWatcher also gathers GPU data using OpenCL, ADL (AMD), and NVAPI (Nvidia). This means that the problem is reintroduced when it comes to CGWatcher displaying the correct mining data for the GPUs it has detected. It attempts to map accurately using the miner's gpu-reorder and gpu-map options, but it may not always do this accurately. Once you manually map CGWatcher's GPUs to the miner's GPUs, the mappings will be saved and used whenever you start CGWatcher. See more information on the GPU map window below. - 'Profile Manager' opens the Profile Manager window. - 'Manage Variables' Allows for custom variables to be placed in config files, arguments, or batch files. CGWatcher will then convert these variables to their values before starting or restarting the miner. Variable names can be anything and are not case-sensitive. There are a few built-in variables: %COMPUTER% - Your computer name %USER% - Your Windows username %HOST% - Your computer hostname You can also specify as many custom variables as you'd like. When creating variables, do not include the percent symbols (%) as they will be included automatically. Enter variables one per line in this format: name=value As an example, you could create variables for worker names: worker1=MyPoolWorkerName.1 worker2=MyOtherPoolWorkerName.1 Anywhere you place %worker1% inside of a config file, arguments, or batch files, CGWatcher will replace %worker1% with MyPoolWorkerName.1 before starting or restarting the miner using the config file, arguments, or batch file. Variables are particularly useful for creating an online config file and specifying its URL for a profile in multiple CGWatchers running on multiple computers. You can use variables inside of this config file, then set the variable values on each computer. This allows you to customize each config file with values specific to its hardware or configuration. 'Coin Manager' allows you to add, edit, and delete coins and exchanges shown in the Coin Profitability window. To add a coin, scroll to the bottom of the list and enter the new coin's information on the last (blank) row. When you are finished, click Save to apply your changes, or Close to exit Coin Manager without saving changes. More information on Coin Manager is below. LOG This displays the CGWatcher log for the current session (since CGWatcher was started). - 'Clear Log Text' - clears only the textbox without deleting any log entries. - 'Clear Entire Log' - completely deletes all data from the log file. - 'Open in Notepad' - if you need to view older log events, this button opens the cgwatcher.log file located in the same directory as CGWatcher. This will display the entire log history, either from the last time you cleared it or the first time you ran CGWatcher. - 'Show Debug Log Entries' - the log typically keeps you updated on what CGWatcher is doing or has done. There are also debug log entries that provide error and troubleshooting information. Checking this box shows those entries as well. TESTS This tab allows you to send commands to CGMiner and see what kind of reply messages it sends back. This can be useful for requesting information that I haven't yet implemented into the program. The reply messages are comma-delimited, but checking the "Convert comma-separated results into line-separated results" will do what it says, making the results easier to read. Un-checking it reverts back to the comma-delimited message. The 'Create Debug Report' collects a lot of information helpful in troubleshooting problems. If you are reporting a bug, please provide the information from this report and send via email to Milone99k@gmail.com. In the 'Utilities' you'll find a drop-down list of various reports and utilities. Currently the drop-down list of actions to perform are: - Show GPUs reported by ADL/NVAPI - Reports GPU data provided by ADL (AMD) and NVAPI (Nvidia) - Show GPUs reported by OpenCL - Reports GPU data provided by OpenCL - Show FPGAs reported by miner - Displays FPGA devices provided by miner - Show ASICs reported by miner - Displays ASIC devices provided by miner - Show last miner start configuration - Shows the exact configuration (arguments and config file settings) used the last time CGWatcher started the miner - Show checked miner processes - Displays miner processes checked by CGWatcher (for multiple instances troubleshooting) - Show installed .NET framework updates - Reports all installed .NET framework updates - Remove all CGWatcher Windows startup entries - Clears all CGWatcher autorun (Windows startup) entries - Reset window size and position - Restores default values for the main window size and location If you wish to send multiple commands in one click, enter the commands in the Diagnostic text box (separate them by commas). Then click Run. The reply messages for all of the commands will be displayed in the large Result message text box. ABOUT Displays information about CGWatcher. The link will direct you to the official CGWatcher page. The 'Check for Update' button has been moved to the Settings tab (in the Update sub-tab). SOURCE The project will likely be open-sourced on GitHub in the future, but there is no definitive schedule for this. It is an unobfuscated .NET application, so it is relatively easy for developers to see its code since it is compiled to MSIL. UPDATES You can set CGWatcher to check for and auto-update CGWatcher when a major update occurs (Settings tab -> Updates sub-tab.) You can also perform this check manually from inside the program in the About tab. When these updates occur, the first three numbers in the version number may change (e.g. 1.3.4). Minor revisions to CGWatcher (the fourth number in the version number, e.g. 1.3.4.1) may be released without triggering an update notice from CGWatcher. This is because the changes are not critical enough to require everyone to update. You can always find the latest version - including the latest revision - by visiting http://www.cgwatcher.com. CONFIG FILE EDITOR The Config File Editor attempts to make editing your miner's configuration easier. To start, it displays the config file in a grid allowing you to see all available settings and a description of each. Settings that can only be enabled or disabled will have a true or false option. Settings that allow numbers only (not including lists of numbers) will only allow numbers. The 'Validate' button attempts to check your settings for errors that may prevent the miner from starting or working correctly. * The Config File Editor is in beta and is not yet perfect. It has undergone quite a bit of testing but with so many possible configurations, it will take some user testing to get bugs worked out. * Settings set to default values are not written to the config file when saving. They are also not converted to arguments, because they are set to default values and don't need to be explicitly set as arguments. * To add, edit, or remove pools, locate Pools in the config file grid. (There may be a Pools category heading as well in Category view mode), but you want the Pools that says '(Collection)' in the cell next to it. Click on the word '(Collection)' and a small '...' button will appear in the cell. Click on this '...' button to open the pool window. When editing pools, you can create names for them as well so they are more easily identifiable when editing them later on. Pool names are saved inside the config file, but will not cause a problem with the miner. To change pool priorities, use the up and down arrows in the pools window to move pools up and down the list. The top of the list is the first priority, the bottom of the list is last priority. Because new config options may be added to cgminer or bfgminer at any time, the Config File Editor handles options that it does not yet fully support by placing them in a "Misc Options" collection. This allows it to provide basic support for these options, although it does no validation against the values. 'Name #' - You can name your config files so when you're using them in profiles they will be easier to access. Enter a name for the config file in the Name textbox. Then when managing your profiles, you can select a Named config file from the Config File textbox drop-down instead of needing to browse your computer for it. After clicking out of the Config File textbox, it will be converted to the config file path automatically. 'Validate before saving' - By default, the Config File Editor will try to validate most option values before saving to make sure they are valid and in the correct format. In rare cases depending on the operating system's culture settings, the Config File Editor could tell you a value is invalid when it may be. In these cases, you can disable validation by un-checking this box if you are sure the values you've entered are correct. 'Ensure API is enabled upon saving' - If enabled, the API access needed by CGWatcher will always be enabled when saving the config file, regardless if these settings were enabled in the grid. It will not affect other groups/IP address in the api-allow setting, it only makes sure api-listen is enabled and that 127.0.0.1 is included in the W: group of api-allow. The Config File Editor Menu - File -> New : Create a new config file. - File -> Open : Open an existing config file. - File -> Save (As) : Save the current config file. - File -> Close : Close the Config File Editor. - Tools -> Import Settings -> From Config File... : select an existing config file to import settings from. The current settings will be overwritten, but will not be permanent until you save the config file. -Tools -> Import Settings -> From Named Config File ->