Skip to content

MCM_GitHub_OTA

MCM_GitHub_OTA

Aimee0

Published April 03, 2026

Original author: mcmchrisOriginal source (new tab)

MCM_GitHub_OTA

Components

Hardware components

WIZnet parts

Project description

Generated by OpenAI(ChatGPT)
Generated by OpenAI(ChatGPT)

๐Ÿ“Œ Overview

MCM_GitHub_OTA๋Š” ESP32 ์žฅ์น˜๊ฐ€ GitHub Releases์— ์˜ฌ๋ ค์ง„ ์ƒˆ ํŽŒ์›จ์–ด๋ฅผ ์›๊ฒฉ์œผ๋กœ ๋‚ด๋ ค๋ฐ›์•„ ์ž๋™ ์—…๋ฐ์ดํŠธํ•˜๋„๋ก ๋งŒ๋“  OTA ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ํ•ต์‹ฌ์€ ๋‹จ์ˆœ OTA ๊ตฌํ˜„์ด ์•„๋‹ˆ๋ผ, Wi-Fi์™€ Ethernet(W5500 via SPI)์„ ๋ชจ๋‘ ์ง€์›ํ•˜๊ณ , GitHub API ์กฐํšŒ๋Š” ์ •์ƒ์ธ๋ฐ CDN ์ธ์ฆ์„œ ์ฒด์ธ ๋ฌธ์ œ๋กœ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์‹คํŒจํ•˜๋Š” ์ƒํ™ฉ๊นŒ์ง€ ๊ณ ๋ คํ•œ ์ง€์—ฐํ˜• fallback ๊ตฌ์กฐ๋ฅผ ๋„ฃ์—ˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. 

์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ๋Š” ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฅ์— ๋ฐฐํฌ๋œ ESP32 ๊ธฐ๋ฐ˜ ์žฅ๋น„๋ฅผ USB ์žฌํ”Œ๋ž˜์‹œ ์—†์ด ์œ ์ง€๋ณด์ˆ˜ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ผ๋ฐ˜์ ์ธ OTA ์˜ˆ์ œ๋Š” ๋„คํŠธ์›Œํฌ ๊ฒฝ๋กœ ๋ณ€ํ™”, ์ธ์ฆ์„œ ๊ฐฑ์‹ , ์œ ์„ /๋ฌด์„  ์ด์ค‘ํ™” ๊ฐ™์€ ์‹ค์ œ ์šด์˜ ์กฐ๊ฑด์„ ์ถฉ๋ถ„ํžˆ ๋‹ค๋ฃจ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ทธ ๊ฐ„๊ทน์„ ๋ฉ”์šฐ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์„ค๊ณ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ Features

์ด์ค‘ ๋„คํŠธ์›Œํฌ ์ง€์›

Wi-Fi์™€ W5500 Ethernet์„ ํ•จ๊ป˜ ์ง€์›ํ•˜๋ฉฐ, ํ™œ์„ฑ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ž๋™ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฅ์—์„œ๋Š” ์œ ์„  ์šฐ์„ , ๋ฌด์„  ๋ฐฑ์—… ๊ฐ™์€ ์šด์˜ ์ „๋žต์œผ๋กœ ์—ฐ๊ฒฐ ์•ˆ์ •์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GitHub Releases ๊ธฐ๋ฐ˜ ๋ฐฐํฌ

GitHub API์—์„œ ์ตœ์‹  ๋ฆด๋ฆฌ์Šค ํƒœ๊ทธ์™€ .bin ์ž์‚ฐ์„ ์ฐพ์•„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ๋ณ„๋„ OTA ์„œ๋ฒ„๋ฅผ ์ง์ ‘ ์šด์˜ํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

๋ณด์•ˆ ์—ฐ๊ฒฐ + ์ธ์ฆ์„œ ๊ด€๋ฆฌ ๊ตฌ์กฐ

