Open Source French Drone Identification

Cher·e·s dronistes français, (This news is mostly for french people, you will find english translation at the end of the post) Edit : plus de code issue de la communauté aprés la FAQ !

Vous n’êtes pas sans savoir que l’Arrêté du 27 décembre 2019 définissant les caractéristiques techniques des dispositifs de signalement électronique et lumineux des aéronefs circulant sans personne à bord va rentrer en vigueur prochainement. Cela implique que tous les drones pesant 800 grammes ou plus au décollage doivent être équipés d’un dispositif permettant de signaler électroniquement sa présence.

Ce signalement électronique repose sur l’envoi de trames “beacon” avec un équipement Wifi en utilisant une structure et un protocole définis dans le texte de loi. La difficulté d’implémentation du signalement électronique vient de la technique d’envoi des trames.
Contrairement à certaines idées reçues, l’utilisation de la trame “beacon” ne nécessite pas de créer un point d’accès wifi sur lequel on doit se connecter pour récupérer les informations. La trame “beacon” est justement une trame qui ne nécessite pas d’appairage d’équipement Wifi. Typiquement, lorsque vous utilisez votre gestionnaire réseau pour détecter et afficher les points d’accès Wifi présents autour de vous, ce sont ces mêmes trames “beacon” qui s’affichent, indiquant les informations émises par les différents points d’accès Wifi autour de vous.

La difficulté repose donc sur les connaissances nécessaire pour pouvoir faire transmettre cette fameuse trame par votre puce Wifi.
L’encodage des informations ne présente pas de réelles difficultés pour peu qu’on sache un minimum coder.

Il existe peu de solutions actuellement sur le marché, notamment pour les budgets modestes.
C’est pourquoi nous vous proposons une solution open source que j’ai réalisé avec le soutien d’Airbot Systems afin de vous permettre de faire vous même votre module de signalement électronique pour moins de 40€ sans savoir coder, ni souder !

Quatre dépôts ont été mis en ligne :


Infos :

La librairie C++ est un simple fichier .h qui permet de faire l’encodage des informations de la bonne façon.

Le code python est un exemple de code utilisable sous Linux pour générer et envoyer des trames d’identification avec un système MAVLink (comme le simulateur d’ArduPilot). Le code python est séparé en deux. Un script permet de récupérer les informations MAVLink et d’envoyer la trame beacon. Le second script scanne les trames wifi reçu par votre ordinateur pour décoder les trames de signalement électronique drone. Ce code n’utilise que des outils standard et fonctionne sur Rasberry Pi. Vous trouverez aussi dans la documentation de ce dépôt comment utiliser un logiciel pour voir toutes les trames beacons qui sont captées par votre ordinateur.

Enfin, le dernier dépôt propose la création d’un module indépendant et autonome permettant de faire votre propre signalement électronique. La carte utilisée en exemple est une carte TTGO T-Beam que vous trouverez facilement pour moins de 40€ chez votre vendeur favoris. Privilégiiez une version 1.0 ou 1.1 de la carte si possible pour plus de performance GPS. Cette carte est basée sur une puce Wifi ESP32, bien connu des communautés de développeurs et bricoleurs, et possède un GNSS ainsi qu’un support de batterie pour compléter le tout. Nous avons réalisé une documentation sur comment programmer la carte, et pour plus de facilité, le code a été réalisé avec le framework Arduino. Il ne vous reste qu’a changer le nom de point d’accès Wifi que va créer la carte et l’ID drone, avec celui que vous a fourni AlphaTango ! (La DGAC a précisé que ce serait bientôt disponible sur leur site)
Attention, si vous ne modifiez pas les valeurs par défauts vous aurez un réseau Wifi nommé “ILLEGAL_DRONE_AP” et un ID drone : “ILLEGAL_DRONE_APPELEZ_POLICE17” …
Évidemment, ce code est portable à d’autres cartes basées sur l’ESP32. La carte TTGO T-BEAM a été choisie, car elle possède directement tout l’équipement pour être autonome pour le signalement électronique. Nous proposerons plus tard un autre exemple avec juste une puce ESP32 branché sur une carte type Pixhawk ou Cube avec ArduPilot. En combinant, les informations de l’exemple python et de l’ESP32 vous ne devriez pas avoir de mal à faire vous-même la modification pour avoir un module d’émission encore moins chère et/ou plus intégré dans votre drone.
Malheureusement, nous ne connaissons pas les protocoles utilisés par les autopilotes BetaFlight et autres et n’avons pas le temps de proposer d’implémentation d’exemple. N’hésitez pas à proposer d’autres exemples qui utilisent les protocoles LTM, MSP, etc. comme entrées de la librairie pour envoyer les bonnes données dans la trame beacon.


