Author Topic: Some tips on 'non-library' listening  (Read 1431 times)

papadeltasierra

  • NewMember
  • *
  • Posts: 8
Some tips on 'non-library' listening
« on: October 16, 2017, 03:50:44 AM »
I'm trying to use the Moteino to listen to my water meter so I'm using RTL-SDR/GnuRadio to find interesting signals then trying to get the RFM69 to listen for them.  I finally received my first signal (sadly not the water meter!) last night so here are some tips that might help others.
1. "Part Disabling" the library - The RFM69 library uses the RFM69's sync words, address, CRC and if required encryption so you need to disable these initially to capture your signals with little processing; either hack the library or tweak the settings after initializating the library using writeReg().
2. "Sync required?" - It seems that you should program at last one sync byte at all times, even if this sync byte is something like 0b01010100/0b10101011, basically the first two bits that are NOT the 1010...10 preamble.  Without a sync byte, the RFM69 doesn't seem to lock onto anything which is reasonable since it doesn't know when the start listening.
3. "Dial-down your sensitivity" - The RFM69 library dials-up the sensitivity on the RFM69; my listen program has 's/S' commands (see the examples) which decrease/increase the sensitivity.  I started at 120 but dialed down until I was seeing 'real' signals and not random noise i.e. until signals stopped flying past on screen.
4. "Know your centre frequency, baud rate and FSK offsets" - you need to figure this out using RTL-SDR; there's a program called 'baudline' than can be very helpful with this and then you tweak the RFM69 library or override the defaults using writeReg() in your init() function after initializing the RFM69.

papadeltasierra

  • NewMember
  • *
  • Posts: 8
Re: Some tips on 'non-library' listening
« Reply #1 on: October 16, 2017, 05:59:52 AM »
Two things that I forgot...
1. Unless you know what the encoding is, you might want to disable the 'whitening' e.g. Manchester encoding etc.
2. Unless you are sure that the signal you are chasing uses it, disable variable length and set a fixed length equal to the expected length of frame, or slightly smaller if you are not sure whether the frames might be variable length.
Putting this all together, you should be able to capture enough to determine whether you are using fixed/variable length, addressing, whitening etc and then you can tweak your settings accordingly.

heywire

  • NewMember
  • *
  • Posts: 1
Re: Some tips on 'non-library' listening
« Reply #2 on: October 31, 2017, 09:26:42 AM »
This is all very good information.  I would add the tool "inspectrum" to the list of utilities that are useful for understanding signals.  It can even decode the FSK data stream into 0's and 1's for you.

I've set out on a similar project for Elster brand water and electric meters.  I started by writing a library for use with rtl-sdr https://github.com/shaunhey/ea_receiver, and now I'm working on using an RFM69HCW module to receive the same information.  I previously tried with a TI CC110L module, but had trouble actually receiving anything, even though the meter itself uses a CC11xx chip (may have actually had a bad unit), but the RFM69HCW module works fine.  Unfortunately for my use case, the data (including length prefix) is xor'd with 0x55, so I can't use the RFM69HCW's built in variable length packet processing, and the meter uses multiple sync words, one of which triggers a 4x increase in data rate and turns off manchester encoding, so there is a possibility that I won't be able to use the RFM69 packet mode at all.

I'm curious, which brand of water meter are you reading?  Have you checked to see if it is supported by rtl_433 or rtlamr?  I have an itron branded gas meter which is supported by rtlamr.