Volunteer Computing Help

This is a small web page to accompany a set of projects on github that all aim at somehow augmenting

of volunteer computing projects.

We use this site to communicate the extra mile (kilometer for us) that users (or project administrators) may have to go to reproduce our work or to integrate that new development in their routine setup. Developments you may be interested to follow-up are:

ARM 64bit clients for Einstein@Home

Einstein@Home is a very fine project for BOINC, accompanying its development for 15+ years. It is all about finding pairs of pulsars and gravitational waves.

These 64bit binaries for ARM exist, for both BRP and FGRP, have in the past been sent out on request per email and are likely to move here - give this new site a few days/weeks to settle. Eventually, in an ideal world, the project maintainers would rebuild or just adopt and redistribute them, though. It is yet a bit unclear if, in the longer term, by offering these binaries separately, we may be doing a disservice to the community. We will give exact instructions here how to reproduce what we came up with and then also place the binaries - please don't just run arbitrary binaries from web sites since this may pose security risks - to your computer and to the scientific mission of the project.

In the mean time consider to run the WorldCommunityGrid (www.worldcommunitygrid.org), Rosetta@Home http://boinc.bakerlab.org/rosetta/) or TN-GRID (http://gene.disi.unitn.it/test/) that already support the ARM 64bit platform.

BOINC Client for the OpenWrt Router OS

In April 2020 we prepared a boinc package for the OpenWrt operating system which lives at https://github.com/openwrt/packages/tree/master/net/boinc. The accompanying pull request was #11768. That "net/boinc" package is auto-built for the 21.02 release of OpenWrt and later.

Developments for are still ongoing. In particular there is a a nice web-interface via which routers can be configured that still needs to be brought forward.

OpenWrt we anticipate to bring new impulses for the BOINC community:

We should wait and see - and gather ideas.

Installing the BOINC package on OpenWrt

TL;DR: opkg install boinc

If the above is problematic, e.g. because of reboots, or if no binary is offered for your platform for your earlier-than-21.02 install of OpenWrt then create your own image as described on the OpenWrt documentation.

How can this work on such small devices?

Well, yes. Small routers are typically stressed for place on their flash "drive". And if there are no spare 2MB for the boinc application then the device cannot be used for BOINC. The special demands in terms of disk space and compute alike however come from the applications that BOINC first downloads from the project's server and the scientific data that the application works on. This may exceed Gigabytes and few OpenWrt devices, if any, provide that. The trick is an external drive, like an USB stick or (for some advanced devices) a SATA device, that either substitutes the current overlay device or shall be mounted at /opt/boinc. All communication between BOINC and the scientific app is performed on files within /opt/boinc. This way, the device's internal drive is protected from frequent writes.

To elucidate the technical details of the previous paragraph a bit more, hardcore OpenWrt users (or just anyone running one of their routers without any extras) will have the typical setup:

  1. Have all base packages in an unreadable compressed gibberish in the /rom partition
  2. Auto-decompress everything into RAM at boot time
  3. Overwrite anything with what is in the /overlay partition
You can write to the /overlay partition, but not to what constitutes the base. For that you would need to create a new image. The page https://openwrt.org/docs/guide-user/additional-software/extroot_configuration instructs how to use an external USB stick instead of the internal device for the overlay. That all reads more complicated than it is. But, read on.

Traditional users of Linux are confused about this all. And especially if your device is already booting from an SD card for instance, there is little motivation to fiddle around much with an external drive. But of course you can at any point. So, for those already booting from an external drive, you may want to go for one of the "combined" images (see https://downloads.openwrt.org/snapshots/targets/x86/64/) that do not have the overlay. You may still need to adjust partitions to have enough write space, which is all regular Linux and you will manage.

How can I help?

The boinc package is available as a snapshot (and in the upcoming releases) on https://downloads.openwrt.org/snapshots/packages/<yourtarget>/packages/boinc_7.16.5-1_<yourtarget>.ipk, e.g. for

Please use opkg to install that package (or whatever was backported to your version of OpenWrt) and report difficulties as an issue here so we can improve on whatever we may not be aware about.

Run it. We have partnered up with TN-GRID (who just also started a Covid-19 related extensions) that needs only about 65MB of RAM to compute. If your device is running on an ARM device then this project will distribute a scientific app to you. If you are using another device with that amount of spare RAM available then please create an issue requesting a scientific app for it.

Run it also on regular Linux/MacOS/Windows machines. Most Linux distros have a package for the client, otherwise refer to https://boinc.berkeley.edu to download a client. Rosetta@Home, TN-GRID, World Community Grid and GPUGRID are all addressing questions in molecular biology that should be worthwhile to support these days. Also consider Folding@Home, that is independent from BOINC but is also doing good stuff.

Spread the word!

What if my platform is none of the above?

Right. That is what is so special about OpenWrt. Many exotic small platforms. As of today, we only have an automated generation of the scientific app across all platforms for the TN-GRID project. For other projects you need to find the sources and compile the client yourselves or persuade the project maintainers to support OpenWrt. You may need to disguise your client in the cc_config.xml file if your platform is not yet supported. If you are an OpenWrt or general Linux professional we would like to hear from you, though. Maybe there is a way to have your platform to be official supported - this is beyond our personal control, though. To raise awareness of the platform, please consider registering the machine with the project, being supported or not:
  1. get account for the project (likely to be done already)
  2. copy account key from the project's account page
  3. attach router to project
    cd /opt/boinc
    boinccmd --project_attach PROJECTURL ACCOUNTKEY
  4. if you see tasks assigned for the computer on your account page then your machine should already be crunching. Check with the "top" utility.
If you read till here then your machine is indeed not supported.
TN-GRID

We cross-built the app for a series of platforms and offer respective packages in the apps directory. This is a 70MB package and your router by chance does not like that since this may exceed the typically scarse flash storage on the device.

Please first

  1. mount a spare drive/USB stick to /opt or /opt/boinc - BOINC will have created a folder /opt/boinc if not already existing and populate it
  2. install the boinc package which should be part of the SNAPSHOT distribution - talk to us if not
  3. download your app package to that external drive
  4. untar it, and the data tar file within it
  5. run the test scripts

If the tests are fine then continue below, otherwise please create an issue.

  1. report the platform_name stated in client_state.xml to us
  2. set up an app_info.xml describing your app

WorldCommunityGrid, Rosetta@Home

These projects distribute their scientific applications as statically linked binaries, i.e. the libc does not matter. Instead of presenting your computer with the platform that it really is, i.e. one with the musl C library, you may then override that default spec with the name your platform would have with a regular Linux and the GNU C library. Hereto, if running a 32bit ARM machine, in the BOINC data directory (/opt/boinc) create the file cc_config.xml as follows:

<cc_config>
  <options>
    <alt_platform>arm-unknown-linux-gnueabihf</alt_platform>
  </options>
</cc_config>
For other platforms, please inspect https://boinc.berkeley.edu/trac/wiki/BoincPlatforms for the preferred string to get the platform identified. For the example given, the platforms reported to the project are stated in a grep for 'platform' in the file client_state.xml:
<platform_name>arm-openwrt-linux-muslgnueabi</platform_name>
<alt_platform>arm-zynq-router-openwrt-muslgnueabi</alt_platform>
<alt_platform>arm-unknown-linux-gnueabihf</alt_platform>

Caveat:

Einstein@Home, others
No idea. We don't yet know about how large that cake of OpenWrt users is with an interest in BOINC. Other projects likely will want their share once that cake has grown enough. You may want to make a pitch for OpenWrt on the respective forum of your favorite project.