SSLClient, BearSSL, Trust Anchor ๊ธฐ๋ฐ˜์œผ๋กœ GitHub ์„œ๋ฒ„ ์‹ ๋ขฐ์„ฑ์„ ๊ฒ€์ฆํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ธฐ๋ณธ ๋™์ž‘์€ HTTPS ๊ฒ€์ฆ์„ ์ „์ œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. 

โ€œLate Fallbackโ€ ๋ณต๊ตฌ ๋กœ์ง

API ์—ฐ๊ฒฐ์€ ์„ฑ๊ณตํ–ˆ์ง€๋งŒ CDN ๋‹ค์šด๋กœ๋“œ ๋‹จ๊ณ„์—์„œ ์ธ์ฆ์„œ ๋ฌธ์ œ๋กœ ์‹คํŒจํ•˜๋ฉด, ํ•ด๋‹น ๋‹ค์šด๋กœ๋“œ ์„ธ์…˜์— ํ•œํ•ด insecure mode๋กœ ์žฌ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์ด ์ด ํ”„๋กœ์ ํŠธ์˜ ๊ฐ€์žฅ ํฐ ๊ธฐ์ˆ ์  ์ฐจ๋ณ„์ ์ž…๋‹ˆ๋‹ค. ๋‹จ, ์ด fallback์€ ์šด์˜ ์•ˆ์ •์„ฑ์—๋Š” ์œ ๋ฆฌํ•˜์ง€๋งŒ, ๋ณด์•ˆ ์ •์ฑ…์ด ์—„๊ฒฉํ•œ ์ œํ’ˆ์—์„œ๋Š” ์ ์šฉ ๋ฒ”์œ„๋ฅผ ๋ถ„๋ช…ํžˆ ์ œํ•œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

์‚ฌ์„ค ์ €์žฅ์†Œ ์ง€์›

GitHub Personal Access Token์„ ์‚ฌ์šฉํ•ด private repository๋„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์–ด, ๋‚ด๋ถ€ ์ œํ’ˆ ํŽŒ์›จ์–ด ๋ฐฐํฌ ๊ตฌ์กฐ๋กœ ํ™•์žฅํ•  ์—ฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 

๐Ÿ“Œ System Architecture

๊ธฐ๋ณธ ๊ตฌ์„ฑ

  • MCU: ESP32
  • ์œ ์„  ๋„คํŠธ์›Œํฌ ์นฉ: WIZnet W5500
  • ๋ฌด์„  ๋ฐฑ์—… ๊ฒฝ๋กœ: ESP32 ๋‚ด์žฅ Wi-Fi
  • ์›๊ฒฉ ์„œ๋ฒ„: GitHub API + GitHub Release Asset CDN
  • ์ €์žฅ ์˜์—ญ: ESP32 OTA ํŒŒํ‹ฐ์…˜(ota_0, ota_1, otadata)

๋ฐ์ดํ„ฐ ํ๋ฆ„

  1. ์žฅ์น˜๊ฐ€ ํ˜„์žฌ ๋„คํŠธ์›Œํฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  2. Ethernet์ด ํ™œ์„ฑ ์ƒํƒœ์ด๋ฉด W5500 ๊ฒฝ๋กœ๋ฅผ ์šฐ์„  ์‚ฌ์šฉํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด Wi-Fi๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  3. GitHub API์— HTTPS๋กœ ์ ‘์†ํ•ด ์ตœ์‹  release tag์™€ asset ์ •๋ณด๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค.
  4. ์ƒˆ ๋ฒ„์ „์ด ํ™•์ธ๋˜๋ฉด release asset์˜ .bin ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
  5. ESP32 OTA ์˜์—ญ์— ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋กํ•˜๊ณ , ์„ฑ๊ณต ์‹œ ์žฌ๋ถ€ํŒ… ํ›„ ์ƒˆ ํŽŒ์›จ์–ด๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  6. ESP-IDF OTA ๊ตฌ์กฐ์ƒ, ์ด ๊ณผ์ •์€ ์ตœ์†Œ 2๊ฐœ์˜ OTA ์Šฌ๋กฏ๊ณผ OTA data partition์„ ์ „์ œ๋กœ ํ•˜๋ฉฐ, ์—…๋ฐ์ดํŠธ ํ›„ ๋‹ค์Œ ๋ถ€ํŒ… ์Šฌ๋กฏ์ด ๊ฐฑ์‹ ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ Role and Application of the WIZnet's Chip

