agentCLAWHUBUnverified

Unihiker K10 Ota

Add HTTP OTA (Over-The-Air) firmware update capability to Unihiker K10 Arduino projects, including AP/STA projects and ESP-NOW projects that need a safe OTA... Skill: Unihiker K10 Ota Owner: rockets-cn Summary: Add HTTP OTA (Over-The-Air) firmware update capability to Unihiker K10 Arduino projects, including AP/STA projects and ESP-NOW projects that need a safe OTA... Tags: arduino:1.0.0, esp32:1.0.0, k10:1.0.0, latest:1.0.4, ota:1.0.0, unihiker:1.0.0 Version history: v1.0.4 | 2026-07-22T07:43:03.837Z | user Recommend the DFRobot Gravity ADS1115 for safe K10 external analog

OpenClaw

Rank

62

Safety

84

Downloads

1.2k

Updated

Oct 11, 2026

Version

1.0.4

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 1.2K downloads reported by the source. Last updated 10/11/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 11, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 11, 2026
Adoption signal
1.2K downloadsadoption · observed Oct 11, 2026
Latest release
1.0.4release · observed Jul 22, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s172xg1ay5cxz756fkf8n3qtmd87evvj:unihiker-k10-ota
  1. Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
  2. Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Contract: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-rockets-cn-unihiker-k10-ota/snapshot"

Documentation

CLAWHUB

138,371 characters of source documentation, loaded on request.

Extracted files

4 files captured from the source.

SKILL.md

---
name: unihiker-k10-ota
description: Add HTTP OTA (Over-The-Air) firmware update capability to Unihiker K10 Arduino projects, including AP/STA projects and ESP-NOW projects that need a safe OTA maintenance mode. Use when you need wireless firmware updates without USB cable, when ArduinoOTA fails, or when an ESP-NOW sketch must keep an OTA recovery/update path.
---

# Unihiker K10 - HTTP OTA

## Overview

Enable wireless firmware updates for K10 Arduino projects via HTTP POST.

**Core principle:** K10's default partition table has no OTA partitions. You must switch to a custom partition table with `ota_0` + `ota_1` before `Update.begin()` can work.

**Why not ArduinoOTA?** The standard `ArduinoOTA` library (UDP-based) requires the ESP32 to connect back to the host computer on a random port, which is often blocked by Windows Firewall. HTTP OTA uses a simple host→device upload direction and works reliably on all networks.

**AI model rule:** K10 built-in AI support files live in fixed flash regions beginning at `0x510000`. OTA partitions must end before that address if the project uses voice recognition, TTS, face recognition, or other built-in AI features.

**TTS firmware rule:** Speech synthesis (`ASR::setAsrSpeed()` / `ASR::speak()`) exists only in the Chinese K10 firmware. Preserving or restoring `voice_data`/CN model partitions does not add the TTS API to another firmware variant. Only deploy TTS OTA images to boards whose Chinese firmware support has been confirmed.

**Screen refresh rule:** OTA status pages, progress indicators, connection state, and voice status should use partial redraws. Full-screen clearing or full-background redraw causes visible flicker on K10; use it only for initialization, page switches, exit cleanup, or when measured full-screen refresh is above 30 fps.

## When to Use

- Your K10 is installed in a location difficult to reach with USB
- You want to update firmware without opening the enclosure
- You need a scriptable/automated deployment pipeline
- ArduinoOTA network port upload fails with "No response from device"

## Prerequisites

