SparkFun Pro RF - LoRa, 915MHz (SAMD21)

The SparkFun Pro RF is a LoRa®-enabled wireless board that marries a SAMD21 and a long-range RFM95W to make a compact and easy-to-use IoT Arduino board. With its fast MCU and excellent point to point data transmission in the 915MHz ISM band with LoRa Capabilities, the Pro RF is a great choice for anyone interested or experienced in utilizing long range data communication.

Every pin on the SparkFun Pro RF is accompanied with a ground connection making the buttons and LEDs easy to connect. In case you're building something to be embedded into clothing or other physically harsh environment the antenna includes a stress relief hole to make sure your wire antenna survives. A short (3 inch) wire antenna is sufficient for "short" distances (up to 1 mile line-of-sight), but we've also included a u.FL antennae connector for potentially longer distances.

The Pro RF also includes a power switch and 2-pin JST connector for powering from a lithium battery. With a Micro-B USB and the power switch in the off position, the Pro RF will charge the attached battery! The board programs over a reinforced Micro-B connector with a slim reset button that fits nicely on the side of the board. We’ve even added our popular Qwiic connector to the edge of the board making it incredibly easy to add sensors and actuators without the need for solder or a soldering iron!

Thanks to the Arduino LoRa library, the RFM95W radio is an easy to use packet radio. But it doesn’t stop there because closing a few jumpers on the underside of the SAMD21 Pro RF initiates LoRaWAN mode on the radio module making it a node in a distributed sensor network.

Note: If you are looking to pick up a SparkFun Pro RF while we are out of stock, we do have a special edition with a black PCB available as well! Follow the link listed in the previous sentence or in the Similar Items section below. Please be aware that the Pro RF with the black PCB is only available for a limited time and will not be restocked when it is gone!

  • SAMD21G18A
    • Cortex M0+
    • 256KB Flash Memory
    • 32MHz External Oscillator
    • 4 Digital and 5 Analog IO Pins with exclusive GND pins
  • Hope RFM95W LoRa modem
    • Point to Point Radio capabilities
    • LoRa Enabled
    • Frequency range: 915 MHz
    • Spread factor: 6-12
    • Range up to 1 mile line of sight
    • U.FL Antenna
  • LiPo Battery Charger
    • 500mA Charge Rate
  • Qwiic Enabled

SparkFun Pro RF - LoRa, 915MHz (SAMD21) Product Help and Resources

LoRaWAN with ProRF and The Things Network

July 3, 2018

Learn how to make a LoRaWAN node for your next long range IoT project and connect it to the internet with The Things Network!

Three Quick Tips About Using U.FL

December 28, 2018

Quick tips regarding how to connect, protect, and disconnect U.FL connectors.

Secure DIY Garage Door Opener

January 16, 2020

Did you know that most garage doors are at risk of a roll jam attack? Here we make a DIY garage door remote-control system that is much more secure than most commercial-ready products using the latest in ECC cryptography.

Adding More SERCOM Ports for SAMD Boards

February 4, 2019

How to setup extra SPI, UART, and I2C serial ports on a SAMD-based boards.

SparkFun SAMD21 Pro RF Hookup Guide

October 4, 2018

Using the super blazing, nay blinding, fast SAMD21 whipping clock cycles at 48MHz and the RFM96 module to connect to the Things Network (and other Radio woodles).

ARM Programming

May 23, 2019

How to program SAMD21 or SAMD51 boards (or other ARM processors).

Core Skill: Programming

If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.

2 Programming

Skill Level: Rookie - You will need a better fundamental understand of what code is, and how it works. You will be using beginner-level software and development tools like Arduino. You will be dealing directly with code, but numerous examples and libraries are available. Sensors or shields will communicate with serial or TTL.
See all skill levels

Core Skill: Electrical Prototyping

If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.

2 Electrical Prototyping