์‚ฌ์šฉ๋œ WIZnet ์นฉ : W5500

๋„คํŠธ์›Œํฌ์—์„œ์˜ ์—ญํ• 

  • W5500์€ ESP32์— ์œ ์„  Ethernet ์—ฐ๊ฒฐ์„ ์ œ๊ณตํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” W5500์ด ๋‹จ์ˆœ ๋กœ์ปฌ ํ†ต์‹ ์ด ์•„๋‹ˆ๋ผ, GitHub API ์กฐํšŒ์™€ release asset ๋‹ค์šด๋กœ๋“œ๋ฅผ ์œ„ํ•œ OTA ๋ฐ์ดํ„ฐ ์ „์†ก ๊ฒฝ๋กœ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ ๊ด€์ ์—์„œ๋Š” ์ตœ์ข…์ ์œผ๋กœ TCP/IP ๊ธฐ๋ฐ˜ HTTPS(HTTP over TLS) ๊ฒฝ๋กœ์— ์ฐธ์—ฌํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค๋ช…์ƒ GitHub API ์กฐํšŒ, ๋ฐ”์ด๋„ˆ๋ฆฌ ๋‹ค์šด๋กœ๋“œ, ๋ฒ„์ „ ๋น„๊ต, OTA ์ ์šฉ ํ๋ฆ„ ์ „์ฒด์— Ethernet ๊ฒฝ๋กœ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ Market & Application Value

์ ์šฉ ๊ฐ€๋Šฅํ•œ ์‚ฐ์—… ๋ฐ ์‹œ์žฅ

  • ์‚ฐ์—… ์ž๋™ํ™” / ์„ค๋น„ ์ œ์–ด
    • ํ˜„์žฅ ์žฅ๋น„๋Š” ํ•œ ๋ฒˆ ์„ค์น˜๋˜๋ฉด ๋ฌผ๋ฆฌ ์ ‘๊ทผ์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์›๊ฒฉ ํŽŒ์›จ์–ด ์—…๋ฐ์ดํŠธ ์ˆ˜์š”๊ฐ€ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • ์Šค๋งˆํŠธ ๋นŒ๋”ฉ / ๊ฒŒ์ดํŠธ์›จ์ด ์žฅ๋น„
    • Ethernet ๋ฐฑ๋ณธ ํ™˜๊ฒฝ์—์„œ ESP32 ๊ธฐ๋ฐ˜ ๋ณด์กฐ ์ œ์–ด๊ธฐ๋‚˜ ์„ผ์„œ ํ—ˆ๋ธŒ๋ฅผ ์šด์˜ํ•˜๋Š” ๊ฒฝ์šฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • ์—๋„ˆ์ง€ ๋ชจ๋‹ˆํ„ฐ๋ง / ์›๊ฒฉ ๊ณ„์ธก
    • ์„ค์น˜ ํ›„ ์ง€์†์  ๊ธฐ๋Šฅ ๊ฐœ์„ ๊ณผ ๋ฒ„๊ทธ ์ˆ˜์ •์ด ํ•„์š”ํ•œ ์ €์ „๋ ฅ ์ž„๋ฒ ๋””๋“œ ์žฅ๋น„์— ๋งž์Šต๋‹ˆ๋‹ค.
  • ์†Œํ˜• OEM ์žฅ์น˜
    • ๋ณ„๋„ OTA ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•˜๊ธฐ ์–ด๋ ค์šด ์†Œ๊ทœ๋ชจ ์ œ์กฐ์‚ฌ์—๊ฒŒ GitHub Release ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ๋Š” ์ดˆ๊ธฐ ๋„์ž… ๋น„์šฉ์ด ๋‚ฎ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ External Indicators

