Sneakernetting

The fundamental problem to be solved is How to process FAH WUs on non-internet-connected computers. (This is affectionately called sneakernet, meaning that the data is moved between computers by the person wearing shoes.)

First, it is important that the results be returned quickly. The deadlines are critical, and sneakernetting introduces delays into the process which are actually detrimental to the scientific process. Please make every effort to minimize these extra delays.

Second, all machines should use the same Operating system: All Windows or all Linux or all OS-X. (It is far easier if the OSes are identical, but there may be some tricks to work around it.) The procedure is written for Windows, but could be applied to Linux or OS-X with slight modifications. They need not all be the same version of Windows, but they must use the same version of FAH.

no-net Windows, has-net Windows
One machine must have internet access and you'll need whatever hardware is necessary to move data between that computer and each of the other computers.


 * Download console client to machine A (networked)


 * Make a separate directory for each client you plan on running. Use whatever directory names will avoid confusion about which machine they're associated with.  For this discussion, we'll call them A, B, and C.


 * Copy the client to each directory and create shortcuts called A, B, and C to run them. Add the -local flag. creating a shortcut to the FAH executable


 * Start client A and confirm that it works as expected. Client A can be left running.


 * Before you begin, the offline machine(s) will need a registry entry. From Stanford's perspective, they will be treated as a separate CPUs on your internet-connected machine. Run regedit.exe to search for the key UserID. Typically located in:

XP 32Bit: HKEY_LOCAL_MACHINE\SOFTWARE\PandeGroup\Folding@home

XP 64Bit and Vista: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\PandeGroup\Folding@home

NOTE: With Windows Vista, the key can also be stored in this location, if you have installed the SMP client. This one takes precedence: HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\Wow6432Node\PandeGroup\Folding@home


 * Export that key. (Be careful not to make any changes to your registry.) (If you find the key in a different location, that means F@H was installed by a user without administrative privileges and importing that key will not work. Delete that key and start F@H again as a user with administrative privileges. F@H will then generate a key in the correct location and you will be able to use it on the off-line computers.)


 * Copy that file to the other computers and import that key by double-clicking on the file. This part only needs to be done once per off-line machine.


 * While still on the internet-connected machine, start each client B and C and set the appropriate config settings. Be sure to say YES to Ask Before Connect.  In the Advanced section, set a unique machineID for each client. (1-8). Presumably machine A is still set to the default value of 1 and B and C can be 2 and 3. Each client will connect, download a WU, and begin processing that work.  Stop clients B and C with a CTRL-C.


 * Transfer an exact copy of folder B and shortcut B to machine B and do the same for C. Start each client with that shortcut.


 * WATCH each client and harvest the results when it indicates it is finished by asking for a network connection. Depending on the speed of the machine and the particular protein, that may be a few hours or a week or so.


 * When the client asks for a network connection, do not say OK, but change to the regular FAH-console window and enter CTRL-C to stop the client.


 * Move directory B from machine B back to directory B on machine A.
 * On machine A, create a new set of shortcuts: B-sendall and C-sendall which are copies of shortcuts B and C but which have the command line tags -local -send all added to the target (outside of the quote marks if there are any, and separated by spaces).


 * Start B-sendall, say OK to network, and wait for the results to upload.


 * Start the shortcut B and wait for new WUs to be downloaded, stop the client with CTRL-C again.


 * Move the new work back to machine B and restart the client on machine B.


 * repeat as necessary.

To simplify the procedure, I've suggested that you need to move the entire directory back and forth. Certainly that must be done initially and you may eventually find it needs you to copy a new core, but most of the time it is enough to move queue.dat and the entire WORK folder.

NOTE DO NOT attempt to upload completed units over and over. It will not do you any good. Once they have been sent in, and recorded by the stats server, you WILL NOT get credit for uploading any units a second time. You would only be wasting your time, and bandwidth. When you move the WORK folder between computers, you should empty the receiving folder before the new contents are inserted.

NOTE2 DO NOT attempt to download new work until the previous WU is ready to upload. This will lead to duplicated assignments and you only get credit for the work once.

NOTE3 Due to security enhancements in the assignment servers and work servers (2nd half 2009), completed work units must be uploaded using the same System ID and Machine ID as the fah client to which that work unit was assigned. That does not necessarily require the WU to be sent back from the exact same computer and fah installation, but additional System ID and Machine ID tracking and management will be required to assure completed work units can be uploaded, accepted, and credited. I.E. You will need to export the Registry ID to the other computer that will upload the WU, or move the WU back to the exact same location before uploading.

Different OSes
If there is a compatibility layer on the network machine's OS for the non-networked machine's OS, then you can mix OSes. For example, you have a no-net Windows machine and a has-net Linux machine with wine installed. Some details of this particular set up follow. Wine should be able to be set up on a Mac as well. [www.cygwin.com/ Cygwin] should work for no-net Linux and has-net Windows. There are other more elaborate solutions with virtualization engines like [www.vmware.com VMware].

no-net Windows, has-net Linux
Copy the registry keys as above. You can edit the Wine registry the same way as you edit the Windows registry. regedit The only extra complication is that you must copy the completed WUs to a directory visible to Wine (not all are, you set up such directories with the winecfg command). Then to upload the WUs, simply prefix the command with 'wine': wine FAH502-Console.exe -send all -local