# SPI

Published articles for SPI.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## M5Stack Module13.2 LoRa-1262 expansion board integrates 14x10 mm Stamp LoRa-1262 module

DevFeed: [M5Stack Module13.2 LoRa-1262 expansion board integrates 14x10 mm Stamp LoRa-1262 module](<https://devfeed.tech/articles/m5stack-module13-2-lora-1262-expansion-board-integrates-14-10-mm-stamp-lora-1262-module-14042.md>)

Original publisher: [Read original article](<https://www.cnx-software.com/2026/09/13/m5stack-module13-2-lora-1262-expansion-board-integrates-14x10-mm-stamp-lora-1262-module/>)

Author: Debashis Das

Published: 2026-09-13T05:02:54Z

Content type: news

Language: en

Sources: [CNX Software - Embedded Systems News](<https://devfeed.tech/sources/cnx-software-embedded-systems-news.md>)

Topics: [lora](<https://devfeed.tech/topics/lora.md>), [systems](<https://devfeed.tech/topics/systems.md>)

Tags: [connectivity](<https://devfeed.tech/tags/connectivity.md>), [development-board](<https://devfeed.tech/tags/development-board.md>), [embedded-systems](<https://devfeed.tech/tags/embedded-systems.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [i2c](<https://devfeed.tech/tags/i2c.md>), [io](<https://devfeed.tech/tags/io.md>), [iot](<https://devfeed.tech/tags/iot.md>), [lora](<https://devfeed.tech/tags/lora.md>), [lorawan](<https://devfeed.tech/tags/lorawan.md>), [low-power](<https://devfeed.tech/tags/low-power.md>), [lpwan](<https://devfeed.tech/tags/lpwan.md>), [m5stack](<https://devfeed.tech/tags/m5stack.md>), [module](<https://devfeed.tech/tags/module.md>), [news](<https://devfeed.tech/tags/news.md>), [power-management](<https://devfeed.tech/tags/power-management.md>), [routing](<https://devfeed.tech/tags/routing.md>), [series](<https://devfeed.tech/tags/series.md>), [smart-agriculture](<https://devfeed.tech/tags/smart-agriculture.md>), [smart-city](<https://devfeed.tech/tags/smart-city.md>), [spi](<https://devfeed.tech/tags/spi.md>), [wireless](<https://devfeed.tech/tags/wireless.md>)

### AI overview

M5Stack has launched the Stamp LoRa-1262 SMD module and the stackable Module13.2 LoRa-1262 expansion board for M5Stack Core controllers. Based on the Semtech SX1262, the module supports several modulation modes across 868-923 MHz, with up to +22 dBm transmit power and -147 dBm receive sensitivity. Module13.2 adds an RP-SMA antenna interface, M5IOE1 I/O expansion, configurable pin routing, and selectable I2C addresses for multi-module stacking.

### Source excerpt

After launching the SX1262-based M5Stamp C6LoRa tiny module, M5Stack has launched two SX1262-based LoRa add-ons for the 868-923 MHz band: the tiny Stamp LoRa-1262 SMD module for custom PCBs, and the stackable Module13.2 LoRa-1262 module for the M5Stack Core series. The Stamp LoRa-1262 supports LoRa, FSK, GFSK, MSK, GMSK, and OOK modulation, with up to +22 dBm transmit power and -147 dBm receive sensitivity. The Module13.2 adds an RP-SMA antenna interface, an M5IOE1 IO expansion chip for reset and power management, and DIP switches for flexible pin routing and configurable I2C addresses, enabling multi-module stacking. Stamp LoRa-1262 SMD module M5Stack Stamp LoRa-1262 specifications: LoRa Transceiver - Semtech SX1262 Wireless Connectivity (LoRa) Frequency Band - 868 to 923 MHz Modulation Modes - LoRa, FSK, GFSK, MSK, GMSK, OOK Bitrate - Up to 300 kbps (programmable) Transmit power (Tx) - Up to +22 dBm Receive sensitivity (Rx) - Down to -147 dBm [...] The post M5Stack Module13.2 LoRa-1262 expansion board integrates 14x10 mm Stamp LoRa-1262 module appeared first on CNX Software - Embedded Systems News.

## YuzukiNeko - A Linux-capable Allwinner F101 RISC-V SBC with Raspberry Pi Pico form factor

DevFeed: [YuzukiNeko - A Linux-capable Allwinner F101 RISC-V SBC with Raspberry Pi Pico form factor](<https://devfeed.tech/articles/yuzukineko-a-linux-capable-allwinner-f101-risc-v-sbc-with-raspberry-pi-pico-form-factor-14034.md>)

Original publisher: [Read original article](<https://www.cnx-software.com/2026/09/08/yuzukineko-a-linux-capable-allwinner-f101-64-bit-risc-v-sbc-with-raspberry-pi-pico-form-factor/>)

Author: Jean-Luc Aufranc (CNXSoft)

Published: 2026-09-07T17:01:57Z

Content type: news

Language: en

Sources: [CNX Software - Embedded Systems News](<https://devfeed.tech/sources/cnx-software-embedded-systems-news.md>)

Topics: [Raspberry Pi](<https://devfeed.tech/topics/raspberry-pi.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [RISC-V](<https://devfeed.tech/topics/riscv.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>), [SOC](<https://devfeed.tech/topics/soc.md>), [Embedded Systems](<https://devfeed.tech/topics/embedded-systems.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [Software](<https://devfeed.tech/topics/software.md>)

Tags: [allwinner](<https://devfeed.tech/tags/allwinner.md>), [allwinner-d-series](<https://devfeed.tech/tags/allwinner-d-series.md>), [buildroot](<https://devfeed.tech/tags/buildroot.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [embedded-systems](<https://devfeed.tech/tags/embedded-systems.md>), [gpio](<https://devfeed.tech/tags/gpio.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [linux](<https://devfeed.tech/tags/linux.md>), [linux-7-x](<https://devfeed.tech/tags/linux-7-x.md>), [mipi](<https://devfeed.tech/tags/mipi.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [psram](<https://devfeed.tech/tags/psram.md>), [raspberry-pi](<https://devfeed.tech/tags/raspberry-pi.md>), [risc-v](<https://devfeed.tech/tags/risc-v.md>), [single-board-computer](<https://devfeed.tech/tags/single-board-computer.md>), [specifications](<https://devfeed.tech/tags/specifications.md>), [spi](<https://devfeed.tech/tags/spi.md>), [storage](<https://devfeed.tech/tags/storage.md>), [usb](<https://devfeed.tech/tags/usb.md>), [zephyr](<https://devfeed.tech/tags/zephyr.md>), [zephyr-os](<https://devfeed.tech/tags/zephyr-os.md>)

### AI overview

YuzukiHD has introduced YuzukiNeko, a Raspberry Pi Pico-sized open-source single-board computer built around the Allwinner F101 RISC-V SoC. It includes a 1.008 GHz C907 core, 8MB or 16MB PSRAM, SPI NOR flash, microSD storage, USB-C, and GPIO expansion, with support for Linux, Buildroot, and Zephyr RTOS.

### Source excerpt

YuzukiHD has made another open-source hardware Linux SBC. YuzukiNeko is a Raspberry Pi Pico-sized single board computer powered by a new Allwinner F101 RISC-V SoC. The Allwinner F101 processor features a single 1.008 GHz C907 RISC-V core, 8MB or 16 MB PSRAM, and support for various display interfaces such as MIPI DSI, 24-bit RGB, and LVDS. The YuzukiNeko board itself features the F101 SoC, an SPI NOR flash, a microSD card for storage, a USB-C port, and two 20-pin GPIO headers. YuzukiNeko specifications: SoC - Allwinner F101 CPU - T-head C907 RISC-V core up to 1.008 GHz Memory - 8MB or 16MB PSRAM @ 252 MHz Package - QFN-68 Storage 128 Mbit NOR flash (PY25Q128HA-SUH-IT) MicroSD card slot USB - USB Type-C port for data, power, and programming Expansion 2x 20-pin expansion headers with GPIOs, ADC, 5V, 3.3V, and GND 5x pads with HP out (analog speaker output) and four [...] The post YuzukiNeko - A Linux-capable Allwinner F101 RISC-V SBC with Raspberry Pi Pico form factor appeared first on CNX Software - Embedded Systems News.

## Making ServiceLoader usable: a provider factory

DevFeed: [Making ServiceLoader usable: a provider factory](<https://devfeed.tech/articles/making-serviceloader-usable-a-provider-factory-18932.md>)

Original publisher: [Read original article](<https://blog.frankel.ch/serviceloader-provider-factory/>)

Author: Stefano Fago

Published: 2026-07-12T00:00:00Z

Content type: tutorial

Language: en

Sources: [Nicolas Fränkel](<https://devfeed.tech/sources/nicolas-frankel.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Code](<https://devfeed.tech/topics/code.md>), [JSON Web Tokens](<https://devfeed.tech/topics/jwt.md>), [JSON](<https://devfeed.tech/topics/json.md>)

Tags: [decoupling](<https://devfeed.tech/tags/decoupling.md>), [design-patterns](<https://devfeed.tech/tags/design-patterns.md>), [java](<https://devfeed.tech/tags/java.md>), [json](<https://devfeed.tech/tags/json.md>), [jwt](<https://devfeed.tech/tags/jwt.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [plugins](<https://devfeed.tech/tags/plugins.md>), [serviceloader](<https://devfeed.tech/tags/serviceloader.md>), [spi](<https://devfeed.tech/tags/spi.md>)

### AI overview

This article presents a provider-factory pattern for Java ServiceLoader. Instead of loading a service implementation directly, ServiceLoader loads a small factory with a no-argument constructor; the factory then constructs the service and can support implementation selection and custom constructors. The pattern is illustrated with a mock payments system and is related to decoupling JSON and JWT capabilities from concrete libraries.

### Source excerpt

I keep coming back to java.util.ServiceLoader. I have used it to put a JSON layer behind a contract, so the core code carries no direct dependency on any particular JSON library, and I can swap the implementation without touching callers. The same shape works for JWT handling, where the concrete library might be jose4j or another JOSE implementation, and you can easily find other decoupling use-cases.

## ESP-IDF tutorial series: GPIO get started - Part 1

DevFeed: [ESP-IDF tutorial series: GPIO get started - Part 1](<https://devfeed.tech/articles/esp-idf-tutorial-series-gpio-get-started-part-1-13750.md>)

Original publisher: [Read original article](<https://developer.espressif.com/blog/2026/02/esp-idf-tutorial-gpio-get-started/>)

Author: John Lee

Published: 2026-02-02T00:00:00Z

Content type: tutorial

Language: en

Sources: [Blog on Developer Portal](<https://devfeed.tech/sources/blog-on-developer-portal.md>)

Topics: [ESP-IDF](<https://devfeed.tech/topics/esp-idf.md>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>), [Embedded Systems](<https://devfeed.tech/topics/embedded-systems.md>), [ESP32](<https://devfeed.tech/topics/esp32.md>), [Library](<https://devfeed.tech/topics/library.md>)

Tags: [beginner](<https://devfeed.tech/tags/beginner.md>), [blog](<https://devfeed.tech/tags/blog.md>), [can](<https://devfeed.tech/tags/can.md>), [embedded-systems](<https://devfeed.tech/tags/embedded-systems.md>), [esp-idf](<https://devfeed.tech/tags/esp-idf.md>), [esp32](<https://devfeed.tech/tags/esp32.md>), [gpio](<https://devfeed.tech/tags/gpio.md>), [led](<https://devfeed.tech/tags/led.md>), [spi](<https://devfeed.tech/tags/spi.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

This tutorial introduces GPIO configuration on Espressif SoCs. It explains push-pull and open-drain output modes, drive capability, and the use of GPIO functions to blink an LED on an ESP32-C61-DevKitC.

### Source excerpt

This article explains how to configure and control GPIO pins on Espressif SoCs, covering push-pull and open-drain output modes, drive capability, and library usage. It then provides a hands-on example of blinking an LED using gpio_set_direction and gpio_set_level on a ESP32-C61-DevKitC.

## SPI Flash for Persistent Data Storage with NuttX RTOS

DevFeed: [SPI Flash for Persistent Data Storage with NuttX RTOS](<https://devfeed.tech/articles/spi-flash-for-persistent-data-storage-with-nuttx-rtos-13725.md>)

Original publisher: [Read original article](<https://developer.espressif.com/blog/2025/09/nuttx-storing-data-spi-flash/>)

Author: John Lee

Published: 2025-09-23T00:00:00Z

Content type: tutorial

Language: en

Sources: [Blog on Developer Portal](<https://devfeed.tech/sources/blog-on-developer-portal.md>)

Topics: [NuttX](<https://devfeed.tech/topics/nuttx.md>), [Embedded Systems](<https://devfeed.tech/topics/embedded-systems.md>), [Filesystems](<https://devfeed.tech/topics/filesystems.md>), [data-processing](<https://devfeed.tech/topics/data-processing.md>), [Logging](<https://devfeed.tech/topics/logging.md>), [Espressif](<https://devfeed.tech/topics/espressif.md>), [boot](<https://devfeed.tech/topics/boot.md>)

Tags: [apache](<https://devfeed.tech/tags/apache.md>), [applications](<https://devfeed.tech/tags/applications.md>), [blog](<https://devfeed.tech/tags/blog.md>), [boot](<https://devfeed.tech/tags/boot.md>), [code](<https://devfeed.tech/tags/code.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [data](<https://devfeed.tech/tags/data.md>), [developers](<https://devfeed.tech/tags/developers.md>), [embedded](<https://devfeed.tech/tags/embedded.md>), [esp32](<https://devfeed.tech/tags/esp32.md>), [espressif](<https://devfeed.tech/tags/espressif.md>), [examples](<https://devfeed.tech/tags/examples.md>), [firmware](<https://devfeed.tech/tags/firmware.md>), [flash](<https://devfeed.tech/tags/flash.md>), [guide](<https://devfeed.tech/tags/guide.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [logging](<https://devfeed.tech/tags/logging.md>), [memory](<https://devfeed.tech/tags/memory.md>), [ntp](<https://devfeed.tech/tags/ntp.md>), [nuttx](<https://devfeed.tech/tags/nuttx.md>), [spi](<https://devfeed.tech/tags/spi.md>), [spiffs](<https://devfeed.tech/tags/spiffs.md>), [storage](<https://devfeed.tech/tags/storage.md>), [systems](<https://devfeed.tech/tags/systems.md>)

### AI overview

This guide explains how to use Espressif device flash memory for persistent data storage with NuttX. It covers SPI Flash NOR fundamentals, compares file systems including SmartFS, SPIFFS, and LittleFS, and demonstrates a Wi-Fi application that synchronizes the system clock and logs the current time to a flash-resident file.

### Source excerpt

This guide explores how to utilize flash memory for persistent data storage in NuttX-based embedded systems, covering SPI Flash fundamentals, file system options (SmartFS, SPIFFS, LittleFS), and practical implementation of a boot time logging application with Wi-Fi and NTP synchronization.

## Implementing a Deep-sleep wake stub application on Espressif chips to enable power-efficient IoT devices

DevFeed: [Implementing a Deep-sleep wake stub application on Espressif chips to enable power-efficient IoT devices](<https://devfeed.tech/articles/implementing-a-deep-sleep-wake-stub-application-on-espressif-chips-to-enable-power-efficient-iot-devices-13719.md>)

Original publisher: [Read original article](<https://developer.espressif.com/blog/2025/09/deep-sleep-wake-stub-get-started/>)

Author: John Lee

Published: 2025-09-02T00:00:00Z

Content type: tutorial

Language: en

Sources: [Blog on Developer Portal](<https://devfeed.tech/sources/blog-on-developer-portal.md>)

Topics: [Internet of things](<https://devfeed.tech/topics/iot.md>), [Espressif](<https://devfeed.tech/topics/espressif.md>), [Boot Process](<https://devfeed.tech/topics/boot-process.md>), [cpu](<https://devfeed.tech/topics/cpu.md>), [SOC](<https://devfeed.tech/topics/soc.md>)

Tags: [battery](<https://devfeed.tech/tags/battery.md>), [blog](<https://devfeed.tech/tags/blog.md>), [boot-process](<https://devfeed.tech/tags/boot-process.md>), [deep-sleep-wake-stub](<https://devfeed.tech/tags/deep-sleep-wake-stub.md>), [esp-idf](<https://devfeed.tech/tags/esp-idf.md>), [esp32-c6](<https://devfeed.tech/tags/esp32-c6.md>), [espressif](<https://devfeed.tech/tags/espressif.md>), [gpio](<https://devfeed.tech/tags/gpio.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [i2c](<https://devfeed.tech/tags/i2c.md>), [iot](<https://devfeed.tech/tags/iot.md>), [low-power](<https://devfeed.tech/tags/low-power.md>), [spi](<https://devfeed.tech/tags/spi.md>)

### AI overview

This tutorial explains how Deep-sleep wake stubs work on Espressif chips and demonstrates how to build an application using GPIO, UART, I2C, and SPI. Wake stubs can skip most of the boot sequence after deep-sleep reset, enabling faster wake-up and lower power use for short tasks.

### Source excerpt

In this article, we first explain the principles behind the Deep-sleep wake stub application and then demonstrate how to implement GPIO, UART, I2C, and SPI within it.

## Building a Keycloak Email Change Plugin

DevFeed: [Building a Keycloak Email Change Plugin](<https://devfeed.tech/articles/building-a-keycloak-email-change-plugin-5086.md>)

Original publisher: [Read original article](<https://neon.com/blog/building-a-keycloak-email-change-plugin>)

Author: Adi Griever

Published: 2025-04-09T23:18:26Z

Content type: article

Language: en

Sources: [Blog -- Neon Docs](<https://devfeed.tech/sources/blog-neon-docs.md>)

Topics: [Extension](<https://devfeed.tech/topics/extension.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Back end](<https://devfeed.tech/topics/backend.md>)

Tags: [authentication](<https://devfeed.tech/tags/authentication.md>), [backend](<https://devfeed.tech/tags/backend.md>), [building](<https://devfeed.tech/tags/building.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [external](<https://devfeed.tech/tags/external.md>), [identity](<https://devfeed.tech/tags/identity.md>), [integration](<https://devfeed.tech/tags/integration.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [rest](<https://devfeed.tech/tags/rest.md>), [spi](<https://devfeed.tech/tags/spi.md>), [sync](<https://devfeed.tech/tags/sync.md>), [verification](<https://devfeed.tech/tags/verification.md>)

### AI overview

A developer describes building a custom Keycloak plugin to handle email change events and notify or update external systems. Implemented as a Keycloak SPI, the extension uses a REST endpoint to initiate the change and a token handler to validate confirmation, update the email, verify it, and maintain consistency across integrations.

### Source excerpt

In this post, I'll share my experience creating a custom Keycloak plugin that adds functionality for email change events. This plugin solves a common integration challenge: how to trigger actions in your application when users change their email addresses through Keycloak. The Pr...

## Using ESP-BSP with DevKits

DevFeed: [Using ESP-BSP with DevKits](<https://devfeed.tech/articles/using-esp-bsp-with-devkits-13967.md>)

Original publisher: [Read original article](<https://developer.espressif.com/blog/using-esp-bsp-with-devkits/>)

Author: John Lee

Published: 2024-09-27T00:00:00Z

Content type: tutorial

Language: en

Sources: [Blog on Developer Portal](<https://devfeed.tech/sources/blog-on-developer-portal.md>)

Topics: [Espressif](<https://devfeed.tech/topics/espressif.md>), [Development](<https://devfeed.tech/topics/development.md>), [m5stack](<https://devfeed.tech/topics/m5stack.md>), [Filesystems](<https://devfeed.tech/topics/filesystems.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [bsp](<https://devfeed.tech/tags/bsp.md>), [development](<https://devfeed.tech/tags/development.md>), [devkit](<https://devfeed.tech/tags/devkit.md>), [display](<https://devfeed.tech/tags/display.md>), [driver](<https://devfeed.tech/tags/driver.md>), [embedded-systems](<https://devfeed.tech/tags/embedded-systems.md>), [esp32](<https://devfeed.tech/tags/esp32.md>), [esp32-c2](<https://devfeed.tech/tags/esp32-c2.md>), [esp32-s2](<https://devfeed.tech/tags/esp32-s2.md>), [esp32-s3](<https://devfeed.tech/tags/esp32-s3.md>), [espressif](<https://devfeed.tech/tags/espressif.md>), [examples](<https://devfeed.tech/tags/examples.md>), [gpio](<https://devfeed.tech/tags/gpio.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [i2c](<https://devfeed.tech/tags/i2c.md>), [lcd](<https://devfeed.tech/tags/lcd.md>), [led](<https://devfeed.tech/tags/led.md>), [m5stack](<https://devfeed.tech/tags/m5stack.md>), [spi](<https://devfeed.tech/tags/spi.md>), [spiffs](<https://devfeed.tech/tags/spiffs.md>)

### AI overview

This tutorial explains how to use Espressif's ESP-BSP with DevKits. It describes the Generic and DevKit BSP options, configurable buttons, LEDs, filesystems, displays, touch interfaces, and example projects.

### Source excerpt

Introduction# The BSP (Board Support Package) from Espressif is ready to use package for selected boards (usually for Espressif's and M5Stack boards). This package contains main initialization functions for features, which the board contains. For example display and touch initialization, file system initialization, audio if available, LEDs and buttons. This is the easy way, how to start developing with your board. Except initialization functions, there are examples for selected board too.

## DIY Smart Electric Toothbrush using ESP32-C2 and RainMaker

DevFeed: [DIY Smart Electric Toothbrush using ESP32-C2 and RainMaker](<https://devfeed.tech/articles/diy-smart-electric-toothbrush-using-esp32-c2-and-rainmaker-13863.md>)

Original publisher: [Read original article](<https://developer.espressif.com/blog/esp32c2-smart-electric-toothbrush/>)

Author: John Lee

Published: 2024-08-22T09:00:17Z

Content type: tutorial

Language: en

Sources: [Blog on Developer Portal](<https://devfeed.tech/sources/blog-on-developer-portal.md>)

Topics: [ESP32](<https://devfeed.tech/topics/esp32.md>), [Esp32 C2](<https://devfeed.tech/topics/esp32-c2.md>), [Esp Rainmaker](<https://devfeed.tech/topics/esp-rainmaker.md>), [FIRST](<https://devfeed.tech/topics/first.md>), [Wi-Fi](<https://devfeed.tech/topics/wi-fi.md>), [Embedded Software Dev](<https://devfeed.tech/topics/embedded-software-dev.md>), [USB](<https://devfeed.tech/topics/usb.md>)

Tags: [battery](<https://devfeed.tech/tags/battery.md>), [blog](<https://devfeed.tech/tags/blog.md>), [build](<https://devfeed.tech/tags/build.md>), [circuit](<https://devfeed.tech/tags/circuit.md>), [components](<https://devfeed.tech/tags/components.md>), [connectivity](<https://devfeed.tech/tags/connectivity.md>), [data](<https://devfeed.tech/tags/data.md>), [devices](<https://devfeed.tech/tags/devices.md>), [display](<https://devfeed.tech/tags/display.md>), [diy](<https://devfeed.tech/tags/diy.md>), [esp](<https://devfeed.tech/tags/esp.md>), [esp-rainmaker](<https://devfeed.tech/tags/esp-rainmaker.md>), [esp32](<https://devfeed.tech/tags/esp32.md>), [esp32-c2](<https://devfeed.tech/tags/esp32-c2.md>), [firmware](<https://devfeed.tech/tags/firmware.md>), [interface](<https://devfeed.tech/tags/interface.md>), [lcd](<https://devfeed.tech/tags/lcd.md>), [motor](<https://devfeed.tech/tags/motor.md>), [network](<https://devfeed.tech/tags/network.md>), [rainmaker](<https://devfeed.tech/tags/rainmaker.md>), [spi](<https://devfeed.tech/tags/spi.md>), [toothbrush](<https://devfeed.tech/tags/toothbrush.md>)

### AI overview

This article presents the ESP-Toothbrush, a smart electric toothbrush powered by Espressif's ESP32-C2. It describes the LCD, ultrasonic motor, buzzer, Wi-Fi and ESP-RainMaker integration, smartphone configuration, USB Type-C connectivity, firmware updates, charging, and supported power modes.

### Source excerpt

Introduction# For most people, one of the first tasks of the day is toothbrushing. This task is usually done by a conventional nylon toothbrush, invented in 1938 but used in different forms and materials even before. Today, you can easily find electronic toothbrushes and some start toothbrushes that helps you to keep track how you are brushing your tooth.

## Developing User Interfaces for Custom Boards with ESP microcontrollers

DevFeed: [Developing User Interfaces for Custom Boards with ESP microcontrollers](<https://devfeed.tech/articles/developing-user-interfaces-for-custom-boards-with-esp-microcontrollers-13832.md>)

Original publisher: [Read original article](<https://developer.espressif.com/blog/developing-user-interfaces-for-custom-boards-with-esp-microcontrollers/>)

Author: John Lee

Published: 2022-10-10T00:00:00Z

Content type: tutorial

Language: en

Sources: [Blog on Developer Portal](<https://devfeed.tech/sources/blog-on-developer-portal.md>)

Topics: [User Interfaces](<https://devfeed.tech/topics/user-interfaces.md>), [Espressif](<https://devfeed.tech/topics/espressif.md>), [Microcontroller](<https://devfeed.tech/topics/microcontroller.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [bsp](<https://devfeed.tech/tags/bsp.md>), [c](<https://devfeed.tech/tags/c.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [esp](<https://devfeed.tech/tags/esp.md>), [espressif](<https://devfeed.tech/tags/espressif.md>), [github](<https://devfeed.tech/tags/github.md>), [i2c](<https://devfeed.tech/tags/i2c.md>), [lcd](<https://devfeed.tech/tags/lcd.md>), [lvgl](<https://devfeed.tech/tags/lvgl.md>), [manifest](<https://devfeed.tech/tags/manifest.md>), [project](<https://devfeed.tech/tags/project.md>), [screen](<https://devfeed.tech/tags/screen.md>), [spi](<https://devfeed.tech/tags/spi.md>), [squareline](<https://devfeed.tech/tags/squareline.md>), [user-interfaces](<https://devfeed.tech/tags/user-interfaces.md>), [waveshare](<https://devfeed.tech/tags/waveshare.md>)

### AI overview

This tutorial explains how to add a custom ESP-based board with a custom LCD to SquareLine Studio. It uses a WaveShare 7-inch display example and covers creating a board-support component, configuring display and touch communication, updating build and dependency files, and editing the board manifest.

### Source excerpt

A few weeks ago in this article we have introduced SquareLine Studio and how it can be used to develop user interfaces. This feature was available only for Espressif's boards. But what if we wanted to use this tool for our custom designed board based on an ESP chip with a custom LCD? Here is the solution! What is the best way to add a custom board into SquareLine Studio? Start with the custom_waveshare_7inch example on from esp-bsp repository on GitHub.

## Mac App Store Sandbox Escape

DevFeed: [Mac App Store Sandbox Escape](<https://devfeed.tech/articles/mac-app-store-sandbox-escape-27358.md>)

Original publisher: [Read original article](<https://saagarjha.com/blog/2020/05/20/mac-app-store-sandbox-escape/>)

Published: 2020-05-20T00:00:00Z

Content type: article

Language: en

Sources: [Saagar Jha](<https://devfeed.tech/sources/saagar-jha.md>)

Topics: [Security](<https://devfeed.tech/topics/security.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [Access Control](<https://devfeed.tech/topics/access-control.md>), [Unix](<https://devfeed.tech/topics/unix.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [access-control](<https://devfeed.tech/tags/access-control.md>), [app-store](<https://devfeed.tech/tags/app-store.md>), [apple](<https://devfeed.tech/tags/apple.md>), [embedded-devices](<https://devfeed.tech/tags/embedded-devices.md>), [ios](<https://devfeed.tech/tags/ios.md>), [macos](<https://devfeed.tech/tags/macos.md>), [sandboxing](<https://devfeed.tech/tags/sandboxing.md>), [security](<https://devfeed.tech/tags/security.md>), [spi](<https://devfeed.tech/tags/spi.md>), [unix](<https://devfeed.tech/tags/unix.md>)

### AI overview

This article explains macOS App Sandbox architecture and reports a flaw in sandbox initialization that allowed malicious Mac App Store applications to bypass restrictions and perform unauthorized operations, including accessing sensitive user data. It states that Apple changed the Mac App Store and that the described technique should no longer work.

### Source excerpt

The App Sandbox, originally introduced in Mac OS X Leopard as "the Seatbelt", is a macOS security feature modeled after FreeBSD's Mandatory Access Control (left unabbreviated for clarity) that serves as a way to restrict the abilities of an application beyond the usual user- and permission-based systems that UNIX offers. The full extent of the capabilities the sandbox manages is fairly broad, ranging from file operations to Mach calls, and is specified in a custom Scheme implementation called the Sandbox Profile Language (SBPL). The sandbox profiles that macOS ships with can be found in /System/Library/Sandbox/Profiles, and while their format is technically SPI (as the header comment on them will tell you) there is fairly extensive third-party documentation. The implementation details of sandboxing are not intended to be accessed by third-party developers, but applications on Apple's platforms can request (and in some cases, such as new applications distributed on the Mac App Store and all applications for Apple's embedded platforms, must function in) a sandbox specified by a fixed, system-defined profile (on macOS, application.sb). Barring a few exceptions (which usually require additional review and justification for their use) this system-provided sandbox provide an effective way to prevent applications from accessing user data without consent or performing undesired system modifications.

## The Emitter Parameter Pattern for Flexible SPI Contracts

DevFeed: [The Emitter Parameter Pattern for Flexible SPI Contracts](<https://devfeed.tech/articles/the-emitter-parameter-pattern-for-flexible-spi-contracts-18811.md>)

Original publisher: [Read original article](<https://www.morling.dev/blog/emitter-parameter-pattern-for-flexible-spis/>)

Published: 2020-05-04T15:30:00Z

Content type: tutorial

Language: en

Sources: [Gunnar Morling](<https://devfeed.tech/sources/gunnar-morling.md>)

Topics: [Frameworks](<https://devfeed.tech/topics/frameworks.md>), [Code](<https://devfeed.tech/topics/code.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [information retrieval](<https://devfeed.tech/topics/information-retrieval.md>), [Machine learning](<https://devfeed.tech/topics/machine-learning.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [api](<https://devfeed.tech/tags/api.md>), [code](<https://devfeed.tech/tags/code.md>), [developer](<https://devfeed.tech/tags/developer.md>), [framework](<https://devfeed.tech/tags/framework.md>), [frameworks](<https://devfeed.tech/tags/frameworks.md>), [information-retrieval](<https://devfeed.tech/tags/information-retrieval.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [machine-learning](<https://devfeed.tech/tags/machine-learning.md>), [spi](<https://devfeed.tech/tags/spi.md>)

### AI overview

This article explains the emitter parameter pattern as an alternative to return values in service provider interfaces. It discusses how emitter parameters can avoid multiple passes over input, reduce unnecessary allocations, and make SPI contracts easier to evolve when new extracted attributes are added.

### Source excerpt

Table of Contents An Example The Emitter Parameter Pattern For libraries and frameworks it's a common requirement to make specific aspects customizeable via service provider interfaces (SPIs): contracts to be implemented by the application developer, which then are invoked by framework code, adding new or replacing existing functionality. Often times, the method implementations of such an SPI need to return value(s) to the framework. An alternative to return values are "emitter parameters": passed by the framework to the SPI method, they offer an API for receiving value(s) via method calls. Certainly not revolutionary or even a new idea, I find myself using emitter parameters more and more in libraries and frameworks I work on. Hence I'd like to discuss some advantages I perceive about the emitter parameter pattern.

## Espressif November 2019 Newsletter: ESP32 Voice, ESP8266 Platforms, and ESP32-CAM

DevFeed: [Espressif November 2019 Newsletter: ESP32 Voice, ESP8266 Platforms, and ESP32-CAM](<https://devfeed.tech/articles/november-2019-13930.md>)

Original publisher: [Read original article](<https://developer.espressif.com/blog/november-2019/>)

Author: John Lee

Published: 2019-11-22T00:00:00Z

Content type: news

Language: en

Sources: [Blog on Developer Portal](<https://devfeed.tech/sources/blog-on-developer-portal.md>)

Topics: [ESP32](<https://devfeed.tech/topics/esp32.md>), [ESP8266](<https://devfeed.tech/topics/esp8266.md>), [Espressif](<https://devfeed.tech/topics/espressif.md>), [Internet](<https://devfeed.tech/topics/internet.md>), [Server](<https://devfeed.tech/topics/server.md>)

Tags: [3d-printed](<https://devfeed.tech/tags/3d-printed.md>), [blog](<https://devfeed.tech/tags/blog.md>), [display](<https://devfeed.tech/tags/display.md>), [embedded](<https://devfeed.tech/tags/embedded.md>), [esp32](<https://devfeed.tech/tags/esp32.md>), [esp8266](<https://devfeed.tech/tags/esp8266.md>), [espressif](<https://devfeed.tech/tags/espressif.md>), [instagram](<https://devfeed.tech/tags/instagram.md>), [internet](<https://devfeed.tech/tags/internet.md>), [iot](<https://devfeed.tech/tags/iot.md>), [motor](<https://devfeed.tech/tags/motor.md>), [newsletter](<https://devfeed.tech/tags/newsletter.md>), [spi](<https://devfeed.tech/tags/spi.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

Espressif's November 2019 newsletter highlights an ESP32-based voice and VoIP project, ESP8266 support for China Mobile and China Telecom smart-home platforms, and an ESP32-CAM project that takes photos and displays them in a web server.

### Source excerpt

Hi everyone, At the beginning of November, a fun project posted on hackster.io put us in the mood to take Halloween seriously! "Doris, the Evil Bowler Hat with ESP32 Matrix Voice" was created by Samreen Islam, Alfred Gonzalez and Carlos Chacin. They used an Open embeddeD Audition System (ODAS) and customized code to move a servo motor in the direction of the most concentrated incoming sound around a 180-degree radius.

## Tales from Firmware Camp

DevFeed: [Tales from Firmware Camp](<https://devfeed.tech/articles/tales-from-firmware-camp-35197.md>)

Original publisher: [Read original article](<https://blog.jessfraz.com/post/tales-from-firmware-camp/>)

Published: 2019-09-10T15:09:26Z

Content type: opinion

Language: en

Sources: [Jessie Frazelle](<https://devfeed.tech/sources/jessie-frazelle.md>)

Topics: [coreboot](<https://devfeed.tech/topics/coreboot.md>), [Embedded Software Dev](<https://devfeed.tech/topics/embedded-software-dev.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Raspberry Pi](<https://devfeed.tech/topics/raspberry-pi.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Linux Kernel](<https://devfeed.tech/topics/linux-kernel.md>)

Tags: [coreboot](<https://devfeed.tech/tags/coreboot.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [dhcp](<https://devfeed.tech/tags/dhcp.md>), [firmware](<https://devfeed.tech/tags/firmware.md>), [hackathon](<https://devfeed.tech/tags/hackathon.md>), [interface](<https://devfeed.tech/tags/interface.md>), [linux](<https://devfeed.tech/tags/linux.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [spi](<https://devfeed.tech/tags/spi.md>)

### AI overview

A personal account of an Open Source Firmware Conference hackathon, where the author worked on running Coreboot and OpenBMC on a Supermicro X10SLM-F board. The team inspected and flashed BMC firmware using SPI tools, configured network access through IPMI and dnsmasq, and investigated support for the board's ASPEED 2400 BMC.

### Source excerpt

Last week I attended the Open Source Firmware Conference. It was amazing! The talks, people, and overall feel of the conference really left me feeling inspired and lucky to attend. Having been pushed to attend vendor conferences and trade shows through my career for various jobs, it was so refreshing to have the chance to hang out with folks from such a genuine community that really just want to help one another. When the talks hit YouTube you should be sure to check them out (I also tweeted about a few of them). What I will focus on in this post was the last two days of the conference that were devoted to the hackathon. I had bought a X10SLM-F Supermicro board off of eBay a few months ago that I wanted to run CoreBoot on. If you are interested in finding a board that will work with CoreBoot, you should check its status on the status page. I had been talking to Zaolin about wanting a board to hack on and he recommended this one. At the hackathon, we decided to start with the BMC instead of the CPU BIOS. This made for some fun problems and definitely a lot of lessons learned. I had a Dediprog SF100 flash programmer I brought to the hackathon as well. Some people use RaspberryPis as their flash programmer but the Dediprog was recommended to me and definitely came in handy. However, if you want a cheaper alternative there are a bunch of ways you can skin that cat. To get started, we read the original binary off the SPI flash... this worked fairly simply. We used the opensource dpcmd tool from dediprog to do it. But you could also use flashrom. While inspecting the original binary, we found the string linux a few times... as well as a MAC adress, boot commands, IP address, and some other interesting strings. Before flashing on new firmware we also made sure the board actually booted the BMC. We didn't have access to any console so we made due with an IPMI LAN port and dnsmasq to work with DHCP. It worked and we got into the BMC user interface over the web. If you've ever us

## Reverse-engineering a discarded cable modem to modify its MAC address

DevFeed: [Reverse-engineering a discarded cable modem to modify its MAC address](<https://devfeed.tech/articles/modem-cloning-for-fun-but-not-for-profit-22349.md>)

Original publisher: [Read original article](<https://yifan.lu/2017/04/02/modem-cloning-for-fun-but-not-for-profit/>)

Author: yifanlu

Published: 2017-04-02T07:00:00Z

Content type: article

Language: en

Sources: [Yifan Lu](<https://devfeed.tech/sources/yifan-lu.md>)

Topics: [Hardware](<https://devfeed.tech/topics/hardware.md>), [Reverse Engineering](<https://devfeed.tech/topics/reverse-engineering.md>), [Raspberry Pi](<https://devfeed.tech/topics/raspberry-pi.md>), [Shell](<https://devfeed.tech/topics/shell.md>)

Tags: [bpi](<https://devfeed.tech/tags/bpi.md>), [cryptography](<https://devfeed.tech/tags/cryptography.md>), [des](<https://devfeed.tech/tags/des.md>), [devices](<https://devfeed.tech/tags/devices.md>), [docsis](<https://devfeed.tech/tags/docsis.md>), [firmware](<https://devfeed.tech/tags/firmware.md>), [hacking](<https://devfeed.tech/tags/hacking.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [mips](<https://devfeed.tech/tags/mips.md>), [partition](<https://devfeed.tech/tags/partition.md>), [raspberry-pi](<https://devfeed.tech/tags/raspberry-pi.md>), [reverse-engineering](<https://devfeed.tech/tags/reverse-engineering.md>), [root](<https://devfeed.tech/tags/root.md>), [spi](<https://devfeed.tech/tags/spi.md>), [wifi](<https://devfeed.tech/tags/wifi.md>)

### AI overview

The author describes reverse-engineering a discarded cable modem that was still tied to another customer account. They accessed its UART root shell using a Raspberry Pi, dumped the flash memory, located the MAC address in an NVRAM partition, replaced it, and found that the modem still refused to establish a connection. The supplied text ends before the investigation is completed.

### Source excerpt

Recently, I stumbled upon an old cable modem sitting next to the dumpster. An neighbor just moved out and they threw away boxes of old junk. I was excited because the modem is much better than the one I currently use and has fancy features like built in 5GHz WiFi and DOCSIS 3.0 support. When I called my Internet service provider to activate it though, they told me that the modem was tied to another account likely because the neighbors did not deactivate the device before throwing it away. The technician doesn't have access to their account so I would have to either wait for it to be inactive or somehow find them and somehow convince them to help me set up the modem they threw away.

## Android Things: first look

DevFeed: [Android Things: first look](<https://devfeed.tech/articles/android-things-first-look-21764.md>)

Original publisher: [Read original article](<https://enoent.fr/posts/android-things-first-look/>)

Author: Marc Plano-Lesay

Published: 2017-01-06T09:55:08Z

Content type: tutorial

Language: en

Sources: [Marc Plano-Lesay](<https://devfeed.tech/sources/marc-plano-lesay.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Internet of things](<https://devfeed.tech/topics/iot.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>), [Raspberry Pi](<https://devfeed.tech/topics/raspberry-pi.md>), [intel](<https://devfeed.tech/topics/intel.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>), [API](<https://devfeed.tech/topics/api.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>)

Tags: [adb](<https://devfeed.tech/tags/adb.md>), [android](<https://devfeed.tech/tags/android.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [framework](<https://devfeed.tech/tags/framework.md>), [gpio](<https://devfeed.tech/tags/gpio.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [i2c](<https://devfeed.tech/tags/i2c.md>), [intel](<https://devfeed.tech/tags/intel.md>), [iot](<https://devfeed.tech/tags/iot.md>), [optional](<https://devfeed.tech/tags/optional.md>), [preview](<https://devfeed.tech/tags/preview.md>), [pwm](<https://devfeed.tech/tags/pwm.md>), [raspberry-pi](<https://devfeed.tech/tags/raspberry-pi.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [spi](<https://devfeed.tech/tags/spi.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This article introduces Android Things, an Android version for developing embedded IoT devices. It describes supported boards, the Peripheral I/O and User Driver APIs, limitations of the bundled Android system, optional displays, installation on physical hardware, and initial project setup with Android Studio and adb.

### Source excerpt

What is Android Things? Android Things is an alternative Android version, announced at Google I/O 2015, and released as a first developer preview in December 2016. Its purpose is to develop embedded IoT devices, with a known and widely documented Android ecosystem basis. It's currently running on three different boards: the Intel Edison, the NXP Pico i.MX6UL, and the Raspberry Pi 3. Some higher-end boards are coming soon. On the SDK side, Android Things comes with a specific support library to ease low-level hardware usage. It consists in two parts: the Peripheral I/O API, which supports GPIO, PWM, I2C, SPI and UART, and the User Driver API, which allows a developer to write a hardware-specific, high-level driver, to ease hardware reusability by injecting events into the Android framework. Other applications can in turn use those events without having to interact with the hardware directly. There's a downside: the bundled Android is not as complete as the one you can find on a phone. Most of the standard applications aren't installed (Calendar, Phone...), and standard content providers are absent too (MediaProvider, Dictionary...). Android Things supports displays, with the default Android UI toolkit. However, the display is a bit different from what you're used to seeing on an Android device: there's no notification bar, navigation bar or anything, the running application will use the full display. That is, if it uses it at all: displays are purely optional.