Class LoraLinkBudget
The gains and losses of a LoRa link, from the transmitting radio to the receiving one.
public sealed record LoraLinkBudget : IEquatable<LoraLinkBudget>
- Inheritance
-
LoraLinkBudget
- Implements
- Inherited Members
Remarks
The properties are the parts of a deployment a maker chooses: how hard the radio drives, which antenna goes on each end, and how much cable sits between each antenna and its radio. Every value is in decibels and resolves to a hundredth of a decibel. A new budget is 0 dBm between isotropic antennas with no cable, heard with RadioNoiseFigureDb. The static members give each term of a budget on its own, from the documents that define them.
Fields
GatewayNoiseFigureDb
A typical noise figure for a LoRaWAN gateway receiver, in dB.
public const double GatewayNoiseFigureDb = 3
Field Value
Remarks
Semtech TN1300.05 works with 3 dB for a gateway.
RadioNoiseFigureDb
A typical noise figure for a Semtech sub-GHz LoRa radio, in dB.
public const double RadioNoiseFigureDb = 6
Field Value
Remarks
Semtech AN1200.22 takes 6 dB as the receiver behind the SX1272 and SX1276 datasheet sensitivities.
Properties
EirpDbm
The equivalent isotropically radiated power, in dBm.
public double EirpDbm { get; }
Property Value
Remarks
The transmit power plus the transmitting antenna gain, less the transmitting cable loss. This is the figure regional power ceilings limit.
NoiseFigureDb
The noise figure of the receiver, in dB, such as RadioNoiseFigureDb for a node or GatewayNoiseFigureDb for a gateway.
public double NoiseFigureDb { get; init; }
Property Value
ReceiveAntennaGainDbi
The gain of the receiving antenna over an isotropic antenna, in dBi.
public double ReceiveAntennaGainDbi { get; init; }
Property Value
ReceiveCableLossDb
The loss in the cable and connectors between the receiving antenna and its radio, in dB.
public double ReceiveCableLossDb { get; init; }
Property Value
TransmitAntennaGainDbi
The gain of the transmitting antenna over an isotropic antenna, in dBi.
public double TransmitAntennaGainDbi { get; init; }
Property Value
TransmitCableLossDb
The loss in the cable and connectors between the transmitting radio and its antenna, in dB.
public double TransmitCableLossDb { get; init; }
Property Value
TransmitPowerDbm
The power the transmitting radio delivers at its antenna port, in dBm.
public double TransmitPowerDbm { get; init; }
Property Value
Methods
DemodulatorSnrDb(byte)
Returns the signal-to-noise ratio the LoRa demodulator needs at a spreading factor, in dB.
public static double DemodulatorSnrDb(byte spreadingFactor)
Parameters
spreadingFactorbyteThe spreading factor, clamped to 5 to 12.
Returns
- double
The typical figure from Table 6-1 of the SX1261/2 datasheet, from -2.5 dB at SF5 to -20 dB at SF12.
FccMaxConductedDbm(double, ushort?)
Returns the most conducted power 47 CFR 15.247 allows a 902-928 MHz transmitter through an antenna, in dBm.
public static double? FccMaxConductedDbm(double antennaGainDbi, ushort? hoppingChannels = null)
Parameters
antennaGainDbidoubleThe directional gain of the transmitting antenna.
hoppingChannelsushort?The number of hopping channels, or
nullfor a system using digital modulation.
Returns
- double?
1 W for digital modulation and for hopping on at least 50 channels, and 0.25 W for hopping on 25 to 49, less every decibel the gain exceeds 6 dBi; or
nullfor hopping on fewer than 25 channels, which paragraph (b)(2) sets no limit for.
FreeSpaceLossDb(uint, uint)
Returns the free-space basic transmission loss between isotropic antennas, in dB.
public static double FreeSpaceLossDb(uint distanceMeters, uint frequencyHz)
Parameters
distanceMetersuintThe distance between the antennas in meters.
frequencyHzuintThe carrier frequency in hertz.
Returns
- double
The loss of Recommendation ITU-R P.525-5, equation (5), which grows by 6.02 dB each time the distance doubles.
FresnelRadiusMillimeters(uint, uint, uint)
Returns the radius of the first Fresnel ellipsoid at a point on a path, in millimeters.
public static uint FresnelRadiusMillimeters(uint nearMeters, uint farMeters, uint frequencyHz)
Parameters
nearMetersuintThe distance from one antenna to the point, in meters.
farMetersuintThe distance from the point to the other antenna, in meters.
frequencyHzuintThe carrier frequency in hertz.
Returns
- uint
The radius of Recommendation ITU-R P.526-16, equation (2), widest halfway along the path. The diffraction zone starts where the clearance falls to 60% of it.
MarginDb(LoraLink, double)
Returns how far above the sensitivity a signal arrives across a path, in dB.
public double MarginDb(LoraLink link, double pathLossDb)
Parameters
linkLoraLinkThe link settings, whose spreading factor and bandwidth set the sensitivity.
pathLossDbdoubleThe loss between the two antennas.
Returns
- double
The link margin, which is negative where the path loses more than the link survives.
MaxPathLossDb(LoraLink)
Returns the most path loss the link survives, in dB.
public double MaxPathLossDb(LoraLink link)
Parameters
linkLoraLinkThe link settings, whose spreading factor and bandwidth set the sensitivity.
Returns
- double
The loss above which the link does not close.
MaxTransmitPowerDbm(double)
Returns the most transmit power that keeps the EIRP at or under a ceiling, in dBm.
public double MaxTransmitPowerDbm(double eirpCeilingDbm)
Parameters
eirpCeilingDbmdoubleThe EIRP limit, such as MaxEirpDbm(uint) for a frequency.
Returns
- double
The ceiling less the transmitting antenna gain, plus the transmitting cable loss. A higher-gain antenna leaves less power for the radio.
NoiseFloorDbm(uint)
Returns the thermal noise power in a channel, in dBm.
public static double NoiseFloorDbm(uint bandwidthHz)
Parameters
bandwidthHzuintThe channel bandwidth in hertz.
Returns
- double
-174 dBm/Hz plus 10 log10 of the bandwidth, as Semtech AN1200.22 derives it.
ReceivedDbm(double)
Returns the power that reaches the receiving radio across a path, in dBm.
public double ReceivedDbm(double pathLossDb)
Parameters
pathLossDbdoubleThe loss between the two antennas, such as FreeSpaceLossDb(uint, uint).
Returns
- double
The EIRP less the path loss, plus the receiving antenna gain, less the receiving cable loss.
SensitivityDbm(LoraLink)
Returns the weakest signal the receiver can demodulate on a link, in dBm.
public double SensitivityDbm(LoraLink link)
Parameters
linkLoraLinkThe link settings, whose spreading factor and bandwidth set the floor.
Returns
- double
The noise floor of the channel, raised by the noise figure and lowered by the demodulator SNR.