-
Notifications
You must be signed in to change notification settings - Fork 9
03 Configuration
All aspects of tetra-bluestation are configured through a single toml file. A template is present in the example_config folder.
Make a working copy:
cp example_config/config.toml config.tomlOpen the config file with your favorite file editor:
nano config.tomlTL;DR: for proper operation, you must change the following values from default:
-
tx_freq: match your desired Tx frequency -
rx_freq: match your desired Rx frequency - Uncomment the relevant SDR platform you're using ([phy_io.soapysdr.iocfg_*]). Leave the default values for less headache. Comment out the ones you aren't using.
- Replace
mccandmncwith your network's values (examples: TETRAPACK uses MCC 901, MNC 9999. Tmo.services uses MCC 901, MNC 9998). -
main_carrier: change value to match the Tx frequency downlink (see calculation procedure in the notes below). Editfreq_offsetif needed. -
duplex_spacing: if you want to use a custom duplex spacing, change this value to 7, uncommentcustom_duplex_spacingand set the offset there.
The configuration is split in multiple sections:
- Global configuration
- [phy_io]: PHY Layer configuration
- [net_info]: Network Information
- [cell_info]: Cell Information
- Configuration files are TOML and therefore case-sensitive (
"Bs"≠"bs").- All frequencies are expressed in Hz, never in MHz.
- RF parameters in
[phy_io]must be consistent with those derived from[cell_info].- Only one SDR device configuration (
iocfg_*) may be active at a time.- Commented lines are not parsed and have no effect.
- Using incorrect MCC/MNC values or frequencies may violate local regulations.
- Debug logging and RF sample capture generate very large files and additional system load.
- When unsure, consult the relevant ETSI TS 100 392 specifications before changing values.
| Parameter | Default / Example | Possible Values | Notes |
|---|---|---|---|
config_version |
"0.5"(version dependent) |
String (version identifier) | Must match the configuration format expected by the running BlueStation version. |
stack_mode |
"Bs" |
String: "Bs", "Ms", "Mon"
|
Base Station, Mobile Station, or Monitor mode (the latter two aren't available yet). "Bs" required for cell operation. |
debug_log |
disabled | String (File path) | Enables verbose logging; large files and additional system load. |
| Parameter | Default / Example | Possible Values | Notes |
|---|---|---|---|
backend |
"SoapySdr" |
String: "SoapySdr"
|
RF backend abstraction layer. Other backends may be added in the future. |
dl_tx_file |
disabled | String: File path | Dumps generated downlink baseband samples to file (debug only). |
ul_rx_file |
disabled | String: File path | Dumps received uplink baseband samples to file (debug only). |
| Parameter | Default / Example | Possible Values | Notes |
|---|---|---|---|
tx_freq |
438025000 |
Integer (Hz) | Downlink transmit frequency. Must match cell_info parameters listed below. |
rx_freq |
433025000 |
Integer (Hz) | Uplink receive frequency. Must match duplex spacing and band rules. |
ppm_err |
0.0 |
Float | Frequency correction for SDR oscillator error. |
Uncomment the SDR you're using, comment out any others. Only one iocfg_* subsection should be enabled at a time.
| Parameter | Default / Example | Possible Values | Notes |
|---|---|---|---|
rx_ant |
"LNAL" |
"LNAL", "LNAH", "LNAW"
|
RX antenna port. Selection depends on the target frequency band. |
tx_ant |
"BAND1" |
"BAND1", "BAND2"
|
TX antenna port. |
rx_gain_lna |
18.0 |
Float (dB) | RX LNA gain stage. |
rx_gain_tia |
6.0 |
Float (dB) | RX TIA gain stage. |
rx_gain_pga |
10.0 |
Float (dB) | RX PGA gain stage. |
tx_gain_pad |
18.0 |
Float (dB) | TX PAD gain stage. |
tx_gain_iamp |
3.0 |
Float (dB) | TX IAMP gain stage. |
| Parameter | Default / Example | Possible Values | Notes |
|---|---|---|---|
rx_ant |
"LNAW" |
"LNAW", "LNAH"
|
RX antenna port. Selection depends on the target frequency band. |
tx_ant |
"BAND2" |
"BAND1", "BAND2"
|
TX antenna port. |
rx_gain_lna |
18.0 |
Float (dB) | RX LNA gain stage. |
rx_gain_tia |
6.0 |
Float (dB) | RX TIA gain stage. |
rx_gain_pga |
10.0 |
Float (dB) | RX PGA gain stage. |
tx_gain_pad |
18.0 |
Float (dB) | TX PAD gain stage. |
tx_gain_iamp |
3.0 |
Float (dB) | TX IAMP gain stage. |
Both models share the same
iocfg_limesdrsection key inconfig.toml. Only one should be active at a time.
| Parameter | Default / Example | Possible Values | Notes |
|---|---|---|---|
rx_ant |
"RX" |
"RX" |
RX antenna port. |
tx_ant |
"TX" |
"TX" |
TX antenna port. |
rx_gain_lna |
42.0 |
Float (dB) | RX LNA gain stage. |
rx_gain_pga |
16.0 |
Float (dB) | RX PGA gain stage. |
tx_gain_dac |
9.0 |
Float (dB) | TX DAC gain stage. |
tx_gain_mixer |
30.0 |
Float (dB) | TX mixer gain stage. |
| Parameter | Default / Example | Possible Values | Notes |
|---|---|---|---|
rx_ant |
"TX/RX" |
"TX/RX", "RX2"
|
RX antenna port. |
tx_ant |
"TX/RX" |
"TX/RX" |
TX antenna port. |
rx_gain_pga |
50.0 |
Float (dB) | RX PGA gain stage. |
tx_gain_pga |
35.0 |
Float (dB) | TX PGA gain stage. |
| Parameter | Default / Example | Possible Values | Notes |
|---|---|---|---|
rx_ant |
"A_BALANCED" |
"A_BALANCED", "A_N", "A_P"
|
RX antenna port. "A_BALANCED" recommended. |
tx_ant |
"A" |
"A" |
TX antenna port. |
rx_gain_pga |
20.0 |
Float (dB) | RX PGA gain stage. |
tx_gain_pga |
89.0 |
Float (dB) | TX PGA gain stage. |
uri |
disabled | String | Connection URI. Do not set for the original Pluto. Required for Pluto+ when selecting a specific interface. Examples: "usb:1.3.5", "ip:pluto.local", "ip:192.168.42.42"
|
direct |
true |
true, false
|
Advanced driver parameter. Do not change unless you know what you are doing. |
timestamp_every |
1500 |
Integer | Controls timestamping interval. Do not change unless you know what you are doing. |
loopback |
false |
true, false
|
Enables SDR loopback mode. Do not change unless you know what you are doing. |
Firmware and driver requirements
The stock PlutoSDR firmware and SoapySDR driver do not support hardware timestamping, which is required by TETRA-bluestation. Before using this platform, follow the PlutoSDR setup procedure in the "Dependencies and Building" section.
| Parameter | Default / Example | Possible Values | Notes |
|---|---|---|---|
mcc |
204 |
Integer (3 digits) | Mobile Country Code. Use only assigned or permitted values. |
mnc |
1337 |
Integer (2–3 digits) | Mobile Network Code. Use only assigned or permitted values. |
| Parameter | Default / Example | Possible Values | Notes |
|---|---|---|---|
freq_band |
4 |
1–5 (band-dependent) |
4 corresponds to the 400 MHz TETRA band. |
main_carrier |
1521 |
Integer | Carrier index; see note below for calculation. |
duplex_spacing |
4 |
Band-dependent integer |
4 = 5 MHz spacing in 400 MHz band. |
custom_duplex_spacing |
disabled | Integer (Hz) | Non-standard duplex spacing; requires radio support. |
freq_offset |
0 |
0, ±6250, 12500
|
Frequency offset in Hz per ETSI specification. |
reverse_operation |
false |
true, false
|
Controls UL/DL ordering. |
location_area |
2 |
Integer | Location Area Identifier (LAI). |
colour_code |
1 |
0–3 |
Distinguishes adjacent cells on same frequency. |
Main carrier (N) calculation
main_carrier = (DL_frequency_Hz - base_frequency_Hz - freq_offset_Hz) / 25_000
Where (per ETSI TS 100 392-15):
base_frequency_Hzis the reference/base frequency for the selected bandfreq_offset_Hzis one of:-6250,0,+6250,+12500
This tool by BU2HB will help in calculating frequency values
Example (freq_band = 4, base/reference = 400 MHz)
base_frequency_Hz = 400 000 000DL_frequency_Hz = 438 025 000freq_offset_Hz = 0
(438 025 000 - 400 000 000 - 0) / 25 000 = 1521So:main_carrier = 1521
| Parameter | Default / Example | Possible Values | Notes |
|---|---|---|---|
neighbor_cell_broadcast |
0 |
Integer | Controls neighbor cell information broadcast. |
cell_load_ca |
0 |
Integer | Advertised cell load (channel allocation). |
late_entry_supported |
false |
true, false
|
Allows joining ongoing group calls. |
subscriber_class |
0xFFFF |
Bitmask | Defines allowed MS classes. |
registration |
true |
true, false
|
Enables registration support. |
deregistration |
true |
true, false
|
Enables deregistration support. |
priority_cell |
false |
true, false
|
Marks cell as priority for reselection. |
migration |
false |
true, false
|
Enables migration features (WIP). |
system_wide_services |
true |
true, false
|
If false, mobiles may enter fallback mode. |
voice_service |
true |
true, false
|
Voice service flag; may be required for MS compatibility. |
circuit_mode_data_service |
false |
true, false
|
Circuit Mode Data support (not implemented). |
sndcp_service |
false |
true, false
|
Packet data service (not implemented). |
aie_service |
false |
true, false
|
Air Interface Encryption support flag. |
advanced_link |
false |
true, false
|
Advanced link features (WIP). |
system_code |
0 |
0–15 |
Identifies TETRA system version. |
sharing_mode |
0 |
Integer | Main control channel sharing mode. |
ts_reserved_frames |
0 |
Integer | Reserved frames for timeslot allocation. |
u_plane_dtx |
false |
true, false
|
Enables user-plane DTX. |
frame_18_ext |
false |
true, false
|
Frame 18 extension support. |
timezone |
disabled | String (IANA tz name) | When set, the BS broadcasts UTC time and local time offset once per hyperframe (~61s), allowing MSs to synchronize their clocks. DST is handled automatically. Example: "Europe/Amsterdam". |
local_ssi_ranges |
0, 91 | List of ranges | SSI ranges kept local to the cell. Overrides brew routing; matching incoming brew traffic is dropped. End value is exclusive. |
| Parameter | Default / Example | Possible Values | Notes |
|---|---|---|---|
host |
System-dependent | String: Hostname or IP address | Brew server address. |
port |
3003 |
Integer (TCP port) | Brew server port. |
tls |
true |
true, false
|
TLS is required (wss:// / https://). |
username |
none | Integer | HTTP Digest auth username (required when enabled). For TPC: DMRID (plus optional SSID) |
password |
none | String | HTTP Digest auth password (required when enabled). For TPC: hotspot password |
reconnect_delay_secs |
15 |
Integer (seconds) | Delay before reconnect attempts after disconnect. |
jitter_initial_latency_frames |
0 |
Integer | Adds fixed startup latency (in frames) for inbound Brew jitter buffering. Adaptive buffering remains enabled. |
whitelisted_ssis |
[91] | List of SSIs | Limits Brew transmission to listed SSIs only. If unset, all non-local SSIs are allowed over Brew. |
feature_sds_enabled |
true |
true, false
|
Enable SDS forwarding between local and Brew clients. |