Arduino MKR WiFi 1010
⚡ The essentials in 60 seconds
- main_mcu — Microchip SAMD21G18A — Arm Cortex-M0+ 32-bit, 48 MHz, 256 KB internal flash, 32 KB SRAM, no EEPROM; clocks 48 MHz + 32.768 kHz RTC (store page, SAMD21 family datasheet, boards.txt).
- radio — u-blox NINA-W102 module — 2.4 GHz Wi-Fi 802.11 b/g/n + Bluetooth® / Bluetooth® Low Energy; it is an ESP32-based module (Arduino's firmware for it is built on ESP-IDF) (store page, NINA-W10 datasheet, nina-fw).
- secure_element — Microchip ATECC508 (ECC508) crypto chip (store page, datasheet).
- gpio — 8 digital I/O pins at 3.3 V logic, 7 mA DC per pin; 13 PWM pins (0…8, 10, 12, 18/A3, 19/A4) — Wikipedia's table says 12 PWM, the store spec table says 13 (store page, Wikipedia).
- analog — 7 analog inputs (ADC configurable 8/10/12-bit), 1 analog output (DAC, 10-bit) (store page).
- digital_buses — 1× UART, 1× SPI, 1× I²C on the header, plus a second Eslov I²C extension connector (5-pin, 1.0 mm pitch: SDA, SCL, GND, +5 V, alarm pin) (store page, connector datasheet).
- On this board : 9 tutorials · 10 code
The Arduino MKR WiFi 1010 stands as a compact, powerful entry point into the world of secure Internet of Things (IoT) development, designed by the Italian manufacturer Arduino S.r.l. Announced in May 2018 and released shortly thereafter, this board remains an active product in the Arduino lineup, offering a balance of processing power, connectivity, and security features in a form factor measuring just 61.5 by 25 millimeters. At its heart lies the Microchip ATSAMD21G18A, a 32-bit Arm Cortex-M0+ microcontroller running at 48 MHz. For those unfamiliar with these terms, the Cortex-M0+ is an energy-efficient processor architecture designed for embedded systems, while the 48 MHz clock speed refers to the number of cycles the processor can execute per second, providing ample speed for most sensor data processing and communication tasks. The microcontroller includes 256 KB of internal flash memory for storing your program and 32 KB of SRAM for temporary data storage. It is important to note that this chip does not include EEPROM, a type of non-volatile memory found on older Arduino boards, meaning developers must use flash emulation or external storage for saving settings that need to persist after power loss.
What truly distinguishes the MKR WiFi 1010 is its dual-processor architecture. While the SAMD21 handles the main application logic, wireless connectivity is managed by a separate u-blox NINA-W102 module. This module is based on the ESP32 chip and supports both 2.4 GHz Wi-Fi (802.11 b/g/n) and Bluetooth Low Energy (BLE). This separation allows the board to maintain a stable connection and handle complex networking protocols without overloading the main microcontroller. A unique feature highlighted by Arduino is the board’s ability to act as both a Bluetooth Low Energy client and host, a capability described as somewhat unique in the microcontroller platform world. This allows the board to not only connect to other devices but also to manage connections from them, expanding its utility in complex network topologies.
Security is a primary focus of this board, making it suitable for applications where data integrity and privacy are paramount. The board integrates a Microchip ATECC508A secure element, a hardware crypto chip that handles encryption and key storage. This hardware-based security ensures that sensitive cryptographic operations are performed in a protected environment, shielding keys from software-based attacks. This secure element works in tandem with the Wi-Fi module to enable first-class TLS (Transport Layer Security) support. Through the WiFiSSLClient library, developers can establish encrypted HTTPS connections, verifying server certificates against a curated bundle of root Certificate Authorities stored in the module’s firmware. This allows for secure communication with cloud services such as AWS IoT Core, Azure, or Google Firebase, as demonstrated in various official project guides.
The board’s physical interface is designed for modern low-voltage electronics. All digital and analog I/O pins operate at 3.3 V logic levels, which is standard for contemporary sensors but requires caution when connecting to older 5 V devices, as the pins are not 5 V tolerant. The digital pins can source or sink up to 7 mA of current each, a limit significantly lower than traditional AVR-based Arduinos. This means that driving high-power components like relays or motors directly from the pins is not possible; instead, external transistors or driver circuits are required. For analog interaction, the board features seven analog inputs with a configurable ADC (Analog-to-Digital Converter) resolution of 8, 10, or 12 bits, allowing for precise sensor readings. It also includes one true analog output via a 10-bit DAC (Digital-to-Analog Converter), enabling the generation of smooth voltage variations rather than just digital on/off states. Additionally, thirteen pins support PWM (Pulse Width Modulation), a technique used to simulate analog behavior by varying the width of digital pulses, often used for dimming LEDs or controlling motor speeds.
Power management is another sophisticated aspect of the MKR WiFi 1010. The board can be powered via USB or through the VIN pin, which accepts a regulated 5 to 6 V input. It is crucial to note that VIN is not a raw input for higher voltages like 9 V or 12 V, which are common on other Arduino models; feeding it higher voltages can damage the board. The board includes an automatic power source switching mechanism and a Li-Po charging circuit, allowing it to run on a single-cell 3.7 V lithium-polymer battery. The charging is managed by a TI BQ24195L power management IC. Users should be aware that the "ON" LED is tied to the 5 V rail, meaning it will not light up when the board is running solely on battery power, a design choice that can initially confuse beginners. The board also features a user LED on pin D6 and an onboard RGB LED for status indication.
Connectivity options extend beyond Wi-Fi and Bluetooth. The board includes one UART, one SPI, and one I2C bus on its headers. A distinctive feature is the Eslov I2C extension connector, a 5-pin port that allows for the connection of self-identifying sensor modules, simplifying the integration of compatible peripherals. The SAMD21 microcontroller also supports USB host functionality, a rare capability on Arduino boards that allows the MKR WiFi 1010 to communicate with USB peripherals like keyboards or storage devices, in addition to acting as a USB device for programming.
Programming the board is done through the standard Arduino IDE or arduino-cli using the SAMD core. The process involves a "1200-baud touch" reset to enter bootloader mode, after which the code is flashed via the native USB port. Developers should be aware that the Wi-Fi and Bluetooth functionality relies on firmware running on the NINA module. Keeping this firmware updated is essential, as older versions may cause connection failures or security vulnerabilities. Arduino provides tools like the Firmware Updater in the IDE to manage this. While the NINA module is reprogrammable and can technically run other software, doing so voids the RF certification and is generally discouraged for standard use cases.
Despite its strengths, the board has some limitations and known issues. The 3.3 V logic and 7 mA drive limit require careful circuit design. There have been historical issues with static IP configuration and certain TLS certificate handling bugs in the module firmware, though many have been addressed in updates. The board does not have an official MicroPython or CircuitPython build, limiting it primarily to C/C++ development via the Arduino framework. Nevertheless, with its robust security features, compact size, and dual-processor architecture, the MKR WiFi 1010 remains a compelling choice for developers building secure, battery-powered IoT devices that require both Wi-Fi and Bluetooth connectivity. Its open hardware design, with published schematics and EAGLE files, further supports customization and educational use.

Pinout diagram

| Attr | Specs | verified |
|---|---|---|
main_mcu | Microchip SAMD21G18A — Arm Cortex-M0+ 32-bit, 48 MHz, 256 KB internal flash, 32 KB SRAM, no EEPROM; clocks 48 MHz + 32.768 kHz RTC (store page, SAMD21 family datasheet, boards.txt). | ✔ |
radio | u-blox NINA-W102 module — 2.4 GHz Wi-Fi 802.11 b/g/n + Bluetooth® / Bluetooth® Low Energy; it is an ESP32-based module (Arduino's firmware for it is built on ESP-IDF) (store page, NINA-W10 datasheet, nina-fw). | ✔ |
secure_element | Microchip ATECC508 (ECC508) crypto chip (store page, datasheet). | ✔ |
gpio | 8 digital I/O pins at 3.3 V logic, 7 mA DC per pin; 13 PWM pins (0…8, 10, 12, 18/A3, 19/A4) — Wikipedia's table says 12 PWM, the store spec table says 13 (store page, Wikipedia). | ✔ |
analog | 7 analog inputs (ADC configurable 8/10/12-bit), 1 analog output (DAC, 10-bit) (store page). | ✔ |
digital_buses | 1× UART, 1× SPI, 1× I²C on the header, plus a second Eslov I²C extension connector (5-pin, 1.0 mm pitch: SDA, SCL, GND, +5 V, alarm pin) (store page, connector datasheet). | ✔ |
external_interrupts | 10 (pins 0, 1, 4, 5, 6, 7, 8, 9, 16/A1, 17/A2) (store page). | ✔ |
usb | Full-Speed USB device and embedded host on the SAMD21 (store page). | ✔ |
power | USB or VIN 5 V (regulated 5–6 V max input; VIN is an input pin, feeding it disconnects USB power); automatic source switching with Li-Po charging circuit (single-cell 3.7 V, ≥1024 mAh; JST S2B-PH-SM4-TB battery connector); the charge/PMIC chip is the TI BQ24195L (core flag -DUSE_BQ24195L_PMIC, boards.txt); "5V" pin = unregulated input pass-through, "VCC" pin = 3.3 V regulator output (store page). | ✔ |
leds | ON LED tied to the 5 V rail (not to battery — stays dark on battery power, by design); user LED on D6 (LED_BUILTIN = 6); onboard directional RGB LED (store page). | ✔ |
mechanical | 61.5 × 25 mm, 32 g (store page). | ✔ |
- Manufacturer: Arduino S.r.l. (Monza, Italy) (store page); main MCU Microchip (Atmel) ATSAMD21G18A, radio module u-blox NINA-W102, crypto chip Microchip ATECC508 (store page, Wikipedia — List of Arduino boards).
- Year: Announced May 12, 2018 in "The MKR family gets bigger with two new IoT boards!" (Arduino Blog); released June 2018 per the board table in Wikipedia — List of Arduino boards and compatible systems.
- Status: Active — still listed for sale on the official store (retrieved 2026-10-13, store page); Wikipedia lists it under "Official", not "Superseded" (Wikipedia).
- Price: €42.10 incl. VAT on the official store, retrieved 2026-10-13 (store page).
- Variants / related boards: MKR WiFi 1000 (WINC1500, WiFi-only, no BLE), Nano 33 IoT (same SAMD21 + NINA concept in Nano form factor, no battery connector), Uno WiFi Rev2 ("the education version of the MKR WiFi 1010", ATmega4809 + NINA-W132) (store page, Wikipedia). Board part number ABX00023 (board datasheet).
+ Strengths
- Dual-processor IoT-in-a-pill-box: Cortex-M0+ application core + ESP32-based Wi-Fi/BLE co-processor + hardware ECC508 secure element — "secure communication is ensured through the Microchip® ECC508 crypto chip" (store page).
- *BLE host and client on a µcontroller platform:* "can be both a Bluetooth® Low Energy and Bluetooth® client and host device. Something pretty unique in the world of microcontroller platforms" (store page, ArduinoBLE).
- First-class TLS: WiFiSSLClient with root CA store; the module firmware ships a curated certificate bundle rebuilt from the Android root CA list (nina-fw README).
- Wi-Fi + BLE in one 61.5 × 25 mm board with Li-Po charging — battery-ready secure node out of the box (store page).
- Eslov self-identifying I²C port (extra 5-pin I²C with alarm line) for snap-on sensor modules (store page).
- USB host capability (Full-Speed embedded host on the SAMD21) — rare on Arduino boards (store page).
- Arduino Cloud native board (docs page).
- Open hardware: EAGLE files, schematic PDF, and a pinout PDF are published (store page, schematic).
− Weaknesses
- Wi-Fi needs the NINA firmware to be present/compatible — sketches using WiFiNINA fail (often connect → 255) on boards with stale module firmware; update via IDE 2 Firmware Updater or SerialNINAPassthrough + esptool (nina-fw README).
- TLS/certificate bugs in current module firmware: open issues report downloadAndSaveFile returning success after certificate-initialization failures and leaking heap/flash mappings on every TLS operation, so repeated HTTPS connections can exhaust the NINA heap ("byte-identical in release 3.0.1 and current master") — nina-fw #135, #136, fix PR #149.
- Static IP historically broken: WiFi.config(ip, …) before WiFi.begin was ignored and DHCP won anyway (WiFiNINA #5).
- SoftAP quirks: in AP mode the board was not reachable by hostname / hostByName didn't resolve in that mode (WiFiNINA #92).
- Library features depend on module firmware version: e.g. server.accept silently degrades to available on older firmware (WiFiNINA PR #204).
- Reflashing NINA voids RF certification — "BEWARE: this kind of hacking breaks the certification of your WiFiNINA module" (store page).
- Power pitfalls: the ON LED is on the 5 V rail, so a battery-powered board legitimately runs with the LED off (FAQ); VIN accepts only regulated 5–6 V — it is not the 6–12 V raw input of AVR Arduinos (store FAQ).
- 7 mA per-pin drive limit — much lower than AVR boards; relay/coil loads need a transistor (store page).
- 3.3 V only logic — not 5 V tolerant (3.3 V circuit operating voltage, store page, Wikipedia).
- No EEPROM: data must live in flash (e.g. NVIC-style emulation) or external storage (store page).
- Retour d'expérience expert expert — expert-arduino
- Petit retour d'experience sur la MKR WiFi 1010. C'est une carte solide pour l'IoT securisee, notamment grâce à la puce crypto ECC508 et au module NINA-W102 qui gere bien le Wi-Fi et le BLE. Par contre, attention aux pieges classiques. Si vous avez des erreurs de connexion (code 255), c'est presque … — expert-arduino
- Merci pour ces infos, c'est exactement ce que je cherchais. J'ai justement un souci avec le mode Access Point. Quand je configure la carte en SoftAP, mon smartphone ne la voit pas par son nom via hostByName, je suis oblige de taper l'IP en dur. Est-ce un bug connu ou une limitation materielle ? J'a… — maker-debut
- C'est bien un souci documente sur le tracker GitHub de la lib WiFiNINA (issue 92). En mode AP, la resolution de nom ne fonctionne pas comme en station. Pour ton projet, je te conseille de garder l'IP statique. Par ailleurs, si tu utilises des capteurs sur les ports I2C, sache qu'il y a un connecteu… — tech-hobby
Community feedback and projects
- Arduino Opla (MKR WiFi 1010) restarts when using the cloud forum.arduino.cc
- Arduino Cloud - MKR WiFi 1010 Add Device Issue forum.arduino.cc
- ArduinoCloud.getLocalTime() very inaccurate on MKR WiFi 1010 forum.arduino.cc
- Official docs page
- Store page (specs, FAQ, Eslov port, OSH files)
- Board datasheet ABX00023
- Schematic (v2.0) / EAGLE / pinout PDF
- Schematic (v2.0) / EAGLE / pinout PDF
- Schematic (v2.0) / EAGLE / pinout PDF
- SAMD21 family datasheet
- u-blox NINA-W10 datasheet
- ATECC508A datasheet
- SAMD core & board definition
- WiFiNINA library
- NINA module firmware & flashing
- NINA module firmware & flashing
- ArduinoBLE library
- Wikipedia board table (release date, silicon)
- Announcement post
- Community
- Wi-Fi needs the NINA firmware to be present/compatible — sketches using WiFiNINA fail (often connect → 255) on boards with stale module firmware; update via IDE 2 Firmware Updater or SerialNINAPassthrough + esptool (nina-fw README).
- TLS/certificate bugs in current module firmware: open issues report downloadAndSaveFile returning success after certificate-initialization failures and leaking heap/flash mappings on every TLS operation, so repeated HTTPS connections can exhaust the NINA heap ("byte-identical in release 3.0.1 and current master") — nina-fw #135, #136, fix PR #149.
- Static IP historically broken: WiFi.config(ip, …) before WiFi.begin was ignored and DHCP won anyway (WiFiNINA #5).
- SoftAP quirks: in AP mode the board was not reachable by hostname / hostByName didn't resolve in that mode (WiFiNINA #92).
- Library features depend on module firmware version: e.g. server.accept silently degrades to available on older firmware (WiFiNINA PR #204).
- Reflashing NINA voids RF certification — "BEWARE: this kind of hacking breaks the certification of your WiFiNINA module" (store page).
- Power pitfalls: the ON LED is on the 5 V rail, so a battery-powered board legitimately runs with the LED off (FAQ); VIN accepts only regulated 5–6 V — it is not the 6–12 V raw input of AVR Arduinos (store FAQ).
- 7 mA per-pin drive limit — much lower than AVR boards; relay/coil loads need a transistor (store page).
- 3.3 V only logic — not 5 V tolerant (3.3 V circuit operating voltage, store page, Wikipedia).
- No EEPROM: data must live in flash (e.g. NVIC-style emulation) or external storage (store page).
- Faire clignoter la LED utilisateur debutant Schéma : IMG-mkr-wifi-1010-debutant-1-mkrwifi-blink-led.svg — Vue de dessus de la MKR WiFi 1010 avec la LED utilisateur D6 (LED_BUILTIN), la LED ON sur le rail 5 V et la LED RGB directionnelle mises en évidence.
- Bouton et console série interactive debutant Schéma : IMG-mkr-wifi-1010-debutant-2-mkrwifi-bouton-console.svg — Bouton poussoir câblé entre la broche D2 et GND avec résistance de pull-up interne activée, liaison USB vers le moniteur série de l'ordinateur.
- Lire un capteur analogique et générer une tension avec le DAC debutant Schéma : IMG-mkr-wifi-1010-debutant-3-mkrwifi-capteur-analogique-dac.svg — Potentiomètre alimenté en 3,3 V relié à l'entrée A1 (ADC 12 bits) et sortie DAC A0 (10 bits) vers un multimètre, sur la MKR WiFi 1010.
- Scanner les réseaux WiFi et se connecter en station intermediaire Schéma : IMG-mkr-wifi-1010-intermediaire-1-mkrwifi-scan-wifi-sta.svg — MKR WiFi 1010 et son module NINA-W102 reliés sans fil à une box WiFi, liste de réseaux détectés avec puissances RSSI affichée dans le moniteur série.
- Récupérer une page web en HTTP simple intermediaire Schéma : IMG-mkr-wifi-1010-intermediaire-2-mkrwifi-http-get.svg — Requête HTTP GET émise par la MKR WiFi 1010 connectée en station vers un serveur distant sur le port 80, réponse affichée dans le moniteur série.
- Créer un périphérique Bluetooth LE piloté depuis le téléphone intermediaire Schéma : IMG-mkr-wifi-1010-intermediaire-3-mkrwifi-ble-peripheral.svg — MKR WiFi 1010 en périphérique BLE diffusant un service « Led » avec une caractéristique lisible et inscriptible, smartphone exécutant nRF Connect en rôle central.
- HTTPS avec validation de certificat racine avance Schéma : IMG-mkr-wifi-1010-avance-1-mkrwifi-https-certificats.svg — Poignée de main TLS entre le WiFiSSLClient de la MKR WiFi 1010 et un serveur HTTPS, le certificat du serveur étant vérifié contre le magasin de CA racines stocké dans le module NINA.
- Mettre à jour le firmware du module NINA avance Schéma : IMG-mkr-wifi-1010-avance-2-mkrwifi-firmware-nina.svg — Chaîne de mise à jour du firmware NINA : IDE Arduino 2 avec Firmware Updater, ou en manuel l'exemple SerialNINAPassthrough relayant l'USB vers esptool pour flasher le module ESP32.
- Fonctionner sur batterie LiPo et économiser l'énergie avance Schéma : IMG-mkr-wifi-1010-avance-3-mkrwifi-batterie-sommeil.svg — MKR WiFi 1010 alimentée par une batterie LiPo mono-élément via le connecteur JST, circuit de charge BQ24195L, LED ON éteinte sur batterie, cycle réveil par interruption externe vers le SAMD21 en sommeil.
Code library — examples written for this board
scan-wifi.inoArduinoconnexion-wpa2.inoArduinohttp-get.inoArduinoserveur-web-led.inoArduinohorloge-ntp.inoArduinoudp-diffusion.inoArduinoreconnexion-auto.inoArduinocheck-firmware.inoArduinohttp-post.inoArduinowifi_bridge.pyPython
Examples and repos found online
- arduino-libraries/WiFi101 github.com
- arduino/ArduinoCore-samd github.com
- arduino-libraries/ArduinoIoTCloud github.com
- joonazan/nina-fast-bluetooth github.com
- ellienguyendev/spotify-player-arduino-rfid github.com