How do I know what the client flags (-switches) are and what they do?

Introduction
Generally speaking, the F@h client is well designed, and runs well without any changes for most users. However, the tweaker nature in some of us likes to explore all possible options, and what those options do.

The F@h project has provided a basic list of client flags, also known as client switches, in the Console Info link next to the CPU Console client download links. While the console userguide page gives brief descriptions of each flag, a better understanding of how they function is needed. Adding one or more switches to a client is covered elsewhere See Also.

Note: As with all client switches, the client behaviour modified by the additional switch only applies to the current running session, i.e. the setting is not persistent from one startup to the next. And support for switches is client version dependant, as listed. Switches are all lowercase, all the time.

-config
Use this option to access the console client setup options, make changes as needed, and then start folding. Supported in client versions v3.x v4.x v5.x or v6.x

-configonly
Use this option to access the console client setup options, make changes as needed, and then the client exits automatically. Supported in client versions v3.x v4.x v5.x or v6.x

-delete x
Deletes the work unit from position x in the queue. Positions are 0-9. This switch is usually not necessary, and is only to be used as a last resort when the only way to continue folding is to delete a work unit. Supported in client versions v3.x v4.x v5.x or v6.x

-license
Displays the EULA (end user license agreement). This switch does not work well added to a Windows shortcut. Run it from a Command Prompt. Supported in client versions v3.x v4.x v5.x or v6.x

The v6.xx client displays this text:

Note: Please read the license agreement (Folding@home-Win32-x86.exe -license). Further use of this software requires that you have read and accepted this agreement. -- Folding@Home distributed computing client Copyright 1999-2008 Stanford University. All Rights Reserved. License Agreement: Please carefully read the following terms and conditions before using this software. Use of this software indicates acceptance of this license agreement and disclaimer of all warranties. Disclaimer of Warranty: IN NO EVENT SHALL STANFORD UNIVERSITY BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF STANFORD UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. STANFORD UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION PROVIDED HEREUNDER IS PROVIDED "AS IS". Folding@Home HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. Restrictions: You may use this software on a computer system only if you own the system or have the permission of the owner. You may not alter the software or associated data files. You may only use unmodified versions of Folding@Home obtained through authorized distributors to connect to the Folding@Home servers. Use of other software to connect to the Folding@Home servers is strictly prohibited. Distribution of this software is prohibited. It may only be obtained by downloading from Stanford's web site http://folding.stanford.edu and pages linked therein) or the web site of one of our commercial partners (Sony, NVIDIA, and ATI).

The v5.xx client displays this text:

Note: Please read the license agreement (fahconsole504b.exe -license). Further use of this software requires that you have read and accepted this agreement. -- Folding@Home distributed computing client Copyright 2001-4 Stanford University. All Rights Reserved. License Agreement: Please carefully read the following terms and conditions before using this software. Use of this software indicates acceptance of this license agreement and disclaimer of all warranties. Disclaimer of Warranty: IN NO EVENT SHALL STANFORD UNIVERSITY BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF STANFORD UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. STANFORD UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION PROVIDED HEREUNDER IS PROVIDED "AS IS". Folding@Home HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. Restrictions: You may use this software on a computer system only if you own the system or have the permission of the owner. You may not alter the software or associated data files. You may only use unmodified versions of Folding@Home obtained through authorized distributors to connect to the Folding@Home servers. Use of other software to connect to the Folding@Home servers is strictly prohibited. Distribution of this software is prohibited. It may only be obtained by downloading from http://folding.stanford.edu.

-queueinfo
Instructs the client to write information to the FAHLog.txt file about any work units in the queue, and then exit. Positions are 0-9. Supported in client versions v3.x v4.x v5.x or v6.x

In addition to the usual client startup text, this switch displays information for each work unit in the queue. Data fields include the status (READY/FINISHED/EMPTY), originating server IP and port, date when the unit was received (local time in GMT), deadline date if the server sent that information, and WU Tag info. See example:

