Arduino MKR WAN 1300

Arduino S.r.lMCU 8-32 bitarduino

⚡ The essentials in 60 seconds

The Arduino MKR WAN 1300 stands as a distinctive entry in the world of low-power wide-area networking, designed specifically for projects that require long-range communication with minimal energy consumption. Released in 2017 by Arduino S.r.l., this board represents a specialized approach to the Internet of Things, moving away from the ubiquitous Wi-Fi and Bluetooth connections found on many other development boards. Instead, it focuses entirely on LoRa and LoRaWAN technologies, which allow data to travel kilometers rather than meters. It is important to note that as of late 2026, the MKR WAN 1300 is considered end-of-life and has been delisted from the official Arduino store. It has been succeeded by the MKR WAN 1310, which offers improvements such as a built-in battery charger and enhanced power management. However, the 1300 remains fully supported in software, with its board definitions still present in the official ArduinoCore-samd repository, ensuring that existing projects can continue to be maintained and updated.

At the heart of the MKR WAN 1300 is the Microchip SAMD21G18A microcontroller. This is a 32-bit processor based on the Arm Cortex-M0+ architecture, running at a clock speed of 48 MHz. To understand what this means for a developer, consider that the Cortex-M0+ is a highly efficient core designed to perform tasks while consuming very little power, making it ideal for battery-operated devices. The microcontroller comes equipped with 256 KB of flash memory for storing your program code and 32 KB of SRAM for temporary data storage. While these figures may seem modest compared to modern smartphones, they are more than sufficient for the lightweight protocols used in LoRaWAN communication. The board communicates with the outside world via a native Full-Speed USB interface, allowing for easy programming directly from a computer using the standard Arduino IDE or command-line tools. The programming process utilizes a bootloader known as SAM-BA, which is triggered by a specific serial connection sequence, a standard procedure for many Arduino SAMD-based boards.

The defining feature of this board is its radio module, the Murata CMWX1ZZABZ. This component is not just a simple radio chip but a System-in-Package that combines a Semtech SX1272 LoRa transceiver with its own dedicated microcontroller, the STM32L0. This architecture effectively creates a dual-processor system on a single board. The main SAMD21 handles your application logic, while the STM32L0 inside the radio module manages the complex low-level radio communications. These two processors talk to each other over an SPI interface using a set of AT commands, similar to how older modems communicated with computers. This separation of duties allows the main processor to remain asleep for long periods, saving battery life, while the radio module handles the timing-critical tasks of sending and receiving packets. The firmware for this radio module is open-source and derived from ST’s I-CUBE-LRWAN stack, with Arduino adding features like the ability to switch frequency bands at runtime.

The board supports regional LoRa frequency bands, primarily EU868 and US915. It is crucial to select the correct version for your geographic location, as radio regulations vary significantly by country. The library allows developers to specify the band in their code, such as calling modem.begin(EU868), which configures the radio accordingly. The physical connection to the antenna is made via a micro-UFL connector, requiring users to attach their own antenna. While the successor model, the 1310, is known to bundle a pentaband antenna, it is unverified whether the original 1300 retail packaging included this accessory, so users should plan to source a compatible antenna separately. The board also includes a hardware secure element, the Microchip ATECC508, which provides a secure place to store cryptographic keys and credentials, enhancing the security of IoT deployments.

Physically, the MKR WAN 1300 follows the compact MKR form factor, measuring approximately 67.64 by 25 millimeters. It operates on 3.3-volt logic levels and can be powered via USB or a 5-volt input on the VIN pin. The board exposes a set of general-purpose input-output pins, including digital I/O, PWM pins for controlling motors or LEDs, and analog inputs for reading sensors. It also features a single I2C bus and a single SPI bus, allowing for the connection of various peripheral devices like temperature sensors or displays. However, potential users should be aware of a significant limitation regarding power management: the MKR WAN 1300 does not have a built-in lithium-polymer battery charger. This is a key difference from its successor, the 1310, which added this feature. Consequently, if you intend to deploy the 1300 in a remote location powered by a battery, you will need to design external charging circuitry or use a battery pack with its own protection and charging management.