F.A.Q:

  • Est-ce légal : OUI !
  • Est-ce que c’est certifié : OUI ! La loi ne prévoit aucun mécanisme de certification ou de validation des données envoyées. Cette implémentation est donc conforme. Elle a été testée avec le code que propose la Gendarmerie pour la détection des trames : https://github.com/GendarmerieNationale/ReceptionInfoDrone
  • Est-ce que je dois payer pour utiliser ce code : NON ! Le code que nous proposons est en libre accès.
  • Est-ce que je peux vendre des modules basés sur ce code : OUI ! Dans le respect de la licence GPL qui impose que vous proposiez à votre acheteur un accès au code utilisé.
  • Est-ce que vous vendez des modules tout fait: NON ! Pour ma part (Pierre Kancir), je ne vends rien. Veuillez voir avec Airbot Systems ou d’autres entreprises pour avoir une carte clé en main.
  • Est-ce que je peux utiliser une autre carte avec ce code : OUI et NON. Si c’est une carte avec une puce ESP32, alors vous n’aurez simplement qu’à changer la définition des ports de votre carte pour faire marcher le tout. Avec une autre puce, la librairie C++ sera fonctionnelle, mais vous devrez faire appel aux bonnes API de votre puce Wifi pour émettre la trame beacon.
  • Qu’est-ce que je risque à voler avec l’ID par défaut ou sans signalement : veuillez relire le texte de loi, c’est marqué dedans.
    https://www.legifrance.gouv.fr/eli/arrete/2019/12/27/ECOI1934044A/jo/texte
  • Est-ce que je suis obligé d’utiliser votre librairie : NON ! Vous avez un code référence qui fonctionne, vous pouvez créer votre propre librairie et outils ou utiliser ceux d’autres personnes/entreprises.
  • Je n’ai jamais codé, est-ce que c’est dur à utiliser ? Normalement NON. Mais cela dépend de votre capacité à suivre des informations techniques. N’hésitez pas à poser des questions sur vos forums drones favoris, voir vous déplacer sur un terrain de modélisme ou Fablab pour qu’on vous montre comment faire !

Pierre Kancir (Hivebotics)
Julien Queffélec (Airbot Systems)

Edit : liens vers des logiciels dérivés fait par la communauté :

========================
English version

As you may be aware, french law will soon request that all UAVs weighing 800 grams or more at takeoff must be equipped with a device that allows to electronically signal its presence.

This electronic signalling is based on the sending of “beacon” frames with Wifi equipment using a structure and protocol defined in the text of the law. The difficulty in implementing electronic reporting lies in the technique of sending the frames.
Contrary to some preconceived ideas, the use of the “beacon” frame does not require the creation of a wifi access point to which one must connect to retrieve the information. The “beacon” frame is precisely a frame that does not require the pairing of Wifi equipment. Typically, when you use your network manager to detect and display the Wifi access points present around you, it is these same “beacon” frames that are displayed, indicating the information emitted by the different Wifi access points around you.

The difficulty is therefore based on the knowledge necessary to be able to transmit this famous frame by your Wifi chip.
The encoding of the information does not present any real difficulties as long as you know how to encode it.

There are few solutions currently on the market, especially for modest budgets.
That’s why we propose you an open source solution that I realized with the support of Airbot Systems in order to allow you to make yourself your electronic signalling module for less than 40€ without knowing how to code or solder!

Four repositories have been put online :


Info :

The C++ library is a simple .h file that allows you to encode the information in the right way.

The python code is an example of code that can be used under Linux to generate and send identification frames with a MAVLink system (like the ArduPilot simulator). The python code is separated in two. A script allows to retrieve the MAVLink information and to send the beacon frame. The second script scans the wifi frames received by your computer to decode the drone electronic signaling frames. This code uses only standard tools and works on Rasberry Pi. You will also find in the documentation of this repository how to use a software to see all the beacon frames that are captured by your computer.

