7.6 KiB
7.6 KiB
FindMyDevice (FMD) — Documentation
Alternative open source et auto-hébergeable à Google Find My Device, conçue pour fonctionner sans Google Play Services. Idéale pour GrapheneOS.
- Licence : GPLv3
- Source : gitlab.com/fmd-foss/fmd-android
- Serveur : gitlab.com/fmd-foss/fmd-server
- F-Droid : de.nulide.findmydevice
Fonctionnalités
| Fonction | Description |
|---|---|
| Localisation | GPS, cellules, ou dernière position connue |
| Sonnerie | Faire sonner le téléphone à distance |
| Verrouillage | Verrouiller l'écran avec un message personnalisé |
| Photos | Capturer une photo avec la caméra avant ou arrière |
| Audio | Enregistrer un son ambiant |
| Réseau | Voir les Wi-Fi visibles, infos cellules |
| Effacement | Réinitialisation usine à distance |
| GPS/BT/DND | Activer/désactiver le GPS, Bluetooth, Ne pas déranger |
Canaux de communication
1. SMS (fonctionne sans internet)
Envoyer un SMS au téléphone avec une commande :
fmd locate
fmd ring
fmd camera front
Modes d'authentification :
- Contacts de confiance : numéros whitelistés, pas besoin de PIN
- PIN : pour les numéros inconnus, inclure le PIN :
fmd 1234 locate - Le PIN accorde une fenêtre de 10 minutes après utilisation
2. Applications de messagerie (Telegram, WhatsApp)
Via le service d'écoute des notifications. Le PIN est obligatoire pour chaque commande :
fmd 1234 locate
fmd 1234 ring
3. FMD Server (interface web auto-hébergée)
- Carte avec position en temps réel
- Visualisation des photos capturées
- Envoi de commandes à distance
- Notifications push via ntfy/UnifiedPush
Commandes SMS complètes
| Commande | Action |
|---|---|
fmd locate |
Position GPS + cellules |
fmd locate last |
Dernière position connue |
fmd locate gps |
Position GPS uniquement |
fmd locate cell |
Position par cellules uniquement |
fmd ring |
Sonner pendant 15 secondes |
fmd ring long |
Sonner pendant 3 minutes |
fmd lock |
Verrouiller l'écran |
fmd lock ton message |
Verrouiller avec un message |
fmd camera front |
Photo avec la caméra avant |
fmd camera back |
Photo avec la caméra arrière |
fmd stats |
Infos réseau et Wi-Fi visibles |
fmd bluetooth |
Activer/désactiver le Bluetooth |
fmd gps |
Activer/désactiver le GPS |
fmd nodisturb |
Activer/désactiver Ne pas déranger |
fmd delete |
Réinitialisation usine (PIN requis + activation manuelle dans les paramètres) |
fmd help |
Afficher la liste des commandes |
Le préfixe fmd est personnalisable dans les paramètres de l'application.
Installation sur GrapheneOS
1. Installer depuis F-Droid
L'application est disponible directement dans F-Droid. Rechercher « Find My Device ».
2. Accorder les permissions via ADB
Certaines permissions ne peuvent pas être accordées depuis l'interface Android et nécessitent ADB :
# Permissions critiques
adb shell pm grant de.nulide.findmydevice android.permission.READ_SMS
adb shell pm grant de.nulide.findmydevice android.permission.RECEIVE_SMS
adb shell pm grant de.nulide.findmydevice android.permission.SEND_SMS
adb shell pm grant de.nulide.findmydevice android.permission.ACCESS_BACKGROUND_LOCATION
adb shell pm grant de.nulide.findmydevice android.permission.RECORD_AUDIO
adb shell pm grant de.nulide.findmydevice android.permission.READ_PHONE_STATE
# Permet à FMD d'activer le GPS à distance même s'il est désactivé
adb shell pm grant de.nulide.findmydevice android.permission.WRITE_SECURE_SETTINGS
3. Configurer dans l'application
- Définir un PIN dans les paramètres FMD
- Ajouter les contacts de confiance (numéros autorisés sans PIN)
- Activer l'optimisation batterie ignorée pour FMD
- Activer l'accès aux notifications (pour les commandes via Telegram/WhatsApp)
- Configurer le serveur FMD si vous utilisez l'interface web
4. Désactiver l'optimisation batterie
adb shell dumpsys deviceidle whitelist +de.nulide.findmydevice
Installation du serveur FMD
Docker (recommandé)
docker run -d \
--name fmd-server \
-p 8080:8080 \
-v fmd-data:/data \
registry.gitlab.com/fmd-foss/fmd-server:0.15.0
Docker Compose
version: "3"
services:
fmd-server:
image: registry.gitlab.com/fmd-foss/fmd-server:0.15.0
ports:
- "8080:8080"
volumes:
- fmd-data:/data
restart: unless-stopped
volumes:
fmd-data:
Construction depuis les sources
# Compiler le frontend React
cd web && npm install && npm run build
# Compiler et lancer le serveur Go
go run . serve
Sécurité
| Mécanisme | Description |
|---|---|
| Chiffrement E2E | RSA-2048 + AES-256-GCM entre le téléphone et le serveur |
| PIN | Obligatoire pour les numéros non whitelistés |
| Whitelist | Contacts de confiance sans besoin de PIN |
| Préfixe personnalisable | Remplacer fmd par un mot de votre choix pour masquer les commandes |
| Effacement distant | fmd delete nécessite un PIN ET une activation manuelle dans les paramètres |
Flux de commande typique
Téléphone perdu
│
▼
Envoyer SMS : "fmd 1234 locate"
│
▼
FMD reçoit le SMS ──► Vérifie PIN/whitelist
│
▼
Active le GPS (WRITE_SECURE_SETTINGS)
│
▼
Récupère la position
│
▼
Répond par SMS avec les coordonnées
│
▼
(optionnel) Envoie aussi au serveur FMD
Dépannage
Les commandes SMS ne fonctionnent pas
- Vérifier que
RECEIVE_SMSetSEND_SMSsont accordées - Vérifier que l'appli est exemptée de l'optimisation batterie
- Vérifier que les notifications sont activées pour FMD
La localisation ne fonctionne pas
# Vérifier les permissions
adb shell dumpsys package de.nulide.findmydevice | grep -E "LOCATION|WRITE_SECURE"
# Accorder si nécessaire
adb shell pm grant de.nulide.findmydevice android.permission.ACCESS_BACKGROUND_LOCATION
adb shell pm grant de.nulide.findmydevice android.permission.WRITE_SECURE_SETTINGS
Les photos ne se prennent pas
- Vérifier que
CAMERAest accordée - Sur GrapheneOS, vérifier que l'appli a accès aux capteurs : Paramètres → Apps → Find My Device → Capteurs
Le GPS ne s'active pas à distance
La permission WRITE_SECURE_SETTINGS est obligatoire. Sans elle, FMD ne peut pas activer le GPS quand il est éteint :
adb shell pm grant de.nulide.findmydevice android.permission.WRITE_SECURE_SETTINGS
Comparaison avec Google Find My Device
| Critère | Google FMD | FMD (open source) |
|---|---|---|
| Dépendance Google | Oui | Non |
| Fonctionne sur GrapheneOS | Non (Play Integrity requis) | Oui |
| Localisation SMS | Non | Oui |
| Photos à distance | Non | Oui |
| Serveur auto-hébergé | Non | Oui |
| Chiffrement E2E | Non documenté | Oui (RSA-256 + AES-256) |
| Effacement à distance | Oui | Oui |
| Code source | Fermé | Ouvert (GPLv3) |
| Coût | Gratuit (avec compte Google) | Gratuit |