rtl_433_ESP icon indicating copy to clipboard operation
rtl_433_ESP copied to clipboard

R900 meter, HackRF and signal transmission - can't receive anything on ESP32 ( hardwired to HackRF )

Open jdevelop opened this issue 3 months ago • 1 comments

Current Situation

I captured a R900 packet from a meter, cleaned it using URH to remove noise etc - got the perfect waveform. Connected my HackRF to a CC1101 module ( E07 900M10S) directly, flashed the example/OOK_Receiver onto ESP32. The pin connection is:

  • GD02 - IO21
  • GD00 - O15
  • MISO - IO19
  • MOSI - IO23
  • SCK - IO18
  • CSN - IO5

I confirmed that the packet is recognized by rtl-sdr dongle and rtl_433:

rtl_433 -f 912e6 -s 2e6 -R 228
rtl_433 version 25.02 (2025-02-19) inputs file rtl_tcp RTL-SDR SoapySDR with TLS

New defaults active, use "-Y classic -s 250k" if you need the old defaults

Found Rafael Micro R820T tuner
[SDR] Using device 0: Realtek, RTL2838UHIDIR, SN: 00000001, "Generic RTL2832U OEM"
Exact sample rate is: 2000000.052982 Hz
[R82XX] PLL not locked!
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
time      : 2025-09-26 16:36:57
model     : Neptune-R900 id        : 1234567890
unkn1     : 163          unkn2     : 4             nouse     : 0             backflow  : 0             consumption: 12345678      unkn3     : 0             leak      : 0             leaknow   : 0             extra     : 123456
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

I do the transfer as

hackrf_transfer -f 912e6 -s 2e6 -x 1 -t generated.cs8

Logs

> pio run -e esp32_cc1101 -t monitor --upload-port /dev/ttyUSB0
Processing esp32_cc1101 (board: esp32dev; framework: arduino; platform: [email protected])
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Please build project in debug configuration to get more details about an exception.
See https://docs.platformio.org/page/projectconf/build_configurations.html