Finally, the last repository proposes the creation of an independent and autonomous module allowing you to make your own electronic report. The card used as an example is a TTGO T-Beam board that you can easily find for less than 40€ at your favorite vendor. Prefer a version 1.0 or 1.1 of the board if possible for more GPS performance. This card is based on a Wifi ESP32 chip, well known to the developer and do-it-yourself communities, and has a GNSS and battery support to complete the package. We made a documentation on how to program the card, and for ease of use, the code was made with the Arduino framework. All you have to do is to change the name of the Wifi access point that will be created by the card and the drone ID, with the one provided by AlphaTango (French official website for drone matter)! (The DGAC has specified that it will soon be available on their website).
Attention, if you do not modify the default values you will have a Wifi network named “ILLEGAL_DRONE_AP” and a drone ID: “ILLEGAL_DRONE_APPLEZ_POLICE17” … (ILLEGAL_DRONE_CALL_POLICE911 in english)
Obviously, this code is portable to other ESP32 based boards. The TTGO T-BEAM was chosen because it has directly all the equipment to be autonomous for electronic reporting. We will later propose another example with just one ESP32 chip connected to a Pixhawk or Cube type flightcontroler with ArduPilot. By combining the information from the python example and the ESP32 you should have no problem to make the modification yourself to have an even cheaper and/or more integrated transmitter module in your UAV.
Unfortunately, we don’t know the protocols used by BetaFlight and other autopilots and don’t have time to propose an example implementation. Feel free to propose other examples that use LTM, MSP, etc. protocols as library entries to send the right data in the beacon frame.


F.A.Q:

  • Is it legal: YES!
  • Is it certified : YES! The law does not provide any mechanism for certification or validation of the data sent. This implementation is therefore compliant. It has been tested with the code proposed by the Gendarmerie (like Police but outside cities) for the detection of frames : https://github.com/GendarmerieNationale/ReceptionInfoDrone
  • Do I have to pay to use this code: NO! The code that we offer is freely available.
  • Can I sell modules based on this code: YES! In compliance with the GPL license which requires that you offer your buyer access to the code used.
  • Do you sell ready-made modules: NO ! For my part (Pierre Kancir), I don’t sell anything. Please check with Airbot Systems or other companies to get a turnkey card.
  • Can I use another board with this code: YES and NO. If it’s a board with an ESP32 chip, then you will just have to change the port definition of your card to make it work. With another chip, the C++ library will be functional, but you’ll have to use the right API of your Wifi chip to emit the beacon frame.
  • What do I risk to steal with the default ID or without reporting: please read the law text again, it’s explain inside.
    https://www.legifrance.gouv.fr/eli/arrete/2019/12/27/ECOI1934044A/jo/texte
  • Do I have to use your library: NO! You have a reference code that works, you can create your own library and tools or use those of other people/companies.
  • I’ve never coded before, is it hard to use? Normally NO. But it depends on your ability to follow technical information. Feel free to ask questions on your favorite drone forums, see you move around a modeling field or Fablab to be shown how to do it!

Pierre Kancir (Hivebotics)
Julien Queffélec (Airbot Systems)

17 Likes

Nice article…what about US markets? Any work in progress re remote Id…

Excellente initiative, bravo !

Hello,

I am pretty sure there would be some US dev that will bring a solution… Or not… We were lucky in France as the law was simple to follow and doesn’t need any certification. Depending on how the US law will be it could be complex to have an open souce and free solution.

But it appears no one from Ardupilot team directly or indirectly working with FAA or their selected members.

Is Ardupilot team works with AirMap? They are one of the selected members by FAA.

From what I read, the US version will need to be integrated into the aircraft at manufacture and be tamper-proof. Add to that manufactures will have to be registered (think $ and paperwork) and the devices will need some sort of approval (think more $ and paperwork).
They seem to be really trying to get rid of any custom built craft and hobbyists - only off-the-shelf approved items allowed.

Thats not gonna fly. 80% US economy is based on Small business. Such monopoly will be sued left right and center from day 1.

They can define the standards which is fine such as we have ADS-B standards for commercial aircrafts and any one once certified Can be a manufacturer of such devices.

See my comment above about AirMap.

ArduPilot isn’t a legal structure, so we cannot push ArduPilot as an entity for regulation matters … and to be honest, I am pretty sure that most developers prefer to do some development rather than having to deal with regulation.

1 Like

hmm…I thought Ardupilot.org is not for profit organization which is still a legal entity…

my point was we can not allow company XYZ to be industry defacto for FC in the US.

this means e.g. Cube which is highly used in commercial space, will be out of business in 2 years from the commercial sector in the US

Unless, remote ID is plug in device, that you can plug into any FC…I doubt that would be the case but I could be wrong.

Sorry, I know this is off topic subject so I will stop here.

1 Like