- Existing K10 Arduino project with `WebServer` running
- `arduino-cli` installed and K10 BSP (`UNIHIKER:esp32:k10`) available
- Device and computer on the same network (or connected to K10's AP)

## ESP-NOW Compatibility Rule

ESP-NOW sketches can support OTA, but ordinary HTTP OTA requires temporary IP networking through `WIFI_AP`, `WIFI_STA`, or `WIFI_AP_STA`. ESP-NOW itself is not an IP transport, so do not claim that the standard `/ota` HTTP endpoint works over pure ESP-NOW packets.

When adding OTA to an ESP-NOW program, use this policy:

1. Prefer a **maintenance OTA mode**: normal runtime uses ESP-NOW; a button, serial command, saved flag, or received command enters OTA mode, starts AP or STA networking, registers `/ota`, and services `server.handleClient()`.
2. Keep ESP-NOW and WiFi on the same channel if they run together. If STA connects to a router, the router determines 

_meta.json

{
  "ownerId": "kn7bn6y6610bpcvzaykr1h2m1d83e2rm",
  "slug": "unihiker-k10-ota",
  "version": "1.0.4",
  "publishedAt": 1784706183837
}

references/ota-implementation.md

# K10 HTTP OTA Implementation Guide

Screen refresh rule: if the firmware displays OTA progress, WiFi state, IP addresses, voice state, or other status on the K10 screen, update only changed regions. Do not clear and redraw the whole screen in `loop()` unless full-screen refresh is measured above 30 fps; otherwise the display will visibly flicker.

TTS compatibility rule: K10 speech synthesis is available only in the Chinese firmware. Keeping the `voice_data` partition intact is necessary for compatible TTS builds but does not make `ASR::setAsrSpeed()` / `ASR::speak()` available in English/international firmware.

## Table of Contents

1. [Why HTTP OTA Instead of ArduinoOTA](#why-http-ota)
2. [Partition Table Requirements](#partition-table)
3. [Firmware Code Changes](#firmware-code)
4. [ESP-NOW Projects](#esp-now-projects)
5. [Build and Upload Workflow](#build-upload)
6. [OTA Update Workflow](#ota-update)
7. [Reference: Complete Minimal Example](#minimal-example)

---

## Why HTTP OTA Instead of ArduinoOTA

`ArduinoOTA` uses a UDP-based protocol:
1. Host sends an authentication challenge to the device (port 3232)
2. Device verifies password
3. **Device opens a TCP connection back to the host** on a random port
4. Host streams the firmware over this reverse connection

Step 3 is the failure point on Windows because:
- Windows Defender Firewall blocks inbound connections from the ESP32
- No admin privileges available to add firewall rules
- `arduino-cli` network upload cannot pass the password non-interactively

HTTP OTA flips the direction:
- Host opens a TCP connection **to** the device (outbound — always allowed)
- Host POSTs the firmware as `multipart/form-data`
- Device receives and writes to flash using the `Update` library

---

## Partition Table Requirements

The K10 BSP (`UNIHIKER:esp32` v0.0.3) ships with `large_spiffs_16MB.csv`:

```csv
# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x5000,
factory,  app,  factory, 0x10000, 0x500000,
model,    data, spiffs,  0x510000,4563k,
voice_data,data, fat,    0x985000,2542k,
fr,       data, ,        0xC01000,100K,
coredump, data, coredump,,        1K,
```

**Problem:** There is no `ota_0` / `ota_1` / `otadata` partition. `Update.begin()` fails immediately because it cannot find an inactive OTA slot to write to.

**Solution for K10 AI projects:** Create `partitions.csv` in your sketch directory with OTA partitions that stop before the model region:

```csv
# Name,     Type, SubType, Offset,   Size,     Flags
nvs,        data, nvs,     0x9000,   0x5000,
otadata,    data, ota,     0xe000,   0x2000,
app0,       app,  ota_0,   0x10000,  0x280000,
app1,       app,  ota_1,   0x290000, 0x280000,
model,      data, spiffs,  0x510000, 4563K,
voice_data, data, fat,     0x985000, 2542K,
fr,         data, ,        0xC01000, 100K,
coredump,   data, coredump,,         1K,
spiffs,     data, spiffs,  0xC1B000, 0x3E5000,
```

- `app0` and `app1` are each 2.5 MB and end before `0x5100

skill-card.md

## Description:

Add HTTP OTA (Over-The-Air) firmware update capability to Unihiker K10 Arduino projects, including AP/STA projects and ESP-NOW projects that need a safe OTA maintenance mode.

This skill is ready for commercial/non-commercial use.

## Publisher:

[rockets-cn](https://clawhub.ai/user/rockets-cn)

### License/Terms of Use:

MIT-0

## Use Case:

Developers and engineers use this skill to add and maintain HTTP OTA firmware updates for Unihiker K10 Arduino projects, including AP/STA setups and ESP-NOW projects that need a temporary OTA maintenance mode.

### Deployment Geography for Use:

Global

## Known Risks and Mitigations:

Risk: The OTA pattern can expose an unauthenticated HTTP firmware update endpoint to anyone with network access.

Mitigation: Add per-device authentication, keep OTA mode temporary and locally triggered, and use signed firmware or an equivalent integrity check before using it on a real network.

Risk: Shared default access point credentials can make OTA maintenance mode easier to reach than intended.

Mitigation: Avoid shared default AP passwords and provision unique device credentials.

Risk: Changing the K10 partition table can erase local data or damage built-in AI model regions if offsets are wrong.

Mitigation: Review the partition table before the first USB flash and keep OTA application partitions from overlapping the model, voice_data, and fr regions.

## Reference(s):

- [K10 HTTP OTA Implementation Guide](references/ota-implementation.md)

## Skill Output:

**Output Type(s):** [Markdown, Code, Shell commands, Configuration, Guidance]

**Output Format:** [Markdown guidance with inline code, command examples, and helper upload scripts]

**Output Parameters:** [1D]

**Other Properties Related to Output:** [Includes Python and PowerShell helper upload scripts.]

## Skill Version(s):

1.0.4 (source: server release evidence)

## Ethical Considerations:

Users should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.
Github ReposUpdated 1d agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/rockets-cn/skills/unihiker-k10-ota",
      "sourceUrl": "https://clawhub.ai/rockets-cn/skills/unihiker-k10-ota",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-11T04:14:19.560Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-rockets-cn-unihiker-k10-ota/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-rockets-cn-unihiker-k10-ota/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-11T04:14:19.560Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "1.2K downloads",
      "href": "https://clawhub.ai/rockets-cn/unihiker-k10-ota",
      "sourceUrl": "https://clawhub.ai/rockets-cn/unihiker-k10-ota",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-11T04:14:19.560Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "1.0.4",
      "href": "https://clawhub.ai/rockets-cn/unihiker-k10-ota",
      "sourceUrl": "https://clawhub.ai/rockets-cn/unihiker-k10-ota",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-07-22T07:43:03.837Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-rockets-cn-unihiker-k10-ota/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-rockets-cn-unihiker-k10-ota/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 1.0.4",
      "description": "Recommend the DFRobot Gravity ADS1115 for safe K10 external analog expansion and publish the latest synchronized K10 skill updates.",
      "href": "https://clawhub.ai/rockets-cn/unihiker-k10-ota",
      "sourceUrl": "https://clawhub.ai/rockets-cn/unihiker-k10-ota",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-07-22T07:43:03.837Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 11, 2026.

Sponsored

Ads related to Unihiker K10 Ota and adjacent AI workflows.