Mise à jour : 27/01/2025


Introduction


À l'aide d'un smartphone Android il est possible de récupérer certaines données techniques caractérisant les réseaux 2G/3G/4G/5G ; notamment des identifiants de la cellule que le téléphone accroche et des informations sur la qualité de la récéption radio (liaison descendante uniquement), le tout sans avoir à rooter l'appareil.
En 4G (ou 5G-NSA*), la lecture de l'API radio Android nous donne, entre autres, le Tracking Area Code dit TAC et le Long Cell ID dit LCID, également désigné par CI, ECI (4G) ou NCI (5G). En divisant le LCID par 256 on obtient le Evolved Node B abrégé eNB ou eNode B, eNB ID, etc... et son associé, le Cell ID abrégé CID.


Le TAC désigne un secteur (plaque) géographique qui regroupe un certain nombre d'antennes. La taille de ces plaques varie selon la densité (plus grandes dans les zones rurales) et selon les opérateurs. Leur périmètre et la numérotation est susceptible d'être mise à jour au fil du temps.

L'eNode B, lui, désigne la station de base. On peut donc dire que 1 eNB = 1 antenne (le plus souvent**) et cette particularité facilite leur indexation.

plaques LAC/TAC

Le CID correspond à un secteur et à une fréquence particulière. Leur numérotation est comprise entre 0 et 255 et est spécifique à chaque opérateur. Une antenne tri-secteurs et qui émet sur 2 fréquences (4G+) possède donc 6 CID différents rattachés au même eNB. D'un point de vue "chasse", ce sont ces CID que vous allez capturer à l'aide d'une application de monitoring comme eNB Analytics, RNC Mobile ou NetMonster. Une fois enregistrés par l'application, on appelle ça des LOG.


Les sites radio peuvent émettre en direction de 1 à 4 secteurs physiques. La configuration tri-secteurs est la plus fréquemment rencontrée et la plus facile à identifier. La configuration quadri-secteurs (généralement rencontrée sur des monuments religieux) est particulière car un eNB ne supporte que 3 secteurs, donc soit 2 secteurs partagent le même CID, soit le 4e secteur utilise un autre eNB.
Les antennes mono-secteurs sont souvent omnidirectionnelles (inclut les pico-cells et femto-cells). L'inconvénient de ces dernières, c'est qu'à partir d'un CID capté on ne peut pas déduire la direction de la source, mais en contrepartie leur portée est limitée, ce qui diminue la zone de recherche.

À noter que les antennes qui émettent avec une puissance inférieure à 5 Watt ne nécessitent pas de déclaration auprès de l'ANFR et sont donc probablement absentes de leur base de données que nous utilisons.

antenne tri-secteurs

PCI
Le PCI Physical Cell Identifier permet d'identifier un eNB de manière unique parmi les différents signaux reçus ; car depuis la 3G, les antennes voisines peuvent émettre sur une même fréquence sans brouiller le signal. Sa valeur - entre 0 et 503 (4G) ou 0 à 1007 (5G) - n'a pas de signification concrète pour nous. En revanche, et en fonction des opérateurs/situation, les différentes porteuses d'un même secteur peuvent avoir le même PCI. Cette information est alors utilisée par l'appli pour détecter la 4G+, mais ne donne aucune garantie qu'il y ait éffectivement agrégation.
Il permet aussi de déterminer les antennes voisines captées avec une fiabilité correcte mais pas à 100%. Et attention car sa valeur n'est pas fixe dans le temps : l'opérateur peut régulièrement procéder à une renumérotation, notamment lors de l'ajout d'une nouvelle antenne dans le secteur.

* 5G-NSA
La 5G "Non-Standalone" déployée à partir de fin 2020 repose entièrement sur le réseau 4G car le téléphone est en réalité connecté en 4G. La 5G correspond à une porteuse secondaire qui s'agrège aux autres. En clair c'est une super 4G+. D'un point de vue indexation, seule la cellule 4G princpale est visible dans les données de l'API radio d'Android.

