PersonalFME is detecting selcalls ("Fünftonfolgen") within the analog radio network of the German emergency services ("BOS") and is forwarding them in various ways such as alarm message apps, e-mail and via external program calls. It requires an external radio receiver such as a radio device or a radio scanner that needs to be connected to the applied computer via a sound card.
PersonalFME can even run on mini-computers such as RaspberryPi in continuous operation.
PersonalFME is developed for the selcalls used by the German BOS, but may be adaptable to selcalls defined by the standards in other countries.
Dies ist der Quellcode von PersonalFME und richtet sich an technisch ausgebildete Personen, daher ist der Inhalt vollständig in englischer Sprache. Eine ausführliche Anwenderdokumentation für die Allgemeinheit in deutscher Sprache findet sich im Handbuch.
Detailed documentation about the configuration and operation of the program is available in the handbook (only in German).
- Raspberry Pi OS 11 (Raspberry Pi 2 Model B and higher, only Raspberry Pi 3 Model B is actually tested)
- Debian 11 Bullseye
- Ubuntu 22.04 LTS
- Windows 11, 10, 8.1
Previous versions of Linux are no longer supported, they can only be used with a previous version of PersonalFME. Windows 7 is no longer supported.
For Linux only the source code is currently available, see below for the compilation instructions.
The program uses a CMake-based build system (requires CMake version 3.5.0 or higher). It is using C++14 and is tested to compile with GCC 10.2 and newer under Debian / Ubuntu Linux. The code is written in platform-independent C++ using platform-independent libraries. Compilation with other Linux-distributions should be straightforward.
An installer package will be created during the compilation.
Enable the Universe repository (only for Ubuntu):
sudo add-apt-repository universe
sudo apt update
All dependencies can be conveniently installed via the package manager apt
:
sudo apt install build-essential cmake openssl libssl-dev portaudio19-dev libxerces-c-dev libsndfile-dev libalglib-dev ncurses-dev libboost-all-dev libpoco-dev
Clone the source code:
cd source/code/root/path
git clone https://github.com/erl987/personalfme
cd personalfme
git submodule update --init --recursive
git checkout tags/v1.1.0
Configure your build. Note that you should set the CMAKE_BUILD_TYPE
Release
(or Debug
in special cases):
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
Now you can build personalfme:
make -jn
Note
You may use the option
-jn
to build on n cores in parallel (replacen
by a number such as-j2
). This may require a large main memory.
Generate the package by executing:
sudo make package
It is recommended to execute the command as root in order to prevent problems with the Debian maintainer script file permissions.
Note
This requires that a number of revision dependent files as well as the documentation PDF are existing within the source code. If this is not the case, see below for recreating the documentation.
The package can be installed using:
sudo dpkg -i personalfme_#.#.#-#_amd64.deb
Further details about the installation can be found in the pdf or online handbook.
Normally the documentation PDF is already provided in the Git repository and does not need to be created separately. The documentation can be regenerated if you have a running DocBook installation and the external Git submodule has been initialized (see previous section).
Note
The documentation (and some other revision dependent files) can only be created if the source code tree used is under Git-version control.
-
install the required programs:
sudo apt install xsltproc fop docbook-xsl default-jre
-
generate the documentation target by configuring CMake accordingly:
cmake -DCMAKE_BUILD_TYPE=Release -DOption_USE_GIT=ON -DOption_CREATE_DOCUMENTATION=ON ..
-
run the documentation targets:
make PdfDocumentation make ManpageDocumentation
Building the unit tests requires the CMake option -DOption_BUILD_UNITTESTS=ON
:
cmake -DCMAKE_BUILD_TYPE=Release -DOption_BUILD_UNITTESTS=ON ..
For Windows, it is recommended to download and install the pre-compiled binary. Due to license issues, the required runtime libraries for Microsoft C++ 2022 are not included. If you have not already installed them, you have to download and install the Visual C++ Redistributable for Visual Studio 2022 for x86: https://aka.ms/vs/17/release/vc_redist.x86.exe
Usually it is not recommended to compile the program manually if using Windows, use the pre-compiled binary instead.
The program uses a CMake-based build system (requires CMake version 3.5.0 or higher). It is using C++14 and is tested to compile with Visual Studio 2022 Community under Windows. It may not compile with earlier versions of Visual Studio. The code is written in platform-independent C++ using platform-independent libraries.
PersonalFME is usually compiled for x86 architecture (although x64 should work as well, but then all libraries also need to be provided for x64). Note that this is no longer the default in CMake and needs to be changed when configuring the build.
An installer package will be created during the compilation by building the project PACKAGE
in Visual Studio.
Note
This requires that a number of revision dependent files as well as the documentation PDF are existing within the source code. If this is not the case, see below for recreating the documentation.
The dependencies of PersonalFME are on Windows provided using the package manager vcpkg
.
vcpkg
can be installed anywhere on the machine, for instructions see: https://vcpkg.io
Install the following dependencies using vcpkg
(note that they will be compiled by this command which will take
quite some time), the required triplet is x86-windows
which should be the default:
vcpkg install portaudio boost-asio boost-assign boost-date-time boost-locale boost-math boost-serialization boost-signals2 xerces-c libsndfile poco poco[netssl]
Note
At the time of writing this documentation, the installation of
poco[netssl]
required thevcpkg
packageopenssl
to be already installed. This package is however only required during the installation and can then be uninstalled.
For the unit tests, these additional dependencies are required:
vcpkg install boost-accumulators boost-test
- download the PersonalFME code base, you could either check the GitHub
- project (https://github.com/erl987/personalfme.git) out using Git or download the
zip
-file of the latest release from Github (https://github.com/erl987/personalfme/) - start the CMake GUI
- provide the source code path, i.e. the root path of the PersonalFME code base on your machine
- enter the binary path, it should be a folder
./build
being a sub-folder in the code base root directory - click on the
Configure
button and choose Win32 as platform and Specify toolchain file for cross-compiling - provide the
vcpkg
toolchain file:[vcpkg root]/scripts/buildsystems/vcpkg.cmake
- click on
Generate
- click on
Open Project
to open the Visual Studio project - build the
Release
andDebug
version
The program is now simply installed by running the installer PersonalFME-#.#.#-win32.exe
that has been created by
Visual Studio building the project PACKAGE
. It is located in the directory ./build/Release
.
The required CMake option Option_CREATE_INSTALLER
should be enabled by default.
Normally the documentation PDF-file is already provided in the source code ZIP-file and does not need to be created separately. The documentation can be regenerated if you have a running DocBook installation.
Note
The documentation (and some other revision dependent files) can only be created if the source code tree used is under Git-version control.
- install DocBook, then you have to set the environment variable DOCBOOK_ROOT,
for example to:
C:/DocBook/stylesheets/docbook-xsl-ns-1.79.1
- Java
- the FOP-processor (version 2.0)
- the Saxon XSLT processor (version HE9-7-0)
- the CLASSPATH environment variable for Java has to be set similar
to:
C:\Program Files\Saxonica\SaxonHE9-7-0_1J\saxon9he.jar;C:\DocBook\xslthl-2.1.3\xslthl-2.1.3.jar
It is necessary to update the Git-repository submodule CMakeModules/externals/CMake-gitinfo
before building the
project.
Check the options Option_CREATE_DOCUMENTATION
and Option_USE_GIT
in the CMake-GUI to generate the documentation
target. This will create a project PdfDocumentation
in Visual Studio that can be run to create the documentation.
Building the unit tests requires the CMake option -DOption_BUILD_UNITTESTS=ON
:
cmake -DCMAKE_BUILD_TYPE=Release -DOption_BUILD_UNITTESTS=ON ..
The tests are grouped by different labels. All tests with a single label can be run like this:
./Unittests --run_test=@default
The following labels are available:
Label | Contained Tests |
---|---|
default | All tests that should always work, even if no audio device is available |
with_audio | All tests requiring an active audio device on the test machine |
realtime_with_audio | Testing of realtime selcall detection1 |
The label default
contains the tests that can be run even on a cloud machine without an audio device
and covers all relevant use cases. Running the tests with this label is sufficient to ensure the
correct functionality of the software.
Dieses Programm steht unter der GNU General Public License Version 3 oder einer neueren Version. Das Programm darf daher frei weitergegeben und verändert werden, solange der Quellcode frei zugänglich bleibt. Der Autor übernimmt keinerlei Verantwortung für das korrekte Funktionieren der Software und eventuelle Folgen aus einem Programmfehler.
Warnhinweis: Es wird darauf hingewiesen, dass das willentliche unbefugte Erlangen von Informationen aus nicht-öffentlichen Funkdiensten, z.B. der Behörden und Organisationen mit Sicherheitsaufgaben (BOS) strafbar ist. Dies gilt auch für die Auswertung von Fünftonfolgen. Die vorschriftsgemäße Nutzung des Programms liegt allein in der Verantwortung des Nutzers.
Copyright (c) 2010-2023 Ralf Rettig
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
Footnotes
-
Requires running the executable
CoreTester
as a counterpart on the same computer. ↩