Basic OOK with the RFM69

I'm working on trying to receive OOK frames using the RFM69. All the libraries I've looked at - RadioHead, ooklone, etc. either seem to be geared towards 2-way communications, or build universes parallel to the Arduino framework. Before I launch into a bunch of work to craft what I need, I thought I'd reach out to make sure what I need doesn't already exist.

What I need to do is:
1). sniff the OOK transmission. I'm willing to sample the RFM69 data output without a framer and use timers to figure out what's going on, or use the framer to cycling through baud rates and start-of-frame bursts with a framer until something makes sense;
2). setup the RFM69 with the 'sniffed' parameters and read frames.

Is there a library that assumes the Arduino/Adafruit frameworks that will talk to the RFM69 at a low enough level to let me do this? Like I said, I have the information to do the low-level bit banging, but if it's already out there, it would save me a bunch of time.

Hi, @onokognome
Welcome to the forum.

Please read the post at the start of any forum , entitled "How to use this Forum".

What are OOK transmission frames?
Can you post a link to data/specs of OOK system?

OOK == ON, OFF keying..

What is the application?
Why OOK?
Why Lora RFM69?

Thanks.. Tom.. :smiley: :coffee: :+1: :coffee:

This was a quick 'hail Mary' post looking for information. I know it was brief, but if you don't know what OOK is or why one would use RFM69 you probably aren't going to be able to help. I have a specific application in mind, but I'm not looking for help on the application itself, and going into it would probably elicit comments about how to solve the problem - which I'm not really looking for. I was curious if someone had run into a nice low-level library.

Thinking about this overnight, I think I understand why Adafruit punts to the RadioHead library rather than create it's own more basic library. There's enough information out there to do what I need. I'll just roll up my sleeves.

It looks like I can't delete my own post... hmmm... that's strange....

You could at least tell us the application.

What is transmitting the OOK signal and what format is it ? FSK?

A Lora unit is so versatile in what it can do and the data it can send, its a bit of a come down to use it as a Morse code carrier system.

Tom... :smiley: :+1: :coffee: :australia:

Please note that the RFM69 is not a LoRa device.

Although LoRa devices such as the RFM9x will do LoRa, FSK and OOK.

Add: when asking about RF tell us where you are, so we know which regulatory domain you are in. Europe has different rules from Asia or the US.

Please note that it is against the forum policy to delete forum posts once they have answers. The forum is a resource for everyone, not just the person asking the question, and the people helping are volunteers. Deleting questions that have answers is considered vandalism, so in general it is not done.

If, for data protection reasons, you want this topic removed then I can do it, but as that would be against the forum policy I would also remove your ability to post again in future.

What would you like me to do?

I want to be a good community member here so let me elaborate. My original post was in the spirit of a IFSWIM (If You See What I Mean) post. I see now that those will cause some friction.

The primary goal is to read my Acurite 3-in-1 weather station. An equally important second goal is to see how well the Arduino Uno can serve as a base for a general-purpose On Off Keying (OOK) sniffer (a device that helps determine what is happening in an environment. in this case RF (Radio Frequency)). A good deal of the work has already been done to decode the 3-in-1, and is described here: I will try to finish that work and report back.

