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 7 minimum. 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 non plus 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 bénéfique.


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, 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" et "OCID" sont cochées, et enfin transmettre.


Pour aller plus loin

Balayer le journal de l'appli eNB Analytics et analyser les différents eNB capturés. Valider l'identification si vous êtes sûr du résultat ou laissez dans l'état au moindre doute, en attendant d'avoir de nouvelles données.
Cette étape n'est indispensable que dans le cas d'un partage vers le projet eNB Mobile car pour ce dernier, seules les cellules considérées comme identifiées dans l'appli sont envoyées. Les logs des exports vers eNB Analytics et BTRNC sont envoyées de façon brutes car elles seront re-analysées ultérieurement par les projets respectifs.
Les identications sont également pris en compte par le projet EA, mais seulement si l'analyse via les logs transmis échoue et que le support n'a pas déjà été attribué à un autre eNB.


S'il fallait choisir qu'une seule appli

Vous voulez contribuer mais sans trop vous 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


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.

A savoir : une cellule qui n’est pas mise à jour au bout de 12 mois est supprimée de la base ; c’est donc important de contribuer relativement régulièrement.


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.


Tower Collector

Cette application open source permet d'alimenter de manière active les bases MLS et OpenCellId. La contribution vers MLS est disponible immédiatement. 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".


c. Avenir

En analysant le nombre de cellules 4G présentes dans la base Mozilla Location Service (MLS) sur des bases de différentes dates, le constat est sans appel : depuis l’automne 2020 le nombre de données diminue chez tous les opérateurs (alors que le nombre d’antennes, lui, augmente). Firefox 80 (Daylight) sorti fin août 2020 a supprimé la possibilité d’alimenter la base, ce qui coïncide avec le début de la baisse.
La base MLS fonctionne selon cette règle : toute cellule qui n’est pas mise à jour durant 1 an disparaît de la base. En regardant la date de dernière mise à jour de cellules choisies au hasard, on constate que bon nombre d’entre elles n’ont plus été mises à jour depuis l’été 2020… En clair, d’ici l’été 2021, la base sera sérieusement dépouillée et donc nettement moins exploitable.


évolution du nombre de cellules dans la base Mozilla Location Service

Évolution du nombre de cellules 4G dans MLS


Dans l’immédiat rien ne change. Les cartes/bases disponibles sur le site intègrent un mécanisme qui récupère des cellules depuis des bases MLS plus anciennes. Cela fonctionnera un temps, surtout pour les antennes existantes - à condition qu'elles ne soient pas renommées -

En ce qui concerne la période démarrant mi-2021, la solution est de mettre l’accent sur l’exploitation des cellules géolocalisées capturées par les utilisateurs. Cependant deux challenges se présentent :
- La nécéssité de capturer des cellules avant d'obtenir un résultat suffisamment fiable, ce qui à mon avis ne répond pas aux attentes des utilisateurs. Il ne sera donc plus possible d'avoir des infos sans contribution active.
- Être confronté aux restrictions grandissantes en ce qui concerne la géolocalisation et le fonctionnement en arrière-plan d'une application Android.


évolution du nombre de cellules dans la base Mozilla Location Service

Évolution & composition de la base MLS utilisée par le projet

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.
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.