FGCom-mumble: Difference between revisions

From FlightGear wiki
Jump to navigation Jump to search
mNo edit summary
 
(91 intermediate revisions by 4 users not shown)
Line 1: Line 1:
''FGCom-mumble'' is a radio communication simulation for pilots and ATC, similar to FGCom but based on mumble. It can enhance your online flight experience with realistic voice communications.
'''FGCom-mumble''' simulates radio communication based on the VoIP software [https://www.mumble.info/ Mumble]. It integrates fully with the radio stack of your FlightGear plane, allowing you to communicate with other pilots and airspace controllers during your flight. It simulates a global, continuous radio frequency spectrum.


{{caution| The plugin relies on '''Mumble 1.4.0''' which is not yet released.<br>To test FGCom-mumble, you thus need to self compile mumble and murmur. }}
FGCom-mumble is an alternative to the already known [[FGCom]] client and [https://forum.flightgear.org/viewtopic.php?t=30691 FGExtend].
{{note| This is currently in development and has no stable release for productive use yet. Expect lots of bugs! }}
 
FGCom-mumble leverages the plugin mechanism introduced by Mumble 1.4.0 and just needs a precompiled plugin loaded by a stock Mumble client.
You can download the latest release from https://github.com/hbeni/fgcom-mumble/releases.


{{Infobox Software
{{Infobox Software
Line 10: Line 12:
|developmentstatus  = Active
|developmentstatus  = Active
|type                = Radio/Communication
|type                = Radio/Communication
|initialrelease      = 2020
|latestrelease      = [https://github.com/hbeni/fgcom-mumble/releases see release page]
|latestrelease      = 0.6.0 (October, 2020)
|initialrelease      = 1.0.0 (17.01.2022)
|writtenin          = C++, Lua, Java, PHP
|writtenin          = C++/Lua/Java/PHP
|os                  = Windows, GNU/Linux
|os                  = Windows, GNU/Linux, MacOS
|license            = [[GNU General Public License]] v3
|license            = [[GNU General Public License]] v3
|website            = https://github.com/hbeni/fgcom-mumble
|website            = https://github.com/hbeni/fgcom-mumble
}}
}}


= Servers =
==Servers ==
Currently there is no centralized infrastructure yet. If you want to donate one, please let me know!
<!-- Maybe we can switch to mumble://radio-mumble.flightgear.fr/fgcom-mumble some time... -->
*The main FGCom-mumble test server is <code>mumble://fgcom.hallinger.org/fgcom-mumble</code>
*The status page for that service showing all connected clients is at: https://fgcom.hallinger.org/
*On first connection Mumble client will ask whether to trust the certificate presented by the server. Currently the server certificate has following details:


<!--
<pre>Common Name: Murmur Autogenerated Certificate v2
<TODO> Once we have infrastructure, list it here.
Valid from: Mon. Dec. 7 21:12:40 2020 GMT
* The main FGCom-mumble server is [[mumble://radio-mumble.flightgear.fr/fgcom-mumble|mumble://radio-mumble.flightgear.fr/fgcom-mumble]]
Valid to: Sun. Dec. 2 21:12:40 2040 GMT
* The status-page for that service showing all connected clients is: http://some.cool.host/statuspage/
Serial: 3031
-->
Public Key: 2048 bits RSA
Digest (SHA-1): E6:9A:FA:62:2C:48:4D:73:95:D7:EE:0E:14:0D:5A:C2:AE:14:1C:31
Digest (SHA-256): 50:CE:17:63:FB:FC:40:03:B4:BF:8F:1F:84:35:4C:BA:5D:5C:BE:E4:AD:F9:8C:D8:45:1F:C7:28:EB:CA:3A:C0</pre>


= What is FGCom-mumble ? =
It is always a good idea to verify if the signature matches.
FGCom-mumble is a voice communication feature that is based on the VoIP software ''[https://www.mumble.info/ Mumble]''. It simulates radio communication and integrates fully with the radio stack of your flightgear plane, allowing you to communicate with other pilots and airspace controllers during your flight. It simulates a global, continuous radio frequency spectrum.


FGCom-mumble is an alternative to the already known [[FGCom]] client.
==Project main goals==
*Provide communication with geographic and channel separation
*Provide a realistic radio simulation
*Ease of use for the end user/pilot
*Arbitrary frequency support
*ATIS recording and playback
*Radio station broadcast support
*Landline/Intercom support
*RDF detection for clients
*Ease of server side installation and operation
*Standalone nature (no dependency on FlightGear)
* Capability to be integrated into FlightGear, with the option to support third party applications (ATC, but also other flight simulators)
*Modularity, so individual component implementations can be switched and its easy to add features
*Good and complete documentation


FGCom-mumble faciliates the plugin mechanism introduced by mumble 1.4.0 and just needs a precompiled plugin loaded.
== Installation and setup==
You can download the latest release from https://github.com/hbeni/fgcom-mumble/releases.
The latest release can be fetched from [https://github.com/hbeni/fgcom-mumble/releases GitHub] ([https://github.com/hbeni/fgcom-mumble/actions nightly build] also has debug versions).


The provided [https://github.com/hbeni/fgcom-mumble/blob/master/README.md#install--setup-for-the-client README] has detailed instructions on the needed prerequisites and installation procedures.


'''The projects main goals are:'''
Someone even made an install video :) https://www.youtube.com/watch?v=jTRzfVfkgZE and https://www.youtube.com/watch?v=boHsPVTSddk
* Provide communication with geographic and channel separation
(thanks mate, well done! however HF is actually simulated already :)
* Provide a realistic radio simulation
* Ease of use for the end user / pilot
* Arbitary frequency support
* ATIS recording and playback
* Radio station broadcast support
* Landline/Intercom support
* RDF detection for clients
* Ease of server side installation and operation
* Standalone nature (no dependency on flightgear)
* Capability to be integrated into flightgear, with the option to support third party applications (ATC, but also other flightsims)
* Modularity, so individual component implementations can be switched and its easy to add features
* Good and complete documentation


= Installation and Setup =
In short:
The latest release can be fetched from [https://github.com/hbeni/fgcom-mumble/releases GitHub].
* Have a stock Mumble client >= 1.4 running, and load the plugin (mumble settings/plugins page)
* Join a channel named `fgcom-mumble` (on a >= 1.4 mumble server)
* Add the `fgfs-addon` folder of the client release as FlightGear Addon in your launcher
* Start FlightGear and use your plane's radio stack (it uses default FGCom buttons, see below)


The provided [https://github.com/hbeni/fgcom-mumble/blob/master/README.md Readme] has detailed instructions on the needed prerequisites and installation procedures.
==Usage==
FlightGear's FGCom-mumble protocol uses the default FGCom buttons:
* When you want to talk on COM1 you have to press {{Key press|Space}}. While transmitting you can not hear other pilots trough the used radio (they are half-duplex).
* You can also talk on COM2 by pressing {{Key press|Shift|Space}}.
* since FGCom-mumble 1.2.0:
** For COM3 you use {{Key press|Alt|Space}} (previously you need to define a custom keybind),
** Intercom is available in full-duplex with {{Key press|Ctrl|Space}}


In short:
Any radio can also accessed by the COMBar (open from ''Menu/Multiplayer/FGCom-mumble'').
* Have mumble >= 1.4.0 running, and load the plugin
* join a channel named `fgcom-mumble`
* Install the [https://github.com/hbeni/fgcom-mumble/blob/master/client/fgfs/Protocol/fgcom-mumble.xml fgfs protocol file]
* start flightgear with the new protocol file active (add to launcher: `--generic=socket,out,10,localhost,16661,udp,fgcom-mumble`)
* start using your planes radio stack (it uses default FGCom buttons, see below)


= Usage =
If you want to try it out without FlightGear, you can also start the supplied RadioGUI.
Flightgears FGCom-mumble protocol uses the default FGCom buttons:
When you want to talk on COM1 you have to press {{Key press|Space}}. While transmtting you can't hear other pilots trough the used radio (they are half-duplex).
You can also talk on COM2 by pressing {{Key press|Shift}} + {{Key press|Space}}.


If you want to try it out without flightgear, you can also start the supplied RadioGUI.
=== How to test your setup?===
First, make sure Mumble is working reliably by talking to other people. Either disable the plugin, or be sure you are outside any radio channel (starting with `fgcom-mumble`).


The plugin alters Mumble's receiving audio stream. It adds static noise depending on the radio signal quality, or cancels out all audio when not in range. The outgoing audio stream is not altered in any way.


== How to test your setup ? ==
If the server supports it (in essence there is a bot-manager running and a `fgcom-recorder-bot` listening) you may do a traditional echo test by tuning `910.00` and start to talk. The recorder-bot will record that (he writes that into mumbles chat) and spawn an echo bot at your position, replaying your message (so you will hear yourself like others will hear you).
First make sure, mumble is working reliably by talking to other persons. Either disable the plugin for that, or be sure you are outside any radio-activated channel (the ones starting with "fgcom-mumble").


The plugin alters mumbles audio stream, it adds static noise depending on the radio signal quality, which even ma cancel out all voice when not in range.
===Troubleshooting===
For troubleshooting, refer to the projects [https://github.com/hbeni/fgcom-mumble/blob/master/README.md#troubleshooting README] as it has further suggestions.


If the server supports it (ie. there is a bot-manager running and a fgcom-radio-bot listening) you may do a traditional echo test by tuning `910.00` and start to talk. The radio bot will record that and spawn an echo bot at your position, replaying your message.
If it's nothing setup related, an easy fix is to just restart mumble (the plugin will reinitialize itself).


== Troubleshooting ==
===Compatibility ===
For troubleshooting, refer to the projects [https://github.com/hbeni/fgcom-mumble/blob/master/README.md#troubleshooting Readme] as it has furter suggestions.
 
== Compatibility ==
FGCom-mumble supports the legacy FGCom UDP protocol and thus should be compatible to clients supporting that. However, it also features some new UDP fields.
FGCom-mumble supports the legacy FGCom UDP protocol and thus should be compatible to clients supporting that. However, it also features some new UDP fields.


* Flightgear is supported trough a new [https://github.com/hbeni/fgcom-mumble/blob/master/client/fgfs/Protocol/fgcom-mumble.xml XML-Protocol file]. This assumes the default radio implementation and works at least with the c172p and the c182s.
*FlightGear is supported through an [https://github.com/hbeni/fgcom-mumble/tree/master/client/fgfs-addon FlightGear addon]. This assumes the default radio implementation and works with at least the C172P and the C182S.
* [[ATC-pie]] has built in support already.
*[[ATC-pie]] has built in support already (be sure to activate "FGCom-mumble" instead of just "FGCom" in the settings).
* [[OpenRadar]] currently supports just COM1 ([https://sourceforge.net/p/openradar/tickets/5/ ticket pending]). To use COM2 and more, you need to either start several mumble instances, or use FGCom-mumbles RadioGUI.
*[[OpenRadar]] currently supports just COM1 ([https://sourceforge.net/p/openradar/tickets/5/ ticket pending]). To use COM2 and more, you need to either start several mumble instances, or use FGCom-mumble's RadioGUI.
:There is a patched version of OpenRadar with FGCom-mumble and  8.33 channel tuning support available here: http://fgcom.hallinger.org/OpenRadar_fgcom-mumble.jar


= RadioGUI =
====Known incompatibilities====
The FGCom-RadioGUI is a small Java-11 application that can send the FGCom-mumble UDP messages to the mumble plugin.
* The UFO aircraft rebinds {{Key press|Space}} so you can't transmit on the radio. As a workaround you can use the COMBar that comes integrated with the FGFS addon.


Inside the GUI, you can pick your location from a map and then setup your radio stack.
==RadioGUI==
The FGCom-mumble RadioGUI is a small Java 8 application that can send the FGCom-mumble UDP messages to the Mumble plugin.


Inside the GUI, you can pick your location from a map and then setup and use your radio stack.
That said, the RadiGUI can be used instead (or additionally to) FGFS to participate on the simulated radio net.


= Server side =
==Server side==
By design, all that is needed is a standard murmur >= 1.4.0 server and a specially named channel (it has to start with "fgcom-mumble"). This is enough to let the plugin do its work. The entire channel is treated as a single, world wide continuous radio frequency spectrum.
By design, all that is needed is a standard Murmur server (version 1.4.0 or later) and a specially named channel (it has to start with `fgcom-mumble`). This is enough to let the plugin do its work. The entire channel is treated as a single, worldwide continuous radio frequency spectrum.


Additional features are implemented using server side lua bots (which may run somewhere else):
Additional features are implemented using server side Lua bots (which may run somewhere else):
* ATIS recording and broadcasting
* ATIS recording and broadcasting
* Radio program broadcasting (OGG playback on a frequency), [https://github.com/hbeni/fgcom-mumble/wiki/How-to-create-a-custom-NDB Custom NDB beacons]
* Status page data collection
* Status page data collection


A statuspage showing client details is available as a PHP website, that gets its data feeded from the fgcom-status-bot.
A status page showing client details is available as a PHP website, that gets its data fed from the fgcom-status-bot.
 
Detailed installation and operation documentation is shipped with the releases, but is also [https://github.com/hbeni/fgcom-mumble/blob/master/server/Readme.server.md online].


Detailed installation and operation documentation is shipped with the releases, but also [https://github.com/hbeni/fgcom-mumble/blob/master/server/Readme.server.md online].
==How does it work? (technical information)==
The technical details are specified and described in the various readme files of the projects source code (as a starter read the [https://github.com/hbeni/fgcom-mumble/blob/master/Readme.architecture.md Readme.architecture.md]).


Basicly, all users join the same mumble channel and run the fgcom-mumble plugin. The plugin knows everything necessary from the participating users (like radios used, frequencies tuned, locations, etc) and based on that information mutes or plays incoming voice messages from the other users. Based on signal quality, static noise is mixed in for more fun and a more realistic experience.
Because the voice of other users is muted, it is a design wise out-of-the-box feature that brings frequency and location separation but allows everyone to stay in the same mumble channel.


==Related content==
*[https://github.com/hbeni/fgcom-mumble/wiki FGCom-mumble GitHub wiki] with hints etc
*[https://github.com/hbeni/fgcom-mumble/blob/master/README.md FGCom-mumble README.md] Main readme of the project bringing all the details you always wanted to know


= Related content =
===Forum topic===
== Forum topic ==
*The {{forum link|t=37644|title=FGCom-mumble}} has development discussions and release announcements
* The {{forum link|t=37644|title=FGCom-mumble}} has development discussions and release announcements
*{{forum link|p=374950|title=Re: EDDF-Triangle}} and  {{forum link|p=374970|title=Re: EDDF-Triangle}} - Compatibility and differences between FGCom, FGCom-mumble and Mumble


== FlightGear Newsletter ==
===FlightGear Newsletter===
* [[FlightGear_Newsletter_June_2020]]: First prototype announced
*[[FlightGear_Newsletter_June_2020]]: First prototype announced
* [[FlightGear_Newsletter_July_2020]]: Load tests successful, RDF implemented, Live-Status page added
*[[FlightGear_Newsletter_July_2020]]: Load tests successful, RDF implemented, Live-Status page added
* [[FlightGear_Newsletter_August_2020]]: More testing, new HF/VHF/UHF models, auto-updater
*[[FlightGear_Newsletter_August_2020]]: More testing, new HF/VHF/UHF models, auto-updater
* [[FlightGear_Newsletter_September_2020]]: Mumble API changes, distributed deployment, configuration trough INI, statistics
*[[FlightGear_Newsletter_September_2020]]: Mumble API changes, distributed deployment, configuration trough INI, statistics
* [[FlightGear_Newsletter_October_2020]]: More API changes, proper 8.33kHz/25kHz overlap, RadiGUI added
*[[FlightGear_Newsletter_October_2020]]: More API changes, proper 8.33kHz/25kHz overlap, RadiGUI added
*[[FlightGear_Newsletter_November_2020]]: Test server announced
*[[FlightGear_Newsletter_December_2020]]: Release 0.8.0 bringing networking capability
*[[FlightGear_Newsletter_April_2021]]: RDF reworked, 0.12.0 announced, MacOS support
*[[FlightGear_Newsletter_May_2021]]: Better airliner support, announced 0.13.0 and 0.14.0, restructured release package structure
*[[FlightGear_Newsletter_June_2021]]: 0.14.1 announced, updater bugfixes
*[[FlightGear_Newsletter_July_2021]]: 0.14.2 announced, updater bugfixes part II
*[[FlightGear_Newsletter_January_2022]]: '''1.0.0 released, Mumble 1.4 hit the light'''


= Screenshots =
==Screenshots==
<gallery>
<gallery>
Fgcom-mumble_statuspage-0.6.0.png|Statuspage 0.6.0
Fgcom-mumble_statuspage-0.6.0.png|Statuspage 0.6.0
FGCom-mumble_radioGUI-0.6.0.png|RadiGUI 0.6.0
FGCom-mumble_radioGUI-0.6.0.png|RadiGUI 0.6.0
</gallery>
</gallery>
== Idea to integrate into FGFS ==
{{progressbar|10|10}} {{pending}}
ML Discussion: https://sourceforge.net/p/flightgear/mailman/flightgear-devel/thread/1919A28D-44D8-46F0-8A65-A5633A8AB743%40hallinger.org/#msg58717212
Using [https://github.com/mumble-voip/libmumble libmumble], a standalone mumble c++17 library, we could integrate FGCom-mumble directly into FlightGear. This way, FGFS would talk "mumble" to a mumble server and the plugins functions would be integrated into the core. For pilots, a simple "click" to connect in the multiplayer would be enough to participate, while having all the advanced features of fgcom-mumble available (like custom NDBs, radio stations; as well as the possibility for other clients (ATC!) to participate easily on the radio spectrum).
A main idea is also to use the existing fgcom-mumble code to avoid double work. But otoh maybe a direct rewrite of the core stuff may be cleaner; most of the magic is in the fgcom-mumble radio model code anyway, so we might just use some bits, if that is possible?
libmubmble is not yet API-stable, but there was already a [https://github.com/mumble-voip/libmumble/issues/18 first dicussion] about feasability and basic mechanics:
* From FGCom-mumbles side, we need to integrate the data structures into the core. So radios need to be registered, etc. This should not be too hard
** we probably just need to not run the UPD-Server but send the needed data directly into the decoding function of it. At a later stage, we might better integrate that part, but for a first working solution, just creatig a FCGOM-mumble UDP-Packet string in FGFS and sending it periodically (or already on-demand?) into the udp-servers decoder function should be enough - it just creates some CPU overhead which should not be too bad and will establish the needed local data structure.
** Note, that we cannot rely on the mpservers data structures (even if there is radio data), because in FGCom-mumble potential other clients are also participating (like radio-playback bots for ATIS etc!). So we really need to use mumbles plugin messages.
* Basicly the libmumble will run its own threads for networking. Upon receiving mumble audio or mumble-plugin data, callback functions would be called from the lib:
** Incoming audio data need to be processed by the fgcom-mumble plugin functions, and then the result handed over into fgfs audio out handling.
** Incoming plugin data needs to be fed into the fgcom-mumble internal remote data struct (just hand the data into the existing data parser).
* Pressing the already existing fgfs PTT button
** would need to send plugin data to mumble, to inform other clients. This is currently done by calling a mumble client function, but that is surely not available from libmubmble. It would probably be enough, if fgfs core supplied an implemention that calls the appropriate libmumble function and hands over the data.
** also, the audio data needs to be fetched from the mic, and then handed over to libmumbles audio encoding and sending routine. This probably can somewhat be partly copied from the legacy fgcom implementation.
* Questions regarding fgfs currently are:
** {{tick}} (''Answer:'' use [[Howto:Create_new_subsystems|Subsystem]]) how to exactly the integration on fgfs side works. That needs peeks on fgcoms code as well as some discussion at the mailing list.
** how to integrate the libmubmle code into the fgfs build chain (its cmake).
*** {{tick}} legally: libmubmle has a [https://github.com/mumble-voip/libmumble/blob/master/LICENSE BSD 3-clause] licence, is that compatible?
*** {{tick}} And what about libmubmles dependencies, like OpenSSL?
*** technically, how to include that all into the existing build system?




[[Category:FGCom]]
[[Category:FGCom]]
[[Category:Menubar]]
[[Category:Air Traffic Control]]
 
[[de:FGCom-mumble]]

Latest revision as of 13:25, 28 December 2023

FGCom-mumble simulates radio communication based on the VoIP software Mumble. It integrates fully with the radio stack of your FlightGear plane, allowing you to communicate with other pilots and airspace controllers during your flight. It simulates a global, continuous radio frequency spectrum.

FGCom-mumble is an alternative to the already known FGCom client and FGExtend.

FGCom-mumble leverages the plugin mechanism introduced by Mumble 1.4.0 and just needs a precompiled plugin loaded by a stock Mumble client. You can download the latest release from https://github.com/hbeni/fgcom-mumble/releases.

FGCom-mumble
FGCom-mumble logo
Developed by Benedikt Hallinger
Initial release 1.0.0 (17.01.2022)
Latest release see release page
Written in C++, Lua, Java, PHP
OS Windows, GNU/Linux, MacOS
Development status Active
Type Radio/Communication
License GNU General Public License v3
Website

Servers

  • The main FGCom-mumble test server is mumble://fgcom.hallinger.org/fgcom-mumble
  • The status page for that service showing all connected clients is at: https://fgcom.hallinger.org/
  • On first connection Mumble client will ask whether to trust the certificate presented by the server. Currently the server certificate has following details:
Common Name: Murmur Autogenerated Certificate v2
Valid from: Mon. Dec. 7 21:12:40 2020 GMT
Valid to: Sun. Dec. 2 21:12:40 2040 GMT
Serial: 3031
Public Key: 2048 bits RSA
Digest (SHA-1): E6:9A:FA:62:2C:48:4D:73:95:D7:EE:0E:14:0D:5A:C2:AE:14:1C:31
Digest (SHA-256): 50:CE:17:63:FB:FC:40:03:B4:BF:8F:1F:84:35:4C:BA:5D:5C:BE:E4:AD:F9:8C:D8:45:1F:C7:28:EB:CA:3A:C0

It is always a good idea to verify if the signature matches.

Project main goals

  • Provide communication with geographic and channel separation
  • Provide a realistic radio simulation
  • Ease of use for the end user/pilot
  • Arbitrary frequency support
  • ATIS recording and playback
  • Radio station broadcast support
  • Landline/Intercom support
  • RDF detection for clients
  • Ease of server side installation and operation
  • Standalone nature (no dependency on FlightGear)
  • Capability to be integrated into FlightGear, with the option to support third party applications (ATC, but also other flight simulators)
  • Modularity, so individual component implementations can be switched and its easy to add features
  • Good and complete documentation

Installation and setup

The latest release can be fetched from GitHub (nightly build also has debug versions).

The provided README has detailed instructions on the needed prerequisites and installation procedures.

Someone even made an install video :) https://www.youtube.com/watch?v=jTRzfVfkgZE and https://www.youtube.com/watch?v=boHsPVTSddk (thanks mate, well done! however HF is actually simulated already :)

In short:

  • Have a stock Mumble client >= 1.4 running, and load the plugin (mumble settings/plugins page)
  • Join a channel named `fgcom-mumble` (on a >= 1.4 mumble server)
  • Add the `fgfs-addon` folder of the client release as FlightGear Addon in your launcher
  • Start FlightGear and use your plane's radio stack (it uses default FGCom buttons, see below)

Usage

FlightGear's FGCom-mumble protocol uses the default FGCom buttons:

  • When you want to talk on COM1 you have to press Space. While transmitting you can not hear other pilots trough the used radio (they are half-duplex).
  • You can also talk on COM2 by pressing Shift+Space.
  • since FGCom-mumble 1.2.0:
    • For COM3 you use Alt+Space (previously you need to define a custom keybind),
    • Intercom is available in full-duplex with Ctrl+Space

Any radio can also accessed by the COMBar (open from Menu/Multiplayer/FGCom-mumble).

If you want to try it out without FlightGear, you can also start the supplied RadioGUI.

How to test your setup?

First, make sure Mumble is working reliably by talking to other people. Either disable the plugin, or be sure you are outside any radio channel (starting with `fgcom-mumble`).

The plugin alters Mumble's receiving audio stream. It adds static noise depending on the radio signal quality, or cancels out all audio when not in range. The outgoing audio stream is not altered in any way.

If the server supports it (in essence there is a bot-manager running and a `fgcom-recorder-bot` listening) you may do a traditional echo test by tuning `910.00` and start to talk. The recorder-bot will record that (he writes that into mumbles chat) and spawn an echo bot at your position, replaying your message (so you will hear yourself like others will hear you).

Troubleshooting

For troubleshooting, refer to the projects README as it has further suggestions.

If it's nothing setup related, an easy fix is to just restart mumble (the plugin will reinitialize itself).

Compatibility

FGCom-mumble supports the legacy FGCom UDP protocol and thus should be compatible to clients supporting that. However, it also features some new UDP fields.

  • FlightGear is supported through an FlightGear addon. This assumes the default radio implementation and works with at least the C172P and the C182S.
  • ATC-pie has built in support already (be sure to activate "FGCom-mumble" instead of just "FGCom" in the settings).
  • OpenRadar currently supports just COM1 (ticket pending). To use COM2 and more, you need to either start several mumble instances, or use FGCom-mumble's RadioGUI.
There is a patched version of OpenRadar with FGCom-mumble and 8.33 channel tuning support available here: http://fgcom.hallinger.org/OpenRadar_fgcom-mumble.jar

Known incompatibilities

  • The UFO aircraft rebinds Space so you can't transmit on the radio. As a workaround you can use the COMBar that comes integrated with the FGFS addon.

RadioGUI

The FGCom-mumble RadioGUI is a small Java 8 application that can send the FGCom-mumble UDP messages to the Mumble plugin.

Inside the GUI, you can pick your location from a map and then setup and use your radio stack. That said, the RadiGUI can be used instead (or additionally to) FGFS to participate on the simulated radio net.

Server side

By design, all that is needed is a standard Murmur server (version 1.4.0 or later) and a specially named channel (it has to start with `fgcom-mumble`). This is enough to let the plugin do its work. The entire channel is treated as a single, worldwide continuous radio frequency spectrum.

Additional features are implemented using server side Lua bots (which may run somewhere else):

  • ATIS recording and broadcasting
  • Radio program broadcasting (OGG playback on a frequency), Custom NDB beacons
  • Status page data collection

A status page showing client details is available as a PHP website, that gets its data fed from the fgcom-status-bot.

Detailed installation and operation documentation is shipped with the releases, but is also online.

How does it work? (technical information)

The technical details are specified and described in the various readme files of the projects source code (as a starter read the Readme.architecture.md).

Basicly, all users join the same mumble channel and run the fgcom-mumble plugin. The plugin knows everything necessary from the participating users (like radios used, frequencies tuned, locations, etc) and based on that information mutes or plays incoming voice messages from the other users. Based on signal quality, static noise is mixed in for more fun and a more realistic experience. Because the voice of other users is muted, it is a design wise out-of-the-box feature that brings frequency and location separation but allows everyone to stay in the same mumble channel.

Related content

Forum topic

FlightGear Newsletter

Screenshots


Idea to integrate into FGFS

10}% completed Pending Pending

ML Discussion: https://sourceforge.net/p/flightgear/mailman/flightgear-devel/thread/1919A28D-44D8-46F0-8A65-A5633A8AB743%40hallinger.org/#msg58717212

Using libmumble, a standalone mumble c++17 library, we could integrate FGCom-mumble directly into FlightGear. This way, FGFS would talk "mumble" to a mumble server and the plugins functions would be integrated into the core. For pilots, a simple "click" to connect in the multiplayer would be enough to participate, while having all the advanced features of fgcom-mumble available (like custom NDBs, radio stations; as well as the possibility for other clients (ATC!) to participate easily on the radio spectrum).

A main idea is also to use the existing fgcom-mumble code to avoid double work. But otoh maybe a direct rewrite of the core stuff may be cleaner; most of the magic is in the fgcom-mumble radio model code anyway, so we might just use some bits, if that is possible?

libmubmble is not yet API-stable, but there was already a first dicussion about feasability and basic mechanics:

  • From FGCom-mumbles side, we need to integrate the data structures into the core. So radios need to be registered, etc. This should not be too hard
    • we probably just need to not run the UPD-Server but send the needed data directly into the decoding function of it. At a later stage, we might better integrate that part, but for a first working solution, just creatig a FCGOM-mumble UDP-Packet string in FGFS and sending it periodically (or already on-demand?) into the udp-servers decoder function should be enough - it just creates some CPU overhead which should not be too bad and will establish the needed local data structure.
    • Note, that we cannot rely on the mpservers data structures (even if there is radio data), because in FGCom-mumble potential other clients are also participating (like radio-playback bots for ATIS etc!). So we really need to use mumbles plugin messages.
  • Basicly the libmumble will run its own threads for networking. Upon receiving mumble audio or mumble-plugin data, callback functions would be called from the lib:
    • Incoming audio data need to be processed by the fgcom-mumble plugin functions, and then the result handed over into fgfs audio out handling.
    • Incoming plugin data needs to be fed into the fgcom-mumble internal remote data struct (just hand the data into the existing data parser).
  • Pressing the already existing fgfs PTT button
    • would need to send plugin data to mumble, to inform other clients. This is currently done by calling a mumble client function, but that is surely not available from libmubmble. It would probably be enough, if fgfs core supplied an implemention that calls the appropriate libmumble function and hands over the data.
    • also, the audio data needs to be fetched from the mic, and then handed over to libmumbles audio encoding and sending routine. This probably can somewhat be partly copied from the legacy fgcom implementation.
  • Questions regarding fgfs currently are:
    • Tick icon (Answer: use Subsystem) how to exactly the integration on fgfs side works. That needs peeks on fgcoms code as well as some discussion at the mailing list.
    • how to integrate the libmubmle code into the fgfs build chain (its cmake).
      • Tick icon legally: libmubmle has a BSD 3-clause licence, is that compatible?
      • Tick icon And what about libmubmles dependencies, like OpenSSL?
      • technically, how to include that all into the existing build system?