GitHub ์ €์žฅ์†Œ ๋ฐ˜์‘

  • ๊ณต๊ฐœ ์ €์žฅ์†Œ ๊ธฐ์ค€ Star 2, Fork 0, Issues 0, Releases 5, ์ตœ์‹  ๋ฆด๋ฆฌ์Šค v0.0.5(2026-03-04)๋กœ ํ™•์ธ๋ฉ๋‹ˆ๋‹ค. ์ปค๋ฐ‹ ์ˆ˜๋Š” 57๊ฐœ๋กœ ์กฐํšŒ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ฝ”๋“œ๋ฒ ์ด์Šค๋Š” ๊ณ„์† ๋‹ค๋“ฌ์–ด์กŒ์ง€๋งŒ ์™ธ๋ถ€ ํ™•์‚ฐ ๊ทœ๋ชจ๋Š” ์•„์ง ์ž‘์Šต๋‹ˆ๋‹ค. 

PlatformIO Registry ๋“ฑ๋ก

  • ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” PlatformIO ๊ณต์‹ Registry์— ๋“ฑ๋ก๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด๋Š” ๋‹จ์ˆœ ์ฝ”๋“œ ๊ณต๊ฐœ๋ฅผ ๋„˜์–ด ํŒจํ‚ค์ง€ํ™”๋œ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ƒํƒœ์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • PlatformIO๋Š” ์ž„๋ฒ ๋””๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ยท์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ์ด๋ฏ€๋กœ, ๋“ฑ๋ก ์ž์ฒด๊ฐ€ ์‹ค์ œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ์„ฑ๊ณผ ๊ฐœ๋ฐœ์ž ์ ‘๊ทผ์„ฑ ํ™•๋ณด๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
๐Ÿ“Œ External Indicators

Link : https://registry.platformio.org/libraries/mcmchris/MCM_GitHub_OTA

Arduino ์ƒํƒœ๊ณ„ ๋“ฑ์žฌ

  • Arduino Libraries ์‚ฌ์ดํŠธ์— Contributed ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋“ฑ์žฌ๋˜์–ด ์žˆ์œผ๋ฉฐ, MCM_GitHub_OTA-0.0.1.zip์˜ ๋“ฑ๋ก ์ด๋ ฅ์ด ํ™•์ธ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ์ธ ์ €์žฅ์†Œ๋ฅผ ๋„˜์–ด์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์œ ํ†ต ์ฑ„๋„์— ํŽธ์ž…๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค๋Š” ์‹ ํ˜ธ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๐Ÿ“Œ External Indicators

Link : https://www.arduinolibraries.info/libraries/mcm_git-hub_ota

๐Ÿ“Œ WIZnet Strategic Value

WIZnet Maker ์ƒํƒœ๊ณ„ ๊ด€์ ์˜ ์˜๋ฏธ

  • ์ด ์‚ฌ๋ก€๋Š” W5500์„ ๋‹จ์ˆœ Ethernet ์ ‘์† ์นฉ์œผ๋กœ ์†Œ๊ฐœํ•˜๋Š” ์ˆ˜์ค€์„ ๋„˜์–ด, ์›๊ฒฉ ํŽŒ์›จ์–ด ์œ ์ง€๋ณด์ˆ˜์™€ ๋ผ์ดํ”„์‚ฌ์ดํด ๊ด€๋ฆฌ๋ผ๋Š” ๋” ์ƒ์œ„์˜ ๊ฐ€์น˜๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, โ€œWIZnet ์นฉ์„ ์“ฐ๋ฉด ์—ฐ๊ฒฐ๋œ๋‹คโ€๊ฐ€ ์•„๋‹ˆ๋ผ, **โ€œ๋ฐฐํฌ ํ›„ ์šด์˜๊นŒ์ง€ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹คโ€**๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