Without getting into the nitty gritty of it, @khancyr is right - ArduPilot isn’t a legal entity in its own right. “Software in the Public Interest” provide our legal umbrella. This is the same organization that Debian, Postgres and a bunch of other open software projects are part of.
A number of the ArduPilot team are involved in various regulatory and standards bodies globally, and in things like OpendroneID - both in developing the standard and designing hardware/software implementations of it.
You might also note that Mission Planner has an integration with Altitude Angel, who have a device similar to that which Pierre has presented here (https://github.com/altitudeangel/Scout).

1 Like

really nice work Pierre!

Great work!!
If understood it right the board emits a beacon, how far can this beacon travel? Is there going to be a network around France to pick up these signals or will only be available in near distance?

Maybe i didn’t fully understand how it works.

Beacon is short distance, it can be read by enforcement officer on ground.

On another side, there is a request for some larger device to collect and relay signal over internet (maybe to cover large area like airport or sensitive gathering).

1 Like

Ok understand, thanks.

Bonjour,

Tout d’abord, félicitations, c’est du super boulot !

Je me pose cependant une question sur la légalité de cette solution, je m’explique :

L’article 2.II.2°.b indique que :

b) L’identifiant unique de l’aéronef sans personne à bord, établi conformément à l’une ou l’autre des deux possibilités décrites ci-dessous, l’utilisation de la norme ANSI/CTA/2063 (numéro de série physique - PSN) pour définir l’identifiant de l’aéronef sans personne à bord étant réputée satisfaire aux exigences du présent arrêté :
i. soit un identifiant unique codé sur 30 octets et correspondant au type 02 du tableau des types porté en annexe, composé des trois champs suivants :

  • le trigramme constructeur est codé sur 3 octets ;
  • blablabla

ii. soit un identifiant unique conforme à la norme ANSI/CTA/2063 (numéro de série physique - PSN) et correspondant au type 03 du tableau des types porté en annexe.

J’en comprends que la payload peut soit contenir un code composé entre autre d’un identifiant constructeur (option 1) soit un identifiant unique conforme à la norme ANSI (option 2).

Dans le cas de votre implémentation est-ce que vous implémentez l’option 1 ou l’option 2 ? (je n’ai pas épluché en détail le code pour trouver moi meme la réponse, méa culpa par avance).

Si c’est l’option 1, il y a un petit hic car le trigramme constructeur est attribué par les autorités suite au remplissage d’un CERFA. Ce qui complique un peu la chose, et puis ce n’est pas dit que l’état accepte que tout un chacun soit constructeur. (ce trigramme permet de toute évidence de se retourner contre le fabriquant en cas de problème avec le boitier, c’est en tout cas mon interprétation).

Si c’est l’option 2 la question ne se pose pas, d’ailleurs il ressemble à quoi ce standard ? (je n’ai pas encore téléchargé la documentation associée, je sais qu’elle est téléchargeable mais je n’avais pas le device adapté pour la lire).

Il y a aussi l’article 1.II qui est sujet à interprétation :

