| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050 |
- This README contains details about the BFGMiner RPC API
- It also includes some detailed information at the end,
- about using miner.php
- If you start BFGMiner with the "--api-listen" option, it will listen on a
- simple TCP/IP socket for single string API requests from the same machine
- running BFGMiner and reply with a string and then close the socket each time
- If you add the "--api-network" option, it will accept API requests from any
- network attached computer.
- You can only access the comands that reply with data in this mode.
- By default, you cannot access any privileged command that affects the miner -
- you will receive an access denied status message see --api-allow below.
- You can specify IP addresses/prefixes that are only allowed to access the API
- with the "--api-allow" option e.g. --api-allow W:192.168.0.1,10.0.0/24
- will allow 192.168.0.1 or any address matching 10.0.0.*, but nothing else
- IP addresses are automatically padded with extra '.0's as needed
- Without a /prefix is the same as specifying /32
- 0/0 means all IP addresses.
- The 'W:' on the front gives that address/subnet privileged access to commands
- that modify BFGMiner (thus all API commands)
- Without it those commands return an access denied status.
- See --api-groups below to define other groups like W:
- Privileged access is checked in the order the IP addresses were supplied to
- "--api-allow"
- The first match determines the privilege level.
- Using the "--api-allow" option overides the "--api-network" option if they
- are both specified
- With "--api-allow", 127.0.0.1 is not by default given access unless specified
- More groups (like the privileged group W:) can be defined using the
- --api-groups command
- Valid groups are only the letters A-Z (except R & W are predefined) and are
- not case sensitive
- The R: group is the same as not privileged access
- The W: group is (as stated) privileged access (thus all API commands)
- To give an IP address/subnet access to a group you use the group letter
- in front of the IP address instead of W: e.g. P:192.168.0/32
- An IP address/subnet can only be a member of one group
- A sample API group would be:
- --api-groups P:switchpool:enablepool:addpool:disablepool:removepool.poolpriority:*
- This would create a group 'P' that can do all current pool commands and all
- non-priviliged commands - the '*' means all non-priviledged commands
- Without the '*' the group would only have access to the pool commands
- Defining multiple groups example:
- --api-groups Q:quit:restart:*,S:save
- This would define 2 groups:
- Q: that can 'quit' and 'restart' as well as all non-priviledged commands
- S: that can only 'save' and no other commands
- The RPC API request can be either simple text or JSON.
- If the request is JSON (starts with '{'), it will reply with a JSON formatted
- response, otherwise it replies with text formatted as described further below.
- The JSON request format required is '{"command":"CMD","parameter":"PARAM"}'
- (though of course parameter is not required for all requests)
- where "CMD" is from the "Request" column below and "PARAM" would be e.g.
- the CPU/GPU number if required.
- An example request in both formats to set GPU 0 fan to 80%:
- gpufan|0,80
- {"command":"gpufan","parameter":"0,80"}
- The format of each reply (unless stated otherwise) is a STATUS section
- followed by an optional detail section
- From API version 1.7 onwards, reply strings in JSON and Text have the
- necessary escaping as required to avoid ambiguity - they didn't before 1.7
- For JSON the 2 characters '"' and '\' are escaped with a '\' before them
- For Text the 4 characters '|' ',' '=' and '\' are escaped the same way
- Only user entered information will contain characters that require being
- escaped, such as Pool URL, User and Password or the Config save filename,
- when they are returned in messages or as their values by the API
- For API version 1.4 and later:
- The STATUS section is:
- STATUS=X,When=NNN,Code=N,Msg=string,Description=string|
- STATUS=X Where X is one of:
- W - Warning
- I - Informational
- S - Success
- E - Error
- F - Fatal (code bug)
- When=NNN
- Standard long time of request in seconds
- Code=N
- Each unique reply has a unigue Code (See api.c - #define MSG_NNNNNN)
- Msg=string
- Message matching the Code value N
- Description=string
- This defaults to the BFGMiner version but is the value of --api-description
- if it was specified at runtime.
- For API version 1.10 and later:
- The list of requests - a (*) means it requires privileged access - and replies are:
- Request Reply Section Details
- ------- ------------- -------
- version VERSION CGMiner=BFGMiner version
- API=API version
- config CONFIG Some miner configuration information:
- GPU Count=N, <- the number of GPUs
- PGA Count=N, <- the number of PGAs
- CPU Count=N, <- the number of CPUs
- Pool Count=N, <- the number of Pools
- ADL=X, <- Y or N if ADL is compiled in the code
- ADL in use=X, <- Y or N if any GPU has ADL
- Strategy=Name, <- the current pool strategy
- Log Interval=N, <- log interval (--log N)
- Device Code=GPU ICA | <- spaced list of compiled devices
- summary SUMMARY The status summary of the miner
- e.g. Elapsed=NNN,Found Blocks=N,Getworks=N,...|
- pools POOLS The status of each pool
- e.g. Pool=0,URL=http://pool.com:6311,Status=Alive,...|
- devs DEVS Each available GPU, PGA and CPU with their status
- e.g. GPU=0,Accepted=NN,MHS av=NNN,...,Intensity=D|
- Last Share Time=NNN, <- standand long time in seconds
- (or 0 if none) of last accepted share
- Last Share Pool=N, <- pool number (or -1 if none)
- Will not report PGAs if PGA mining is disabled
- Will not report CPUs if CPU mining is disabled
- devdetail DEVS Each available device with their fixed details
- e.g. GPU=0,Driver=opencl,Kernel=diablo,Model=...|
- gpu|N GPU The details of a single GPU number N in the same
- format and details as for DEVS
- pga|N PGA The details of a single PGA number N in the same
- format and details as for DEVS
- This is only available if PGA mining is enabled
- Use 'pgacount' or 'config' first to see if there are any
- cpu|N CPU The details of a single CPU number N in the same
- format and details as for DEVS
- This is only available if CPU mining is enabled
- Use 'cpucount' or 'config' first to see if there are any
- gpucount GPUS Count=N| <- the number of GPUs
- pgacount PGAS Count=N| <- the number of PGAs
- Always returns 0 if PGA mining is disabled
- cpucount CPUS Count=N| <- the number of CPUs
- Always returns 0 if CPU mining is disabled
- switchpool|N (*)
- none There is no reply section just the STATUS section
- stating the results of switching pool N to the
- highest priority (the pool is also enabled)
- The Msg includes the pool URL
- enablepool|N (*)
- none There is no reply section just the STATUS section
- stating the results of enabling pool N
- The Msg includes the pool URL
- addpool|URL,USR,PASS (*)
- none There is no reply section just the STATUS section
- stating the results of attempting to add pool N
- The Msg includes the pool URL
- Use '\\' to get a '\' and '\,' to include a comma
- inside URL, USR or PASS
- poolpriority|N,... (*)
- none There is no reply section just the STATUS section
- stating the results of changing pool priorities
- See usage below
- disablepool|N (*)
- none There is no reply section just the STATUS section
- stating the results of disabling pool N
- The Msg includes the pool URL
- removepool|N (*)
- none There is no reply section just the STATUS section
- stating the results of removing pool N
- The Msg includes the pool URL
- N.B. all details for the pool will be lost
- gpuenable|N (*)
- none There is no reply section just the STATUS section
- stating the results of the enable request
- gpudisable|N (*)
- none There is no reply section just the STATUS section
- stating the results of the disable request
- gpurestart|N (*)
- none There is no reply section just the STATUS section
- stating the results of the restart request
- gpuintensity|N,I (*)
- none There is no reply section just the STATUS section
- stating the results of setting GPU N intensity to I
- gpumem|N,V (*)
- none There is no reply section just the STATUS section
- stating the results of setting GPU N memoryclock to V MHz
- gpuengine|N,V (*)
- none There is no reply section just the STATUS section
- stating the results of setting GPU N clock to V MHz
- gpufan|N,V (*)
- none There is no reply section just the STATUS section
- stating the results of setting GPU N fan speed to V%
- gpuvddc|N,V (*)
- none There is no reply section just the STATUS section
- stating the results of setting GPU N vddc to V
- save|filename (*)
- none There is no reply section just the STATUS section
- stating success or failure saving the BFGMiner config
- to filename
- The filename is optional and will use the BFGMiner
- default if not specified
- quit (*) none There is no status section but just a single "BYE"
- reply before BFGMiner quits
- notify NOTIFY The last status and history count of each devices problem
- e.g. NOTIFY=0,Name=GPU,ID=0,Last Well=1332432290,...|
- privileged (*)
- none There is no reply section just the STATUS section
- stating an error if you do not have privileged access
- to the API and success if you do have privilege
- The command doesn't change anything in BFGMiner
- pgaenable|N (*)
- none There is no reply section just the STATUS section
- stating the results of the enable request
- You cannot enable a PGA if it's status is not WELL
- This is only available if PGA mining is enabled
- pgadisable|N (*)
- none There is no reply section just the STATUS section
- stating the results of the disable request
- This is only available if PGA mining is enabled
- devdetails DEVDETAILS Each device with a list of their static details
- This lists all devices including those not supported
- by the 'devs' command
- e.g. DEVDETAILS=0,Name=GPU,ID=0,Driver=opencl,...|
- restart (*) none There is no status section but just a single "RESTART"
- reply before BFGMiner restarts
- stats STATS Each device or pool that has 1 or more getworks
- with a list of stats regarding getwork times
- The values returned by stats may change in future
- versions thus would not normally be displayed
- Device drivers are also able to add stats to the
- end of the details returned
- check|cmd COMMAND Exists=Y/N, <- 'cmd' exists in this version
- Access=Y/N| <- you have access to use 'cmd'
- When you enable, disable or restart a GPU or PGA, you will also get Thread messages
- in the BFGMiner status window
- The 'poolpriority' command can be used to reset the priority order of multiple
- pools with a single command - 'switchpool' only sets a single pool to first priority
- Each pool should be listed by id number in order of preference (first = most
- preferred)
- Any pools not listed will be prioritised after the ones that are listed, in the
- priority order they were originally
- If the priority change affects the miner's preference for mining, it may switch
- immediately
- When you switch to a different pool to the current one (including by priority
- change), you will get a 'Switching to URL' message in the BFGMiner status
- windows
- Obviously, the JSON format is simply just the names as given before the '='
- with the values after the '='
- If you enable BFGMiner debug (-D or --debug) you will also get messages showing
- details of the requests received and the replies
- There are included 4 program examples for accessing the API:
- api-example.php - a php script to access the API
- usAge: php api-example.php command
- by default it sends a 'summary' request to the miner at 127.0.0.1:4028
- If you specify a command it will send that request instead
- You must modify the line "$socket = getsock('127.0.0.1', 4028);" at the
- beginning of "function request($cmd)" to change where it looks for BFGMiner
- API.java/API.class
- a java program to access the API (with source code)
- usAge is: java API command address port
- Any missing or blank parameters are replaced as if you entered:
- java API summary 127.0.0.1 4028
- api-example.c - a 'C' program to access the API (with source code)
- usAge: api-example [command [ip/host [port]]]
- again, as above, missing or blank parameters are replaced as if you entered:
- api-example summary 127.0.0.1 4028
- miner.php - an example web page to access the API
- This includes buttons and inputs to attempt access to the privileged commands
- See the end of this API-README for details of how to tune the display
- and also to use the option to display a multi-rig summary
- ----------
- Feature Changelog for external applications using the API:
- API V1.15 (BFGMiner v2.5.2)
- Added API commands:
- 'poolpriority'
- ----------
- API V1.14 (BFGMiner v2.5.0)
- Modified API commands:
- 'stats' - more icarus timing stats added
- 'notify' - include new device comms error counter
- The internal code for handling data was rewritten (~25% of the code)
- Completely backward compatible
- ----------
- API V1.13 (BFGMiner v2.4.4)
- Added API commands:
- 'check'
- Support was added to BFGMiner for API access groups with the --api-groups option
- It's 100% backward compatible with previous --api-access commands
- ----------
- API V1.12 (BFGMiner v2.4.3)
- Modified API commands:
- 'stats' - more pool stats added
- Support for the ModMinerQuad FPGA was added
- ----------
- API V1.11 (BFGMiner v2.4.2)
- Modified API commands:
- 'save' no longer requires a filename (use default if not specified)
- 'save' incorrectly returned status E (error) on success before.
- It now correctly returns S (success)
- ----------
- API V1.10 (BFGMiner v2.4.1)
- Added API commands:
- 'stats'
- N.B. the 'stats' command can change at any time so any specific content
- present should not be relied upon.
- The data content is mainly used for debugging purposes or hidden options
- in BFGMiner and can change as development work requires
- Modified API commands:
- 'pools' added "Last Share Time"
- ----------
- API V1.9 (BFGMiner v2.4.0)
- Added API commands:
- 'restart'
- Modified API commands:
- 'notify' corrected invalid JSON
- ----------
- API V1.8 (BFGMiner v2.3.5)
- Added API commands:
- 'devdetails'
- Support for the ZTex FPGA was added
- ----------
- API V1.8-pre (BFGMiner v2.3.4)
- Added API commands:
- 'devdetail'
- ----------
- API V1.7 (BFGMiner v2.3.4)
- Added API commands:
- 'removepool'
- Modified API commands:
- 'pools' added "User"
- From API version 1.7 onwards, reply strings in JSON and Text have the
- necessary escaping as required to avoid ambiguity
- For JSON the 2 characters '"' and '\' are escaped with a '\' before them
- For Text the 4 characters '|' ',' '=' and '\' are escaped the same way
- ----------
- API V1.6 (cgminer v2.3.2)
- Added API commands:
- 'pga'
- 'pgaenable'
- 'pgadisable'
- 'pgacount'
- Modified API commands:
- 'devs' now includes Icarus and Bitforce FPGA devices
- 'notify' added "*" to the front of the name of all numeric error fields
- 'config' correct "Log Interval" to use numeric (not text) type for JSON
- Support for Icarus and Bitforce FPGAs was added
- ----------
- API V1.5 was not released
- ----------
- API V1.4 (Kano's interim release of cgminer v2.3.1)
- Added API commands:
- 'notify'
- Modified API commands:
- 'config' added "Device Code" and "OS"
- Added "When" to the STATUS reply section of all commands
- ----------
- API V1.3 (cgminer v2.3.1-2)
- Added API commands:
- 'addpool'
- Modified API commands:
- 'devs'/'gpu' added "Total MH" for each device
- 'summary' added "Total MH"
- ----------
- API V1.2 (cgminer v2.3.0)
- Added API commands:
- 'enablepool'
- 'disablepool'
- 'privileged'
- Modified API commands:
- 'config' added "Log Interval"
- Starting with API V1.2, any attempt to access a command that requires
- privileged security, from an IP address that does not have privileged
- security, will return an "Access denied" Error Status
- ----------
- API V1.1 (cgminer v2.2.4)
- There were no changes to the API commands in cgminer v2.2.4,
- however support was added to cgminer for IP address restrictions
- with the --api-allow option
- ----------
- API V1.1 (cgminer v2.2.2)
- Prior to V1.1, devs/gpu incorrectly reported GPU0 Intensity for all GPUs
- Modified API commands:
- 'devs'/'gpu' added "Last Share Pool" and "Last Share Time" for each device
- ----------
- API V1.0 (cgminer v2.2.0)
- Remove default CPU support
- Added API commands:
- 'config'
- 'gpucount'
- 'cpucount'
- 'switchpool'
- 'gpuintensity'
- 'gpumem'
- 'gpuengine'
- 'gpufan'
- 'gpuvddc'
- 'save'
- ----------
- API V0.7 (cgminer v2.1.0)
- Initial release of the API in the main cgminer git
- Commands:
- 'version'
- 'devs'
- 'pools'
- 'summary'
- 'gpuenable'
- 'gpudisable'
- 'gpurestart'
- 'gpu'
- 'cpu'
- 'gpucount'
- 'cpucount'
- 'quit'
- ----------------------------------------
- miner.php
- =========
- miner.php is a PHP based interface to the BFGMiner RPC API
- (referred to simply as the API below)
- It can show rig details, summaries and input fields to allow you to change
- BFGMiner
- You can also create custom summary pages with it
- It has two levels to the security:
- 1) BFGMiner can be configured to allow or disallow API access and access level
- security for miner.php
- 2) miner.php can be configured to allow or disallow privileged BFGMiner
- access, if BFGMiner is configured to allow privileged access for miner.php
- ---------
- To use miner.php requires a web server with PHP
- Basics: On xubuntu 11.04, to install apache2 and php, the commands are:
- sudo apt-get install apache2
- sudo apt-get install php5
- sudo /etc/init.d/apache2 reload
- On Fedora 17:
- yum install httpd php
- systemctl restart httpd.service
- systemctl enable httpd.service --system
- On windows there are a few options.
- Try one of these (I've never used either one)
- http://www.apachefriends.org/en/xampp.html
- http://www.wampserver.com/en/
- ---------
- The basic BFGMiner option to enable the API is:
- --api-listen
- or in your bfgminer.conf
- "api-listen" : true,
- (without the ',' on the end if it is the last item)
- If the web server is running on the BFGMiner computer, the above
- is the only change required to give miner.php basic access to
- the BFGMiner API
- -
- If the web server runs on a different computer to BFGMiner,
- you will also need to tell BFGMiner to allow the web server
- to access BFGMiner's API and tell miner.php where BFGMiner is
- Assuming a.b.c.d is the IP address of the web server, you
- would add the following to BFGMiner:
- --api-listen --api-allow a.b.c.d
- or in your bfgminer.conf
- "api-listen" : true,
- "api-allow" : "a.b.c.d",
- to tell BFGMiner to give the web server read access to the API
- You also need to tell miner.php where BFGMiner is.
- Assuming BFGMiner is at IP address e.f.g.h, then you would
- edit miner.php and change the line
- $rigs = array('127.0.0.1:4028');
- to
- $rigs = array('e.f.g.h:4028');
- See --api-network or --api-allow for more access details
- and how to give write access
- ---------
- Once you have a web server with PHP running
- copy your miner.php to the main web folder
- On Xubuntu 11.04
- /var/www/
- On Fedora 17
- /var/www/html/
- On Windows
- see your windows Web/PHP documentation
- Assuming the IP address of the web server is a.b.c.d
- Then in your web browser go to:
- http://a.b.c.d/miner.php
- Done :)
- ---------
- The rest of this documentation deals with the more complex
- functions of miner.php, using myminer.php, creaing custom
- summaries and displaying multiple BFGMiner rigs
- ---------
- If you create a file called myminer.php in the same web folder
- where you put miner.php, miner.php will load it when it runs
- This is useful, to put any changes you need to make to miner.php
- instead of changing miner.php
- Thus if you update/get a new miner.php, you won't lose the changes
- you have made if you put all your changes in myminer.php
- (and don't change miner.php at all)
- A simple example myminer.php that defines 2 rigs
- (that I will keep referring to further below) is:
- <?php
- #
- $rigs = array('192.168.0.100:4028:A', '192.168.0.102:4028:B');
- #
- ?>
- Changes in myminer.php superscede what is in miner.php
- However, this is only valid for variables in miner.php before the
- 2 lines where myminer.php is included by miner.php:
- if (file_exists('myminer.php'))
- include_once('myminer.php');
-
- Every variable in miner.php above those 2 lines, can be changed by
- simply defining them in your myminer.php
- So although miner.php originally contains the line
- $rigs = array('127.0.0.1:4028');
- if you created the example myminer.php given above, it would actually
- change the value of $rigs that is used when miner.php is running
- i.e. you don't have to remove or comment out the $rigs line in miner.php
- It will be superceded by myminer.php
- ---------
- The example.php above also shows how to define more that one rig to
- be shown my miner.php
- Each rig string is 2 or 3 values seperated by colons ':'
- They are simply an IP address or host name, followed by the
- port number (usually 4028) and an optional Name string
- miner.php displays rig buttons that will show the defails of a single
- rig when you click on it - the button shows either the rig number,
- or the 'Name' string if you provide it
- PHP arrays contain each string seperated by a comma, but no comma after
- the last one
- So an example for 3 rigs would be:
- $rigs = array('192.168.0.100:4028:A', '192.168.0.102:4028:B', '192.168.0.110:4028:C');
- Of course each of the rigs listed would also have to have the API
- running and be set to allow the web server to access the API - as
- explained before
- ---------
- So basically, any variable explained below can be put in myminer.php
- if you wanted to set it to something different to it's default value
- and did not want to change miner.php itself every time you updated it
- Below is each variable that can be changed and an explanation of each
- ---------
- Default:
- $readonly = false;
- Set $readonly to true to force miner.php to be readonly
- This means it won't allow you to change BFGMiner even if the RPC API
- options allow it to
- If you set $readonly to false then it will check BFGMiner 'privileged'
- and will show input fields and buttons on the single rig page
- allowing you to change devices, pools and even quit or restart
- BFGMiner
- However, if the 'privileged' test fails, the code will set $readonly to
- true
- ---------
- Default:
- $notify = true;
- Set $notify to false to NOT attempt to display the notify command
- table of data
- Set $notify to true to attempt to display the notify command on
- the single rig page
- If your older version of BFGMiner returns an 'Invalid command'
- coz it doesn't have notify - it just shows the error status table
- ---------
- Default:
- $checklastshare = true;
- Set $checklastshare to true to do the following checks:
- If a device's last share is 12x expected ago then display as an error
- If a device's last share is 8x expected ago then display as a warning
- If either of the above is true, also display the whole line highlighted
- This assumes shares are 1 difficulty shares
- Set $checklastshare to false to not do the above checks
- 'expected' is calculated from the device MH/s value
- So for example, a device that hashes at 380MH/s should (on average)
- find a share every 11.3s
- If the last share was found more than 11.3 x 12 seconds (135.6s) ago,
- it is considered an error and highlighted
- If the last share was found more than 11.3 x 8 seconds (90.4s) ago,
- it is considered a warning and highlighted
- The default highlighting is very subtle
- ---------
- Default:
- $poolinputs = false;
- Set $poolinputs to true to show the input fields for adding a pool
- and changing the pool priorities on a single rig page
- However, if $readonly is true, it will not display them
- ---------
- Default:
- $rigs = array('127.0.0.1:4028');
- Set $rigs to an array of your BFGMiner rigs that are running
- format: 'IP:Port' or 'Host:Port' or 'Host:Port:Name'
- If you only have one rig, it will just show the detail of that rig
- If you have more than one rig it will show a summary of all the rigs
- with buttons to show the details of each rig -
- the button contents will be 'Name' rather than rig number, if you
- specify 'Name'
- e.g. $rigs = array('127.0.0.1:4028','myrig.com:4028:Sugoi');
- ---------
- Default:
- $rigtotals = true;
- $forcerigtotals = false;
- Set $rigtotals to true to display totals on the single rig page
- 'false' means no totals (and ignores $forcerigtotals)
- If $rigtotals is true, all data is also right aligned
- With false, it's as before, left aligned
- This option is just here to allow people to set it to false
- if they prefer the old non-total display when viewing a single rig
- Also, if there is only one line shown in any section, then no
- total will be shown (to save screen space)
- You can force it to always show rig totals on the single rig page,
- even if there is only one line, by setting $forcerigtotals = true;
- ---------
- Default:
- $socksndtimeoutsec = 10;
- $sockrcvtimeoutsec = 40;
- The numbers are integer seconds
- The defaults should be OK for most cases
- However, the longer SND is, the longer you have to wait while
- php hangs if the target BFGMiner isn't runnning or listening
- RCV should only ever be relevant if BFGMiner has hung but the
- API thread is still running, RCV would normally be >= SND
- Feel free to increase SND if your network is very slow
- or decrease RCV if that happens often to you
- Also, on some windows PHP, apparently the $usec is ignored
- (so usec can't be specified)
- ---------
- Default:
- $hidefields = array();
- List of fields NOT to be displayed
- You can use this to hide data you don't want to see or don't want
- shown on a public web page
- The list of sections are:
- SUMMARY, POOL, PGA, GPU, NOTIFY, CONFIG, DEVDETAILS, DEVS
- See the web page for the list of field names (the table headers)
- It is an array of 'SECTION.Field Name' => 1
- This example would hide the slightly more sensitive pool information:
- Pool URL and pool username:
- $hidefields = array('POOL.URL' => 1, 'POOL.User' => 1);
- If you just want to hide the pool username:
- $hidefields = array('POOL.User' => 1);
- ---------
- Default:
- $ignorerefresh = false;
- $changerefresh = true;
- $autorefresh = 0;
- Auto-refresh of the page (in seconds) - integers only
- $ignorerefresh = true/false always ignore refresh parameters
- $changerefresh = true/false show buttons to change the value
- $autorefresh = default value, 0 means dont auto-refresh
- ---------
- Default:
- $placebuttons = 'top';
- Where to place the Refresh, Summary, Custom Pages, Quit, etc. buttons
- Valid values are: 'top' 'bot' 'both'
- anything else means don't show them - case sensitive
- ---------
- Default:
- $miner_font_family = 'verdana,arial,sans';
- $miner_font_size = '13pt';
- Change these to set the font and font size used on the web page
- ---------
- Default:
- $colouroverride = array();
- Use this to change the web page colour scheme
- See $colourtable in miner.php for the list of possible names to change
- Simply put in $colouroverride, just the colours you wish to change
- e.g. to change the colour of the header font and background
- you could do the following:
- $colouroverride = array(
- 'td.h color' => 'green',
- 'td.h background' => 'blue'
- );
- ---------
- Default:
- $allowcustompages = true;
- Should we allow custom pages?
- (or just completely ignore them and don't display the buttons)
- ---------
- OK this part is more complex: Custom Summary Pages
- A custom summary page in an array of 'section' => array('FieldA','FieldB'...)
- The section defines what data you want in the summary table and the Fields
- define what data you want shown from that section
- Standard sections are:
- SUMMARY, POOL, PGA, GPU, NOTIFY, CONFIG, DEVDETAILS, DEVS, STATS
- Fields are the names as shown on the headers on the normal pages
- Fields can be 'name=new name' to display 'name' with a different heading
- 'new name'
- There are also now joined sections:
- SUMMARY+POOL, SUMMARY+DEVS, SUMMARY+CONFIG, DEVS+NOTIFY, DEVS+DEVDETAILS
- These sections are an SQL join of the two sections and the fields in them
- are named section.field where section. is the section the field comes from
- See the example further down
- Also note:
- - empty tables are not shown
- - empty columns (e.g. an unknown field) are not shown
- - missing field data shows as blank
- - the field name '*' matches all fields except in joined sections
- (useful for STATS)
- There are 2 hard coded sections:
- DATE - displays a date table like 'Summary'
- RIGS - displays a rig table like 'Summary'
- Each custom summary requires a second array, that can be empty, listing fields
- to be totaled for each section
- If there is no matching total data, no total will show
- ---------
- Looking at the Mobile example:
- $mobilepage = array(
- 'DATE' => null,
- 'RIGS' => null,
- 'SUMMARY' => array('Elapsed', 'MHS av', 'Found Blocks=Blks',
- Accepted', 'Rejected=Rej', 'Utility'),
- 'DEVS+NOTIFY' => array('DEVS.Name=Name', 'DEVS.ID=ID', 'DEVS.Status=Status',
- 'DEVS.Temperature=Temp', 'DEVS.MHS av=MHS av',
- 'DEVS.Accepted=Accept', 'DEVS.Rejected=Rej',
- 'DEVS.Utility=Utility', 'NOTIFY.Last Not Well=Not Well'),
- 'POOL' => array('POOL', 'Status', 'Accepted', 'Rejected=Rej', 'Last Share Time'));
- $mobilesum = array(
- 'SUMMARY' => array('MHS av', 'Found Blocks', 'Accepted', 'Rejected', 'Utility'),
- 'DEVS+NOTIFY' => array('DEVS.MHS av', 'DEVS.Accepted', 'DEVS.Rejected', 'DEVS.Utility'),
- 'POOL' => array('Accepted', 'Rejected'));
- $customsummarypages = array('Mobile' => array($mobilepage, $mobilesum));
- This will show 5 tables (according to $mobilepage)
- Each table will have the chosen details for all the rigs specified in $rigs
- DATE
- A single box with the web server's current date and time
- RIGS
- A table of the rigs: description, time, versions etc
- SUMMARY
- This will use the API 'summary' command and show the selected fields:
- Elapsed, MHS av, Found Blocks, Accepted, Rejected and Utility
- However, 'Rejected=Rej' means that the header displayed for the 'Rejected'
- field will be 'Rej', instead of 'Rejected' (to save space)
- Same for 'Found Blocks=Blks' - to save space
- DEVS+NOTIFY
- This will list each of the devices on each rig and display the list of
- fields as shown
- It will also include the 'Last Not Well' field from the 'notify' command
- so you know when the device was last not well
- You will notice that you need to rename each field e.g. 'DEVS.Name=Name'
- since each field name in the join between DEVS and NOTIFY is actually
- section.fieldname, not just fieldname
- The join code automatically adds 2 fields to each GPU device: 'Name' and 'ID'
- They don't exist in the API 'devs' output but you can correctly calculate
- them from the GPU device data
- These two fields are used to join DEVS to NOTIFY i.e. find the NOTIFY
- record that has the same Name and ID as the DEVS record and join them
- POOL
- This will use the API 'pools' command and show the selected fields:
- POOL, Status, Accepted, Rejected, Last Share Time
- Again, I renamed the 'Rejected' field using 'Rejected=Rej', to save space
- $mobilesum lists the sections and fields that should have a total
- You can't define them for 'DATE' or 'RIGS' since they are hard coded tables
- The example given:
- SUMMARY
- Show a total at the bottom of the columns for:
- MHS av, Found Blocks, Accepted, Rejected, Utility
- Firstly note that you use the original name i.e. for 'Rejected=Rej'
- you use 'Rejected', not 'Rej' and not 'Rejected=Rej'
- Secondly note that it simply adds up the fields
- If you ask for a total of a string field you will get the numerical
- sum of the string data
- DEVS+NOTIFY
- Simply note in this join example that you must use the original field
- names which are section.fieldname, not just fieldname
- POOL
- Show a total at the bottom of the columns for:
- Accepted and Rejected
- Again remember to use the original field name 'Rejected'
|