๋‹ค๋ฅธ ๊ณ ๊ฐยท๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ฃผ๋Š” ๋ฉ”์‹œ์ง€

  • W5500์€ ๋‹จ์ˆœ TCP/UDP ์˜ˆ์ œ์šฉ ์นฉ์ด ์•„๋‹ˆ๋ผ ์•ˆ์ •์ ์ธ OTA ์šด์šฉ ๊ฒฝ๋กœ๋กœ๋„ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ESP32 + W5500 ์กฐํ•ฉ์€ Wi-Fi๊ฐ€ ๋ถˆ์•ˆ์ •ํ•œ ํ™˜๊ฒฝ์—์„œ๋„ ์œ ์„  ๊ธฐ๋ฐ˜ ์—…๋ฐ์ดํŠธ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • GitHub Release๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์†Œ๊ทœ๋ชจ ํŒ€๋„ ๊ฐ€๋ฒผ์šด OTA ๋ฐฐํฌ ์ฒด๊ณ„๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ Summary

์ด ํ”„๋กœ์ ํŠธ๋Š” ESP32 ๊ธฐ๋ฐ˜ ์žฅ์น˜์—์„œ GitHub Releases๋ฅผ ํ™œ์šฉํ•œ OTA ์—…๋ฐ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด์„œ, Wi-Fi์™€ W5500 Ethernet์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ์ด์ค‘ ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ์™€ ์‹ค์ œ ์šด์˜ ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ์„œ ๋ฌธ์ œ๊นŒ์ง€ ๊ณ ๋ คํ•œ ๋ณต๊ตฌ ๋กœ์ง์„ ํฌํ•จํ•œ ๊ฒƒ์ด ํŠน์ง•์ž…๋‹ˆ๋‹ค. ํŠนํžˆ W5500์„ ์•ˆ์ •์ ์ธ ์œ ์„  OTA ์ „์†ก ๊ฒฝ๋กœ๋กœ ํ™œ์šฉํ•จ์œผ๋กœ์จ WIZnet ์นฉ์˜ ์—ญํ• ์„ ๋‹จ์ˆœ ํ†ต์‹ ์„ ๋„˜์–ด ์›๊ฒฉ ์œ ์ง€๋ณด์ˆ˜ ์ธํ”„๋ผ๋กœ ํ™•์žฅํ•œ ์‚ฌ๋ก€๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™ธ๋ถ€ ํ™•์‚ฐ์€ ์•„์ง ์ œํ•œ์ ์ด์ง€๋งŒ, ๊ตฌ์กฐ์ ์œผ๋กœ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์ด ๋†’์•„ ํ–ฅํ›„ WIZnet Maker ์ƒํƒœ๊ณ„์—์„œ ์‹ค์šฉ์ ์ธ ๋ ˆํผ๋Ÿฐ์Šค๋กœ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ์˜๋ฏธ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