I've familiarized myself with the underlying radio chip described here: SEMTECH SX1231 There is enough information here to completely code my own solution, but I am trying not to 'reinvent the wheel', so I'm looking at libraries that already exist to see if they are a good fit. I am using the Adafruit RFM69HWC. Their user example is a 2-way packet communication solution using the RadioHead library found here: RadioHead . I've also found the ooklone library found here: OOKLONE and the LowPowerLab library found here: LowPowerLab. All of these libraries assume the end goal is to perform send/receive communications. So there are a lot of facilities I don't need (or really want if I'm going to stay lean). In addition, I want to eventually be able to integrate my solution with other functions - say a general home automation display. So using standard Arduino core functions and not duplicating them for this solution is important. To that end, I was just wondering if anyone had seen a lower-level library that wasn't trying to do more than just read the RF (Radio Frequency), Whitening (making received bit boundaries consistent), and basic Framing (forming the received packets based on canonical receptions).

That said, I've looked under the hood of the RadioHead solution, and basically they do a lot of wrapping of Arudino core functionality rather than implement parallel solutions. So I'm going to use this library. I believe I can craft a new Class that just gives me the feature I need and move forward. I'll publish what I come up with.

Hope this is more forum friendly!

1 Like

In the USA, but the device I'm sniffing is transmitting at 433 MHz in any case...

Is 433Mhz an ISM band in the USA ?

It is not. People will point out that it is a ham radio allocation, but the requirement to send an ID every ten minutes is, as the poet said, "too much monkey business".

1 Like

No, it's a 'license free' band that in the USA is typically used for things like garage door openers and RF remote controls. I'm not an expert on this, but there are some FCC rules that apply, but generally if no one is complaining, you're free do do what you want (I believe).

So my question had a 'reply'. I would argue that it had no answers. What should you do if you make a post and later decide that it probably shouldn't have been posted?

Don't bother with the RFM69 for 433 MHz. Instead, use one of the simple super regenerative or superhet OOK receivers and follow this tutorial: Reverse Engineer Wireless Temperature / Humidity / Rain Sensors — Part 1 « RAYSHOBBY.NET

Most of the Acurite weather sensors have already been decoded, for example, see this doc:

1 Like

A license free band would be an ISM band. We have two in the us, 902 - 928 and the 2.4 GHz WiFi / microwave oven band

The 432 MHz band is a ham radio allocation, but we are secondary users. DoD is the prime user. Where I live - pretty much the last civilization before you get to the White Sands Missile Range - it's best to avoid it.

That was my understanding too, i.e. there is no 'licence free' ISM 433Mhz band in the US.

It's a fair question and one that requires some judgement, which won't always be right. I take the view that if someone asks a reasonable question and someone gives a reasonable answer then it should not be deleted. Do please remember that while you have a right to anonymity posting here is a courtesy extended to you by Arduino.

So my device is an FCC Part 15 device. Here's the note that comes in the manual:
FCC Information
This device complies with part 15 of FCC rules. Operation is subject to the following two conditions:
1- This device may NOT cause harmful interference, and
2- This device must accept any interference received, including interference that may cause undesired operation.
WARNING: Changes or modifications to this unit not expressly approved by the party responsible for compliance could void the user’s authority to operate
the equipment.
NOTE: This equipment has been tested and found to comply with the limits for a Class B digital device, pursuant to Part 15 of the FCC rules. These limits are
designed to provide reasonable protection against harmful interference in a residential installation. This equipment generates, uses and can radiate radio
frequency energy and, if not installed and used in accordance with the instructions, may cause harmful interference to radio communications. However,
there is no guarantee that interference will not occur in a particular installation. If this equipment does cause harmful interference to radio or television
reception, which can be determined by turning the equipment off and on, the user is encouraged to try to correct the interference by one or more of the
following measures:
• Reorient or relocate the receiving antenna.
• Increase the separation between the equipment and the receiver.
• Connect the equipment into an outlet on a circuit different from that to which the receiver is connected.
• Consult the dealer or an experienced radio/TV technician for help.
NOTE: The manufacturer is not responsible for any radio or TV interference caused by unauthorized modifications to this equipment. Such modifications
could void the user authority to operate the equipment.
This device complies with Industry Canada licence-exempt RSS standard(s).
Operation is subject to the following two conditions:
(1) This device may not cause interference, and
(2) This device must accept any interference received, including interference that may cause undesired operation of the device.

Thanks I considered this approach, but it requires you to take the waveform out to a DAW for analysis. I had enough of an idea of what was going on to figure I could just time the OOK pulses and figure things out. I wanted to see if the UNO had enough umph to do the timing and output the stream of timer values (my preliminary look says it should work for this type of device). I have the document you reference, but my device isn't there. I'm guessing that it's pretty close to what's described for other Acurite devices.

The tiniest, simplest modern micro can handle that trivial task. Other people, including myself, have decoded other Acurite sensors than those in the document I linked, and the results are posted. You might look around a bit more.