Software support for the board is robust, primarily through the Arduino MKRWAN library, which provides a high-level API for interacting with the LoRa radio. This library simplifies the process of joining a LoRaWAN network, sending data, and receiving downlinks. It supports both Over-The-Air Activation (OTAA) and Activation By Personalization (ABP), the two standard methods for registering devices on a LoRaWAN network. The board is frequently used with The Things Network, a global community-operated LoRaWAN infrastructure, allowing developers to send data to the cloud with minimal setup. Additionally, the board supports CircuitPython, offering an alternative programming environment for those who prefer Python over C++. However, it is important to note that the LoRaWAN stack is not available in CircuitPython; radio communication must still be handled using the Arduino core.

Despite its capabilities, the MKR WAN 1300 has known issues that developers should be aware of. There have been reports of false failure messages during the network join process, and some users have experienced transmission wedges after sending a large number of packets, likely due to frame counter overflows. Furthermore, the firmware enforces a strict duty cycle limit, particularly in the EU, preventing more than one message transmission every two minutes. This is a regulatory requirement to prevent radio interference but can be a surprise for those expecting rapid data updates. Community discussions also highlight occasional confusion regarding US915 band support and sub-band configurations, suggesting that while the library supports the band, fine-tuning for specific networks like Helium may require additional effort. Nevertheless, for applications requiring long-range, low-power connectivity, the MKR WAN 1300 remains a capable and well-documented tool, provided its power limitations and regulatory constraints are respected.

Forum (1 topic) →