๐Ÿ“Œ FAQ

  1. MCM_GitHub_OTA๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?
    MCM_GitHub_OTA๋Š” ESP32 ์žฅ์น˜๊ฐ€ GitHub Releases์— ์—…๋กœ๋“œ๋œ ์ตœ์‹  ํŽŒ์›จ์–ด๋ฅผ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” OTA ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Wi-Fi์™€ W5500 Ethernet์„ ๋™์‹œ์— ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ํŠน์ง•์ž…๋‹ˆ๋‹ค.
  2. ESP32 OTA ์—…๋ฐ์ดํŠธ์— W5500 Ethernet์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?
    W5500์€ ์•ˆ์ •์ ์ธ ์œ ์„  ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์„ ์ œ๊ณตํ•˜์—ฌ Wi-Fi๊ฐ€ ๋ถˆ์•ˆ์ •ํ•œ ํ™˜๊ฒฝ์—์„œ๋„ ์‹ ๋ขฐ์„ฑ ๋†’์€ OTA ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  3. GitHub Releases๋ฅผ OTA ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
    ๋„ค, GitHub Releases์˜ .bin ํŒŒ์ผ์„ ํ™œ์šฉํ•˜์—ฌ ๋ณ„๋„์˜ OTA ์„œ๋ฒ„ ์—†์ด๋„ ํŽŒ์›จ์–ด ๋ฐฐํฌ ๋ฐ ์—…๋ฐ์ดํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  4. Wi-Fi์™€ Ethernet์„ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
    ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‘ ๋„คํŠธ์›Œํฌ๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•˜๋ฉฐ, Ethernet์ด ์šฐ์„ ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ํ•„์š” ์‹œ Wi-Fi๋กœ ์ž๋™ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค.
  5. OTA ์ค‘ ์ธ์ฆ์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?
    ๊ธฐ๋ณธ์ ์œผ๋กœ HTTPS ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ, CDN ๋‹ค์šด๋กœ๋“œ ๋‹จ๊ณ„์—์„œ ์ธ์ฆ์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ•ด๋‹น ์„ธ์…˜์— ํ•œํ•ด insecure ๋ชจ๋“œ๋กœ ์žฌ์‹œ๋„ํ•˜๋Š” fallback ๋กœ์ง์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
  6. ์ด fallback ๋ฐฉ์‹์€ ๋ณด์•ˆ์ƒ ์•ˆ์ „ํ•œ๊ฐ€์š”?
    ์šด์˜ ์•ˆ์ •์„ฑ์—๋Š” ๋„์›€์ด ๋˜์ง€๋งŒ, ๋ณด์•ˆ์ด ์ค‘์š”ํ•œ ํ™˜๊ฒฝ์—์„œ๋Š” fallback ์‚ฌ์šฉ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•˜๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.
  7. Private GitHub ์ €์žฅ์†Œ๋„ ์ง€์›ํ•˜๋‚˜์š”?
    ๋„ค, GitHub Personal Access Token์„ ์‚ฌ์šฉํ•˜๋ฉด private repository์˜ ๋ฆด๋ฆฌ์Šค๋„ OTA ์—…๋ฐ์ดํŠธ์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  8. ESP32 OTA๋ฅผ ์œ„ํ•ด ํ•„์š”ํ•œ ํŒŒํ‹ฐ์…˜ ๊ตฌ์กฐ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?
    ์ตœ์†Œ 2๊ฐœ์˜ OTA ์Šฌ๋กฏ(ota_0, ota_1)๊ณผ otadata ํŒŒํ‹ฐ์…˜์ด ํ•„์š”ํ•˜๋ฉฐ, ์—…๋ฐ์ดํŠธ ํ›„ ๋ถ€ํŒ… ์Šฌ๋กฏ์ด ์ž๋™์œผ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค.
  9. ์ด ํ”„๋กœ์ ํŠธ๋Š” ์–ด๋–ค ์‚ฐ์—… ๋ถ„์•ผ์— ์ ํ•ฉํ•œ๊ฐ€์š”?
    ์‚ฐ์—… ์ž๋™ํ™”, ์Šค๋งˆํŠธ ๋นŒ๋”ฉ, ์—๋„ˆ์ง€ ๋ชจ๋‹ˆํ„ฐ๋ง, ์›๊ฒฉ ๊ณ„์ธก ๋“ฑ ๋ฌผ๋ฆฌ์  ์ ‘๊ทผ์ด ์–ด๋ ค์šด ์žฅ๋น„์˜ ์œ ์ง€๋ณด์ˆ˜์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  10. WIZnet W5500์˜ ์ฃผ์š” ์—ญํ• ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?
    W5500์€ ESP32์— ์œ ์„  Ethernet ์—ฐ๊ฒฐ์„ ์ œ๊ณตํ•˜๋ฉฐ, GitHub API ํ†ต์‹ ๊ณผ ํŽŒ์›จ์–ด ๋‹ค์šด๋กœ๋“œ๋ฅผ ํฌํ•จํ•œ OTA ์ „์ฒด ๋ฐ์ดํ„ฐ ๊ฒฝ๋กœ์—์„œ ํ•ต์‹ฌ์ ์ธ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ Overview

