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
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- Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
- 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.
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!
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
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
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.