--- Terminal on /dev/ttyUSB0 | 921600 8-N-1
--- Available filters and text transformations: colorize, debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at https://bit.ly/pio-monitor-filters
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H
N:
N: ****** setup ******
rtl_433_ESP(6): CC1101 gpio receive pin: 15
rtl_433_ESP(6): CC1101 receive frequency: 912.000000
rtl_433_ESP(6): # of device(s) configured 170
rtl_433_ESP(6): ssizeof(r_device): 112
rtl_433_ESP(6): cfg->devices size: 19040
N: ****** setup complete ******
----- CC1101 Status -----
CC1101_MDMCFG1: 0x02
CC1101_MDMCFG2: 0x30
CC1101_MDMCFG3: 0x93
CC1101_MDMCFG4: 0x07
-------------------------
CC1101_DEVIATN: 0x14
CC1101_AGCCTRL0: 0x91
CC1101_AGCCTRL1: 0x40
CC1101_AGCCTRL2: 0xc7
-------------------------
CC1101_IOCFG0: 0x0d
CC1101_IOCFG1: 0x2e
CC1101_IOCFG2: 0x2e
-------------------------
CC1101_FIFOTHR: 0x07
CC1101_SYNC0: 0xad
CC1101_SYNC1: 0x12
-------------------------
CC1101_PKTLEN: 0x00
CC1101_PKTCTRL0: 0x32
CC1101_PKTCTRL1: 0x04
-------------------------
CC1101_ADDR: 0x00
CC1101_CHANNR: 0x00
CC1101_FSCTRL0: 0x00
CC1101_FSCTRL1: 0x0f
-------------------------
CC1101_FREQ0: 0xb1
CC1101_FREQ1: 0x13
CC1101_FREQ2: 0x23
-------------------------
CC1101_MCSM0: 0x14
CC1101_MCSM1: 0x30
CC1101_MCSM2: 0x07
-------------------------
CC1101_FOCCFG: 0x76
CC1101_BSCFG: 0x6c
CC1101_WOREVT0: 0x6b
CC1101_WOREVT1: 0x87
CC1101_WORCTRL: 0xf8
CC1101_FREND0: 0x11
CC1101_FREND1: 0x56
-------------------------
rtl_433_ESP(6): CC1101_FSCAL0: 0x0d
Ignored Signal length: 8681CC1101_FSCAL1: 0x2f
, Time since last bit length: 1689, Gap length: 1180707, Signal RSSI: -76, Current RSSI: -82, pulses: 0CC1101_FSCAL2: 0x2b
, noise count: 1
CC1101_FSCAL3: 0xaa
-------------------------
CC1101_RCCTRL0: 0x00
CC1101_RCCTRL1: 0x41
-------------------------
CC1101_PARTNUM: 0x00
CC1101_VERSION: 0x14
CC1101_MARCSTATE: 0x0d
CC1101_PKTSTATUS: 0xb0
CC1101_RXBYTES: 0x00
----- CC1101 Status -----
rtl_433_ESP(6): Ignored Signal length: 60000, Time since last bit length: 40064, Gap length: 30227376, Signal RSSI: -58, Current RSSI: -92, pulses: 0, noise count: 1
rtl_433_ESP(6): Ignored Signal length: 60000, Time since last bit length: 40064, Gap length: 1220420, Signal RSSI: -58, Current RSSI: -92, pulses: 0, noise count: 3
rtl_433_ESP(6): Ignored Signal length: 61000, Time since last bit length: 40064, Gap length: 802432, Signal RSSI: -58, Current RSSI: -92, pulses: 0, noise count: 5
rtl_433_ESP(6): Ignored Signal length: 60000, Time since last bit length: 40064, Gap length: 646444, Signal RSSI: -58, Current RSSI: -92, pulses: 0, noise count: 7
rtl_433_ESP(6): Ignored Signal length: 36000, Time since last bit length: 40064, Gap length: 2098444, Signal RSSI: -64, Current RSSI: -92, pulses: 0, noise count: 7
rtl_433_ESP(6): Ignored Signal length: 37000, Time since last bit length: 40064, Gap length: 1043432, Signal RSSI: -64, Current RSSI: -92, pulses: 0, noise count: 7
rtl_433_ESP(6): Ignored Signal length: 36000, Time since last bit length: 40064, Gap length: 665432, Signal RSSI: -64, Current RSSI: -92, pulses: 0, noise count: 7
rtl_433_ESP(6): Ignored Signal length: 37000, Time since last bit length: 40064, Gap length: 2635444, Signal RSSI: -70, Current RSSI: -92, pulses: 0, noise count: 7
rtl_433_ESP(6): Ignored Signal length: 87000, Time since last bit length: 40064, Gap length: 6179432, Signal RSSI: -81, Current RSSI: -92, pulses: 0, noise count: 8
rtl_433_ESP(6): Ignored Signal length: 87000, Time since last bit length: 40064, Gap length: 795432, Signal RSSI: -81, Current RSSI: -92, pulses: 0, noise count: 9
rtl_433_ESP(7): Average RSSI Signal -91 dbm, adjusted RSSI Threshold -82, samples 50000
rtl_433_ESP(6): Ignored Signal length: 87000, Time since last bit length: 40060, Gap length: 11068444, Signal RSSI: -81, Current RSSI: -92, pulses: 0, noise count: 10
rtl_433_ESP(6): Ignored Signal length: 37000, Time since last bit length: 40064, Gap length: 4079413, Signal RSSI: -64, Current RSSI: -92, pulses: 0, noise count: 12
rtl_433_ESP(6): Ignored Signal length: 37000, Time since last bit length: 40064, Gap length: 957421, Signal RSSI: -64, Current RSSI: -92, pulses: 0, noise count: 12
rtl_433_ESP(6): Ignored Signal length: 36000, Time since last bit length: 40064, Gap length: 3162433, Signal RSSI: -64, Current RSSI: -92, pulses: 0, noise count: 12
rtl_433_ESP(6): Ignored Signal length: 102000, Time since last bit length: 40065, Gap length: 3862421, Signal RSSI: -57, Current RSSI: -92, pulses: 1, noise count: 13
rtl_433_ESP(6): Ignored Signal length: 100000, Time since last bit length: 40065, Gap length: 1310410, Signal RSSI: -66, Current RSSI: -92, pulses: 0, noise count: 14
rtl_433_ESP(6): Ignored Signal length: 102000, Time since last bit length: 40065, Gap length: 935409, Signal RSSI: -56, Current RSSI: -92, pulses: 0, noise count: 16