MCM_GitHub_OTA is an OTA library designed to allow ESP32 devices to remotely download new firmware uploaded to GitHub Releases and update automatically. The key point is not just a simple OTA implementation, but that it supports both Wi-Fi and Ethernet (W5500 via SPI), and incorporates a delayed fallback mechanism that accounts for situations where GitHub API queries succeed but binary downloads fail due to CDN certificate chain issues.

The problem this project solves is clear. ESP32-based devices deployed in the field need to be maintained without USB reflashing, but typical OTA examples do not adequately handle real-world operational conditions such as network path changes, certificate renewals, or wired/wireless redundancy. This library is designed to bridge that gap.

๐Ÿ“Œ Features

Dual Network Support

Supports both Wi-Fi and W5500 Ethernet, automatically selecting the active interface. In real-world deployments, connection stability can be improved through strategies such as prioritizing wired connections with wireless as backup.

GitHub Releases-Based Deployment

Updates are performed by retrieving the latest release tag and .bin assets from the GitHub API. This simplifies the deployment pipeline by removing the need to operate a separate OTA server.

Secure Connection + Certificate Management Structure

Designed to verify the trustworthiness of GitHub servers based on SSLClient, BearSSL, and Trust Anchors. In other words, HTTPS verification is the default behavior.

โ€œLate Fallbackโ€ Recovery Logic

If the API connection succeeds but the CDN download fails due to certificate issues, the system retries the download in insecure mode only for that session. This is the most distinctive technical feature of the project. However, while this fallback improves operational reliability, its scope should be clearly restricted in products with strict security policies.

Private Repository Support

By using a GitHub Personal Access Token, private repositories can also be handled, allowing the system to be extended for internal firmware distribution.

๐Ÿ“Œ System Architecture

Basic Configuration

  • MCU: ESP32
  • Wired network chip: WIZnet W5500
  • Wireless backup path: Built-in Wi-Fi on ESP32
  • Remote server: GitHub API + GitHub Release Asset CDN
  • Storage: ESP32 OTA partitions (ota_0, ota_1, otadata)

Data Flow

  1. The device checks its current network status.
  2. If Ethernet is active, it prioritizes the W5500 path; otherwise, it uses Wi-Fi.
  3. It connects to the GitHub API over HTTPS to retrieve the latest release tag and asset information.
  4. If a new version is detected, it downloads the .bin file from the release assets.
  5. The new image is written to the ESP32 OTA partition, and upon success, the device reboots and switches to the new firmware.

๐Ÿ“Œ Role and Application of the WIZnet's Chip

WIZnet Chip Used: W5500

Role in Networking

  • The W5500 provides a wired Ethernet connection to the ESP32.
  • In this project, it is not limited to simple local communication but is used as the OTA data transmission path for GitHub API queries and release asset downloads. From a protocol perspective, it ultimately participates in a TCP/IP-based HTTPS (HTTP over TLS) communication path. According to the library design, the Ethernet path is involved throughout the entire flow, including GitHub API queries, binary downloads, version comparison, and OTA application.

๐Ÿ“Œ Market & Application Value

Applicable Industries and Markets

  • Industrial Automation / Equipment Control
    • Once deployed, field equipment is difficult to access physically. There is a clear demand for remote firmware updates.
  • Smart Buildings / Gateway Devices
    • Suitable for environments with an Ethernet backbone where ESP32-based auxiliary controllers or sensor hubs are operated.
  • Energy Monitoring / Remote Metering
    • Well-suited for low-power embedded devices that require continuous feature improvements and bug fixes after deployment.
  • Small OEM Devices
    • For small manufacturers who find it difficult to operate a dedicated OTA server, a GitHub Releases-based approach offers low initial adoption cost.

๐Ÿ“Œ External Indicators

GitHub Repository Activity

  • As of the public repository status, it has 2 stars, 0 forks, 0 issues, and 5 releases, with the latest release being v0.0.5 (2026-03-04). The total number of commits is 57. This indicates that while the codebase has been continuously refined, its external adoption and visibility are still relatively limited.