II. - Le dispositif de signalement électronique ou numérique mentionné à l’alinéa premier de l’article L. 34-9-2 et à l’[article R. 20-29-2 du code des postes et des communications électroniques est programmé au cours de sa production et ne dispose d’aucune possibilité de modification de ses réglages par un tiers pour les champs identifiés comme obligatoires dans le présent arrêté.

Est-ce qu’un dispositif open source et programmable répond à cette obligation ?

Pas de méprise sur le but de mes questions, je ne suis pas en train de critiquer le travail réalisé, au contraire, je m’interroge sur la possibilité d’effectivement utiliser un dispositif “home made”.

A bientôt et encore bravo pour le boulot !

1 Like

Bonjour,

Vos questions sont légitimes!
Pour la question de l’identifiant unique, la DGAC va bientôt mettre en ligne un service permettant l’enregistrement de son identifiant. L’identifiant est liée à un drone et pas a un boité de signalement électronique. Les constructeurs de drones actuels sont déjà pourvu de leur Trigramme unique et donc capable de générer leur propre ID. Pour les individuelles qui construisent leurs drones, l’enregistrement sera possible et obligatoire pour obtenir l’identifiant. L’identifiant est l’équivalent d’une immatriculation pour les voitures, le constructeur n’est pas responsable des mauvaises utilisation, mais l’usager oui ! Le module de signalement est simplement la plaque d’immatriculation ! A vous de faire l’enregistrement correctement.

Pour la question 2, la version que j’ai réalisée permet uniquement de changer l’identifiant lors de la programmation et ne permet pas de modifications live comme avec le point d’accès wifi. C’est donc conforme.

Le fait que ce soit en open source n’est en rien préjudiciable. Programmer soit même son module est la même chose que de demandé à une entreprise privé de le faire, mise à part qu’on est son propre responsable.

1 Like

Merci pour le travail et tout le temps qu’il a été nécessaire pour le faire et le mettre au point.

Si j’ai bien compris, et cela répondra en partie à la question de Sylvaneau, il faudra renseigner a un endroit donné (a la place ILEGAL DRONE) dans le code le numéro d’identification qui sera délivré très prochainement par AlphaTango pour chaque machine enregistrée ?

Est-ce qu’il sera possible que quelqu’un puisse faire un petit tuto pour savoir comment utiliser tout ça ?
J’ai déjà téléverser du code avec Arduino sur ma carte mère d’imprimante 3D et deux/trois petits montages utilisant un Arduino Uno, mais visiblement, la méthode n’est pas la même avec la carte à utiliser pour faire notre boitier de signalement !

En tout cas, merci de nous permettre de pouvoir nous mettre en conformité avec la loi pour une somme tout à fait acceptable, sachant, qu’il faut un boitier par machine de plus de 800 grammes (aussi bien un multirotor ou un avion, planeur, hélico, puisque la loi parle d’aéronef sans pilote)

La question se pose d’avoir un boîtier par machine ou un boîtier deplacable entre les machines, les textes de loi étants toujours interprétables. il serait sévère de devoir avoir un boîtier par engin, surtout dans une approche commerciale, il faudrait que le fabriquant du module enregistre l’identifiant à la commande et programme son module avant l’envoi… rude…

Je travaille sur une alternative hardware à celle proposée ici, basée sur des puces GPS bon marché et une électronique développée par mes soins.

L’idée étant de proposer éventuellement des modules clé en main à un prix raisonnable. Le tout en open-source et open-hardware pour les gens voulant réaliser le module par eux même.

Ça reste une idée pour le moment.

Bonsoir,

Perso, je serai ravi comme tous que la solution de construction amateur du dispositif soit acceptable légalement, le début de la rédaction du texte pourrait le laisser entendre, mais la phrase :

II. - Le dispositif de signalement électronique ou numérique mentionné à l’alinéa premier de l’article L. 34-9-2 et à l’[article R. 20-29-2 du code des postes et des communications électroniques est programmé au cours de sa production et ne dispose d’aucune possibilité de modification de ses réglages par un tiers pour les champs identifiés comme obligatoires dans le présent arrêté.

Me coupe un peu dans mon élan… Si je suis capable de téléverser depuis l’IDE Arduino le code ouvert dans le module, je suis aussi capable d’introduire une division par 2 de l’altitude réelle dans le code et ainsi faire en sorte que l’altitude annoncée soit faussée dans le sens qui m’intéresse (par exemple)…
A suivre…

Sinon, de mon côté, j’ai pensé à utiliser le module ESP8266-01 dont on pourrait relier l’entrée série à une sortie Telemetrie du PixHawk, on aurait ainsi un dispositif à quelques Euros adaptable à tous les aéronefs équipés PixHawk :slight_smile:

Pierre votre code est-il compatible avec le MCU32 bits de l’ESP8266-01 (il y a un profil IDE pour ce magnifique petit module) ?

Bravo pour ce travail :slight_smile:

Rien n’interdit d’utiliser un seul et unique module, mais, il faudrait modifier le code à chaque changement de machine afin d’avoir l’identification correspond a la machine sur lequel il sera posé. Le module, qui correspond à un transpondeur finalement, n’est pas affecté à un pilote, mais une machine. Je pense qu’en cas de contrôle, si l’identification ne correspond pas à la machine sur lequel il est posé, cela correspond à une absence d’identification, et l’on devient passible des peines prévues par la loi.

On trouve les cartes TTGO T-Beam à environ $25, ce qui me semble relativement bon marché. On peut donc, je pense, se constituer quelques modules pour une somme raisonnable. Certes, on est loin des 10 € / 10 Gr initialement proposé par le législateur. Ils vivent pas sur la même planète que nos, et n’ont pas les mêmes moyens que le peuple…

Perso, ne faisant voler que deux, voire trois machines à chaque session de vol, je comptais me faire 3 modules, quitte à ré encoder un ou deux modules au gré de mes besoin