[[!meta title="Smartphone"]]

[[!toc levels=4]]

Objetivo
--------

* Ter um smartphone disponível e funcional sempre que preciso.
* Reduzindo ao máximo as perdas de privacidade e segurança.
* Estabilidade de longo prazo: escolhas de hardware, software e configuração duráveis.

Sistema escolhido
-----------------

Para este estudo, o sistema escolhido foi o [LineageOS](https://lineageos.org).

### Prós

* Código mais aberto.
* Risco menor de backdoors.
* Google Apps não-mandatório.

### Contras

* Menor base de aplicativos.
* Atualizações de segurança mais lentas.
* Ainda dependente de um ecossistema tecnotóxico.
* No caso de root no dispositivo, há redução de segurança.

Modelo escolhido
----------------

Para este estudo, o modelo escolhido foi o Moto E.

### Prós

* Custo relativamente baixo.
* Bom suporte ao LineageOS.

### Contras

* Sem flash.
* Bateria não-removível.
* Jack de áudio não é compatível com qualquer conector.

Checklist
---------

Iterador básico para a manutenção do smartphone:

* Destravamento do bootloader.
* Instalação ou atualização do recovery.
* Instalação do LineageOS.
* [Criptografia do armazenamento interno](https://source.android.com/security/encryption/full-disk).
* Configuração de senha e intervalo de travamento (após cifrar o armazenamento).
* Ferramentas de desenvolvimento habilitadas.
* Restaurar backups e configurações, caso existam.
* Configurações de aparência e comportamento.
* Apps:
    * VPN.
    * Editor.
    * [Signal APK](https://signal.org/android/apk/).
    * Barcode Scanner.
    * [Scuttloid](https://f-droid.org/packages/gr.ndre.scuttloid/).
    * [MPDroid](https://f-droid.org/packages/com.namelessdev.mpdroid/).
* Teste e correções.
* Realização de backups.
* Upgrade:
    * Atualizar ROM.
    * Atualizar apps via F-Droid.
    * Atualizar apks manualmente.
    * Alguns apps podem ser auto-autualizáveis.

Detalhes a seguir sobre algumas das etapas acima elencadas.

Destravamento
-------------

Este procedimento é específico para alguns aparelhos para que o bootloader
possa ser desbloqueado, como é o caso do modelo escolhido:

    # stretch onwards: sudo apt install adb fastboot
    sudo apt install android-tools-adb android-tools-fastboot

    1 20160410 14:55:06 user@box:~ $ adb reboot bootloader
    0 20160410 14:55:22 user@box:~ $ fastboot devices
    0012711246      fastboot
    0 20160410 14:55:40 user@box:~ $ fastboot oem get_unlock_data
    ...
    (bootloader) [...]
    OKAY [  0.235s]
    finished. total time: 0.235s
    0 20160410 14:56:01 user@box:~ $ fastboot oem unlock $code
    ...
    (bootloader) Check 'Allow OEM Unlock' in Developer Options.
    FAILED (remote failure)
    finished. total time: 0.007s
    1 20160410 15:30:32 user@box:~ $ fastboot devices
    0012711246      fastboot
    0 20160410 15:30:49 user@box:~ $ 

Recovery
--------

Usando o [TWRP para Moto E surnia](https://twrp.me/devices/motorolamotoelte.html):

    adb reboot bootloader
    fastboot flash recovery recovery.img
    fastboot reboot

Instalação
----------

Detalhes de instalação já são bem cobertos pela documentação do LineageOS,
incluindo a ativação do ADB:

* [Update and build preparation](http://lineageos.org/Update-and-Build-Prep/).
* [Moto E surnia builds](https://download.lineageos.org/surnia).
* [Verifying builds](http://wiki.lineageos.org/verifying-builds.html).
* [Info about surnia | LineageOS Wiki](https://wiki.lineageos.org/devices/surnia).
* [Install LineageOS on surnia | LineageOS Wiki](https://wiki.lineageos.org/devices/surnia/install).
* [Using ADB and fastboot | LineageOS Wiki](https://wiki.lineageos.org/adb_fastboot_guide.html).

Backups
-------

Usaremos o [adb-sync](https://github.com/google/adb-sync) e o [adb-export](https://github.com/snatik/adb-export) através do script [android-backup](https://git.fluxo.info/scripts/tree/android-backup).

Restauro
--------

A partir de um sistema recém-instalado:

    # Base remota
    base="/sdcard"

    # Arquivos: cópia completa
    #for file in `ls files`; do
    #  adb push files/$file $base/$file
    #done

    # Arquivos: cópia incremental
    for file in `ls files`; do
      adb-sync --delete files/$file/ $base/$file/
    done

    # Configurações
    adb restore backup.ab

## Subir músicas

Podem ser enviadas a partir de acervos compatíveis com o [playlister](https://git.fluxo.info/playlister/about/):

    playlist-copy <playlist> adb

Dicas
-----

## Escondendo arquivos do mídia player

    touch /storage/emulated/0/SomeApp/Media/.nomedia

Via [Hide Certain Files in Android Music Player (or Photo Gallery)](http://www.guidingtech.com/15563/hide-certain-files-android-music-player-photo-gallery/).

## Checagem de fingerprint do ADB

    awk '{print $1}' < ~/.android/adbkey.pub | openssl base64 -A -d -a | openssl md5 -c | \
    awk '{print $2}' | tr '[:lower:]' '[:upper:]'

Via [Validating the Android 4.2.2 RSA fingerprint](https://shred.zone/cilla/page/374/validating-the-android-422-rsa-fingerprint.html).

## Instalação manual de apps

Checagem de assinatura:

    apksigner verify --print-certs app.apk

Instalação:

    adb install app.apk

## Movendo arquivos do sdcard para o armazenamento interno

    adb shell
    cd /storage/emulated/0
    mv /storage/1FAC-34C3/Music/* Music/

Alternativas
------------

* [postmarketOS](https://www.postmarketos.org/).
* [Replicant](https://www.replicant.us/).
* [Neo900](http://neo900.org/).

Referências
-----------

* Aplicativos interessantes: snoopsnitch.
* [Modificações de hardware](https://web.archive.org/web/20160402005909/https://people.torproject.org/~ioerror/skunkworks/moto_e/).
* [List of custom android firmware](https://en.wikipedia.org/wiki/List_of_custom_Android_firmware).
* [Fossdroid: Free and open source Android apps](https://fossdroid.com/).
* Backups:
    * [Android: How to Backup Contacts and SMS Messages | chombium's blog](https://chombium.wordpress.com/2012/09/30/android-how-to-backup-contacts-and-sms-messages/), but requires root on recent androids.
    * [Does adb backup include contacts? - Android Enthusiasts Stack Exchange](https://android.stackexchange.com/questions/85269/does-adb-backup-include-contacts).
    * [GitHub - stachre/dump-contacts2db: Bash script that dumps contacts from an Android contacts2.db to stdout in vCard format. Especially helpful when the device is inop or missing, with only a contacts2.db file available (from backup, etc.) to migrate contac](https://github.com/stachre/dump-contacts2db).
    * [Full Phone Backup without Unlock or … | Samsung Galaxy Nexus](https://forum.xda-developers.com/galaxy-nexus/general/guide-phone-backup-unlock-root-t1420351).
    * [How to use ADB backup to back up your unrooted phone - Pocketables](http://www.pocketables.com/2012/09/how-to-use-adb-backup-to-back-up-your-unrooted-phone.html).