PlatformIO Registry ๋“ฑ๋ก

  • This library is registered in the official PlatformIO Registry, which means it is not just publicly available code but a packaged, distributable library.
  • Since PlatformIO is an environment where embedded developers install and use libraries in real projects, this registration indicates practical usability and accessibility for developers.
๐Ÿ“Œ External Indicators

Link : https://registry.platformio.org/libraries/mcmchris/MCM_GitHub_OTA

Arduino Ecosystem Listing

  • The library is listed as a contributed library on the Arduino Libraries site, with a registration history for MCM_GitHub_OTA-0.0.1.zip. This can be seen as a signal that it is beginning to move beyond a personal repository and enter broader library distribution channels.
๐Ÿ“Œ External Indicators

Link : https://www.arduinolibraries.info/libraries/mcm_git-hub_ota

๐Ÿ“Œ WIZnet Strategic Value

Implications from the WIZnet Maker Ecosystem Perspective

  • This case goes beyond presenting the W5500 as a simple Ethernet connectivity chip and connects it to a higher-level value of remote firmware maintenance and lifecycle management. In other words, instead of the message โ€œWIZnet chips enable connectivity,โ€ it conveys that โ€œthey enable post-deployment operation and management.โ€

Key Messages for Other Customers and Developers

  • The W5500 is not just for basic TCP/UDP examples; it can also serve as a reliable path for OTA operations.
  • The ESP32 + W5500 combination enables a wired-based update architecture even in environments where Wi-Fi is unstable.
  • By leveraging GitHub Releases, even small teams can establish a lightweight OTA deployment system.

๐Ÿ“Œ Summary

This project implements OTA updates using GitHub Releases on ESP32-based devices, featuring a dual-network architecture that utilizes both Wi-Fi and W5500 Ethernet, along with recovery logic that accounts for certificate-related issues that may occur in real-world operating environments. In particular, by leveraging the W5500 as a stable wired OTA transmission path, it demonstrates an expansion of the WIZnet chipโ€™s role beyond simple communication into remote maintenance infrastructure. Although external adoption is still limited, the design shows high reusability and scalability, making it a meaningful project that could serve as a practical reference within the WIZnet Maker ecosystem in the future.

๐Ÿ“Œ FAQ (English)

  1. What is MCM_GitHub_OTA?
    MCM_GitHub_OTA is an OTA library that enables ESP32 devices to automatically download and update firmware from GitHub Releases, supporting both Wi-Fi and W5500 Ethernet.
  2. Why use W5500 Ethernet for ESP32 OTA updates?
    The W5500 provides a stable wired connection, ensuring reliable OTA updates even in environments where Wi-Fi is unstable.
  3. Can GitHub Releases be used as an OTA server?
    Yes, firmware binaries uploaded to GitHub Releases can be used for OTA updates without requiring a dedicated OTA server.
  4. Does it support both Wi-Fi and Ethernet simultaneously?
    Yes, the library supports dual networking. Ethernet is prioritized, and Wi-Fi is used as a fallback when needed.
  5. What happens if a certificate error occurs during OTA?
    If HTTPS validation fails during CDN download, the library retries the download in insecure mode for that session using a late fallback mechanism.
  6. Is the fallback mechanism secure?
    While it improves reliability, it may reduce security. It should be carefully controlled or disabled in security-critical deployments.
  7. Does it support private GitHub repositories?
    Yes, by using a GitHub Personal Access Token, OTA updates can be performed from private repositories.
  8. What partition structure is required for ESP32 OTA?
    At least two OTA partitions (ota_0 and ota_1) and an otadata partition are required for proper OTA functionality.
  9. What are the typical use cases for this project?
    It is suitable for industrial automation, smart buildings, energy monitoring, and remote devices that require reliable firmware updates.
  10. What is the role of the WIZnet W5500 in this architecture?
    The W5500 provides wired Ethernet connectivity and is responsible for handling OTA data transmission, including GitHub API requests and firmware downloads.

Comments

Similar projects you might like

Comments