[xx:xx:xx] Loaded queue successfully. [xx:xx:xx] Printing Queue Information CURRENT QUEUE: 00 EMPTY 01 *READY  78 171.64.65.102:8080  September 11 23:56 | December 28 23:56 [ P3408R0C33F12 ] 02 EMPTY 03 EMPTY 04 EMPTY 05 EMPTY 06 EMPTY 07 EMPTY 08 EMPTY 09 EMPTY Folding@Home Client Shutdown.

-send x
Attempts to send the individual work unit in queue position x back to the project work servers then exit the client. Positions are 0-9 or "all" to "-send all". This switch is not commonly used as each time the client is started, it attempts to upload all completed work units to the project servers. This switch is generally useful for sending leftover results files prior to client removal, or when Sneakernetting. Supported in client versions v3.x v4.x v5.x or v6.x

-verbosity x
Sets the detail level of the output written to screen and to the fahlog.txt. Options are from 1 to 9 (max). The default is 3. Level 9 is helpful for diagnosing problems and helpful when reporting them to the F@h development team. Supported in client versions v3.x v4.x v5.x or v6.x

-oneunit
Instructs the client to exit following the completion of one work unit. The client will attempt 3 uploads before exiting. This is recommended when planning to shut down a machine for a few days (e.g. for a vacation), or are planning to un/re-install F@h after finishing the current work unit. Supported in client versions v3.x v4.x v5.x or v6.x

Note: If the client is started again with this switch, the client will download new work, finish, upload, and quit again. This switch is not persistent from one startup to the next. Also, if the current work unit errors out, the client may download a new work unit. -oneunit does not take affect until a work unit is completed.

-forceasm
Instructs the fahcore to use processor optimizations, such as SSE or 3DNow+ assembly instructions if possible, even if the core has previously determined the computer may not be handling the client well. Stable systems do not need this switch, although it may be helpful for stable systems running on not-so-stable power grids without UPS intervention. Supported in client versions v3.x v4.x v5.x or v6.x

Note: This flag is useful for Classic Clients only under certain conditions. If they are not met, it will be ignored by the Client. It will be ignored with SMP2 Client if used as the FahCore is hard-coded to use processor optimizations.

This switch will add this warning to the fahlog.

Warning: By using the -forceasm flag, you are overriding safeguards in the program. If you did not intend to do this, please restart the program without -forceasm. If work units are not completing fully (and particularly if your machine is overclocked), then please discontinue use of the flag.

-forceSSE
This switch has been discontinued, and replaced by -forceasm. Instructed the fahcore to use SSE optimizations if possible, even if the core has previously determined the computer may not be handling the client well. Supported in client versions 3.25 and 4.x only.

-advmethods
Instructs the client to request work units from new late-stage beta test projects, before they are broadly released to the folding community. Please post any observations (positive or negative), questions, or issues at the Folding Support forum. Do not mix with the overlapping feature -bigadv. Supported in client versions v3.x v4.x v5.x or v6.x

Note: If you have enabled advmethods flag in the Client by answering Yes to:

Set -advmethods flag always, requesting new advanced scientific cores and/or work units if available (no/yes) [no]?"

