Skip to main content

You are here

RFM12B and Weather station transmitters

131 posts / 0 new
Last post
RFM12B and Weather station transmitters

I've recently purchased a JeeNode(5), USB BUB II and various parts. I would eventually like to build a rather large mesh network to tie numerous sensors and switches together around the property that I maintain.

My choice for the JeeNode was because I would like to read from off-the-shelf transmitters like La Cross weather stations like what was done at and here: .

I guess my first question would be: Am I barking up the wrong tree here?

I've run a modified RFDemo sketch and got it to dump nibbles and bytes in decimal, hex and BCD. Of course, all the packets fail because they don't originate from another JeeNode (waiting on a RFM12B Board for my Arduino. - It's like clapping with one hand.). Question #2: For RFDemo: What's a packet? I mean, is it just the entire data stream between quiet times? I get packets that are from 0 to 255 bytes long (running with the '0' group option.) Does everything over 255 get pitched, or does the next packet pick up where the prior one truncated?

I've got more, but I guess I'll wait for the answer on the first one.




Hhmmmm... No takers, huh.

Ok. Let's be a little more specific.

From everything I've read here, my JeeNode won't correctly pick up the LaCross unless it has OOK sensing capabilities. So I'll need to perform this modification here . Is this correct?

Has anybody (besides kalemena ) tried to capture the signal from these devices using the PC sound card? If I'm over simplifying, please excuse my ignorance and lack of experience, but doesn't it make sense to reverse the protocol of the data that comes directly from the transmitter or receiver rather than try and pluck it out from the air waves? Would this eliminate the "needle in the haystack" problem.

What if we were to take the data from this $10 Protocol Analyzer instead? I built it, ran it and it seems to work. I'm just not educated enough to know what I'm looking at.

Just a thought...



The la Cross sends at 433 Mhz I think ? ,if you have a Jeenode wich uses a RFM12B 433 Mhz,you can use the it should work.

Or you can use a seperate OOK-Receiver 433MHz ,see the shop or other.


Nope. 915Mhz for U.S. market.

However, I'm guessing the same setup would work.


You wrote that piece then. Great work.

Could you tell me what changes I will need for my 915 Mhz system?



The software will only decode FS20, (K)S300, and EM10 , lacross is a different protocol I think .


I see that. What, if any, are the differences in the control commands for 915Mhz?


Ok, for receiving 433 Mhz with a 915 RFM12B module you can use value 0x8017 for using the 433 MHz band for lacross.The receiving band will now be 430.2400 - 439.7575 Mhz control - commands are a060 - af3f.

The reception will be poor ,because the capacitors and coils from the antenne circuit on your RFM12B is tuned for receiving 915Mhz (hardware) compared with the 433 MHZ RFM12B.

However ,just like you think it could work within a distance of maybe 15 feet ?, this hasn't been done before.
It is needed to replace the C_arssi capacitor with a value 150-300pf,otherwise the RFM12 will react to slow and
will only react o.k at a certain distance.

The FSK/DATA/nFSS signal must be connected by a resistor 100 ohm with analog input AI0 PC0 Port1 jeenode connector ATMEGA 328 = pin 23.

That's all.


I'm sorry I wasn't very clear on what I am trying to accomplish. The LaCross systems we have here in the US are 915Mhz, so I was expecting the control - commands would be different for 915Mhz, and not 433Mhz, communication

I plan on making the capacitor/resistor mod so that my JeeNode(v5) will react quick enough to pick up the ook signal. I'll let you know what the range limits might be.

I'm planning on a picking up an RFMB12B Board when they are available for an Arduino I have. How does that affect the capacitor/resistor placement?

Thanks for taking the time for a newbie.


Now I know I now what you mean , you are right the control - command
for 915Mhz is different it becomes 8037 the other control commands
stay the same.

The frequentie setting command stays the same but will now be
between 900.7200 and 929.2725 ( a069-af3f).

You can use this tool to calculate the frequency etc
from technofun or steve

I think the modifaction will work with good range limits,
it's very interesting to know what this limits are.


I think the LaCrosse IT+ uses FSK on the 868/915 bands using an RFM01 module to receive the data. The SPI initialisation is listed there, but my translation to RMF12B settings does not work:

//RFM01 0x918A #868, ex, 134khz, clock on 0xA640 #freq 0xC080 # clock recovery lock, gain 0, rssi -103 0xC081 0xC081 0xE096 # Wakeup timer 0xCC0E # low duty cycle POR value 0xC200 # low battery POR value 0xC69F # AFC a1a0: 10: drop offset, +15/16, F: alles aan 0xC46A # data filtes; !AL, Fast, Digital, DQD=2 0xC813 # data rate POR is 823, 13 hex, is C6 on a RFM12b 0xCE14 # Output/FIFO mode: FIFO 1, fill on sync, ff, fe: 0: clear 0x918A #repeat 0xC69F # repeat AFC 0xA67C # Change freq! 0xC080 0xC081 0xCE14 # clear FIFO 0xC080 0xC081 0xCE17 # enable fifo 0xC080

For analysing OOK signals I have forked Nodo Due and this works pretty well to recognize arbitrary OOK signals from noise.

I am stuck however trying to detect arbitrary FSK signals at 868.3 MHZ as the RF12 Demo sketch only recognizes Jee packets...

So has anyone made an FSK sniffing sketch for a RFM012B?


I'm getting "Page does not exist." from your links.


Hmm, looks like the markdown format isn't working on his external links.

I've just fixed them.

FYI Rinie, this new forum doesn't need markdown format brackets round a straight URL link, it'll work it out all on its own. Just put the URL into the text.


TankSlappa, thanks. When posting I get the markdown formatting displayed, so that's what I tried...


Ok my none working shot at transforming the RF12demo to FSK sniffing for IT+


Rinie do you know if the TX29IT is the same as the TX29IT+ with IT+ logo. uses the 29IT .

I got a TX29IT+ with IT+ logo and the protocol seems different maybe I am doing
something wrong.

Any luck with rfm12b decoding la crosse yet.?


I was wrong it's the same , it' a very fast OOK burst once every 4 sec.


Joop, No luck (or better no time) yet. How did you find that it is OOK and not FSK? OOK every 4 seconds is hard to synchronize.


Well I did some tests and I am a little confused now ,you could be right and it's FSK , I did some test with a radio receiver AM modulation and you can hear these burst every 4 seconds, frequency = 868.350 Mhz for best reception for my transmitter.(no output when modulation FM).

I tried to decode this with a RFM12b in OOK-mode but it's to fast I think (not sure yet)

Total time of this burst = about 4.8 msec , following this link a frame = 44 bits ,wich means a bit_period = 109uS wich is very fast (to fast for OOK ?),to compare a FS20 OOK bit_period = 800uS.

So I don't know if I am on the right track, you could be right and it's FSK,why do you think this.?


Well, the SPI commands at match the Hope RF RFM01

0x918a 0xa640 0xc080 0xc081 0xc081 0xe096 0xcc0e

die JeeNodes k nnen "von Hause" aus kein OOK empfangen, sondern "nur" FSK.

Ack; und IT+ ist, IIRC, kein OOK ... aus einem Mailaustausch vom Ende letzten Jahres:

Die IT+ Sensoren habe ich fuer den Aussentemperatur-/Feuchtesensor (TX21IT+, Conrad) und den Aussentemperatursensor (Sender IT1, TFA) bereits dekodiert. Allerdings nicht mit dem CUL sondern mit einem ATmega8 und einem RFM12B Funkmodul. Diese beiden Sensoren benutzen ebenfalls Sendemodule von HOPE-RF. ... Als Parameter fuer den RFM12B benutze ich: Baudrate: 16800 Frequenz: 868300 Modulation: FSK TX-Frequenzhub: 45KHz Empfangerbandbreite: 67KHz Die sync-bytes vom RFM12B sind 0x2dd4 mit einer 16bit Preambel (1010101...). Ein Paket vom TX21IT+ sieht dann so aus (abzueglich Preambel & Syncbyte: 0x97 0xa4 0x86 0x21 0xa8


interesting ,thank you


Well I finally managed to make the conversion to RFM12B for
decoding iT+ with a jeenode, see the excel-file for the register - settings

Freq : 868.300
FSK : 17.241 kbps
DEV : iT+ 04/2010 v36 D1 LA CROSSE (c)

output : jeenode with a RFM12B mod FSK

Raw polling RFM12 no error checking !
96 85 80 6A 39
96 85 80 6A 39
96 85 80 6A 39
96 85 80 6A 39

9 = nibbles following (9)
68 = sensor id
580 = temp
6a = sensor type
39 = crc

I did a quick look at the values , it seems ok :)

RFM01_RFM12B_la crosse.zip3.91 KB

Nice! Are you using the jee demo sketch?

Did you modifiy the hardware or is this a standard jeenode?

Will try these settings tonight....


I am using a polling methode wich uses 4 pins off the RFM12B
SDI ,SCK ,CS ,SDO , the jeenode lib uses interrupts (5 pins).

It works on a standard or modified jeenode, maybe the ookRelay2
scetch could be expanded to decode iT+.

So you were right Rinie it uses FSK and it's a RFM01.


FWIW, there's an online RFM12B settings calculator at - see also


The on web RFM12B Command Calculator works ok !

Rinie I will add the file with the program I used
maybe you could confirm if it works with your transmitter .?


You use the FIFO bitwise, so reading this with

uint8_t in = rf12_xfer(RF_RX_FIFO_READ);

just returns one bit and I have to make nibbles?

Guess I just have to wait for your post. Thanks! My current data without the bit/byte nibble conversion...

00 80 80 00 80 00 00 80 00 80 00 00 80 00 00 80 80 00 00 80 80


ok,Rinie the file is added , I tried it on 3 jeenodes 1 modified and
2 standard , one standard had some problems but now it's gone don't
know why ....

setup hardware :

#define SDI 3 // polling 4 Pins ,3 SPI + Chipselect
#define SCK 5 // differs with Jee-node lib !
#define CS 2
#define SDO 4

software iT+_TX29IT_recv_jeenode.pde

If it works could you give you'r type iT+ device.
Mine = iT+ 04/2010 v36 D1 LA CROSSE (c)


lacrosse_it_recv_868_jeenode.pde3.49 KB

Joop, I have no luck on my TX22 7v7 v2 (Conrad). But seem to receive 2 other signals. Alecto sends each message 3x.

Every 48 seconds, probably 10 bytes 'A0 E0 B5 42 04 0A 04 49 04 12' -> Alecto WS-4000

"1-11-2011 15:40:03" Jeelink 14: A0 E0 B5 42 04 0A 04 49 04 12

"1-11-2011 15:40:03" Jeelink 14: A0 E0 B5 42 04 0A 04 49 04 12

"1-11-2011 15:40:03" Jeelink 15: A0 E0 B5 42 04 0A 04 49 04 12

"1-11-2011 15:40:03" Jeelink 15: A0 E0 B5 42 04 0A 04 49 04 12

Every 27 seconds

"1-11-2011 15:40:17" Jeelink 14: C7 22 BF 5

"1-11-2011 15:40:17" Jeelink 15: C7 22 BF 5

"1-11-2011 15:40:44" Jeelink 14: C7 22 BF 58

"1-11-2011 15:40:44" Jeelink 15: C7 22 BF 58

Max length 12: Jeelink on com14

"1-11-2011 16:49:53", C7 23 05 C

"1-11-2011 16:50:20", C7 23 05 C

"1-11-2011 16:50:27", A0 E0 A6 47 00 02 04 49 06 CC 00 15

"1-11-2011 16:50:27", A0 E0 A6 47 00 02 04 49 06 CC 00 15

"1-11-2011 16:50:27", A0 E0 A6 47 00 02 04 49 06 CC 00 15

"1-11-2011 16:50:47", C7 23 05 C

"1-11-2011 16:51:13", C7 23 05 C

"1-11-2011 16:51:15", A0 E0 A6 47 02 04 04 49 02 96 00 15

"1-11-2011 16:51:15", A0 E0 A6 47 02 04 04 49 02 96 00 15

"1-11-2011 16:51:15", A0 E0 A6 47 02 04 04 49 02 96 00 15


interesting it seems that it is no random data from the Alecto , I will look up
what a TX22 7v7 v2 is.

The C7 23 05 C is also not random , could it be from the same Alecto ?
is the Alecto also FSK.?


TX22 is a Lacrosse/Conrad WS-1600.

Alecto/Fineoffset is a Hope reference design weather station RFM01/RFM02 chipset

hoperf site states that it uses FSK


Premium Drupal Themes by Adaptivethemes