{"id":21707771,"url":"https://github.com/flightaware/beast-splitter","last_synced_at":"2025-04-12T16:16:12.389Z","repository":{"id":66872733,"uuid":"59662036","full_name":"flightaware/beast-splitter","owner":"flightaware","description":"Utility that distributes Mode-S Beast output to multiple clients","archived":false,"fork":false,"pushed_at":"2025-03-26T20:25:32.000Z","size":185,"stargazers_count":29,"open_issues_count":7,"forks_count":9,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-04-12T16:15:49.559Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flightaware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-05-25T12:39:02.000Z","updated_at":"2025-03-26T20:25:33.000Z","dependencies_parsed_at":"2023-02-23T10:46:10.806Z","dependency_job_id":"d4e049a5-062a-4cda-ae53-2c6128492819","html_url":"https://github.com/flightaware/beast-splitter","commit_stats":null,"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flightaware%2Fbeast-splitter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flightaware%2Fbeast-splitter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flightaware%2Fbeast-splitter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flightaware%2Fbeast-splitter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flightaware","download_url":"https://codeload.github.com/flightaware/beast-splitter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248594190,"owners_count":21130316,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-25T22:19:13.496Z","updated_at":"2025-04-12T16:16:12.367Z","avatar_url":"https://github.com/flightaware.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# beast-splitter\n\nThis is a helper utility for the [Mode-S Beast][1].\n\nThe Beast provides a single data stream over a (USB) serial port.\nIf you have more than one thing that wants to read that data stream, you need\nsomething to redistribute the data. This is what beast-splitter does.\n\n## Input side - Serial connection\n\nbeast-splitter knows how to talk to a Mode-S Beast over a USB serial port.\nYou should specify the path to the Beast's serial port with --serial.\nThe Debian package includes udev rules that should make the Beast's serial\nport available as /dev/beast.\n\nbeast-splitter will try to automatically determine the baud rate that the Beast\nis running at. This may take a few seconds, longer if there is no traffic.\nTo explicitly set the baud rate, there is a --fixed-baud command line option.\n\n## Input side - Network connection\n\nbeast-splitter can make an outgoing network connection to receive Beast data if\nyou have already made the Beast available via the network. You should give the\nhost:port to connect to via the --net option. You can use this to chain\nbeast-splitter instances together: specify --listen on the beast-splitter closer\nto the Beast, and --net on the other beast-splitter.\n\n## Configuring Beast settings\n\nbeast-splitter will, by default, autodetect the capabilities of the Beast and\nallow clients to request any of the message-filtering options. To force\nparticular options on or off on the actual Beast itself, regardless of what\nclients asked for, use the --force command-line option (see below for how to\nspecify settings). The \"binary format\" and \"hardware handshake\" options are\nalways used, you cannot override them with --force.\n\nThe options set by beast-splitter will override whatever DIP switch settings\nare set on the Beast itself.\n\n## Output side\n\nbeast-splitter provides data to network clients over TCP, by accepting\nconnections on a TCP port or by making outgoing connections to a given address.\n\nTo set up a listening port, specify --listen with the port number to listen on. \nYou may optionally provide an interface address to bind to; if no address is\ngiven, all addresses are bound.\n\nTo set up an outgoing connnection, specify --connect with a host and port.\nbeast-splitter will try to reestablish the connection if it is lost.\n\nBoth --listen and --connect accept a settings option (see below) that provides\nthe initial settings for new connections. After connecting, clients can\nrequest different settings by the Beast input commands (0x1A '1' 'c', etc -\nsee the Beast wiki).\n\n## Output filtering and translation\n\nEach client can have different settings for output format and the types of\nmessages it wants to receive. For example, one client might want Beast binary\nformat, with only DF11/17/18 provided; while a second client might want all\nmessages in AVR format.\n\nbeast-splitter allows this. For formats other than Beast binary, and for cases\nwhere the requested timestamp format (GPS or 12MHz) does not match that being\nprovided by the Beast itself, beast-splitter will translate as needed.\n\nFor cases where clients have requested different filtering options,\nbeast-splitter will ask the real Beast for the most general set of messages\nneeded and then perform per-client filtering of the messages before forwarding\nthem on.\n\n## Settings\n\nThe --listen, --connect, and --force options take a \"settings string\" which is\na list of letters that indicates which settings to turn on or off. These\nsettings mostly correspond to DIP switch settings that can be set on the Beast.\nGenerally, uppercase means \"turn on\" and lowercase means \"turn off\". If a\nsetting is omitted, this is a \"don't care\" setting where beast-splitter will\nnot override that setting either way.\n\nThe available settings are:\n\n * B: Use Beast-Classic mode (see below)\n * R: Use Radarcape mode (see below)\n * c/C: Use AVR format / use binary format\n * d/D: no special filtering / send only DF11/17/18 messages\n * e/E: normal AVR format / AVR with timestamps format (only in AVR mode)\n * f/F: normal CRC checks / disable CRC checks\n * g/G: 12MHz timestamps / GPS timestamps (only in Radarcape mode)\n * h/H: no flow control / flow control enabled (ignored!)\n * i/I: FEC enabled / FEC disabled\n * j/J: Mode A/C disabled / Mode A/C enabled\n * k/K: no special filtering / do not send DF0/4/5 (only in Beast-Classic mode)\n\nThe h/H setting is understood but ignored; hardware flow control is always\nused.\n\nThe B setting turns on Beast-Classic mode. In this mode, Radarcape status\nmessages are not forwarded, 12MHz timestamps are always used, the DF0/4/5\nfiltering option is enabled, and a request _from a client_ to set the 'g' or\n'G' option is interpreted as setting the DF0/4/5 filtering options. You should\nset this for connections where the client expects to talk to a Beast-Classic.\n\nThe R setting turns on Radarcape mode. In this mode, Radarcape status\nmessages are forwarded, the DF0/4/5 filtering option is not available,\nand a request _from a client_ to set the 'g' or 'G' option is interpreted as\nsetting the 12MHZ/GPS timestamp options. You should set this for connections\nwhere the client expects to talk to a Radarcape.\n\n## Status file output\n\nIf the --status-file option is given, beast-splitter will periodically write\na json status file to the path given. The status file has information about\nwhether communication with the Beast is OK, and for Radarcape-style receivers,\ninformation extracted from the status message that the receiver generates.\n\n## Just give me an example\n\n```\n$ beast-splitter --serial /dev/beast --listen 30005:R --connect localhost:30104:R\n```\n\nThis will:\n\n * Connect to a Beast at /dev/beast with autodetection\n * Accept TCP connections on port 30005 and send Radarcape-format data\n   to clients that connect.\n * Establish (and maintain) a connection to localhost, port 30104, and\n   send Radarcape-format data there.\n\n## Building beast-splitter\n\nThe main way this is built is as a Debian package:\n\n```\n$ dpkg-buildpackage -b\n$ sudo dpkg -i ../beast-splitter_version_architecture.deb\n```\n\nOtherwise, try \"make\" to build a binary. You will need a C++11 compiler (e.g.\nrecent g++) and the [Boost library][2].\n\n## Configuring beast-splitter when installed as a package\n\nIf you installed the Debian package, then it installs a systemd service that\ncan automatically start beast-splitter. It is disabled by default. To configure\nthis, edit /etc/default/beast-splitter and set ENABLED=yes (plus any other\nconfiguration you want), then \"systemctl restart beast-splitter\" to pick up\nthe configuration changes.\n\n## git repository\n\nThe beast-splitter source is maintained in a repository on [GitHub][3].\n\n## License\n\nbeast-splitter is licensed under the [BSD 2-clause license][4]; see LICENSE.txt.\n\n\n[1]: http://www.modesbeast.com/\n[2]: http://www.boost.org/\n[3]: https://github.com/flightaware/beast-splitter\n[4]: https://opensource.org/licenses/BSD-2-Clause\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflightaware%2Fbeast-splitter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflightaware%2Fbeast-splitter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflightaware%2Fbeast-splitter/lists"}