Physical layer : wireless communication

A project log for digital-walkie-talkie

long range, low power, modular

Christoph TackChristoph Tack 08/26/2020 at 19:250 Comments


Channel capacity

Shannon-Hartley law: C = B * log2(S/N + 1), where C is channel capacity [bps], B is bandwidth [Hz] and S/N is signal/noise ratio.

Example: dPMR (C = 4800bps, B=6250Hz).  So S/N must be at least 0.70.

Number of bits/symbol needed

Nyquist's Theorem : C = 2*B *log2(N)

Example: dPMR (C = 4800bps, B=6250Hz).  So N is 1.3bits/symbol.

Noise floor

–174 dBm is the thermal noise floor at room temperature in a 1-Hz bandwidth.

e.g. for 10kHz bandwidth, the noise floor is -134dBm.

(Long-range RF communication: Why narrowband is the de facto standard, Texas Instruments)

Legal limitations

We can only make use of unlicensed bands.  Some bands only allow pre-certified equipment and fixed antennas.  Here are some options for unlicensed spectrum.  I left out the <100mW options and constrained myself to the sub-1GHz options.


  1. Citizen band : 12W, SSB, 10kHz channels, 26.690MHz to 27.410MHz, some channels excluded
  2. SRD : 100mW, 5 10kHz wide channels around 27MHz, <0.1% duty cycle


  1. SRD : 0.5W, 169.4MHz to 169.475MHz, 50kHz channels, <1% duty cycle


  1. PMR446 : 0.5W, ,6.25kHz or 12.5kHz, 446MHz to 446.2MHz


  1. Intercom : 100mW, BW<200kHz

865-868MHz & 874-874.4MHz & 917.3-918.9MHz

  1. SRD : 0.5W, BW<200kHz, divided into 4 allowable sub bands, <2.5% duty cycle


  1. SRD860 : 0.5W, BW<250kHz, <10% duty cycle

Side note

Polite spectrum access = listen before transmit (LBT) and adaptive frequency agility (AFA).

As contradictory as it might seem, LBT+AFA is no benefit over 10% duty cycle.  It restricts the system to 100s per hour per 200kHz bandwidth (=2.8% duty cycle), a maximum transmission time of 4s and so on... (see ETSI EN 300 220-1 V3.1.1 (2017-02),

Modulation types


LoRa is a wide band modulation (250kHz), which forces us to keep duty cycles <10%.  To get enough throughput, SF6 would have to be used.

Possible ICs : SX1278/RFM98


The code used is here.  The client keeps sending data to the server.  The server acknowledges each packet.  Every 10s, the server prints out a report.

The RSSI is low because both modules are connected to a u.fl/SMA cable assembly which ends in a 50ohm load.  These cable assemblies don't perform well.  The signal level could be dropped further by removing the cable assemblies.

Spreading Factor 6 doesn't seem to work using the RadioHead library.  Anyway, the throughput is rather low, taken into account that most legal options require a maximum 10% dutycycle when using such large bandwidths.  The values shown here are close to 100% duty cycle.


Fairly low bandwidth, more suitable for voice comms using 10kHz wide channels.  Duty cycle limitations would not be needed.

Some basics

Possible ICs : SX1278/RFM98, SI4463/RFM26, RFM23, AX5243-D, AX5043, CC1101 or newer


Possible ICs : SI4463, AX5243-D (SPI, no single ended antenna output, so can't be used with external PA), AX5043 (SPI interface), CC1101 (or newer).

SI4432 is obsolete.  The OnSemi AX5243-D is not available on a 500mW - 1W module.

AX5043 looks interesting, but little tools are available.  There's a home brew radio however.


I'm not planning to turn this into an actual application.  It's only a proof of concept.  If you want a VoIP solution that you could really use in your application, have a look at Mumble.  It's used in the RigPi.