it will not be shown in the FAHLog under Arguments. However, if you view the client.cfg (DON'T EDIT) you will notice this:

-advmethods off [clienttype] type=0

-advmethods on [clienttype] type=3

-local
Instructs the client to read its configuration information from the local directory in the client.cfg file rather than, on Windows, from the installation directory specified in the registry, or, on Macintosh, from the Library/Folding@home directory. This switch is vital on Windows and Macintosh running multiple clients on one machine. This switch has no meaning on Linux and is ignored. Supported in client versions v3.x v4.x v5.x or v6.x

Information such as the user name, team name, proxy information, and Machine ID are maintained in the client.cfg file. The flag ensures that work from multiple clients do not conflict. Use "-local" only if you are planning on running more than one instance of Folding@Home on the same machine (this is only useful if you are running on a multi-processor machine).

For assistance setting up multiple clients on one machine, see the entry on installing multiple clients.

This switch is also required when switching from the GUI to console client.

Note: The v6.x clients ignore the -local switch. The Windows console client will use the configuration located in the same folder in which the client runs. Alternately, both the console and systray clients can be configured to run from a specific location by entering that location in the Start In: field of the shortcut that launches the client.

-help
Instructs the client to list the available command line flags and then exit. Supported in client versions v3.x v4.x v5.x or v6.x

The current Windows v6.xx client -help switch diplays the following:

Note: Please read the license agreement (Folding@home-Win32-x86.exe -license). Further use of this software requires that you have read and accepted this agreement. Bad Argument(s) received Folding@Home Version 6.29 Usage:  Folding@home-Win32-x86.exe [-option1] [-option2] ... Options: -config     Configure user information -configonly Configure user information, then exit -help       Display this usage screen -queueinfo  Get information on queued work units -delete x   Delete item #x from work queue -send x     Send result #x to server then exit. Use x=all to send all results -verbosity x Sets the output level, from 1 to 9 (max). The default is 3 -pause      Pause after finishing & trying to send current unit -oneunit    Exit after completing one unit -forceasm   Force core assembly optimizations to be used if available -advmethods Use new advanced scientific cores and/or work units if available -service    Run in service mode (for programs such as firedaemon) -deino              Use Deino MPI implementation (with -smp) -smp x      Use symmetric multiprocessing with n cores. Please note the above recognized flags and try again. Press any key to exit.

The current Windows v5.xx client -help switch diplays the following:

Note: Please read the license agreement (fahconsole504b.exe -license). Further use of this software requires that you have read and accepted this agreement. Bad Argument(s) received Folding@Home Version 5.04beta Usage:  fahconsole504b.exe [-option1] [-option2] ... Options: -config     Configure user information -configonly Configure user information, then exit -help       Dispaly this usage screen -queueinfo  Get information on queued work units -delete x   Delete item #x from work queue -send x     Send result #x to server then exit. Use x=all to send all results -verbosity x Sets the output level, from 1 to 9 (max). The default is 3 -pause      Pause after finishing & trying to send current unit -oneunit    Exit after completing one unit -forceasm   Force core assembly optimizations to be used if available -advmethods Use new advanced scientific cores and/or work units if available -service    Run in service mode (for programs such as firedaemon) -local      Use configuration files from local directory Please note the above recognized flags and try again. Press any key to exit.

The current Linux v5.xx client -help switch diplays the following:

Note: Please read the license agreement (FAH504-Linux.exe -license). Further use of this software requires that you have read and accepted this agreement. Bad Argument(s) received Folding@Home Version 5.04beta Usage:  FAH504-Linux.exe [-option1] [-option2] ... Options: -config     Configure user information -configonly Configure user information, then exit -help       Dispaly this usage screen -queueinfo  Get information on queued work units -delete x   Delete item #x from work queue -send x     Send result #x to server then exit. Use x=all to send all results -verbosity x Sets the output level, from 1 to 9 (max). The default is 3 -pause      Pause after finishing & trying to send current unit -oneunit    Exit after completing one unit -forceasm   Force core assembly optimizations to be used if available -advmethods Use new advanced scientific cores and/or work units if available -freeBSD    Make brandelf system call on downloaded cores. -openBSD    Make elf2olf system call on downloaded cores. Please note the above recognized flags and try again. Press any key to exit.

The current Mac OS X/PPC v5.xx client -help switch diplays the following:

Note: Please read the license agreement (fah5 -license). Further use of this software requires that you have read and accepted this agreement. Bad Argument(s) received Folding@Home Version 5.02 Usage:  fah5 [-option1] [-option2] ... Options: -config     Configure user information -configonly Configure user information, then exit -help       Dispaly this usage screen -queueinfo  Get information on queued work units -delete x   Delete item #x from work queue -send x     Send result #x to server then exit. Use x=all to send all results -verbosity x Sets the output level, from 1 to 9 (max). The default is 3 -pause      Pause after finishing & trying to send current unit -oneunit    Exit after completing one unit -forceasm   Force core assembly optimizations to be used if available -advmethods Use new advanced scientific cores and/or work units if available Please note the above recognized flags and try again. Press any key to exit.

-freeBSD
For use by those wishing to use the Linux client on a machine running FreeBSD. See our FAQ for details on how to do this, but with this flag, all Cores downloaded will automatically be branded as being a Linux executable.

IIRC, this option is no longer supported in v5.91 and above.

-openBSD
For use by those wishing to use the Linux client on a machine running OpenBSD. See our FAQ for details on how to do this, but with this flag, all Cores downloaded will automatically be branded as being a Linux executable.

IIRC, this option is no longer supported in v5.91 and above.

-pause
Instructs the windows client to pause after finishing and trying to send current unit. Allows a user to shut down after finishing a unit, by pressing Ctrl-C, without then getting new work to process. Supported in client versions v3.x v4.x v5.x or v6.x

Similar to the more commonly used -oneunit flag, but without the automatic client exit.

-service
Sets the client to run in service mode (for programs such as firedaemon). This prevents the client from exiting when it detects the current user is logging out. If this option is used when the client is not run as a service then it will run normally, but will not shut down automatically if the user logs out, and a "Wait for program to close." dialog box will be displayed. Supported in client versions 5.x, 6.x CPU console client.

This switch is more commonly used by 3rd Party service installers.

-svcstart
This flag is used if you configure the console client to be run as a service (through the standard client Configuration). The user should NOT give this flag manually, it is automatically given by the Windows scheduler and is just listed here for information. Supported in client version 5.x, 6.x CPU console client.

-gpu x
This switch is used with the GPU client, to run on the specified display number (x = 0,1,2,3). For use with multiple GPUs, and/or with multiple GPU clients. v5.91, v6.x.

-forcegpu
This new switch for the v6.x GPU2 client or GPU3 BETA Client can be used to bypass the automatic hardware detection routine for non-standard i.e. non-consumer oriented cards like the nVidia Tesla. It can also be used with newly released GPU models that have not yet been added to the GPU2 client's hardware detection list or GPU3 BETA Client. To use this flag you need to supply a gpu core type option with the correct client, for example:

GPU2 F@h Client:

-forcegpu ati_r600

-forcegpu ati_r700

-forcegpu nvidia_g80

GPU3 F@h Client:

-forcegpu ati_r800 (added with v6.3x client, made unnecessary with GPU3 client's updated hardware whitelist)

-forcegpu nvidia_fermi

Note: These flags may also help with headless multi-gpu setups on which the client does not acknowledge the presence of multiple GPUs. These are the only product families supported by this switch type at this time, ATI 3xxx, ATI 4xxx, ATI 5xxx, NV Non-Fermi and NV Fermi.

New Options
With the release of the v6 client for beta testing, we may see new features that require new switches.

-smp
Sets the v6.x universal clients, both Windows and Linux, to run SMP work units. The client will default to run CPU client work units without this switch.

-smp x
Sets the v6.x universal clients, both Windows and Linux, to run SMP work units, and where "x" sets the number of fahcore threads to launch. This option is only supported in fahcores with variable thread support, such as the a2 fahcores. The x option is ignored by fahcores used with other work units, such as in the a1 fahcores. Note that 4 threads is the default and current minimum when "x" is not specified. "x" cannot be set higher than the total number of processors (real or virtual) than is used by the operating system, except in certain specific and limited beta testing options.

Note: a2 fahcores have not yet been ported to run on the Windows platform yet, so the -smp x option does not apply there yet.

Note: 02/2010 - Variable threads are now available with the release of the a3 fahcore for Windows with the v6.29 SMP client. The same limitations still apply to a1 work units, and a2 WUs are still not ported to Windows (and never will be). In a3 WUs, the minimum number of threads spawned is now 2, and the -smp switch will spawn threads to match the number of CPU cores presented by the operating system (i.e. HT doubles the number of actual cores).

-bigadv
Sets the SMP client to request the new extra large fahcore a2 and a3 work units. Not used in the CPU, GPU, or PS3 clients. Of special note is the new quick return bonus program that began testing with this new option. Folding Forum announcement and launch details. Do not mix with the overlapping feature -advmethods. Added July 2009.

There may be additional but undocumented client switches.