How about we work this link design another way.
Assume the receiver is high up, so no multipathing.
Assume the radiated power, thru a vertical whip (8cm long)at 900 MHz, is only 1 microwatt (-30 dBm [dB milliwatt], or the energy of a toy car responding back to the human controller).
Can we provide 100 bits per second, from the 1uW Transmitter to the Receiver, over 10km?
Lets run some numbers
-174dBm/Hz the Boltsmann/Nyuist/Johnson random noise floor
+20 dB increase in system noise, with 100Hz BandWidth
+20 dB Signal Noise Ratio providing essentially NO
+4 dB easy receiver noise figure at 900MHz
+0 dB multipath, rain, foliage losses
-6 dB benefit of matching RX antenna into LNA
+6 dB nearby transmitters, desensing 900MHz receiver
-174 + 20 + 20 + 4 -6 +6 = -174 + 44 = -130dBm, which across 50 ohms is [(-120dBm = 0.623 microVolts PP) / sqrt(10)] ==> 0.20uVpp.
Now assume your TX produces 1uW (-60dBW, -30 dBm or dBmW) into a zero-gain vertical whip 8cm antenna.
What range can we expect? RX needs -130, TX produces -30.
Your antenna produces 14dB gain, so there is some beam-forming and the sensitive region is 360 degrees / 2^(14/3) or 360/20 or about 18 degrees field-of-view. We'll assume all this beamforming is in the horizontal axis.
Our link has 130 - 30 + 14 = 114dB.
Path loss is
22dB + 10*log10( distancedistance / wavelengthwavelength)
So we have about 92 dB to spend on distance between TX and RX.
Divide the 90 by 2 (to handle the D^2/W^2) and get 45.
Discard the 5 (gives more margin), and you have 40, indicating only 10^40/10 = 10,000 wavelengths; at 1/3 meter wavelength,
you have 3,333 meters of communication distance. Or about 2 miles. With lots of margin, if your RX antenna is up high.
What does this mean? at 900MHz, you can slowly signal for several miles, using very low power, perhaps generated from a simple XTAL osc and a 90:1 prescalar and a PhaseLockLoop.
Can you send 100 bits/second over 10,000 meters? Not without more power or some TX antenna gain OR using (Error Correction) Coding of the data so the SNR can be dramatically reduced.
We need about 3X more range; given 4X more range will cost 6+6 = 12dB, the 3*3 will cost 10dB. Coding should let you drop the SNR from 20dB to 10dB. Standard Viterbi coding (easy said, hard to do) will provide this.
The fun comes from the narrow-band signal: only 100 Hertz, thus the receiver and transmitter need to track each other within 10Hertz???? or 1 part in 90,000,000. Or, as NASA does in acquiring signals of a narrow-band satellite transmission: slowly sweep the frequency region around the expected Transmission carrier.
And TX and RX phase noise become big deals, requiring skill and money and complexity and power-draw.