Serval Mesh
work around the limitations caused by the lack of AdHoc mode in Android. Visit
the campaign website to 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.
Versions
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-
arm64-v8a
armeabi
armeabi-v7a
mips
mips64
x86
x86_64
This version requires Android 2.2 or newer.
It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.
Permissions
-
view network connectionsAllows the app to view information about network connections such as which networks exist and are connected.
-
view Wi-Fi connectionsAllows the app to view information about Wi-Fi networking, such as whether Wi-Fi is enabled and name of connected Wi-Fi devices.
-
android.permission.AUTHENTICATE_ACCOUNTS
-
pair with Bluetooth devicesAllows the app to view the configuration of the Bluetooth on the phone, and to make and accept connections with paired devices.
-
access Bluetooth settingsAllows the app to configure the local Bluetooth phone, and to discover and pair with remote devices.
-
send sticky broadcastAllows the app to send sticky broadcasts, which remain after the broadcast ends. Excessive use may make the phone slow or unstable by causing it to use too much memory.
-
directly call phone numbersAllows the app to call phone numbers without your intervention. This may result in unexpected charges or calls. Note that this doesn't allow the app to call emergency numbers. Malicious apps may cost you money by making calls without your confirmation.
-
allow Wi-Fi Multicast receptionAllows the app to receive packets sent to all devices on a Wi-Fi network using multicast addresses, not just your phone. It uses more power than the non-multicast mode.
-
connect and disconnect from Wi-FiAllows the app to connect to and disconnect from Wi-Fi access points and to make changes to device configuration for Wi-Fi networks.
-
disable your screen lockAllows the app to disable the keylock and any associated password security. For example, the phone disables the keylock when receiving an incoming phone call, then re-enables the keylock when the call is finished.
-
find accounts on the deviceAllows the app to get the list of accounts known by the phone. This may include any accounts created by applications you have installed.
-
have full network accessAllows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
-
android.permission.MANAGE_ACCOUNTS
-
change your audio settingsAllows the app to modify global audio settings such as volume and which speaker is used for output.
-
reroute outgoing callsAllows the app to see the number being dialed during an outgoing call with the option to redirect the call to a different number or abort the call altogether.
-
read call logThis app can read your call history.
-
read your contactsAllows the app to read data about your contacts stored on your phone. Apps will also have access to the accounts on your phone that have created contacts. This may include accounts created by apps you have installed. This permission allows apps to save your contact data, and malicious apps may share contact data without your knowledge.
-
read the contents of your shared storageAllows the app to read the contents of your shared storage.
-
read phone status and identityAllows the app to access the phone features of the device. This permission allows the app to determine the phone number and device IDs, whether a call is active, and the remote number connected by a call.
-
android.permission.READ_PROFILE
-
read sync settingsAllows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.
-
run at startupAllows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
-
record audioThis app can record audio using the microphone while the app is in use.
-
control vibrationAllows the app to control the vibrator.
-
prevent phone from sleepingAllows the app to prevent the phone from going to sleep.
-
write call logAllows the app to modify your phone's call log, including data about incoming and outgoing calls. Malicious apps may use this to erase or modify your call log.
-
modify your contactsAllows the app to modify the data about your contacts stored on your phone. This permission allows apps to delete contact data.
-
modify or delete the contents of your shared storageAllows the app to write the contents of your shared storage.
-
modify system settingsAllows the app to modify the system's settings data. Malicious apps may corrupt your system's configuration.
-
toggle sync on and offAllows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.
-
net.commotionwireless.meshtether.ACCESS_STATE
-
net.commotionwireless.meshtether.CHANGE_STATE
-
org.servalproject.meshms.SEND_MESHMS
-
org.servalproject.rhizome.RECEIVE_FILE
Download APK 11 MiB PGP Signature | Build Log
-
-
armeabi
This version requires Android 2.2 or newer.
It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.
Permissions
-
view network connectionsAllows the app to view information about network connections such as which networks exist and are connected.
-
view Wi-Fi connectionsAllows the app to view information about Wi-Fi networking, such as whether Wi-Fi is enabled and name of connected Wi-Fi devices.
-
android.permission.AUTHENTICATE_ACCOUNTS
-
pair with Bluetooth devicesAllows the app to view the configuration of the Bluetooth on the phone, and to make and accept connections with paired devices.
-
access Bluetooth settingsAllows the app to configure the local Bluetooth phone, and to discover and pair with remote devices.
-
send sticky broadcastAllows the app to send sticky broadcasts, which remain after the broadcast ends. Excessive use may make the phone slow or unstable by causing it to use too much memory.
-
directly call phone numbersAllows the app to call phone numbers without your intervention. This may result in unexpected charges or calls. Note that this doesn't allow the app to call emergency numbers. Malicious apps may cost you money by making calls without your confirmation.
-
allow Wi-Fi Multicast receptionAllows the app to receive packets sent to all devices on a Wi-Fi network using multicast addresses, not just your phone. It uses more power than the non-multicast mode.
-
connect and disconnect from Wi-FiAllows the app to connect to and disconnect from Wi-Fi access points and to make changes to device configuration for Wi-Fi networks.
-
disable your screen lockAllows the app to disable the keylock and any associated password security. For example, the phone disables the keylock when receiving an incoming phone call, then re-enables the keylock when the call is finished.
-
find accounts on the deviceAllows the app to get the list of accounts known by the phone. This may include any accounts created by applications you have installed.
-
have full network accessAllows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
-
android.permission.MANAGE_ACCOUNTS
-
change your audio settingsAllows the app to modify global audio settings such as volume and which speaker is used for output.
-
reroute outgoing callsAllows the app to see the number being dialed during an outgoing call with the option to redirect the call to a different number or abort the call altogether.
-
read call logThis app can read your call history.
-
read your contactsAllows the app to read data about your contacts stored on your phone. Apps will also have access to the accounts on your phone that have created contacts. This may include accounts created by apps you have installed. This permission allows apps to save your contact data, and malicious apps may share contact data without your knowledge.
-
read the contents of your shared storageAllows the app to read the contents of your shared storage.
-
read phone status and identityAllows the app to access the phone features of the device. This permission allows the app to determine the phone number and device IDs, whether a call is active, and the remote number connected by a call.
-
android.permission.READ_PROFILE
-
read sync settingsAllows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.
-
run at startupAllows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
-
record audioThis app can record audio using the microphone while the app is in use.
-
control vibrationAllows the app to control the vibrator.
-
prevent phone from sleepingAllows the app to prevent the phone from going to sleep.
-
write call logAllows the app to modify your phone's call log, including data about incoming and outgoing calls. Malicious apps may use this to erase or modify your call log.
-
modify your contactsAllows the app to modify the data about your contacts stored on your phone. This permission allows apps to delete contact data.
-
modify or delete the contents of your shared storageAllows the app to write the contents of your shared storage.
-
modify system settingsAllows the app to modify the system's settings data. Malicious apps may corrupt your system's configuration.
-
toggle sync on and offAllows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.
-
org.servalproject.meshms.SEND_MESHMS
-
org.servalproject.rhizome.RECEIVE_FILE
Download APK 1.8 MiB PGP Signature | Build Log
-
-
armeabi
This version requires Android 2.2 or newer.
It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.
Permissions
-
view network connectionsAllows the app to view information about network connections such as which networks exist and are connected.
-
view Wi-Fi connectionsAllows the app to view information about Wi-Fi networking, such as whether Wi-Fi is enabled and name of connected Wi-Fi devices.
-
android.permission.AUTHENTICATE_ACCOUNTS
-
pair with Bluetooth devicesAllows the app to view the configuration of the Bluetooth on the phone, and to make and accept connections with paired devices.
-
access Bluetooth settingsAllows the app to configure the local Bluetooth phone, and to discover and pair with remote devices.
-
send sticky broadcastAllows the app to send sticky broadcasts, which remain after the broadcast ends. Excessive use may make the phone slow or unstable by causing it to use too much memory.
-
directly call phone numbersAllows the app to call phone numbers without your intervention. This may result in unexpected charges or calls. Note that this doesn't allow the app to call emergency numbers. Malicious apps may cost you money by making calls without your confirmation.
-
allow Wi-Fi Multicast receptionAllows the app to receive packets sent to all devices on a Wi-Fi network using multicast addresses, not just your phone. It uses more power than the non-multicast mode.
-
connect and disconnect from Wi-FiAllows the app to connect to and disconnect from Wi-Fi access points and to make changes to device configuration for Wi-Fi networks.
-
disable your screen lockAllows the app to disable the keylock and any associated password security. For example, the phone disables the keylock when receiving an incoming phone call, then re-enables the keylock when the call is finished.
-
find accounts on the deviceAllows the app to get the list of accounts known by the phone. This may include any accounts created by applications you have installed.
-
have full network accessAllows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
-
android.permission.MANAGE_ACCOUNTS
-
change your audio settingsAllows the app to modify global audio settings such as volume and which speaker is used for output.
-
reroute outgoing callsAllows the app to see the number being dialed during an outgoing call with the option to redirect the call to a different number or abort the call altogether.
-
read call logThis app can read your call history.
-
read your contactsAllows the app to read data about your contacts stored on your phone. Apps will also have access to the accounts on your phone that have created contacts. This may include accounts created by apps you have installed. This permission allows apps to save your contact data, and malicious apps may share contact data without your knowledge.
-
read the contents of your shared storageAllows the app to read the contents of your shared storage.
-
read phone status and identityAllows the app to access the phone features of the device. This permission allows the app to determine the phone number and device IDs, whether a call is active, and the remote number connected by a call.
-
android.permission.READ_PROFILE
-
read sync settingsAllows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.
-
run at startupAllows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
-
record audioThis app can record audio using the microphone while the app is in use.
-
control vibrationAllows the app to control the vibrator.
-
prevent phone from sleepingAllows the app to prevent the phone from going to sleep.
-
write call logAllows the app to modify your phone's call log, including data about incoming and outgoing calls. Malicious apps may use this to erase or modify your call log.
-
modify your contactsAllows the app to modify the data about your contacts stored on your phone. This permission allows apps to delete contact data.
-
modify or delete the contents of your shared storageAllows the app to write the contents of your shared storage.
-
modify system settingsAllows the app to modify the system's settings data. Malicious apps may corrupt your system's configuration.
-
toggle sync on and offAllows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.
-
org.servalproject.meshms.SEND_MESHMS
-
org.servalproject.rhizome.RECEIVE_FILE
Download APK 1.8 MiB PGP Signature | Build Log
-