Skill Level: Rookie - You may be required to know a bit more about the component, such as orientation, or how to hook it up, in addition to power requirements. You will need to understand polarized components.
See all skill levels


Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • CrustyCarbuncle / about 5 years ago / 1

    It is probably just my fat fingers, but I have been concerned for some time that the reset button would eventually fail. Now it has.

    I'm not certain what the logic of the narrow 'neck' of the board is, it looks reasonable to keep the switches out of harm's way, but it (for me) awkward and causes me to have to hold the board very tightly when I have to 'double click' to initiate an upload. Since I have to do this about ten times for each successful upload, this puts a LOT of stress on the switch.

    From now on I am going to wire an off-board reset for development on M0 boards.

  • Member #1507835 / about 5 years ago / 1

    I'd ask the folks at SparkFun to please just make it a habit to include physical dimensions of boards and parts in general and have them readily visible on the product page.

    It seems really standard and it's a bit frustrating when they are nowhere to be found.

    • santaimpersonator / about 5 years ago / 1

      There is an image with a ruler for a rough estimation. Otherwise, you can use the Eagle files to get exact dimensions of the board and mounting points. AutoDesk offers a free version of Eagle that users can download (as long as it isn't for commercial use). Unfortunately, we currently don't have the resources for someone to draw up 3D models though.

  • Member #695201 / about 5 years ago / 1

    After uploading a sketch to do LoRa via OTAA none of my computers can recognize the board (code 43). I've tried all the normal stuff with diff USB ports, drivers, restarting, diff comps, diff cables yet it seems whatever I did in the code (which I can tell you if it would help) has made it noncommunicable. What can I do to bring this little guy back to factory memory condition so I can try again? I know I had the wrong AppKey for LoRa in my code but I don't see how that's causing this problem. Cheers

    • Member #731462 / about 5 years ago / 1

      Plug it in to your computer via USB and try quickly double-tapping the reset button if you haven't already, then see if your computer recognizes it.

  • adam.g / about 5 years ago / 1

    I wanted to point out that the part number for the LDO regulator is not specified on the schematic for this board. However, based on the markings observed in the photos, it looks like you're using the AP2112 (, which has a max voltage of 6V and 600 mA output.

    • Elias The Sparkiest / about 5 years ago / 1

      You are correct, however you may have missed the text that states the "Max Voltage" and "Max Current Output" under the "Power" section of the schematic. If you need some more info on power limitations check out the hookup guide, something of interest is the current limitation of I/O "clusters" on the SAMD21 that is unique to that micro-controller. If you're ever wanting to get into which parts are used, you can also download the Eagle files under the documents tab and take a look at which parts are used.

  • Member #221375 / about 5 years ago / 1

    This product page does not list the amount of Flash/RAM memories, a CRUCIAL technical detail. Can somebody please let me know the amount of Flash/RAM? The photo shows a SAMD21G18A-U which has 256K FLASH, 32K SRAM. Is this the actual device used on the shipping product?

    • Elias The Sparkiest / about 5 years ago / 2

      I agree that those features should be listed. My apologies for somehow not placing those details on this page. You can now find them under the Features tab and I added the datasheet for the SAMD21G18A under Documents. You are correct, those are the specs of the micro-controller.

  • Member #243237 / about 6 years ago / 1

    RSSI Values?

    I'm getting low RSSI values, even with a decent 900 MHZ antenna. I'm running the point to point example and I'm only getting -90dB when the antennas are 1 foot apart.

    Any tips? What values are you getting?

  • Member #161230 / about 6 years ago / 1

    Does anyone have working arduino code to get the lora.h library to work on this board?

    It seems easier to have the lora.h library change the Bandwidth/ CR/ Spread Spectrum settings than it is with Radiohead library Additionally I have some of the 1w modules that use lora.h and I would like to have them all communicating

    I have tried a few things and I am the point I want to ask for help, not knowing if it could cause problems

  • alohawild / about 6 years ago * / 1

    I have tried to use serial output to send trace to monitor. My usual approach is to do a setup and trace. I am getting no output and no lights on TX and RX. It appears that serial is going to null.

    void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); Serial.begin(115200); Serial.println("Blink Startup"); }

    // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second Serial.println("Blink"); }

    But then I discovered I am not up-to-date on serial (amazing we are still innovating in this old stuff) and now have it working:

    // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); SerialUSB.begin(115200); SerialUSB.println("Blink Startup"); }

    // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second SerialUSB.println("Blink"); }

    Left comment here for anyone that makes the same mistake...

  • Member #223546 / about 6 years ago / 1

    Where are the SWDIO and SWDCLK pads, they are not labelled (that I can see).

    • Elias The Sparkiest / about 6 years ago / 1

      They are not labeled, you are correct. The pads are broken out to two test points on the underside of the board by the "RST" silk. You can see them in the pictures if you look carefully. You'll need to download the board files to determine which one is which, and you can find those under the "Documents" tab. Happy hacking!

  • alohawild / about 6 years ago * / 1

    Issue fixed and IDE works now. Thanks!

    • Elias The Sparkiest / about 6 years ago / 1

      Sorry for the mix up and thank you for the comment update =)!

  • Member #582503 / about 6 years ago / 1

    We need these LoRaWAN boards in european versions. EU 863-870 MHz

    • Elias The Sparkiest / about 6 years ago * / 1

      That was my mistake, we only carry the module that broadcasts in the 915 MHz range.

  • Member #161230 / about 6 years ago * / 1

    Question removed after research