Configuration

### platformio.ini


[env:esp32_cc1101]
board = esp32dev
build_flags = 
  '-DLOG_LEVEL=LOG_LEVEL_TRACE'
  '-DONBOARD_LED=2'          ; My ESP32 board had this wiring
; *** rtl_433_ESP Options ***
  '-DRF_MODULE_FREQUENCY=912.00'
  '-DOOK_MODULATION=true'       ; False is FSK, True is OOK
;  '-DRTL_DEBUG=4'           ; rtl_433 verbose mode
;  '-DRTL_VERBOSE=58'          ; LaCrosse TX141-Bv2, TX141TH-Bv2, TX141-Bv3, TX141W, TX145wsdth sensor
;  '-DRAW_SIGNAL_DEBUG=true'   ; display raw received messages
;  '-DMEMORY_DEBUG=true'   ; display memory usage information
  '-DDEMOD_DEBUG=true'  ; display signal debug info
;	'-DMY_DEVICES=true'		; subset of devices
  '-DENABLE_DECODE_Lacrosse_TX141' ; needed for some compatibility
  '-DENABLE_DECODE_NeptuneR900' ; only Neptune is enabled
;  '-DPUBLISH_UNPARSED=true'   ; publish unparsed signal details
  '-DMINRSSI=-82'
;  '-DRSSI_THRESHOLD=12'         ; Apply a delta of 12 to average RSSI level
;  '-DAVERAGE_RSSI=5000'     ; Display RSSI floor ( Average of 5000 samples )
;  '-DSIGNAL_RSSI=true'             ; Display during signal receive
;  '-DOOK_MODULATION=false'       ; False is FSK, True is OOK
; *** RF Module Options ***
  '-DRF_CC1101="CC1101"'  ; CC1101 Transceiver Module
;  '-DRF_MODULE_CS=5'      ; pin to be used as chip select
  '-DRF_MODULE_GDO0=15'   ; CC1101 pin GDO0 - Breadboard is 22 versus 13 on soldered
  '-DRF_MODULE_GDO2=21'    ; CC1101 pin GDO2
; '-DRF_MODULE_INIT_STATUS=true'    ; Display transceiver config during startup
; *** RadioLib Options ***
;  '-DRADIOLIB_DEBUG=true'
;  '-DRADIOLIB_VERBOSE=true'
  ; *** FSK Setting Testing ***
  ;'-DsetBitrate'
  ;'-DsetFreqDev'
  ;'-DsetRxBW'
monitor_port = /dev/ttyUSB0
monitor_speed = 921600
upload_port = /dev/ttyUSB0
upload_speed = 921600

Environment

  • OS: Arch Linux
  • Software: examples/OOK_Receiver
  • Node: n/a
  • npm: n/a

Process Supervisor

not applicable

Additional Context

No response

jdevelop avatar Sep 26 '25 20:09 jdevelop

The current code has issues with high-bitrate short messages.

See https://github.com/Entropy512/rtl_433_ESP/tree/neptune_r900 - At some point I'm going to upstream the "pending noise" fixes for preambles, but fixing the other stuff needs more work. But making R900 work also requires changing a bunch of hardcoded values, so changes to the build system are going to be required. I might revisit this sometime next year.

Entropy512 avatar Dec 08 '25 15:12 Entropy512