** Stations bi-eNB
Certaines antennes émettent sur 2 eNB distincts en même temps. Par exemple 1 eNB qui émet les fréquences 800/1800/2600 MHz et un autre pour le 2100 MHz (ou alors 800/2600 et 1800/2100, etc...). On rencontre ces situations notamment chez SFR et Bouygues et même sur des antennes zone blanche, notamment parmi celles déployées par Orange (eNB distinct entre 700 et 800 MHz).
Chez Free, la gestion bi-eNB est transparente au niveau de l'application ; vu que les 2 eNB sont prédictibles.

Comment contribuer


Le projet utilise les données de l'application eNB Analytics (si elles ont été partagées par l'utilisateur), ainsi que les données des bases Mozilla Location Service et OpenCellID, dont l'alimentation se fait via l'appli Tower Collector. Donc pour que ça fonctionne, il faut que ces bases soient régulièrement alimentées pour avoir des données le plus à jour que possible.

Il faudra un smartphone avec Android 8.0 minimum et éviter la gamme Pixel. Un petit forfait ou SIM prépayée conviennent, puisqu'on peut chasser sans activer les données mobiles. L'envoi des données se fera ultérieurement avec une connexion WIFI.


Sur le terrain

C'est simple, il suffit de lancer les applis avant de faire des trajets (à pied, vélo, voiture, train...) car c'est en se déplaçant que l'on va accrocher des cellules.
•  eNB Analytics : l'enregistrement démarre dès le 1er lancement,
•  Tower Collector : il faut appuyer sur le bouton enregistrement pour démarrer.

Une astuce consiste à varier les itinéraires afin de créer un éffet de maillage. S'approcher d'une l'antenne pour capturer des données pertinentes. Les sites marqués comme "non identifiés" ou alors celles qui sont très en hauteur - et donc portent loin - sont une cible de choix ; les autres étant généralement plus faciles à identifier.

L'idéal c'est de faire le tour du pylône dans rayon inférieur à 500 mètres en vérifiant sur le monitoring que le niveau de réception est fort (RSRP supérieur à -85 dBm) et de voir changer les CID et n° de secteurs au fur et à mesure, car il est tout à fait possible de capter une antenne voisine. Un passage en mode avion peut permettre de décrocher d'une antenne voisine et revenir sur le site à proximité.

Remarque : selon les paramétrages et/ou permissions et/ou modèle de téléphone et/ou version d'Android, il est possible que l'appli n'a plus accès à la géolocalisation - voire l'enregistrement qui se met en pause - dès que l'appli passe en arrière-plan ou que l'écran est éteint. Dans la mesure du possible il est préférable de chasser avec l'écran allumé. Les cellules sans géolocalisation ne sont pas exploitables.
Le mode voiture garde l'écran allumé. Idem pour le Moniteur et la Carte, après avoir activé l'option Écran toujours actif dans les paramètres.

Remarque : Inutile de s'embêter à cartographier le même trajet tous les jours. En revanche, lancer l'enregistrement quand on fait un trajet inhabituel va être nettement plus éfficace.


Une fois la chasse terminée

Il faut partager vos données car l'envoi en ligne ne se fait pas automatiquement :
•  eNB Analytics : Aller dans la fonction Export/Partage, vérifier que "eNB-Analytics" est coché puis envoyer via le bouton Cloud,
•  Tower Collector : Arrêter l'enregistrement via le bouton Stop, puis bouton Partage, vérifier que les cases "MLS", "OCID" et "Anonymement" sont cochées, et enfin "transmettre".


S'il fallait choisir qu'une seule appli

Vous aimeriez contribuer mais sans trop s'embêter au niveau des applis ? Dans ce cas utilisez seulement eNB Analytics. Elle permet, entre autres, de partager la fréquence ainsi que la force du signal reçu à l'endroit où le log a été capturé ; ce qu'il n'est pas possible de connaitre via les autres bases. De plus, il arrive parfois que des exports vers MLS ne soient pas pris en compte et OpenCellID ne prend pas en charge le PCI.

Méthodologie


Pour chaque identifiant d'antenne (eNB), des coordonnées géographiques vont être calculées, ce qui donnera le point moyen. Pour ce faire, on utilise soit des données issues de la base Mozilla Location Service (algorithme EA/EA+) ou les CID géolocalisés que vous avez capturés avec l'application (algorithme L!). Ensuite on recherche les 2 antennes qui sont les plus proches. Pourquoi 2 ? parce que la 1ère est généralement la bonne hypothèse et le fait de comparer les distances avec la 2ème permet de donner une appréciation sur la qualité du résultat.


