Inquire: Call 0086-755-23203480, or reach out via the form below/your sales contact to discuss our design, manufacturing, and assembly capabilities.
Quote: Email your PCB files to Sales@pcbsync.com (Preferred for large files) or submit online. We will contact you promptly. Please ensure your email is correct.
Notes: For PCB fabrication, we require PCB design file in Gerber RS-274X format (most preferred), *.PCB/DDB (Protel, inform your program version) format or *.BRD (Eagle) format. For PCB assembly, we require PCB design file in above mentioned format, drilling file and BOM. Click to download BOM template To avoid file missing, please include all files into one folder and compress it into .zip or .rar format.
Adafruit LoRa Radio Guide: RFM95W & RFM69 Long Range Wireless
When WiFi and Bluetooth won’t reach far enough, LoRa changes everything. I’ve deployed dozens of sensor networks using Adafruit LoRa modules, and the range still surprises me—over 2 kilometers with a simple wire antenna, and up to 20km with directional setups. That’s not marketing fluff; that’s real-world testing across open fields and through urban environments.
This guide covers the RFM95 (LoRa) and RFM69 (FSK packet radio) modules from Adafruit, including the popular LoRa Feather boards and standalone breakouts like the Adafruit RFM95W. Whether you’re building remote weather stations, asset trackers, or mesh networks, these radios provide reliable long-range communication without the complexity of cellular or the power demands of WiFi.
Understanding LoRa vs Traditional Packet Radio
Before diving into specific modules, it’s worth understanding why LoRa exists and when the simpler RFM69 makes more sense.
What Makes LoRa Different
LoRa (Long Range) uses Chirp Spread Spectrum (CSS) modulation—a technique where the signal frequency continuously increases or decreases over time. This allows receivers to decode signals up to 20dB below the noise floor, something traditional FSK modulation can’t achieve.
The tradeoff? Data rate. LoRa maxes out around 37.5 kbps in optimal conditions, and typical configurations run much slower to maximize range. You’re not streaming video with these radios—you’re sending sensor readings, GPS coordinates, or control commands.
When RFM69 Makes Sense
The RFM69 uses FSK (Frequency Shift Keying) modulation, which is faster but shorter range. At +20dBm output power, expect 200-500 meters with basic antennas, extending to 5km with careful antenna design and clear line of sight.
For applications where you need higher data throughput over moderate distances—like real-time sensor updates within a building or campus—the RFM69 often works better than LoRa. It’s also cheaper and uses slightly less power during transmission.
Adafruit RFM95W and RFM9X LoRa Specifications
The Adafruit RFM95W breakout board packages the Semtech SX1276 transceiver with essential support circuitry for easy integration.
Specification
RFM95W (LoRa)
RFM69HCW (FSK)
Modulation
LoRa CSS + FSK
FSK/GFSK/MSK/GMSK/OOK
Frequency
868/915 MHz
868/915 MHz
TX Power
+5 to +20 dBm
+13 to +20 dBm
Receiver Sensitivity
-148 dBm
-120 dBm
Range (wire antenna)
~2 km
~500 m
Range (directional)
Up to 20 km
Up to 5 km
Max Packet Size
252 bytes
60 bytes
Current (TX +20dBm)
~120 mA
~150 mA
Current (RX)
~12 mA
~30 mA
Supply Voltage
3.3V (with 5V tolerant I/O)
3.3V (with 5V tolerant I/O)
The RFM9X designation covers the entire family: RFM95 (868/915 MHz), RFM96 (433 MHz), RFM97 (868/915 MHz low power), and RFM98 (433 MHz). The Adafruit RFM95W is specifically the 868/915 MHz high-power version that most projects use in the Americas and Europe.
Breakout Board Features
Adafruit’s breakout boards add several conveniences:
3.3V voltage regulator (accepts 3-5V input)
Level shifters for 5V logic compatibility
Antenna pad with optional uFL or SMA footprints
Standard 0.1″ header spacing for breadboards
Castellated edges for direct PCB mounting
The board dimensions are compact at 29mm x 25mm x 4mm—small enough for most embedded projects but large enough to handle heat dissipation during extended transmissions.
Adafruit LoRa Feather Options
For projects needing an all-in-one solution, the LoRa Feather boards integrate the radio with a microcontroller and battery management.
Board
MCU
Flash
RAM
Radio
Price Range
Feather 32u4 RFM95
ATmega32u4
32KB
2KB
RFM95W LoRa
~$35
Feather M0 RFM95
SAMD21
256KB
32KB
RFM95W LoRa
~$35
Feather RP2040 RFM95
RP2040
8MB
264KB
RFM95W LoRa
~$20
Feather 32u4 RFM69
ATmega32u4
32KB
2KB
RFM69HCW
~$25
Feather M0 RFM69
SAMD21
256KB
32KB
RFM69HCW
~$30
Feather RP2040 RFM69
RP2040
8MB
264KB
RFM69HCW
~$18
Choosing the Right LoRa Feather
The Feather RP2040 RFM95 has become my default recommendation. The RP2040’s dual-core processor handles LoRa packet processing alongside application code without timing conflicts, and 8MB of flash provides plenty of room for CircuitPython libraries and data logging.
For battery-critical applications where every milliamp matters, the Feather M0 RFM95 draws less idle current than the RP2040 variant. The SAMD21 also has better deep sleep modes for duty-cycled sensor nodes.
The Feather 32u4 variants work fine for simple applications but struggle with memory constraints when running larger CircuitPython programs or complex Arduino sketches.
LoRa Featherwing for Existing Projects
If you already have a Feather board and want to add LoRa capability, the RadioFruit FeatherWing provides the radio module without duplicating the microcontroller.
FeatherWing
Radio
Frequency
Notes
RFM95W LoRa Wing
RFM95W
868/915 MHz
LoRa modulation
RFM96W LoRa Wing
RFM96W
433 MHz
LoRa modulation (EU)
RFM69HCW Wing
RFM69HCW
868/915 MHz
FSK packet radio
The FeatherWing approach lets you pair any Feather MCU with the radio—useful when you need WiFi connectivity (ESP32 Feather) plus long-range radio, or when prototyping with different processors before committing to an integrated solution.
Wiring the RFM95 and RFM69 Breakouts
Both RFM95 and RFM69 breakouts use SPI for communication, requiring the same basic connections to your microcontroller.
Arduino Uno/Mega Wiring
RFM Module Pin
Arduino Uno
Arduino Mega
VIN
5V
5V
GND
GND
GND
SCK
D13
D52
MISO
D12
D50
MOSI
D11
D51
CS
D4 (configurable)
D4 (configurable)
RST
D2 (configurable)
D2 (configurable)
G0 (IRQ)
D3 (configurable)
D3 (configurable)
The CS, RST, and G0 pins can be reassigned in software—just update the pin definitions in your code. The interrupt pin (G0) is essential for efficient packet reception; without it, you’d need to poll the radio constantly.
Feather M0/RP2040 Wiring
For Feather boards with external RFM breakouts:
RFM Module Pin
Feather
VIN
3V or USB
GND
GND
SCK
SCK
MISO
MI
MOSI
MO
CS
D10
RST
D11
G0
D6
Antenna Considerations for Maximum Range
The antenna is the most critical—and most often neglected—component for LoRa range. A poor antenna can reduce your 2km range to 200 meters.
Wire Antenna Lengths
For a simple quarter-wave monopole antenna, cut a wire to these lengths:
Frequency
Quarter-Wave Length
433 MHz
164.7 mm (6.5 inches)
868 MHz
82.2 mm (3.2 inches)
915 MHz
78.0 mm (3.1 inches)
Solid core wire works better than stranded—it maintains its shape and consistent electrical properties. I use 22 AWG hookup wire, soldered perpendicular to the board at the antenna pad.
Upgrading to External Antennas
For production deployments or range-critical applications, upgrade to a proper antenna:
uFL connector: Solder a uFL connector to the breakout’s alternate antenna pads, then connect a pigtail cable to your antenna. This works well for enclosures where the antenna mounts externally.
SMA edge-mount: For bench testing or semi-permanent installations, an SMA connector provides easy antenna swapping. The Adafruit RFM95W breakout has pads for edge-mount SMA connectors.
Antenna recommendations:
Rubber duck (2-3 dBi): Good general-purpose outdoor antenna
Fiberglass whip (5-6 dBi): Better gain, weatherproof
Yagi directional (8-12 dBi): Point-to-point links over several kilometers
Arduino Code Example for RFM95 LoRa
The RadioHead library provides reliable, well-tested code for both RFM95 and RFM69 modules.
CircuitPython makes Adafruit LoRa development even simpler, especially on Feather boards with built-in radios.
python
import boardimport busioimport digitalioimport adafruit_rfm9x# Setup SPIspi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)# Setup radio pinscs = digitalio.DigitalInOut(board.RFM9X_CS)reset = digitalio.DigitalInOut(board.RFM9X_RST)# Initialize radiorfm9x = adafruit_rfm9x.RFM9x(spi, cs, reset, 915.0)rfm9x.tx_power = 20# Send a messagerfm9x.send(bytes(“Hello LoRa!”, “utf-8”))# Receive with timeoutpacket = rfm9x.receive(timeout=5.0)if packet is not None: print(“Received:”, str(packet, “utf-8”)) print(“RSSI:”, rfm9x.last_rssi)
Note that CircuitPython’s RFM9X library has some limitations compared to Arduino: no interrupt support means you must poll for packets, and maximum packet size is 252 bytes. For most sensor applications, these limitations don’t matter.
Practical Applications
Remote Weather Station
A solar-powered weather station with BME280 sensor sends temperature, humidity, and pressure readings every 15 minutes. The LoRa Feather sleeps between transmissions, drawing under 100µA. With a 2000mAh battery and small solar panel, it runs indefinitely.
Agricultural Sensor Network
Soil moisture sensors scattered across fields report to a central gateway. Each node uses an RFM95 module with a 6dBi fiberglass antenna, achieving reliable communication over 1.5km through crops and vegetation.
Asset Tracking
GPS trackers with RFM69 radios report vehicle positions within a warehouse complex. The shorter range isn’t a problem, and the faster data rate allows more frequent updates without collision issues.
LoRaWAN Integration
For internet connectivity, Adafruit LoRa modules work with The Things Network and other LoRaWAN providers. The Feather RP2040 RFM95 has enough processing power to run the full LoRaWAN stack, enabling cloud integration for IoT projects.
Check SPI wiring—MISO and MOSI are frequently swapped
Verify CS pin is correctly defined in code
Ensure 3.3V power is stable (measure with multimeter)
Try a manual reset before init()
No Communication Between Modules
Both radios must use identical frequency settings
RFM95 and RFM69 cannot communicate with each other
Check antenna connections—transmitting without antenna can damage the module
Start with both radios close together, then increase distance
Poor Range
Antenna length must match frequency (use calculations above)
Keep antenna vertical and away from metal objects
Increase TX power in code (up to +20 dBm)
Try reducing bandwidth for longer range (slower data rate)
CircuitPython Misses Packets
Increase polling frequency in receive loop
Use longer timeout values
Consider switching to Arduino if packet loss is critical
Frequently Asked Questions
Can RFM95 LoRa radios communicate with RFM69 packet radios?
No. The RFM95 uses LoRa modulation while the RFM69 uses FSK modulation—they’re fundamentally incompatible. Both radios must be the same type (both LoRa or both FSK) and operate on the same frequency. An RFM95 at 915 MHz can only talk to another RFM95/96/97/98 at 915 MHz with matching LoRa settings.
What’s the maximum range I can achieve with Adafruit LoRa modules?
With the Adafruit RFM95W at +20dBm and simple wire antennas, expect 1.5-2km line-of-sight. With high-gain directional antennas (Yagi or parabolic), 15-20km is achievable in ideal conditions. Urban environments with buildings and interference typically reduce range by 50-75%. The RFM69 achieves roughly half the range of LoRa under similar conditions.
Do I need a license to use these radios?
In the Americas, 915 MHz is license-free under FCC Part 15 rules (limited to 1 watt EIRP). In Europe, 868 MHz is license-free under ETSI regulations (limited to 25mW in most sub-bands). The 433 MHz band has more restrictions varying by region. Always verify local regulations before deployment, especially for commercial applications.
How do I choose between 433 MHz and 915 MHz modules?
Choose based on your region’s regulations and propagation needs. 433 MHz penetrates obstacles better and travels slightly farther at equivalent power, but has a longer antenna and more interference from other devices. 915 MHz offers more bandwidth and shorter antennas. In the Americas, 915 MHz is the practical choice; in Europe, both 433 MHz and 868 MHz are options.
Can I use Adafruit LoRa modules with LoRaWAN networks like The Things Network?
Yes, but with caveats. The RFM95 and RFM9X modules support the LoRa physical layer that LoRaWAN requires. However, you’ll need a LoRaWAN software stack (LMIC library for Arduino, or TinyLoRa for CircuitPython). The Feather RP2040 RFM95 handles LoRaWAN well; smaller MCUs like the ATmega32u4 struggle with the protocol’s memory requirements.
Power Consumption and Battery Life
Understanding power draw helps you design battery-powered LoRa nodes that last months or years on a single charge.
State
RFM95W Current
RFM69HCW Current
Sleep
0.2 µA
0.1 µA
Idle/Standby
1.5 µA
1.25 µA
Receive
12 mA
30 mA
Transmit (+13 dBm)
28 mA
45 mA
Transmit (+20 dBm)
120 mA
150 mA
For a typical sensor node transmitting once per hour, the radio spends most of its time in sleep mode. A 2000mAh battery could theoretically last over a year with proper duty cycling. The key is minimizing time in receive mode—if you’re just sending data one-way, skip the receive window entirely.
The RFM9X series actually draws less current in receive mode than the RFM69, making it more efficient for applications requiring bidirectional communication or listening for incoming commands.
Building Reliable Networks
Single point-to-point links are straightforward, but scaling to multiple nodes requires planning.
Star topology: One central receiver, multiple transmitters. Simple but limited by central node’s range. Works well for sensor networks reporting to a single gateway.
Mesh networking: Nodes relay messages for each other, extending range beyond any single link. More complex software (RadioHead supports basic mesh), but more resilient to node failures.
Time division: Schedule each node to transmit at specific intervals, avoiding collisions. Essential when many nodes share the same frequency.
For most Adafruit LoRa projects, start with star topology. A Raspberry Pi with a LoRa Bonnet makes an excellent central receiver, logging data to a database or forwarding to cloud services.
Final Thoughts
After years of working with various wireless technologies, Adafruit LoRa modules remain my go-to solution for long-range, low-power communication. The RFM95 handles remote monitoring projects effortlessly, while the RFM69 fills the gap for shorter-range applications needing faster updates.
The combination of solid hardware, excellent documentation, and mature software libraries makes these radios accessible to beginners while remaining capable enough for production deployments. Start with a pair of breakout boards, get basic communication working, then scale up to LoRa Feather boards and custom PCBs as your project demands.
Inquire: Call 0086-755-23203480, or reach out via the form below/your sales contact to discuss our design, manufacturing, and assembly capabilities.
Quote: Email your PCB files to Sales@pcbsync.com (Preferred for large files) or submit online. We will contact you promptly. Please ensure your email is correct.
Notes: For PCB fabrication, we require PCB design file in Gerber RS-274X format (most preferred), *.PCB/DDB (Protel, inform your program version) format or *.BRD (Eagle) format. For PCB assembly, we require PCB design file in above mentioned format, drilling file and BOM. Click to download BOM template To avoid file missing, please include all files into one folder and compress it into .zip or .rar format.