Documentation

<- Back to documentation

CopperheadOS usage guide

This is a placeholder for ongoing work on a CopperheadOS usage guide, covering how to make use of the security features, details on properly leveraging the existing user-facing Android security features and alternatives to Google Play Services.

App recommendations

Messaging

Recommended messaging app preference list:

  1. Conversations + OMEMO
  2. Conversations + OTR to communicate with users on XMPP clients without OMEMO
  3. Noise to communicate with Signal users
  4. Silence encrypted SMS to communicate with Android users without data connections
  5. Other apps with end-to-end encryption if you can’t convince contacts to install one of the above (Wire, WhatsApp, etc.)
  6. Apps with transport encryption without end-to-end encryption
  7. Unencrypted SMS or apps without transport encryption

The recommended messaging client is Conversations. It’s an XMPP client interoperable with other XMPP clients and servers. It supports end-to-end encryption via robust cryptography (OMEMO) based on the Signal protocol along with OTR and PGP for backwards compatibility with lesser clients. It’s one of very few apps with efficient push messaging without needing Google Cloud Messaging (GCM). It also supports end-to-end encrypted group chat.

Conversations has an official XMPP server with all of the necessary extensions for full functionality. It costs 8 EUR / year after the 6 month free trial. Using the official server to support the project is recommended, but there are other options without a subscription fee. We don’t currently have a recommendation about which ones to prefer, beyond sticking to those with support for every XEP other than XEP-0357 (which is for GCM, rather than the standard push mechanism).

Signal

Noise, a fork of Signal without the hard dependency on Google Cloud Messaging is available in the Copperhead F-Droid repository. It’s recommended to prefer other messengers until support for running without GCM lands upstream in Signal, but an option is available if you really need to be able to communicate with Signal contacts. It lacks support for voice calls and isn’t optimized for low impact on battery life like Conversations.

The Copperhead F-Droid repository is enabled by default for fresh CopperheadOS installations, but can also be manually added:

Repository URL / fingerprint: https://fdroid.copperhead.co/repo?fingerprint=F0D4EB1193AD82FEB224BD1174B6FBD89A39D8ED988C9FFF2ADD0DCD1C4E271B

Note that the app builds in this repository are intended for CopperheadOS. You’re free to use them elsewhere, but the builds will end up leveraging CopperheadOS features in the future and will become incompatible with other operating systems. There’s currrently no reason to prefer Noise over Signal if you have GCM via either Play Services or microG, although the intention is for it to support using other Signal servers but we aren’t currently aware of any alternatives.

Silence

CopperheadOS replaces the AOSP Messaging app with Silence to provide support for encrypted SMS. It isn’t really recommended to prefer it over data-based encrypted messaging apps, but rather to make use of it for communicating with contacts without data connections, or for all messaging if you don’t have a data connection yourself. It makes sense to leave it as the default SMS app even if you’re using an app like Noise able to act as the default SMS client.

WhatsApp

WhatsApp works on CopperheadOS, but it isn’t currently available in a convenient way. The best way to use it is probably installing the Amazon Appstore as an apk and then installing it from there, so that you have updates for it along with the Appstore which will update itself.

We might consider trying to convince Facebook to either host an F-Droid repository or permit redistribution of it.

Maps

OsmAnd (OpenStreetMap Automated Navigation Directions) can be installed from F-Droid and provides map viewing and mobile navigation. It has the killer feature of optional support for downloading the OpenStreetMap database for chosen regions. In addition to the obvious advantage of not having a dependency on an internet connection, offline mapping offers more privacy. It’s recommended to use the offline mode if you have enough storage space to spare. Note that it’s important to configure OsmAnd to use the internal storage directory: go into the menu, then Settings, General settings, select the “Data storage folder” option, select the edit button and set it to the “Internal application memory” option.

If you really need Google Maps, you can use their web application. It’s not as nice as the mobile app but the core functionality is all there.

Advanced camera features

Install the Open Camera app from F-Droid and enable “Use Camera2 API” in the settings menu. This enables support for features like manual ISO configuration and HDR mode.

Storage

Apps have their own private storage directories and can share files with other apps using content providers. Apps can act as storage providers to provide structured requests to retrieve and store data including for the shared storage directory. Direct scoped access can also be requested for the shared storage directory (since 7.0). Unfortunately, many apps require the storage permissions for direct, full access to shared storage so it’s unwise to store sensitive data there.

In the future, CopperheadOS will offer the ability to isolate shared storage rather than toggling access. Isolated shared storage will provide an app with a dedicated shared storage directory accessible only to themselves and the built-in file manager. Ideally, apps would already use the available tools to provide this kind of functionality on their own.

File management

The built-in file manager for shared storage is accessible via Settings -> Storage -> Explore and is recommended. It will be the only app able to access isolated shared storage directories of other apps once that feature is implemented.