Par F4GOH
Se lancer dans l’analyse d’un protocole de communication n’est pas chose facile. En effet les documentations techniques disponibles sur le net manquent de précision.
Après avoir effectué des essais en GMSK en écrivant mon propre protocole, j’effectue des tests de décodage d’une trame codée dans le format DSTAR à l’aide d’un Arduino.
La librairie DSTAR Arduino est en fin d’article.
Mais avant, je me suis demandé le principe de fonction d’un réflecteur DCS d’un point de vue échange de données.
Les informations sont rares, mais un document pdf m’a bien aidé pour comprendre l’échange de données entre le serveur et le client.
J’ai donc réalisé un programme en JAVA qui se connecte sur le serveur DCS.
Cela permet d’observer les flux de données et de les enregistrer sur disque dur. Ces données peuvent être aussi redirigées vers un port série afin d’être écoutées à l’aide d’un modem + TX (développement en cours)
On peut aussi voir les OM en cours de transmission.
Tous les échanges sont dans le protocole UDP/IP
Objectifs :
- Analyser les paquets UDP sur un serveur DCS,
- Enregistrer les paquets UDP depuis le serveur (2 min max),
- Restituer les paquets vers le serveur,
- Rediriger les paquets UDP vers un port série,
- Rediriger les paquets UDP du port série vers le serveur UDP,
- Affichage des paquets UDP,
Description de l’interface utilisateur
Le programme JAVA ainsi que les documentations pdf sont téléchargeables à l’adresse suivante:
Après avoir saisi votre indicatif et le module sur lequel vous voulez vous connecter cliquer sur Connect.
Si la connexion est établie le label Moniteur clignote alternativement en rouge et vert.
Si dans votre QRA un logiciel du type ircddbgateway est actif, il faudra l’éteindre pour ne pas provoquer de conflit d’adresse.
Le bouton record permet d’enregistrer un flux de données. La sauvegarde est automatique.
Veillez cependant à ne pas dépasser 2 minutes d’enregistrement.
Le nom du fichier sauvegardé est « taille du fichier.txt »
Vous prouvez ainsi ouvrir le fichier et le restituer vers le serveur en cliquant sur PLAY.
Si vous enregistrez un flux en cours de route, l’entête D-STAR sera perdu et la restitution ne sera pas bonne.
Si l’on active l’option Serial avant une connexion, les données UDP seront redirigées vers
Le port série à une vitesse de 115200 bauds, 8 bits, 1bit de stop. La restitution d’un fichier sera également dirigée vers le port série.
Cela a pour objectif d’avoir un utilitaire facilitant le développement d’un modem GMSK.
Description de d’échange de données UDP
La 1ère trame envoyée est celle d’une demande de connexion UDP
Client -> Serveur DCS
519 octets
0000 46 34 47 4f 48 20 20 20 42 42 00 44 43 53 30 33 F4GOH BB.DCS03
0010 33 20 20 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3 <table border
0020 3d 22 30 22 20 77 69 64 74 68 3d 22 39 35 25 22 = »0″ width= »95% »
0030 3e 3c 74 72 3e 3c 74 64 20 77 69 64 74 68 3d 22 ><tr><td width= »
0040 34 25 22 3e 3c 69 6d 67 20 62 6f 72 64 65 72 3d 4% »><img border=
0050 22 30 22 20 73 72 63 3d 68 66 2e 6a 70 67 3e 3c « 0 » src=hf.jpg><
0060 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 39 /td><td width= »9
0070 36 25 22 3e 3c 66 6f 6e 74 20 73 69 7a 65 3d 22 6% »><font size= »
0080 32 22 3e 3c 62 3e 52 45 50 45 41 54 45 52 3c 2f 2″><b>REPEATER</
0090 62 3e 20 69 72 63 44 44 42 20 47 61 74 65 77 61 b> ircDDB Gatewa
00a0 79 20 32 30 31 33 30 31 33 31 3c 2f 66 6f 6e 74 y 20130131</font
00b0 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 2f 74 61 62 ></td></tr></tab
00c0 6c 65 3e 00 00 00 00 00 00 00 00 00 00 00 00 00 le>………….
00d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
00f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
0150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
0170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
0190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
01a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
01b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
01c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
01d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
01e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
01f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….
0200 00 00 00 00 00 00 00 …….
La réponse est un ACK : ACKnowledge
Serveur DCS -> Client
14 octets
0000 46 34 47 4f 48 20 20 20 42 42 41 43 4b 00 F4GOH BBACK.
D’une manière périodique le serveur vérifie si le client est toujours connecté en envoyant 2 trames
Serveur DCS -> Client
9 octets
0000 44 43 53 30 33 33 20 20 00 DCS033 .
Serveur DCS -> Client
22 octets
0000 44 43 53 30 33 33 20 42 20 46 34 47 4f 48 20 20 DCS033 B F4GOH
0010 42 42 0a 00 20 20 BB..
La réponse est la suivante :
17 octets
Client -> Serveur DCS
0000 46 34 47 4f 48 20 20 42 00 44 43 53 30 33 33 20 F4GOH B.DCS033
0010 42 B
De temps en temps le serveur envoie l’indicatif des OM en train de transmettre
Serveur DCS -> Client
0000 46 31 5a 48 48 20 20 20 54 61 6c 6b 20 6f 6e 20 F1ZHH Talk on
0010 44 43 53 30 33 33 20 57 00 00 00 00 00 00 00 00 DCS033 W……..
0020 00 00 00 …
Un paquet de données contenant la voix est toujours de 100 octets. Un paquet est envoyé tous les 20ms.
0000 30 30 30 31 00 00 00 44 43 53 30 33 33 20 42 46 0001…DCS033 BF
0010 34 47 4f 48 20 20 42 43 51 43 51 43 51 20 20 46 4GOH BCQCQCQ F
0020 34 47 4f 48 20 20 20 49 44 35 31 2a 00 09 ce ce 4GOH ID51*….
0030 ac 31 47 1e 58 e0 f0 16 29 f5 09 00 00 01 00 21 .1G.X…)……!
0040 48 45 4c 4c 4f 20 46 52 4f 4d 20 46 34 47 4f 48 HELLO FROM F4GOH
0050 20 20 20 20 00 00 00 00 00 00 00 00 00 00 00 00 …………
0060 00 00 00 00 ….
La description se trouve en page 8 (HEADER/Voice message) du document
CCS Call Connection Service Developer’s Manual for CCS Clients
C’est ce paquet qui est analysé dans le logiciel.
J’espère comme moi que cet utilitaire ravira les développeurs amateurs désirant se lancer dans l’étude du mode numérique D-STAR.
Toutes les données UDP ont été analysées avec l’utilitaire WireShark
Vous trouverez la librairie Arduino ici, sur le codage et décodage de l’entête D-STAR.
Prochainement la gestion du modem CMX589 avec la librairie DSTAR…
73 et bonne programmation
Liens utiles :
CCS Call Connection Service Developer’s Manual for CCS Clients
[…] Vous pouvez consulter l’article de l’auteur .. en cliquant ici […]
J’aimeAimé par 1 personne