Arduino MKR WAN 1300
⚡ The essentials in 60 seconds
- main_mcu — Microchip (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_module — Murata 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_element — Microchip ATECC508 ("ECC508 crypto-chip") (docs.arduino.cc hardware page, ATECC508A datasheet via docs.arduino.cc — datasheet URL pattern from the 1310 page).
- rf_interface — micro-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_samd21 — 3.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).
- usb — native Full-Speed USB (device) on the SAMD21; bootloader PID 0x8053, application PID 0x0053, VID 0x2341 (boards.txt, CircuitPython board config).
- On this board : 9 tutorials · 10 code
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.

Pinout diagram

| Attr | Specs | verified |
|---|---|---|
main_mcu | Microchip (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_module | Murata 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_element | Microchip ATECC508 ("ECC508 crypto-chip") (docs.arduino.cc hardware page, ATECC508A datasheet via docs.arduino.cc — datasheet URL pattern from the 1310 page). | ✔ |
rf_interface | micro-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_samd21 | 3.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). | ✔ |
usb | native Full-Speed USB (device) on the SAMD21; bootloader PID 0x8053, application PID 0x0053, VID 0x2341 (boards.txt, CircuitPython board config). | ✔ |
power | USB or VIN 5 V input, 3.3 V operating logic (MKR family design, 1310 store page). | ✔ |
mechanical | MKR 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
- How to put MKR WAN 1300 into dumb mode and use LMIC library? forum.arduino.cc
- Sketches stopped uploading on MKR WAN 1300 after running in SPI slave mode forum.arduino.cc
- Mkr wan 1300 - zero readings when powered by battery forum.arduino.cc
- Starting LoRa Failed with MKR WAN 1300 forum.arduino.cc
- MKR WAN 1300 vs 1310 forum.arduino.cc
- docs.arduino.cc/hardware/mkr-wan-1300
- content.arduino.cc/assets/hw_MKRWAN1300.zip
- SAMD21 family datasheet (DS40001882)
- Murata CMWX1ZZABZ type-ABZ datasheet (Arduino-hosted)
- Semtech SX1272 product page
- ATECC508A datasheet
- ArduinoCore-samd boards.txt
- arduino-libraries/MKRWAN
- reference
- examples
- arduino/mkrwan1300-fw
- AT command list
- ports/atmel-samd/boards/arduino_mkr1300
- Arduino forum — MKR WAN 1300 category
- The Things Network
- Wikipedia — LoRa
- LoRa Alliance
- 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).
- Faire clignoter la LED utilisateur debutant Schéma : IMG-mkr-wan-1300-debutant-1-mkrwan-clignotement-led.svg — carte MKR WAN 1300 avec la LED utilisateur et le câble micro-USB en évidence
- Bouton poussoir et console série debutant Schéma : IMG-mkr-wan-1300-debutant-2-mkrwan-bouton-console.svg — bouton poussoir câblé entre la broche 2 et la masse sur breadboard
- Lire un capteur analogique avec l'ADC 12 bits debutant Schéma : IMG-mkr-wan-1300-debutant-3-mkrwan-capteur-analogique.svg — potentiomètre relié à l'entrée analogique A1 et à l'alimentation 3,3 V
- Démarrer le module radio et rejoindre un réseau LoRaWAN intermediaire Schéma : IMG-mkr-wan-1300-intermediaire-1-mkrwan-scan-module-join.svg — module LoRa Murata et jointe OTAA vers une passerelle LoRaWAN
- Envoyer des données capteur vers un serveur (uplink) intermediaire Schéma : IMG-mkr-wan-1300-intermediaire-2-mkrwan-uplink-lorawan.svg — capteur BME280 en I2C et uplink binaire vers le serveur réseau
- Commander une LED par downlink LoRaWAN intermediaire Schéma : IMG-mkr-wan-1300-intermediaire-3-mkrwan-downlink-led.svg — LED pilotée par downlink LoRaWAN depuis le serveur réseau
- Canal sécurisé : OTAA, MIC et élément ATECC508 avance Schéma : IMG-mkr-wan-1300-avance-1-mkrwan-lien-securise.svg — lien sécurisé OTAA/AES avec élément ATECC508 en évidence
- Mettre à jour le firmware du module radio (piège de désynchronisation) avance Schéma : IMG-mkr-wan-1300-avance-2-mkrwan-update-fw-module.svg — mise à jour du firmware du module via un second Arduino programmateur
- Sommeil profond du SAMD21 pour nœud sur batterie avance Schéma : IMG-mkr-wan-1300-avance-3-mkrwan-sommeil-bas-courant.svg — SAMD21 en sommeil profond avec RTC, batterie et microampèremètre
Code library — examples written for this board
emission-p2p.inoArduinoreception-p2p.inoArduinoreglage-sp.inoArduinometeo-lora.inoArduinotrame-crc.inoArduinorelais-radio.inoArduinoscan-canaux.inoArduinocycles-sleep.inoArduinopasserelle-usb.inoArduinolora_logger.pyPython
Examples and repos found online
- arduino-libraries/MKRWAN github.com
- arduino/ArduinoCore-samd github.com
- gonzalocasas/arduino-mkr-wan-1300 github.com
- tdjohnson/mkr1300gps github.com