AttrSpecsverified
main_mcuMicrochip (Atmel) SAMD21G18A — Arm Cortex-M0+ 32-bit, 48 MHz (build.mcu=cortex-m0plus, build.f_cpu=48000000L, -D__SAMD21G18A__), 256 KB flash (upload.maximum_size=262144), 32 KB SRAM (upload.maximum_data_size=32768), no EEPROM (boards.txt, SAMD21 family datasheet hosted by Arduino). Arduino's product page says "Arm Cortex-M0 32-bit SAMD21 processor" (docs.arduino.cc hardware page); the core builds it as Cortex-M0+ (the SAMD21 is an M0+ part per the datasheet).✔
lora_radio_moduleMurata CMWX1ZZABZ-078 (docs.arduino.cc hardware page, module firmware README). The module is a System-in-Package combining a Semtech SX1272 LoRa transceiver with an STM32L0 MCU running Arduino's AT firmware — the firmware is an STM32 project ("System Workbench for STM32") derived from ST's I-CUBE-LRWAN stack (mkrwan1300-fw README); the STM32-inside-the-module is also visible in a maintainer issue titled "SPI transfer problem between SAM D21 and STM32 on MKRWAN1310" (issue #86). The SX1272 is Semtech's "Long Range, Low Power RF Transceiver 860–1000 MHz" (Semtech product page). Module datasheet (same CMWX1ZZABZ part, hosted by Arduino): PDF.✔
secure_elementMicrochip ATECC508 ("ECC508 crypto-chip") (docs.arduino.cc hardware page, ATECC508A datasheet via docs.arduino.cc — datasheet URL pattern from the 1310 page).✔
rf_interfacemicro-UFL antenna connector; the sibling 1310 ships a bundled pentaband antenna rated 2 dB gain for 433/868/915 MHz (1310 store page).✔
gpio_peripherals_mkr_form_factor_samd213.3 V logic, 1× UART, 1× SPI, 1× I²C; the identical-form-factor 1310 spec table lists 8 digital I/O, 13 PWM pins (0…8, 10, 12, 18/A3, 19/A4), 7 analog inputs (ADC 8/10/12-bit), 1 analog output (DAC, 10-bit), 7 mA DC per I/O pin, user LED on D6, 48 MHz + 32.768 kHz RTC clocks (1310 store page tech specs).✔
usbnative Full-Speed USB (device) on the SAMD21; bootloader PID 0x8053, application PID 0x0053, VID 0x2341 (boards.txt, CircuitPython board config).✔
powerUSB or VIN 5 V input, 3.3 V operating logic (MKR family design, 1310 store page).✔
mechanicalMKR family outline, 67.64 × 25 mm, ~32 g (1310 values, same outline — 1310 store page).✔
  • Manufacturer: Arduino S.r.l. (Via Andrea Appiani 25, Monza, Italy) — manufacturer details as listed for the MKR WAN line (MKR WAN 1310 store page, same manufacturer block); board support lives in Arduino's official ArduinoCore-samd (mkrwan1300.name=Arduino MKR WAN 1300, boards.txt).
  • Year: 2017 — the MKRWAN library README carries "Copyright (C) 2017 Arduino AG" and the CircuitPython port for the board dates from 2017 (board.c).
  • Status: End-of-life / delisted. As of 2026-10-13 the store URLs store.arduino.cc/products/arduino-mkr-wan-1300 and store.arduino.cc/mkr-wan-1300 both redirect to the store home page (verified by fetch), i.e. the product page has been removed; the board is still fully supported in software (boards.txt, MKRWAN library v1.1.2). Arduino's own successor page calls the 1300 "its predecessor" relative to the MKR WAN 1310 (MKR WAN 1310 store page).
  • Price:
  • Variants: regional versions for EU868 and US915 LoRa bands (the library takes the band at runtime, e.g. modem.begin(EU868), LoraSendAndReceive example; US915 usage discussed in issue #100). Successor: MKR WAN 1310 — same SAMD21 + Murata CMWX1ZZABZ + ECC508 concept, plus a battery charger, 2 MByte SPI Flash and improved power control (1310 store page). Sibling MKR WAN boards in the core: mkrwan1310 (boards.txt).

+ Strengths

  • Sub-GHz LoRa / LoRaWAN in an Arduino Uno-shield-compatible MKR footprint — the only radio is the Murata CMWX1ZZABZ (SX1272-based); there is no Wi-Fi or Bluetooth on this board (docs.arduino.cc hardware page).
  • LoRa physics headroom: chirp-spread-spectrum PHY with spreading factors trading range vs. data rate (0.3–27 kbit/s), link budgets of ~155–170 dB, ~4.8 km urban / 16+ km rural line-of-sight per Semtech's developer portal (Wikipedia — LoRa).
  • Runtime regional-band switching — Arduino's module firmware adds the "ability to switch band at runtime, not only at compile time" over stock ST firmware (mkrwan1300-fw README).
  • Hardware secure element (ATECC508) for key/credential storage, part of the MKR family security concept (docs.arduino.cc hardware page).
  • Two independent CPUs (SAMD21 + STM32L0 in the radio module) talking over SPI with an AT protocol — the module can even be used as a standalone LoRa modem on other projects (LoRaModem modem(Serial1) supports UART wiring of the Murata chip, example).
  • Board-to-board plain-LoRa mode (no network server): Arduino documents using two MKR WAN 1300s for a "remote LED control system" point-to-point (docs.arduino.cc hardware page); see also the DumbModemLoraSender example (examples).
  • Class A LoRaWAN end-device with ADR, confirmed/unconfirmed uplinks, RSSI/SNR readback (AT+ADR, AT+CFM, AT+RSSI, AT+SNR) (AT list).
  • MKR shield ecosystem — same connector layout as the rest of the MKR family (docs.arduino.cc hardware page).

− Weaknesses

  • joinOTAA reports false failures — long-standing issue: "joinOTAA in sketch 'LoRaSendAndReceive' and other examples from this lib gives false error 'Something went wrong…'" (issue #139).
  • TX wedges after 255 sends — "Problem with packet transmission after 255 sends" (frame-counter overflow class of bug) (issue #141).
  • Library/firmware version mismatch — "Firmware version mismatch" when a new MKRWAN library meets old module firmware; always run the firmware updater first (issue #126, updater examples here).
  • ABP regression — "joinABP not working since library update from 1.0.14 to 1.0.15" (issue #85).
  • US915 confusion — "Does this library really support US915?" and "No way to force US Sub-band #2 (channels 8–15) to join Helium network reliably"; the data-rate table was also flagged as EU-centric (issues #100, #140, #151).
  • Hard 2-minute TX throttle: "independent of this setting, the modem will not allow sending more than one message every 2 minutes, this is enforced by firmware and can not be changed" (EU duty-cycle design) (official example comment).
  • Firmware-updater example bug — "Possible bug in arduino_read function of 'MKRWANFWUpdate_standalone' example sketch" (issue #134).
  • Undocumented API — restart usage is not documented (issue #132).
  • No battery charger — the 1310 advertises "a new battery charger" and better power management as fixes versus the 1300; plan external battery/charging hardware for 1300 field deployments (1310 store page).
  • Sibling-board SPI contention (1310 only, watch if you reuse code): "External SPI bus freezes when LoRa is enabled" (#101) and SAMD21↔STM32 SPI transfer problems (#86).
  • Community hub: official forum category for the board: forum.arduino.cc — MKR WAN 1300 (link taken from the board's docs page).
  • Retour d'expérience expert expert — expert-arduino
    • Petit retour d'experience sur la MKR WAN 1300 maintenant qu'elle est delistee au profit de la 1310. Le format MKR est vraiment pratique et le module Murata CMWX1 fait le job en EU868 ou US915. Par contre, attention aux pieges connus. Le problème du compteur de trames qui bloque l'emission après 255… — expert-arduino
    • Merci pour ce resume clair. Je viens de recevoir ma 1300 pour un projet de suivi de niveau d'eau. Tu parles du compteur de trames, mais est-ce que le faux échec de joinOTAA est systematique ou ca depend de la config ? J'ai lu l'issue 139 mais je ne suis pas sur de comprendre si c'est un bug de la l… — maker_loi88
    • @maker_loi88 le faux échec de joinOTAA est frequent si tu ne geres pas les timeouts correctement, cf issue 139. Pour le throttle, ne cherche pas a le contourner, c'est grave en EU868. Si tu as besoin de plus de fiabilite et d'un chargeur LiPo integre, la 1310 est mieux, mais la 1300 reste fonctionn… — hacker_99

Community feedback and projects

  • Board-to-board LoRa remote LED control

    Board-to-board LoRa remote LED control — Arduino's official tutorial concept for this exact board: "Set up two Arduino MKR WAN 1300 to host a remote LED control system" . (unverified au 2026-10-13) The Things Network node — connect to the public TTN network a…

  • Serial chat over LoRaWAN

    Serial chat over LoRaWAN — the library's flagship LoraSendAndReceive example: type at the Serial monitor, the message goes up to a network server (e.g. TTN) and downlinks are echoed back . (unverified au 2026-10-13) Point-to-point "dumb modem" telemetry — Dum…

  • Self-recovering field node (firmware updater project)

    Self-recovering field node (firmware updater project) — MKRWANFWUpdate_standalone / FWUpdaterBridge turn a second Arduino into a programmer for the module's STM32 firmware; the standard first-hour project for every 1300 . (unverified au 2026-10-13)

  • More MKR projects

    More MKR projects — Arduino Project Hub's MKR collection (, linked from the board's docs page). (unverified au 2026-10-13)

  • joinOTAA reports false failures — long-standing issue: "joinOTAA in sketch 'LoRaSendAndReceive' and other examples from this lib gives false error 'Something went wrong…'" (issue #139).
  • TX wedges after 255 sends — "Problem with packet transmission after 255 sends" (frame-counter overflow class of bug) (issue #141).
  • Library/firmware version mismatch — "Firmware version mismatch" when a new MKRWAN library meets old module firmware; always run the firmware updater first (issue #126, updater examples here).
  • ABP regression — "joinABP not working since library update from 1.0.14 to 1.0.15" (issue #85).
  • US915 confusion — "Does this library really support US915?" and "No way to force US Sub-band #2 (channels 8–15) to join Helium network reliably"; the data-rate table was also flagged as EU-centric (issues #100, #140, #151).
  • Hard 2-minute TX throttle: "independent of this setting, the modem will not allow sending more than one message every 2 minutes, this is enforced by firmware and can not be changed" (EU duty-cycle design) (official example comment).
  • Firmware-updater example bug — "Possible bug in arduino_read function of 'MKRWANFWUpdate_standalone' example sketch" (issue #134).
  • Undocumented API — restart usage is not documented (issue #132).
  • No battery charger — the 1310 advertises "a new battery charger" and better power management as fixes versus the 1300; plan external battery/charging hardware for 1300 field deployments (1310 store page).
  • Sibling-board SPI contention (1310 only, watch if you reuse code): "External SPI bus freezes when LoRa is enabled" (#101) and SAMD21↔STM32 SPI transfer problems (#86).
  • Community hub: official forum category for the board: forum.arduino.cc — MKR WAN 1300 (link taken from the board's docs page).

Code library — examples written for this board

  • emission-p2p.ino Arduino

    The simplest LoRa link with the MKR WAN 1300: a text packet every five seconds in point-to-point mode, no infrastructure or gateway. The receiver is a second MKR WAN; ACK mode confirms reception when…

  • reception-p2p.ino Arduino

    The point-to-point receiver: this MKR WAN 1300 listens on 868.1 MHz SF7, prints each packet with its RSSI and SNR, and re-initialises itself when the radio reports an error. Essential to validate a l…

  • reglage-sp.ino Arduino

    LoRa range is tuned by spreading factor: this sketch transmits the same message from SF7 up to SF12, thirty seconds per step. The receiver must switch SF along with the transmitter — or run one recei…

  • meteo-lora.ino Arduino

    Complete standalone weather station: the BME280 on I2C supplies temperature, humidity and pressure, the MKR WAN 1300 broadcasts them over LoRa every ten minutes. The compact T;H;P frame fits in 20 by…

  • trame-crc.ino Arduino

    On radio, any frame can be corrupted or lost: this minimal protocol adds a station id, a sequence number and a CRC-8 to each MKR WAN 1300 LoRa packet. The receiver thus discards invalid frames and sp…

  • relais-radio.ino Arduino

    Remote 12 V relay control: the receiving MKR WAN 1300 reads ON/OFF commands arriving over radio, drives pin 6 through a transistor, and sends an acknowledgement back. One simple gesture — pressing th…

  • scan-canaux.ino Arduino

    Before picking your LoRa channel, measure the environment: this program sweeps nine EU868 channels and publishes each one's mean and minimum RSSI. A noisy channel (neighbouring gateways, interference…

  • cycles-sleep.ino Arduino

    The MKR WAN 1300 is built for battery nodes: this cycle wakes every fifteen minutes, measures, emits a short SF9 frame, then sleeps modem and MCU. With no serial port or LED, average current drops be…

  • passerelle-usb.ino Arduino

    The single gateway for the station network: this MKR WAN 1300 bridges the LoRa air and the USB port, replaying each frame with RSSI, SNR and timestamp. Plugged into a Raspberry Pi or laptop, it becom…

  • lora_logger.py Python

    On the computer side, this pyserial script consumes the LoRa gateway, writes each frame to a timestamped CSV and prints an RSSI bar chart in characters. You follow station range and the effect of mov…

Examples and repos found online