Customer Reviews

3.1 out of 5

Based on 7 ratings:

Currently viewing all customer reviews.

2 of 2 found this helpful:

Doesn't work!!

I had high hopes this would supply a wireless link for an ongoing project, but its a complete dud.

I'm sorry to hear you're having trouble! Please contact our technical assistance team for help with this.

2 of 2 found this helpful:

Great chip combo, but another layout would be better for me.

Despite their drawbacks, my projects are usually breadboarded, as my lack of design expertise generates a lot of experimentation and modification. The width of the board with the ground rails uses all the width for connections on the usual breadboard, so your competitor’s format works better most of the time. I seem to end up usually needing a power bus, so all those ground connectors only solve half that problem.

A great use of your skills would be better radio software support. The third party libraries usually used are short on explanation and perhaps a little long on attitude for a packet radio beginner, and contain inconsistancies like setting the power one way on the server and then adding a boolian on the client, or setting the frequency in a not if statement. I finally ended up figuring most of it out from Nate’s kill switch article.

2 of 2 found this helpful:

Good Intro to LoRa WAN Device

I like the clear labels and QWIIC connector make for a quick start. It works and seems to be fairly robust. It has adequate mounting holes to include in a real project! I understand the other review's concern about the layout for prototyping. But for me the QWIIC allows minimal the soldering to get where i want to go.

It did not work well out of the box, but the support team was able to patch an issue in the library and get things working promptly. Thank you! (Note: use 1.5.3 SparkFun SAMD board defs for the working version.)

The Hookup Guide is a little short on details (for example: it explains that connecting the two LoRa jumpers on the back of the board puts the board in LoRa mode. But it does not explain what mode is enabled by leaving the jumpers disconnected). The "SWITCH" pin through holes are not explained, but can be "sort-of" inferred from the schematic.

Also, there are many fiddly configuration changes in the libraries. But if you are careful, you can make them all correctly.

2 of 2 found this helpful:

Fine but not exactly PRO-oriented.

We recently bought this board to use as a SAMD LoRa node on our deployment for TTN here in San Salvador. Everything seems perfect but there is a couple of issues with this design:

1st: Documentation is a little bit of a mess and the instructions about the libraries to use are confusing. There are several Libraries recommended on the tutorial but some of them simple don't work directly on the SAMD. Also there is an error in the tutorial for The Things Network were SPI pins for the radio are wrong.

2st: Why there is no JTAG port? I mean... This is a "PRO" board. Pros tend to like to have tools to debug the boards. LoRa is a complex protocol and trying to debug only using UART is a PITA. With the instructions wrong on the tutorial we literally had to solder a couple of wires directly on the chip to extract the SWD lines to be able to connect a JTAG debugger and find the errors because the board didn't even boot.

In general the other features are fine and the quality is the one that one expects from Sparkfun. But for a PRO board and for LoRa this one didn't convinced us.

falls short

The board's SWD pins are only available via unlabeled testpoints that depend on a proprietary, Sparkfun-facility-only bed of nails fixture. Sparkfun, if you are unwilling to include a 0.05" ARM Cortex connector (or bring out the pins to the header), at least consider using a standard bed of nails PCB footprint like a Tag-Connect (or standardize on a Sparkfun-sold equivalent). Other disappointments include no documentation on what the ARM comes programmed with, omission of USB ESD and shield components recommended in the SAMD21 datasheet, and a circuitous PCB layout of the critical USB differential traces. Finally, the BOOTPROT configuration was not set, leaving the bootloader wholly unprotected from getting 'bricked'; the only recovery in that scenario would be the SWD pins that the board doesn't provide.

Low power mode disabled by poor design

Want to really like this board, but in order to get it into low power mode you must cut a trace. I have bricked 2 of my 3 devices attempting to do this. unsure why they continue to sell this board as currently designed as the problem has been acknowledged and fix posted in their support forums.

Hi Member #765496.

We don't advertise this as a low power device. I'm sorry you bricked your boards trying to modify them for low power operation but these were never intended to be used in low power mode. Our engineers will consider a low power version on a future revision though.

This is the only product I have ever just "tossed into the bin"

  1. I hate the Qwiic! Especially when you remove the connect points for those signals!
  2. LoraWan cannot be made to work without knowledge of incorrect documentation and specific library versions.
  3. Sparkfun reverses battery pins from general industry norms. One has to purchase batteries from Sparkfun, Remove and re-terminate the JST, or wire a separate JST to the battery pins. Totally a hassle. If you forget to double check, then you cook the efuse. No reverse polarity protection here. This was the final straw for me. An inadvertent swap of batteries on the desktop let the magic smoke out. Good riddance!