Serval Mesh

Peer to peer communications

The Serval Project is seeking funds to develop a mesh extender which aims to work around the limitations caused by the lack of AdHoc mode in Android. Visit the campaign website to support the cause.

N.B The app no longer asks for root by default although you can still try it in adhoc mode. Prebuilts are no longer in the source code.

This is experimental software: it may not work as advertised. It may lose or alter messages and files that it carries; it may consume a lot of space, speed and battery, and it may crash unexpectedly.

Mobile communications are useful, but depend on infrastructure that can be damaged, overwhelmed, or even absent. This app assumes zero infrastructure. The phones talk to each other using WiFi; relaying calls and messages and figuring out how to resolve numbers. In other words, it lets your phone communicate with other Android phones running Serval Mesh within WiFi range.

Requires root: No. Basic Android still doesn't allow WiFi in AdHoc mode, so the app will ask for root if you try to enable adhoc mode.

The Java/XML part is distributable under the GNU GPLv3 while the serval-dna (distributed number architecture) project is GPLv2.



Although APK downloads are available below to give you the choice, you should be aware that by installing that way you will not receive update notifications and it's a less secure way to download. We recommend that you install the F-Droid client and use that.

Download F-Droid
  • Version 0.93 (2371) - Added on 2017-06-03

    This version requires Android 2.2 or newer.

    It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.

    Download APK 11 MiB PGP Signature

    • org.servalproject.meshms.SEND_MESHMS
    • org.servalproject.rhizome.RECEIVE_FILE
    • net.commotionwireless.meshtether.ACCESS_STATE
    • net.commotionwireless.meshtether.CHANGE_STATE
    • android.permission.READ_PHONE_STATE
    • android.permission.ACCESS_WIFI_STATE
    • android.permission.CHANGE_WIFI_STATE
    • android.permission.INTERNET
    • android.permission.CHANGE_WIFI_MULTICAST_STATE
    • android.permission.BLUETOOTH
    • android.permission.BLUETOOTH_ADMIN
    • android.permission.VIBRATE
    • android.permission.MODIFY_AUDIO_SETTINGS
    • android.permission.RECORD_AUDIO
    • android.permission.PROCESS_OUTGOING_CALLS
    • android.permission.WRITE_SETTINGS
    • android.permission.RECEIVE_BOOT_COMPLETED
    • android.permission.READ_CONTACTS
    • android.permission.WRITE_CONTACTS
    • android.permission.CALL_PHONE
    • android.permission.WAKE_LOCK
    • android.permission.DISABLE_KEYGUARD
    • android.permission.READ_EXTERNAL_STORAGE
    • android.permission.WRITE_EXTERNAL_STORAGE
    • android.permission.GET_ACCOUNTS
    • android.permission.BROADCAST_STICKY
    • android.permission.AUTHENTICATE_ACCOUNTS
    • android.permission.MANAGE_ACCOUNTS
    • android.permission.READ_SYNC_SETTINGS
    • android.permission.WRITE_SYNC_SETTINGS
    • android.permission.ACCESS_NETWORK_STATE
    • android.permission.READ_PROFILE
    • android.permission.READ_CALL_LOG
    • android.permission.WRITE_CALL_LOG