Dans cet épisode nous allons transformer notre OPiTracker en véritable tracker bidirectionnel en l’interfaçant via Bluetooth à l’application APRSdroid.
Principe de fonctionnement
APRSdroid est prévu pour s’interfacer avec des TNC en mode KISS via le profile Bluetooth SPP. Ce n’est ni plus ni moins qu’une liaison série sur émulée sur la couche Bluetooth. Tout l’art sera d’amener les données de Direwolf sur un port série virtuel qui est en fait le Bluetooth de notre Orange Pi.
Appairage avec le téléphone
Pour que APRSdroid puisse communiquer avec l’OPiTracker il faut d’abord appairer ce dernier avec le téléphone. Je pars du principe que vous savez comment accéder aux paramètres de votre téléphone afin d’y appairer un périphérique Bluetooth.
L’appairage n’est a réaliser qu’une seule fois. Une fois le téléphone et l’Opitracker appairés il le sont pour jusqu’à ce que l’on supprime l’appairage soit du téléphone ou de l’Opitracker.
Dans un premier temps, lançons l’utilitaire de contrôle du Bluetooth via la commande :
bluetoothctl
Une fois dans bluetoothctl on rend notre opitracker visible pour les autres appareils bluetooth via la commande :
discoverable on
A ce moment on recherche sur sont téléphone les appareils Bluetooth et on sélectionne l’opitracker. Le téléphone et l’opitracker vont vous afficher un code, assurez vous que les deux codes soient identiques, validez sur le téléphone puis sur l’opitracker en tapant « yes ».
Une fois l’appairage terminé, quittez bluetoothctl en tapant :
exitLangage du code : PHP (php)
Le tout en images.
Activation du KISS TCP dans Direwolf
En préparation de la suite in faut configurer Direwolf pour qu’il expose les trames reçues au format KISS sur le port réseau 8001. Pour se faire, on édite le fichier de config via nano
sudo nano /usr/local/etc/direwolf-tracker.confLangage du code : Bash (bash)
et on ajoute la ligne:
KISSPORT 8001
En images
Lancement de nano
Votre fichier de configuration devrait ressembler à ceciUne fois le fichier de configuration édité, on relance Direwolf via son service:
sudo systemctl restart direwolf.serviceLangage du code : Bash (bash)
Interfaçage de Direwolf avec le Bluetooth
Il y a pleins de façons différentes d’interfacer Direwolf via Bluetooth. La manière « officielle » est une ligne dans le fichier de configuration où l’on renseigne le nom du port série virtuel Bluetooth. Cette méthode présente plusieurs inconvénients:
- Le nom du port série change parfois aléatoirement: de /dev/rfcomm0 ça passe à /dev/rfcomm1
- Le port série n’existe que si le téléphone se connecte, Direwolf tentera de l’ouvrir en continu jusqu’à ce que le téléphone se connecte.
Le solution que j’ai retenu est de rediriger le flux KISS TCP de Direwolf vers le port série virtuel Bluetooth. Un script se chargeant de retrouver le bon port série. Cerise sur le gâteau, ce script se lance au démarrage en tant que service systemd.
Ce script nécessite d’avoir l’utilitaire socat installé, on l’installe donc via la commande :
sudo apt install socat
Ensuite nous créons le fichier /etc/systemd/system/direwolf_bluetooth.service en utilisant nano. Les combinaisons de touche pour naviguer dans nano doivent être connues à ce stade.
sudo nano /etc/systemd/system/direwolf_bluetooth.service
Voici le contenu du fichier:
[Unit]
Description=RFCOMM Direwolf service
After=bluetooth.service,direwolf.service
Requires=bluetooth.service,direwolf.service
[Service]
ExecStart=/usr/bin/bash -c "/usr/bin/rfcomm --raw watch hci0 1 /usr/bin/socat TCP4:127.0.0.1:8001,forever,interval=5 {}"
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.targetLangage du code : JavaScript (javascript)
Une fois le fichier sauvegardé, on active et on démarre le nouveau service systemd:
sudo systemctl enable direwolf_bluetooth.service
sudo systemctl start direwolf_bluetooth.serviceLangage du code : CSS (css)
Comme d’habitude, le tout en images.
Voilà, au prochain épisode nous passerons à la configuration de APRSdroid proprement dite.












