Retired Product

This is a retired product. There is an updated version available: WRL-12031

Creative Commons images are CC BY-NC-SA 3.0

Description: Replacement:WRL-12770. The new rev of the RFM12B is now available and is functionally the same as this older version, now with a better quality package type. Go check it out! This page is for reference only.

The RFM12B is a great inexpensive option for wireless communication; it’s an ISM band FSK transceiver module implemented with a unique PLL. These modules operate in the 434MHZ band and fully comply with FCC and ETSI regulations.

This module has a wide voltage supply range of 2.2-3.8VDC. An SPI interface is used to send data and configure the RFM12 module. The configuration commands, described in the RF12 IC Datasheet linked below, can be used to set the data rate, frequency band, wake-up timer, transfer data, receive data from the 16-bit FIFO, and much more.

The module comes in a 14-pin SMD package, with pins spaced by 2mm. Check below for a breakout board.


  • Low-cost, high-performance
  • SPI compatible interface
  • High data rate (up to 115.2 kbps in digital mode)
  • Wakeup timer
  • 2.2V-3.8V power supply
  • Analog and digital RSSI outputs
  • Differential antenna input
  • Automatic antenna tuning
  • 16-bit RX data FIFO
  • PLL and zero IF technology
  • Fast PLL lock time
  • High resolution PLL with 2.5KHz step
  • Programmable TX frequency deviation (from 15 to 240 kHz)
  • Programmable receiver bandwidth (from 67 to 400 kHz)
  • Analog and digital signal strength indicator
  • Internal data filtering and clock recovery
  • Clock and reset signal output for external MCU use
  • 10MHz crystal for PLL timing

Dimensions: 15.9 x 16.1 mm (0.626 x 0.634 in)


Customers Also Purchased

