Ropixon AT-USB LoRa Dongle enables sending and receiving all LoRa packets! Just configure it properly using intuitive AT commands via serial line.
AT LoRa Dongle is suitable for:
When sending packets, no additional "wrapping" or encryption of data is used - you always send RAW (hex or ASCII) data. The same applies to reception.
Additional functions: AT LoRa dongle has 8 aux pins - you can set its logical level or activate PWM on it - just through the AT commands.
For quick start:
1) Install driver for serial interface CP2102 according to your system: Download drivers
2) Connect AT dongle to USB and set desired LoRa parameter configuration (or leave defaults)
3) Send your first LoRa packet via AT commands:
AT+RF_TX_TXT=Hello, this is AT LoRa dongle Ropixon!
AT+RF_TX_HEX=48656C6C6F2C2074686973206973204154204C6F526120646F6E676C6520526F7069786F6E21
4) Reception is activated automatically - output format HEX/ASCII can be selected using AT+RF_RX_FORMAT=HEX|ASCII, ?
Status LEDs
The dongle has 3 LEDs serving these functions:
*Note: RF path is optimized for 868 MHz band (EU: 863-870 MHz, USA: 915 MHz). The further from the operating band, the less power can be transmitted/received. *
Aux pins
The AT dongle has 8 aux pins that can be "manually" controlled or run PWM modulation (maximum frequency 1 kHz): AT+AUX_PULSE=<pin:1-8>,<period_ms>,<duty%:0-100>
Send command:
AT (or AT+HELP)
Dongle will respond with a list of all available commands.
AT+IDENTIFY
Dongle will respond "Ropixon AT-USB LoRa_Dongle v1.0.0 UID:xxxxxxx......."
| Command | Description | Example |
|---|---|---|
AT |
Print help | AT |
AT+HELP |
Display all available commands | AT+HELP |
AT+IDENTIFY |
Return unique device ID | AT+IDENTIFY |
AT+FACTORY_RST |
Reset all settings to factory defaults and restart | AT+FACTORY_RST |
AT+SYS_RESTART |
System restart | AT+SYS_RESTART |
AT+UART_BAUD |
Set/query baud rate, restart on change | AT+UART_BAUD=230400 |
| Command | Description | Value Range | Example |
|---|---|---|---|
AT+LR_TX_FREQ |
TX frequency in Hz | - | AT+LR_TX_FREQ=869525000 |
AT+LR_TX_POWER |
TX power | -17 to 22 dBm | AT+LR_TX_POWER=14 |
AT+LR_TX_SF |
Spreading Factor | 5 to 12 | AT+LR_TX_SF=7 |
AT+LR_TX_BW |
Bandwidth | 0-9 (see table) | AT+LR_TX_BW=7 |
AT+LR_TX_CR |
Coding Rate | 45, 46, 47, 48 | AT+LR_TX_CR=45 |
AT+LR_TX_PREAMBLE |
Preamble length | symbols | AT+LR_TX_PREAMBLE=8 |
AT+LR_TX_SYNCWORD |
Sync word | 0x0000-0xFFFF | AT+LR_TX_SYNCWORD=0x3444 |
AT+LR_TX_CRC |
CRC enable/disable | 0, 1 | AT+LR_TX_CRC=1 |
AT+LR_TX_IQ |
IQ inversion | 0, 1 | AT+LR_TX_IQ=0 |
AT+LR_TX_HEADERMODE |
Header mode | 0=explicit, 1=implicit | AT+LR_TX_HEADERMODE=0 |
AT+LR_TX_LDRO |
Low Data Rate Optimization | 0=off, 1=on, 2=auto | AT+LR_TX_LDRO=2 |
Same parameters as TX, just replace TX with RX:
AT+LR_RX_FREQ, AT+LR_RX_SF, AT+LR_RX_BW, etc.Important: AT+LR_RX_PLDLEN - Payload length (required for implicit header mode)
| Value | Bandwidth |
|---|---|
| 0 | 7.81 kHz |
| 1 | 10.42 kHz |
| 2 | 15.63 kHz |
| 3 | 20.83 kHz |
| 4 | 31.25 kHz |
| 5 | 41.67 kHz |
| 6 | 62.5 kHz |
| 7 | 125 kHz |
| 8 | 250 kHz |
| 9 | 500 kHz |
TX configuration:
AT+LR_TX_SET=SF:7,BW:7,CR:45,Freq:869525000,IQInv:0,HeaderMode:0,CRC:1,Preamble:8,LDRO:2,Power:22
RX configuration:
AT+LR_RX_SET=SF:7,BW:7,CR:45,Freq:869525000,IQInv:0,HeaderMode:0,CRC:1,Preamble:8,LDRO:2
How to navigate all parameter configurations? Here is calculator showing what happens to data/packet with different modulation settings (select SX1262 as device):
A simple rule applies:
For high data rates, choose high BW and low SF - however, this reduces the receiver's ability to obtain data at greater distances. On the other side, if signal is weak (poor transmission conditions) SF needs to be increased and BW decreased. All this affects packet Time on Air (TOA). TOA can also be easily verified using the command: AT+RF_GET_TOA=<packet_size_bytes>, the result is calculated from the current LoRa TX settings.
| Command | Description | Example |
|---|---|---|
AT+RF_TX_HEX |
Transmit data in HEX format | AT+RF_TX_HEX=48656C6C6F |
AT+RF_TX_TXT |
Transmit data as text | AT+RF_TX_TXT=Hello |
AT+RF_RX_TO_UART |
Enable/disable RX to UART | AT+RF_RX_TO_UART=1 |
AT+RF_RX_FORMAT |
RX data output format | AT+RF_RX_FORMAT=HEX |
Received data is displayed automatically (if RX_TO_UART=1 (ON), =0 (OFF), ?
Received data output format:
+RX:5,48656C6C6F,RSSI:-45
Where 5 = number of received bytes, 48656C6C6F = packet itself, -45 = packet RSSI
One packet can be stored in the AT dongle (NVM memory), which can then be sent at any time or set for periodic transmission
| Command | Description | Example |
|---|---|---|
AT+RF_SAVE_PACKET |
Save packet to memory | AT+RF_SAVE_PACKET=010203 |
AT+RF_TX_SAVED |
Transmit saved packet once | AT+RF_TX_SAVED |
AT+RF_TX_SAVED_REPEAT |
Start/stop periodic TX | AT+RF_TX_SAVED_REPEAT=ON |
AT+RF_TX_NVM_PERIOD |
Set saved packet TX period | AT+RF_TX_NVM_PERIOD=1000 |
AT+RF_TX_PERIOD_STATUS |
Current periodic TX status | AT+RF_TX_PERIOD_STATUS? |
For various testing purposes, these 3 commands may be useful, especially AT+RF_TX_CW=1 (ON), =0 (OFF), ?, which enables carrier wave transmission (no modulated data).
| Command | Description | Example |
|---|---|---|
AT+RF_TX_CW |
Enable/disable CW (continuous wave) transmission | AT+RF_TX_CW=1 |
AT+RF_GET_TOA |
Calculate Time on Air from current TX settings, parameter is packet length in bytes | AT+RF_GET_TOA=10 |
AT+RF_GET_TSYM |
Get symbol time from current TX settings | AT+RF_GET_TSYM |
| Command | Description | Example |
|---|---|---|
AT+AUX |
Set pin state |
AT+AUX=1,1 (pin 1 HIGH) |
AT+AUX_PULSE |
Start PWM |
AT+AUX_PULSE=1,1000,50 (pin 1, 1Hz, duty 50%) |
AT+AUX_PULSE_STOP |
Stop PWM |
AT+AUX_PULSE_STOP=1 (stop PWM on pin 1) |
Dongle 1 (transmitter):
AT+LR_TX_SET=SF:9,BW:7,CR:45,Freq:869525000,IQInv:0,HeaderMode:0,CRC:1,Preamble:8,Power:22,LDRO:2
AT+RF_TX_HEX=AABBCCDD
Dongle 2 (receiver):
AT+LR_RX_SET=SF:9,BW:7,CR:45,Freq:869525000,IQInv:0,HeaderMode:0,CRC:1,Preamble:8,LDRO:2
→ Receiver will output: +RX:4,AABBCCDD,RSSI:-47
TX Dongle:
AT+LR_TX_SET=SF:12,BW:7,CR:45,Freq:869525000,IQInv:0,HeaderMode:0,CRC:1,Preamble:8,LDRO:2,Power:22
AT+RF_SAVE_PACKET=31313232333334343535
AT+RF_TX_NVM_PERIOD=2000
AT+RF_TX_SAVED_REPEAT=ON
RX Dongle:
AT+LR_RX_SET=SF:12,BW:7,CR:45,Freq:869525000,IQInv:0,HeaderMode:0,CRC:1,Preamble:8,LDRO:2
AT+RF_RX_TO_UART=1
AT+RF_RX_FORMAT=ASCII
Subsequent RX reception:
+RX:5,1122334455,RSSI:-68
AT+LR_TX_FREQ=868000000
AT+LR_TX_POWER=10
AT+RF_TX_CW=1
Transmits carrier wave at 868 MHz with 10 dBm power
Stop TX:
AT+RF_TX_CW=0
Query current speed:
AT+UART_BAUD?
115200
Change to faster:
AT+UART_BAUD=230400
OK
Dongle restarts and switches to 230400 baud. Terminal must also be switched.
For successful communication, RF settings must match:
Maximum range (lowest speed): High SF and low BW → maximum range → slowest data rate
High speed (shorter range):
The higher the SF and lower the BW, the longer the transmission time. Use AT+RF_GET_TOA to get packet time on air.
1. Check baud rate (try 115200 or 230400)
2. Check connection jumpers on serial line MCU-USB must be connected on both RX and TX headers
3. Check line ending (must be CR+LF)
4. Restart dongle (disconnect and reconnect USB)
5. Try AT+SYS_RESTART
1. Verify all RF parameters for TX and RX are identical
2. Verify RX has enabled AT+RF_RX_TO_UART=1
3. Increase TX power or shorten distance
1. Increase TX power (max 22 dBm) 2. Reduce distance 3. Try higher SF (7→9→12) 4. Try connecting external antenna - need to resolder jumper (zero ohm resistor in 0402 package) from chip antenna to UFL connector!!
1. RF interference - change frequency 2. TX/RX parameter mismatch 3. Set LDRO to "auto" on both TX and RX sides
© 2024-2026 Ropixon - AT LoRa Dongle