Serval Mesh Version 0.90 “Shiny”

Version 0.90, code named “Shiny”, of the Serval Mesh app for Android was released on January 26, 2013, succeeding release 0.08.

Download: http://developer.servalproject.org/files/Serval-0.90.apk (1.9 MiB)
Shortened URL: http://bit.ly/TAETV5

Source code

Milestones

  • Removed dependencies on 3rd party applications (Asterisk, WebSMS/SMSDroid, SIPDroid, BATMAN) for voice, text and routing services
  • Revamped user interface to give a more consistent feel to the application
  • Vastly improved stability
  • All new security architecture based on elliptic curve cryptography, with a PIN-lockable Keyring
  • New mesh network protocol providing encrypted+signed or signed-only packet delivery
  • Improved file distribution (Rhizome)
  • New Voice over Mesh Protocol (VoMP) to replace SIP+zRTP and provide encrypted calls
  • New mesh text messaging service (MeshMS)
  • Audio latency and quality suitable for demonstration
  • All software features will work on Wi-Fi networks even if Ad Hoc mode is not available
  • Integration with Android contact book to store names, mesh phone numbers (Dialled Identity (DID)) and Serval Identity (SID)

Known Issues

  • Rhizome may consume all of your SD card space
  • Rhizome transfers may degrade call quality during calls
  • MeshMS message bundles grow without limit
  • Issues of scalability have not been addressed
  • Multi-hop communications have not been thoroughly tested
  • No echo cancellation during voice calls
  • Voice codec is not bandwidth efficient
  • Joining an Ad-Hoc mesh network requires root permission
  • Joining an Ad-Hoc mesh network is not possible on some Android platforms
  • Some android platforms will not be usable even on Wi-Fi, or may drop off the network when the screen is turned off
  • No authentication process to verify the identities of other people on the network
  • Broadcast MeshMS is experimental and may be deprecated
  • Phone number lookup on the peer list is not concurrent

Permissions

The following is a list of the Android Permissions used by this release, with a brief explanation. There are some that are specifically written by us and relate only to Serval, but there are others that Android requires to allow us to utilise the phone hardware and software.

Serval Specific Permissions

  • SEND_MESHMS: Sharing files and sending MeshMS messages.
  • RECEIVE_FILE: Sharing files and receiving MeshMS messages.

Android Permissions

  • READ_PHONE_STATE: When you first setup our software, we try to obtain your real phone number so it can be registered on the mesh.
  • ACCESS_WIFI_STATE: We can use the internal wifi controls to enable communications.
  • CHANGE_WIFI_STATE: We can use the internal wifi controls to enable communications.
  • INTERNET: This permission is required for creating any network traffic.
  • CHANGE_WIFI_MULTICAST_STATE: We can use the internal wifi controls to enable communications.
  • BLUETOOTH: During a call, you may use a headset.
  • BLUETOOTH_ADMIN: During a call, you may use a headset.
  • VIBRATE: Notification of incoming calls.
  • MODIFY_AUDIO_SETTINGS: Changing the in call volume.
  • RECORD_AUDIO: For transmission to the person you are talking to.
  • PROCESS_OUTGOING_CALLS: We intercept all outgoing calls while our software is turned on to give you the option of reaching your contact via the mesh.
  • WRITE_SETTINGS: Read ringtone, volume and vibrate settings for incoming call notifications.
  • RECEIVE_BOOT_COMPLETED: Our software should automatically start when the phone is turned on, if it was still running when you switched it off.
  • READ_CONTACTS: Display the name of an incoming caller.
  • WRITE_CONTACTS: Insert incoming and outgoing call information.
  • CALL_PHONE: If you choose not to use our software, we need to place the call again.
  • WAKE_LOCK: Make sure we keep the phone awake for relaying packets.
  • DISABLE_KEYGUARD: Allow you to answer incoming calls, bypassing the normal screen unlock.
  • WRITE_EXTERNAL_STORAGE: Sharing files and sending MeshMS messages use external storage.
  • GET_ACCOUNTS: Needed to create a Serval Account on your phone.
  • BROADCAST_STICKY: We broadcast the state of adhoc wifi so our own UI and other applications can display that state.
  • AUTHENTICATE_ACCOUNTS: Needed to create a Serval Account on your phone.
  • MANAGE_ACCOUNTS: Needed to create a Serval Account on your phone.
  • READ_SYNC_SETTINGS: Needed to create a Serval Account on your phone.

Login