

The RFD900X is a high-performance, long-range, low-power radio modem manufactured by RFDesign. Operating in the 902-928 MHz frequency band, this modem is designed for wireless data transmission in applications requiring reliable communication over extended distances. With a line-of-sight range of up to 100 km, the RFD900X is ideal for telemetry, remote control, and data logging in industrial, agricultural, and UAV systems.








| Parameter | Specification |
|---|---|
| Frequency Band | 902-928 MHz |
| Modulation | GFSK (Gaussian Frequency Shift Keying) |
| Transmit Power | Up to 1 W (30 dBm) |
| Receiver Sensitivity | -121 dBm |
| Data Rate | Up to 250 kbps |
| Range (Line of Sight) | Up to 100 km |
| Operating Voltage | 5 V |
| Current Consumption | 100 mA (typical) |
| Interface | UART (TTL level) |
| Dimensions | 30 mm x 57 mm x 12 mm |
| Operating Temperature | -40°C to +85°C |
The RFD900X features a 10-pin header for interfacing with external devices. Below is the pinout and description:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | GND | Ground connection |
| 2 | VCC | Power supply input (5 V) |
| 3 | TX | UART Transmit (data output) |
| 4 | RX | UART Receive (data input) |
| 5 | RTS | Request to Send (flow control, optional) |
| 6 | CTS | Clear to Send (flow control, optional) |
| 7 | AUX | Auxiliary status indicator |
| 8 | CONFIG | Configuration mode input |
| 9 | RSSI | Received Signal Strength Indicator (analog out) |
| 10 | NC | Not Connected |
Below is an example of how to connect and use the RFD900X with an Arduino UNO for basic communication:
| RFD900X Pin | Arduino UNO Pin |
|---|---|
| VCC | 5V |
| GND | GND |
| TX | Pin 10 (RX) |
| RX | Pin 11 (TX) |
#include <SoftwareSerial.h>
// Define RX and TX pins for SoftwareSerial
SoftwareSerial rfd900x(10, 11); // RX = Pin 10, TX = Pin 11
void setup() {
// Initialize serial communication with the RFD900X
rfd900x.begin(57600); // Default baud rate for RFD900X
Serial.begin(9600); // Serial monitor for debugging
Serial.println("RFD900X Communication Initialized");
}
void loop() {
// Check if data is available from the RFD900X
if (rfd900x.available()) {
String receivedData = rfd900x.readString();
Serial.print("Received: ");
Serial.println(receivedData);
}
// Send data to the RFD900X
if (Serial.available()) {
String dataToSend = Serial.readString();
rfd900x.println(dataToSend);
Serial.print("Sent: ");
Serial.println(dataToSend);
}
}
No Communication Between Devices
Limited Range
Overheating
Interference
Q: Can the RFD900X be used with 3.3 V systems?
Q: How do I update the firmware?
Q: What is the default baud rate of the RFD900X?
Q: Can I use multiple RFD900X modules in the same area?
This concludes the documentation for the RFD900X. For further details, refer to the official RFDesign user manual.