AutoIt OpenCL Bitcoin Foreman
Disclaimer: I'm not responsible for turning possessions (yours or otherwise) into paperweights/doorstops!
Read everything before asking for help!
Need feedback on:
- If the link between OpenCL GPU list and OS Index is correct (if setting an OpenCL Device automatically selects the corresponding GPU correctly) (beta version only).
- If ADL detects the same number of GPUs as OpenCL (if the OpenCL Device list has same number of GPUs as number of tabs for controlling GPU clocks).
- If it detects multiple GPUs correctly, in particular the 5970 and the 6990 (should be one tab for each core, or two tabs for each 5970/6990).
Supports Phoenix 1.50 and classic POCLBM 20110709 (and modded ones that use the exact same launch parameters and output).Instructions:
Download it, extract it, place the contents in your POCLBM/Phoenix folder (where poclbm.exe/phoenix.exe is located). Run it to configure.
Client fields:
User ID: your user ID for your worker at a particular mining server.
Password: the password for your worker. Blank passwords are not allowed.
Server: the server you are mining at, e.g. btcguild.com and us.mining.eligius.st (yes, I'm advertising them!).
Port: the port to connect to the server at, 83xx from what I've seen.
Backup: enables miner running on a back up pool if the main pool is down.
Startup: starts miner on program start.
Device Name: the nick name for your device to mine on.
Vectors: uses vectors option. Can possibly increase mining speed if enabled.
HD5xxx+: checked means use BFI_INT, uncheck if your hardware doesn't support it (commonly, HD5k and HD6k series are supported, only present in Phoenix).
Fastloop: the fast loop argument. Can possibly increase mining speed if enabled (only present in Phoenix).
phatk: uses the phatk kernel, optimization for HD58xx series only I think? You MUST have phatk already inside the kernels folder (only present in Phoenix).
Aggression: how resource-intensive the mining is, 0 for least usage, 12+ for most usage (will probably make the computer unusable if you are using it for monitor display, only present in Phoenix).
OpenCL Device: also called Device Number (pre-1.7). "OpenCL Device" is not a valid device number. Click "Manual" to type in the Device Number manually.
Extra Flags: any other flags not mentioned can be added here, such as -q 2. "Extra Flags" is not a valid flag.
Temperature control: checked means monitors temperature range as well as temperature display on OSD (unchecked means it will show a ?). AMD/ATI only. Read bottom instructions on how to find GPU number.
Affinity: sets all of the workers to use one specific core (or all available cores).
GPU buttons:
Refresh: refreshes GPU clock/fan speeds.
Clock Speed: sets GPU clock speed and voltage to current values on the GUI.
Fan Speed: sets fan speed to current values on the GUI. If there is another application controlling fan speed (Afterburner), it may interfere with this.
Default: resets clock speed and voltage to default settings (on BIOS).
Core: minimum and maximum depends on BIOS limits, 1 MHz increment (type it in or click-drag/click-left-right-arrow slider). Maximum set to BIOS limit plus 200 MHz. If unable to set it higher, probably means you've hit BIOS limit.
Memory: minimum and maximum depends on BIOS limits, 1 MHz increment (type it in or click-drag/click-left-right-arrow slider). Maximum set to BIOS limit plus 200 MHz. If unable to set it higher, probably means you've hit BIOS limit.
Voltage: minimum and maximum depends on BIOS limits, 1 mV increment (type it in or click-drag/click-left-right-arrow slider). Maximum set to BIOS limit plus 200 mV. If unable to set it higher, probably means you've hit BIOS limit.
Fan: minimum 0%, maximum 100%, 1% increment (type it in or click-drag/click-left-right-arrow slider).
Main buttons:
Run: starts mining.
Stop: stops the mining and resets the share count.
Add Client: adds another row of configuration to the GUI.
Remove Client: removes a selected row of configuration from the GUI.
Save Settings: saves the current settings to an INI file. The read-onlyness is also saved.
Read Only: enables/disables all of the fields, in case of accidental click and typing (annoying if you have a generated password).
Click Through: toggles if click+drag works on the On Screen Display or not. If so, click+drag to move it around. If not, clicks will automatically translate to the next window below. When toggled on, it will also prevent the OSD from ever moving until untoggled.
A couple things to note:
- Displays current statistics through On Screen Displays (OSD), namely the hash rate, accepted shares, and rejected shares (1.6 includes GPU temperature if "Pause mining when..." is checked).
- Minimizes to tray, double-clicking on the tray icon shows/hides it.
- Exit via "x" button, or right click on the tray icon.
- If it crashes for any reason before all of the clients are stopped, you MUST manually end-task all poclbm.exe/phoenix.exe.
- Auto restarts clients after a set amount of idle time. Idle starts counting when there are no update to the text output of POCLBM/Phoenix, or when the hash rate is 0. For multiple GPUs, only works with dummy plugs. Remember, don't set it too low! The time it takes to connect to server and start mining counts towards the idle time!
- Sets affinity of all clients to one selected core, or all cores.
- Can mine on an alternate pool if current pool is down.
- When running on backup pool, it checks if primary pool is online every set seconds/minutes/hours, AND when restarting the backup pool (if it failed to connect for any reason).
- Reads graphic card temperature through a DLL file that should be provided with every AMD driver install (sorry nVidia people), and has option to pause mining if temperature exceeds a certain number, and start again once it drops below a certain number. You must follow separate instructions to find the GPU number!
- Separate tabs to control GPU clocks/voltages/fan speeds.
- If you are getting blank fields for any of the drop-down boxes, delete the INI file and redo it! Or just open it, and delete the lines where it's blank after the equals sign. Some GUI modifications broke the INI saving/reading process a little.
Here's a sample of the OSD in action:
http://oi56.tinypic.com/rrkv0p.jpg. Bottom right. The GPU statistics is a different script.
That should sum it up pretty well.
The important parts:
Source attached, in case you don't trust the precompiled version (32-bit only now, 64-bit compatibility broken with 1.4, but can still be run in 64-bit environment, just not compiled).
Yes, it's completely autoit (except for the POCLBM/Phoenix part, obviously).
Current version 1.75: http://www.mediafire.com/?s0b0mo0mbrlyg67.Previous versions
IF you really feel the need to donate, too bad!Oh, and inb4omgitsavirus!
History:
1.75 Updated with newest classic POCLBM syntax and parsing of newest output. The only clients supported are the ones that use same command line syntax and produces same output as the classic version. Fixed some of the options not loading correctly when adding a new client.
1.74 Updated to parse newest classic POCLBM output. Added an option to type in Device Number manually.
1.74b Made the OSD font non-bold.
1.74a Attempted a better solution at detecting adapter list. Hopefully this works for both people with on-board and dual GPUs.
1.73 Fixed an issue (possibly) with detecting non-existent/on-board GPUs. Let me know if it's still broken. Added some logging.
1.72 Apply-OC-on-startup should work correctly now. Switched from using device ID to OS index, since apparently device ID changes every time restarts happen
.
1.71 Really added POCLBM parsing this time (1.7c only parsed the Luke-Jr's version that has more output).
1.7 Can now save and apply clocks on startup.
1.7c Added POCLBM parsing. Just place it in folder. If both poclbm.exe and phoenix.exe are in the same folder, it will run POCLBM. Otherwise it will look to see which EXE file is present, and use that.
1.7b Fixed a couple bugs with the GUI. Changed to different method of detecting parent/child processes.
1.7a Added detection of clock/fan-setting errors. Auto-detects OpenCL GPU devices and places them in drop-down menus for Phoenix Device Numbers. Detects Adapter Indices and places them in drop-down menus, for temperature monitoring. Experimentally linked the OpenCL GPU list to the GPUs detected by ADL through OS Indices for each of the GPUs (provided by ADL). The number of OpenCL GPUs must be the same number of GPUs detected by ADL. Renamed Device Number field to OpenCL Device.
1.62 A few GUI changes such as number-only in certain fields, disabled typing in text in drop-downs, passwords in dots, etc. Set the GPU sliders to BIOS max clock plus 200 MHz (for core and memory) and BIOS max VDDC plus 0.2 V. VDDC display is now in mV, rather than V.
1.61 Reads hard limits on each GPU placed by the GPU BIOS.
1.6 Added GPU clock/voltage/fan controllers. OSDs now display temperature if "Pause mining when..." is checked and the GPU number is filled in. The GPU number used in monitoring temperatures is changed to use Adapter Index.
1.51 Fixed an issue with some checkboxes.
1.5 Switched to tabs due to numerous requests. Made Aggression and Worker Size use drop-down-and-select controls. Added a checkbox for VECTORS since apparently quite a few people can't figure out the reason for the drop in hash rate between 1.3 and 1.4. Now kills all orphan (the ones that aren't in the "currently running" list) Phoenix instances.
1.45 Closes all launched phoenix instances on exit. Fixed a potential "bug" with new switch-to-backup method, so that the time in "number of restarts in x time before switching" can only be set to the minimum of (max idle+5 seconds)*number of restarts. The 5 seconds is a grace period for miner to start up.
1.44 Switched from using ping to check if server is online or not to x restarts per y seconds/minutes/hours. Let me know how it works.
1.43 Fixed a few random bugs (don't remember which, but I fixed them!). Save Settings now saves the current position of the OSDs (I thought it did with 1.42 already
). Fixed the active window bug thing.
1.42 Fixed (not sure) a bug with spamming the Click Through button. Save Settings now saves the current position of the OSDs.
1.41 Fixed a bug that wasn't letting phoenix running (what's the point of adding a feature if it doesn't get implemented?).
1.4 Added an option to pick a random core to run on. Temperature control, as in setting it to stop when exceeding a certain temperature, and running again when below a certain temperature. Kills phoenix process directly instead of ctrl+break the CMD window (let me know if there are any side effects to killing the process, or if the hang bug still occurs). Broke 64-bit compatibility when I added DLL usage and process killing function, so only 32-bit binary from now on.
1.31 Added startup option. Fixed a bug that wasn't loading OSD font color from INI file correctly. Fixed a potential issue with two kernel-loading arguments. Removed VECTORS argument from the must-load arguments list. Add it to Extra Flags if you want to use it.
1.3 Adding ability to set a backup server in case current goes down (still need ideas on how to detect if a server is down). Replaced "worker size" field with "extra flags." Added field to choose a preset OSD color. Fixed an issue with fastloop, should work correctly now (when disabled).
1.3c Attempted fix of buggy click-throughness of OSD on some computers.
1.3b Fixed an issue with array index out of bounds (stupid me). Added a check for only one core.
1.3a Redid the GUI completely so that it looks neater. Added work size. No longer need to save before adding/removing a miner.
1.23 Fixed an issue with timers.
1.22 Sets affinity of all phoenix instances to one core.
1.21 OSD shows how much time until restart after miner idles for 5 seconds.
1.2 Fixed an OSD-moving bug. Added auto-restart after a set amount of time of idling.
1.1 Initial release.
Extras: Finding GPU Number. I think this is specific enough. Let me know if it's still confusing.
Also, let me know if temperature readings are off.
Post-1.7: should be automatic. If it selects a different card's temperature sensor, follow instructions below, and let me know that it doesn't work.
Post-1.6:
Go into the tabs for controlling GPU settings. It should list Adapter Index for each of the GPUs.
They should be in order, as in the Index listed on the first GPU tab should be Device 0 (for POCLBM/Phoenix itself), Index listed on second tab should be Device 1, etc.
To check, run one client and see if the temperature on the OSD goes up (or you can launch another temperature-monitoring application for this).
If that doesn't work, try rotating through the Index in each of the tabs, and see which Index corresponds to which Device Number (for POCLBM/Phoenix).
Pre-1.6:
Launch Device Finder.exe.
It should read out how many AMD GPUs you have in your system (one reading for each 5970, two for each 6990) with "Number of Devices Detected".
Check which temperature reading matches with which GPU (with 5970s, just use the one reading for both cores, couldn't figure out how to get the second reading).
Put the number in "Device # temperature" that corresponds to the Device Number of each client in the POCLBM/Phoenix Rising fields "Pause mining when GPU # reaches..." For example, if it reads "Device 2 temperature: 53.5°C." and that temperature corresponds to Client #3 with Device Number 1, put 2 so that it reads "Pause mining when GPU 2 reaches..." for Client #3.
For 5970s: there's only one reading for both cores, so use the same number for the two clients running on it.