Customer Comments

  • Breakout board? Pwetty pwease? Or at least the DIP version?*

    *I know it exists. It’s in the datasheet.

  • If anyone is interested in an easy to use library I just released a RFM12B library:

  • Is there just a bare breakout PCB for these anywhere? I inadvertently bought 2 of these and cant find one for sale in the US. The breakout board for sale here links to the RFM22BS already mounted on a board.

  • Where did the 2.2v-3.8v range in the description come from? From what I see in the datasheet it should be -0.5-6.0v with a recommended range of 2.2-5.4v. Am I reading this right?

  • Any idea when we can expect the breakout board for these modules? I’m freaking dying for it…

  • I’ve created a nice library full of features to get these modules to send packets over the air in no time.
    Have a look here:

    • Thanks for the library!
      It builds fine for me with AVR-GCC in linux but not using WIN-AVR and eclipse. Lots of annoying errors. Anyone get that to work?

  • This is the same transceiver JeeNodes use so if you are arduino based there is already code available to get this working right away. JeeNodes sold in the US use the 915MHz however but the code is the same. See for lots of good info and code.

  • Hey I know this module, I have found a REALY nice program for configuring it.
    Its really a must have for these units.
    Greetings from Holland.

  • Long range low power TRX modules are also available now.

  • The breakout is out! :-)

  • Could someone explain how the antenna for this guy should work? I really haven’t the foggiest understanding.

  • Breakout Board:

  • Could someone got it working with SD.h and portslcd.h from jeelab?¿

  • Hey, maybe a noob question but what difference does the frequency make? I live in a EU zone country, so should i buy a different one than the 434MHZ?

    • Actually 434MHz is perfect for you. We’ll be adding other bands for other areas of the world soon.

  • Will you guys ever make a breakout board for this?

  • I’ll echo the half hole sucks sentiment. As if the 2mm spacing weren’t grief enough, at least that is a valid standard.

  • Can anyone help me I’m looking for the smallest possible way to send an on/off signal. It’s to a DC device. I have a flashlight that I want to use a remote for and just turn it on and off. But I want it as small as possible. Please any help would be great.

  • Does anyone know where I can get the Eagle library of these? Don’t want to make one if I don’t have to. Thanks

  • The programming guide say we can choose with internal register crystal load capacitor and frequency. Is the module ready to use, or we need add crystal and capacitors ? If they are present what are the values to write in registers ?

  • Would this work as a “key finder” type of device. I want to do a hide and seek kind of set up and was thinking that one of these could do a basic squawk while the other listened. If I shielded a portion of the unit recieving could I use the strength reading to determine a direction and possible a rough range?

  • Hey Guys I am working on an project and I needed a short range radio system to act in a mesh network configuration but I didn’t want to use the XBee. Would this work as a replacement?

  • Is this module based on the Microchip MRF49XA? I am thinking that it is but I don’t see any reference in the Hope data sheet. ???

    • No. They are different. I tried the RMF12 with a PIC micro and gave up. I switched to a MRF49XA and it works beautifully. I think it had to do with the 16 bit fifo.

      Anyway, I still haven’t seen anyone use a pic micro with the RFM12 without doing “bit-banging” of the commands and data.


  • Anybody know how I can get some simple digital i/o going through this ala the good ole Holtek HT640. All I really want is a sort of wireless doorbell. I want to avoid using a microcontroller on either end if i can help it. If i can get digital i/o through this cheaply (only need 1 channel!), the i figure i can stick that onto some pin of the serial or parallel port of an old pc. Basically looking for a super cheap way to get a single digital i/o input into a pc wirelessly. Help an electronics noob! Thanks

  • anyone get this thing working with pic18f4550? Im literally trying to get the master transceiver to cycle through three slave transceivers to see if a port is high (a switch is closed) and if it is, to tell the master that it is high and to send a port on the master mcu to high… That is the overall plan at least. I can’t even get the demo code to work. Both, master and slave codes compile, but they don’t do anything… :( sigh

  • Hello..i'am new to the world of RF circuits…i'am planning to do a project based on this RFM12B-S2 module…can anyone plz tell me how to interface it to PIC micr-controller??..

  • hello..i'am new to the world of RF..i have to do a RF based project and i'am plannig to use this RF12B-S2 module… can anyone tell(or any link to some tutorials will b sufficient), me how to interface it wit PIC micro-controller?..

  • i really like this transceiver.

    we used 70 at the same time for this piece called tape recorders -

  • Sorry if this is a repeat. I’m stuck with using the PICf877 to SPI to the RFM12B. I’ve seen several examples of this using a “bit-banging” method. I wonder if anyone has done this by using the PIC SPI as intended with interrupt. My concern is the PIC is for 8-bit bytes, and the RFM12b has a 16-bit FIFO. I’m thinking there might be an extra clock between the bytes to cause an overflow. I’m going to have to put a lot of work into this just to finally find out it would never work.

    thanks, rwio

    • And in the end it turns out, the stopper is that I could not slow down the PIC SPI enough to match the RFM12 requirements. This is perhaps another reason all the PIC examples use bit-banging. My application cannot afford the bandwidth this requires and TMR2 is not available.


      I finally gave up on the RFM12 part and have switched to a MicroChip MRF49XA. It works like a charm. My Balance Bot is now working with a very inexpensive 2-way Remote Control. This little tranceiver has a lot of potential and I’m just getting started!


  • Has anybody successfully interfaced this with a picaxe ?

    • I was wondering that myself. I think you might be better off switching to AVR microprocessors. That’s my plan at least.

  • Has anyone figured out what the nominal impedance of the antenna should be for maximum range? The Si4421 data sheet suggests it’s ~250Ω balanced, but I wasn’t clear on whether Hope might’ve included a balun to 50Ω unbalanced. The single pad labeled “ANT” suggests maybe so? If not, I suppose a 300ohm folded dipole should match nicely.

    • Looks like the RFM12B module does, in fact, include a balun for converting the Si4421’s balanced high impedance port to 50-ohm unbalanced. The “Differential antenna input” bullet in the description is inaccurate for the module as it only applies to the chip.

      • Thanks loads for looking into this. Forgive my ignorance, but does the fact that the RFM12B includes a balun mean that the RFM12b should be used with a ¼-wave whip with a ground plane (which has an impedance around 50 ohms) rather than a dipole consisting of two ¼-wave lines end-to-end (which has an impedance of around 300 ohms)?. I’ve done a tiny bit of testing which seems to suggest that a dipole does perform a little better than a ¼-wave whip with ground plane, but this is just very preliminary testing.

        • Yes, I believe the RFM12B port is designed for ~50 ohm unbalanced feed, so a ¼-wave whip with proper ground plane or other antenna with impedance close to that should work best. Unfortunately, most users don’t provide a real > ¼-wave radius ground plane and just use the tiny PCB resulting in poor radiation efficiency. In such cases a simple 2 x ¼-wave dipole should work noticeably better, as you’ve observed. The free-space impedance of a thin-wire (relative to wavelength) dipole is ~73 ohms, but in practice will be closer to ~60 ohms at 433MHz with real wire, and so provides a fair match, though with the balun in place you’ll still have a balanced ant connected to an unbalanced port. Don’t use a folded dipole without external balun/xformer, though, as their nominal impedance is ~300 ohm.

          The ARRL Antenna Book is the bible for applied antenna design and I can’t recommend it too highly for those interested in learning about antennas and transmission lines as these issues are thoroughly covered.

          • I do not think that it is ~50 ohm. RFM12B datasheet:

            • RF Power Amplifier (PA) The power amplifier has an open-collector differential output and can directly drive different PCB antennas with a programmable output power level. An automatic antenna tuning circuit is built in to avoid costly trimming procedures and the so-called “hand effect”.
            • LNA The LNA has approximately 250 Ohm input impedance, which functions well with the proposed antennas If the RF input of the chip is connected to 50 Ohm devices, an external matching circuit is required to provide the correct matching and to minimize the noise figure of the receiver. The LNA gain can be selected in four steps (between 0 and -20dB relative to the highest gain) according to RF signal strength. It can be useful in an environment with strong interferers.

            Note 4: See reference design with 50 Ohm Matching Network for details

            Note 5: See reference design with Resonant PCB Antenna (BIFA) for details

            Note 6: Optimal antenna admittance/impedance:

            RFM12B     Yantenna [mS]           Zantenna [Ohm]             Lantenna [nH]
            433 MHz          2 – j5.9                  52 + j152                     62
            868 MHz        1.2 - j11.9                7.8 + j83                     15.4
            915 MHz        1.49 - j12.8                 9 + j77                     13.6
          • Excellent reply, thanks loads!

  • The RFM12B modules I got from another source you can change the frequency of via software quite easily.
    The libraries used by the “Jeenode” boards from Jeelabs and the demo sketch that comes with them for Arduino compatible boards works quite well for setting the various options. The RFM12B itself has a bit of flash storage in it to save the frequency and such.

  • wait ive been looking at the datasheets and I still cant figure something out. Do i have to send timing pulse for every bit I send and once these are configured can I use them as completely transparent like xbees?

    • roychook, I sure hope you got your answer by now. But if not, here’s my 2 cents…, All the examples I’ve seen using the Arduino processor use the SPI like you are wanting. Just write, and read the data. It gets clocked automatically.

      But all the examples I’ve seen using a PIC micro manually clock the data one bit at a time. (Called “bit-banging). This is pretty usless. I’m trying to find out more, and I hope I’m wrong about the PIC not doing 16-bit SPI. rwio

      • ahhhh thanks I ordered them a while ago and was never actually sure so I just let them rest but thanks for the help :)

        • Hey all, I finally gave up on the RFM12 and went to a MicroChip MRF49XA. Now my Balance Bot is up and running with Remote control!

  • Anybody know how the performance is when walls are involved?

  • ok so im wondering can i hook this up to a arduino and have a wixel communicate to it i dont think so but its wroth asking

  • Are these transceivers appropriate for sending audio between a pair? I’m planning on building custom wireless speakers and want to know if this is the best route (opposed to a different transceiver or even simple-am/fm technology). Thanks! -Joe

  • Are these modules really legal for use in the US?
    I’m reading FCC 15.240 ( and it seems to indicate otherwise. Any experts out there that can confirm?
    Wikipedia also says they’re not ok here:

  • Ok, i finally got this thing to work with arduino. to those of you having trouble getting the configurations or connections just right, i put together a schematic with my working connections, eagle board for a breadboardable mount, and gathered the necessary libraries and my working code together in a zip file linked below. i use the jeenode library, and the example .pde sketch is based on the pingpong example. upload to two arduino boards and they’ll start up and act as a serial bridge. there’s bound to be bugs you’ll find for rare events, but it should give anyone else having trouble a good working-config starting point!

  • HopeRF SHOULD make the pin holes COMPLETE circles so that the module can be soldered as a SMD or a through-hole component.

  • I just got two of these and now I am trying to figure out the best way to mount them to a standard Radio Shack PCB. I thought I might be able to attach some header pins to the contacts, therefore creating a pseudo-through hole setup, but I am looking at them and the spacing is off. Anyone have any suggestions? Thanks.

    • i soldered wires to the pad indents and put the wires in a breadboard – a good glob of solder held the wires pretty well. i didn’t bend the wires around too much, but for a radioshack pcb you could dab some hot glue to the bottom of this module to fix it in the center, then just solder headers to the pcb and use wires to connect the headers and pad indents

  • I know there are many people that are waiting for a breakout board. For those that are too anxious to play with this module to wait I have found that you can take your standard male header and bend the tabs towards the middle and make the pin spacing match that of the RFM12B. It was really simple and it fits in a standard bread board when you are finished soldering the headers on.

    • Just saw your post after I submitted mine. Do you have some pictures or links you would like to share with the bending of the header pins? I was thinking about doing it myself, but thought it might be too tedious. But I am willing to give it a shot. Someone’s finished setup with this method and some pictures would be helpful. Thanks.

  • i hate this thing. i spent all night trying to interface with it to simply receive from the 434MHz transmitter (WRL-08946) and still nothing. for a while i was getting arbitrary gibberish, then i bumped a wire and it decided to go back to doing jack crap. the libraries provided on the websites don’t work unless you completely tear them apart (to the point where you should have just written your own to begin with) and the documentation is typical orient-english that’s missing key words necessary for completion. why the f did sparkfun discontinue the receiver? avoid this stupid thing. at this point i would have rather bought a pair of xbee’s to send to their doom. ~$30 difference is well worth the 8+ hours of jumping through crap documentation and b.s. RFM12B libraries. i’m going to drive over this thing with my truck.

    • i hate to break it to you, but the transmitter you are using is ASK (amplitude shift keying) This module is a transceiver for FSK (FREQUENCY shift keying). If you had been able to get them to work, well, they don’t talk to each other.

  • 2mm spacing, hrm
    Why on earth wouldn’t they do 2.5mm spacing?
    Has anyone tried soldering this to a standard protoboard?
    It’d be awesome if it’d fit right onto
    but if the number is accurate, that won’t happen =(

  • An interesting development for those of you who are still looking for an 5V or 3.3V RFM12B breakout board. JeeLabs, home of the rf12 library and JeeNode, has just released this board:
    It features a voltage regulator and 3.3V/5V level conversions, to be able to use the RFM12B on 5V systems. If these are left out, the board becomes a simple RFM12B breakout board for 3.3V systems. (In short: it can be used with all Arduino compatible boards.)

  • Hey there,
    Regarding the RFM12B-S2 Wireless Transceiver, I would like to use the RSSI to detect signal strength of multiple other transmitters.
    And I would like to be able to determine which transmitter a particular signal strength is associated with. Is this possible?
    Any words of wisdom?

    • It seems like you should be able to create a unique handshake signal for each transmitter. Then a simple switch case on your handshake bits would give you the correct source identity. Then your code can do anything needed with each case. I have not used this chip, but this I what I plan to do with it.

  • I have a maybe stupid question. Today I’ve received 2 of this modules, and I need to know if I need a crystal of 434 MHZ or if it works without it.

    • totally not a stupid question. A stupid question would be “will i be able to access Sparkfun during free day?"
      You don’t need an external crystal.
      Also, the units I have are stamped "434”, but there are references to this chip as “433”.
      I’m using the library from JeeNodes and have it working using the packetbuffer example.
      also, this chip is quite easy to solder pins to, so you don’t need a breakout board.

  • It’d be really nice to have the 5v version.

  • is there any way that the outputs could be configured so that two different boards are recognised as unique that is to present some sort of differentiation between two of the same modules?

  • Are we legally able to use these in the UK without needing a radio licence,<br />
    <br />

  • What do you use for an antenna? Will a specific length of wire work? If so, how do you calculate how long it should be?

    • You can take calculate the wavelength of a radio signal by dividing the speed of light by the frequency. The wavelength of 434MHz is about 2'2". A common antenna type is a ¼ wave wire, which would be 6.5" long.

  • Not sure why Sparkfun went with the SMD board as the manufacturer (Hope) always used to sell a DIP/DIL version as well. So now I have to wait for a breakout board. Any time frame on that?

  • He’s now selling that breakout board here:
    Hey Sparkfun, how about you guys sell these from your site as well?

  • The breakout board will be available to order soon on my website:
    I was trying to put it on batchpcb but I’m not a USA resident and the system does not allow me to sell anything.
    Sigh Sob!
    You can watch the pcb.

    • epokh,
      for me that link only shows:
      “Error: You do not have permission to access the requested module.”

  • Please consider adding the 915MHz version. Perhaps also a couple ceramic antennas or a breakout type board with a trace antenna thats compatible with hand held use.
    Really like that you got the SMD crystal version instead of the standard crystal available elsewhere. Haven’t found any other sources for the SMD crystal version at all.
    In case anyone hasn’t run across it yet:

  • any chance there is a breakout board ready for these?


    • I have done a breakout board for my project.
      Should I put it through the BatchPCB so that people can order it?
      I have used it for my ArduinoPro Mini but you can use it with any other 3.3 V device.
      To interface with a 5V Arduino you need to use a level shifter.
      The next design i’m doing is to include the antenna on the PCB rather then using a wire.

  • this parts are difficult to solder, is there an easy way to have a daughter board to be used with either an arduino pro mini or a funnel ?
    Or, is there anyone interested in making such pcb for me ?
    if price ok , quantity would be : 100
    you can contact me on my email : jlcurty at gmail

  • IMPORTANT NOTE: The datasheet posted is for the RFM12 (old model), not the RFM12B. The links to the IC datasheet and product page are also incorrect.
    The RFM12B is only rated for 2.2-3.8 V supply. You really SHOULD NOT run these modules from 5V, although some people report no problems. They are intended for use in 3.3 V systems.
    I found the trickiest thing with these modules is ensuing you supply packet data fast enough via the SPI interface. Ideally you should use hardware SPI, not bit-banging.
    Also, I don’t believe that there is a usable signal strength indicator output, either digital or analog.

  • It’s an implementation of the MRF49XA chips. Using SPI only requires a very high clockspeed in the 4Mhz range. Using an interrupt line decreases the clockspeed requirement. It has only a 16 bit buffer, so the microcontroller needs to be fast enough to service the FIFO. It’s not practical on the end of a long cable because of the 4 wire SPI interface. Got 600' range on one of the chips.

    • That is incorrect.
      This is a silabs chip Si4421. See more info at

  • If you guys have the time, I’d love to see a comparison between this device, the “RF Link” hardware, and XBee.
    While range is important, I’d rather you focus on ease of going from “zero to 60”, also known as “starting from no knowledge about RF to having two devices reliably communicating”.
    I have gotten reliable communication between RF Link modules, but there is a whole bag of tricks you have to learn first. XBee apparently is almost plug and play, but you pay extra for that. With these about the same cost as a RF Link TX/RX pair (one you add BOBs), where do they fall on the “ease of use” spectrum?

  • How is the quality when compared to the “RF Link” boards? I have used the “RF Link” line, and they were riddled with errors, making them unusable unless I had a good microcontroller. Any thoughts?

    • “RF link” are very basic ASK modules, which are very sensitive to noise and fixed to one single frequency.
      These new RF modules are FSK with frequency hopping capabilites, they really play in a different league, much more powerful and robust modules than ASK ones.

    • The RFM12 needs a lot of work to be used as a simple link. Go to RFM22 which has a lot of intelligence and a larger buffer inside, it makes transparent communication much easier.
      on the other hand, RFM12 is much better to develop really custom radio links but for that you need non trivial work on the MCU side.

  • You may want to correct “Analog and digital signal strength indicator” as they don’t offer Analog RSSI actually. They say so in the datasheet but is incorrect, you will see no output pin exist for analog RSSI. Digital RSSI (actually thresold signal no actual value read) is available from SPI interface though.

    • Hi Ariel,
      The RSSI value can be read at anytime. The threshold detect does not have to be used.

  • whats the max distance these can transmit / receive from?

    • The one Sparkfun is selling works on 433MHz. The datasheet says >150 meter (164 yards). The manufacturer also makes similar transceivers in the 315/868/915MHz bands and these are all rated at >100 meter (109 yards).

Customer Reviews

No reviews yet.