Pour limiter les erreurs, l'algorithme génère des indicateurs :

■ La distance, en mètres, entre le point moyen et l'antenne la plus proche est désignée par δ (delta) ou Dist1 dans l'open data. Une valeur anormalement élevée diminue la pertinence du résultat.

■ Le ratio entre la distance jusqu'a la 2e antenne et la distance jusqu'a la 1ère (δ) antenne est désigné par ou ratio. Une valeur proche de 1 signifie que les 2 antennes les plus proches sont à la même distance du point moyen et donc qu'il est impossible de valider le résultat. A partir de 3 ou plus, le résultat est plutôt fiable.

■ La dispersion est désignée par ρ (rhô). Doit être supérieur à 0,8. Une valeur à 0,6 ou moins correspond à une antenne qui porte loin et donc qu'il est impossible d'avoir un résultat fiable.


Important : les critères et ρ doivent êtres corrects tous le 2 pour valider un résultat.


explication sur l'identification d'une antenne avec l'algorithme EA

Malgré les indicateurs et autres mécanismes présents dans l'algorithme, subsistent un certain nombre d'erreurs qui passent à travers les mailles du filet ; à moins de faire un traitement manuel au cas par cas, ce qui est ni l'objectif de ce projet, ni faisable sans consommer trop de temps.

La base MLS


Note Avril 2024 : la base MLS est officiellement arrêtée. Il est néanmoins possible d'alimenter la base OpenCellID avec Tower Collector dont le fonctionnement est similaire.


a. Généralités

La base open source Mozilla Location Service est le résultat de la collecte d'identifiants radio 2G/3G/4G afin de pouvoir créer un système de géolocalisaton à destination d'appareils mobile sans utiliser le GPS (plus économe en batterie et fonctionne en indoor). Y contribuer permettra à de nombreux projets et utilisateurs d’en profiter. Les zones urbaines denses et les gros axes routiers sont en général bien couverts, une idée serait de prioriser vos contributions lors de déplacements dans des endroits moins fréquentés ou alors dans le cas d’une antenne récemment mise en route.


b. Contribuer

L'application dédiée Mozilla Stumbler est abandonnée, mais il existe Tower Collector disponible sur le Play Store ou F-Droid qui bénéficie d'un excellent suivi de la part de son développeur.

Début 2025 : la base BeaconDB fait son apparition. Il est possible de l'alimenter avec Tower Collector et NeoStumbler Nous n'utilisons pas (encore) les données de cette base. A suivre.


Tower Collector

Cette application open source permet d'alimenter de manière active la base OpenCellId (et aussi BeaconDB depuis fin 2024 suite à la disparition de MLS). Pour OpenCellId, on peut utiliser une clé d'API si vous en avez une (demande gratuite via leur site) ou alors activer l'option "Contribution anonyme" disponible dans les paramètres d'envoi.

Son utilisation est simple et l'interface a récemment été traduite en français. Il faut juste penser à envoyer les données une fois la session d'enregistrement terminée, car l'upload ne se fait pas automatiquement.


l'application Tower Collector en bref

Il est possible de démarrer et arrêter Tower Collector automatiquement en même temps que l'application eNB Analytics : dans les paramètres de cette dernière il suffit d'activer le "couplage Tower Collector".


5G-SA "Standalone"


Contrairement à la 5G NSA qui s'appuie sur la 4G, la 5G-SA est une vraie connexion autonome au réseau 5G. Le déploiement pour le grand public n'est pas prévu en France avant 2023 2024.
Le gNB Next Generation Node B est l'équivalent du eNB en 4G. Il peut être encodé entre 22 et 32 bit dans le NCI, ce qui donne 11 possibilités de calcul (en 4G c'est toujours 28 bit). Le choix revient à l'opérateur en fonction de sa stratégie de déploiement. Pour rester simple, disons que plus grand est le nombre de bit sur lequels le gNB est codé, moins il aura de CID dédiés disponibles. Exemple : à 32 bit, seuls 16 CID seront disponibles par gNB.

Pour l'heure, les opérateurs semblent privilégier le calcul du gNB sur 22 bit.