Latest v0.3.0-previewWeb on/off switch and no-opening install

Your CommandKit
now speaks Matter

Open preview firmware for the Incipio CommandKit CMNDKT-004 smart outlet. It keeps the original kernel and drivers and adds Matter or HomeKit, live power monitoring and signed online updates. Everything runs on your home network, no cloud account needed.

MIT licensedLocal onlyEd25519-signed updatesFactory data kept
Features

Everything a smart outlet should do

The original bootloader, kernel and Wi-Fi driver stay in place; only the apps on top are replaced. Your factory data and the original firmware in the second slot are kept.

Matter or HomeKit

Add it to Apple Home, Google Home or Home Assistant with Matter, or switch back to the original HomeKit. Wi-Fi, pairings and energy totals survive the switch.

Live power monitoring

Voltage, current and power refresh every 2 seconds, plus an estimated energy total in kWh. Matter apps can read the standard power clusters too.

Automatic update check

The dashboard checks for new versions when you open it. Install with one tap. Every package is verified with Ed25519; anything for another model or platform is rejected.

LED modes and night mode

Six LED modes, a “find my outlet” blink and a lights-off schedule that can cross midnight. Shared by HomeKit and Matter.

Local, password-protected

Guests can only look. Changing settings needs your admin password, stored as a PBKDF2 hash. Nothing goes through a cloud service.

Factory data stays put

Only the first-slot file system is written. The bootloader, MAC address, radio calibration, original HomeKit data and second slot are never overwritten.

New in v0.3.0

Set up in three steps.
See it all at a glance.

Both the setup hotspot and the dashboard were redesigned. They work well on phones and computers, with dark mode. (The firmware UI is in Traditional Chinese.)

  1. Join Wi-FiNearby networks are listed with signal strength. Tap yours and type the password.
  2. Create an admin passwordYou will use it to sign in to the dashboard and install updates.
  3. Add it to your homeScan the outlet’s own Matter QR code with your home app.
Install guide

Install and use

Follow the chapters in order. Factory outlets that meet the conditions can be installed from the factory web page without opening them; otherwise you use a flash programmer. After the first install, every update happens in the browser.

Warning: mains electricity can kill (when opening or flashing)
  • Unplug the outlet before opening it or flashing, and make sure nothing else is powering it.
  • Never connect a USB programmer, UART adapter or any grounded device while the outlet is plugged in.
  • The GD25Q64 flash chip is 3.3 V only. Some black CH341A boards put out higher signal levels, so measure first.
  • When you are done, remove the programmer and every wire, close the case, then plug it in.
  • This is preview firmware and not official Incipio software. Modifying the outlet may void its warranty. You do this at your own risk.
CH1

Pick an install method

There are two ways to do the first install. Check the outlet’s firmware and settings on its factory update page, http://outlet-ip/upload.htm, then pick one.

Recommended · no opening

Method A: factory web upload

Upload the first-install file on the factory update page. This has been tested on a real outlet.

Works when all of these are true
Factory firmware 10219-1531, running from Active Bank 2, Enable Dual Firmware ticked
You need
A phone or computer on the same network, and the first-install file
Go to method A
Any version

Method B: flash programmer

Open the outlet and write only the first slot with a programmer. Works with any factory version.

Use it when
Method A’s conditions don’t match, or you need to recover with a programmer
You need
A CH341A (3.3 V) with a SOIC-8 clip and a Mac or Linux computer
Go to method B

What method B needs

  • A CMNDKT-004 outlet (RTL8196E with a GD25Q64 8 MiB flash chip)
  • A CH341A programmer set to 3.3 V and a SOIC-8 test clip
  • A Mac or Linux computer with Python 3.11 or newer
  • flashrom v1.8.0 and squashfs-tools with LZMA support
  • matter-8m-region.bin and .json from the release
  • A private folder for backups (they contain data unique to your outlet, so keep them to yourself)
git clone https://github.com/lee98064/incipio-commandkit.git
cd incipio-commandkit
python3 -m pip install -r tools/requirements.txt

Put matter-8m-region.bin and matter-8m-region.json in artifacts/releases/. To build flashrom, see the build guide.

CH2

First install

Follow the method you picked in chapter 1. Both keep the bootloader, MAC address, radio calibration, original HomeKit data and the factory firmware in the second slot.

Method A

Factory web upload (no opening)

  1. Download the first-install file

    Get commandkit-matter-v0.3.1-public-first-install.bin. It’s a shared public file with no device keys; each outlet creates its own identity and Matter code the first time it starts.

  2. Open the factory update page and check

    Close the case, plug the outlet in, and leave nothing plugged into it. Find its IP in your router’s device list and open http://outlet-ip/upload.htm. Check it shows 10219-1531, Active Bank 2 and Enable Dual Firmware ticked. Don’t change the dual-firmware setting.

  3. Upload

    At the top of the page, click Select File, choose the first-install file, then click Upload.

  4. Wait for the restart

    Wait for the countdown and restart, and keep the outlet powered. Don’t click “Reboot Form Backup Bank Now”. The first start creates the device identity, so it can take a little longer.

  5. Set it up

    When the CommandKit-Setup-XXXXXX hotspot appears, continue with chapter 3.

The first-install file is for factory outlets only. It resets the data area. If the outlet already runs this firmware, update it from the dashboard instead, or you’ll lose pairings, the admin password and the energy total. matter.ota and matter-8m-region.bin don’t work on the factory update page.

Factory web install guide (Chinese)
Method B

Flash programmer

The tool reads two full backups and compares them byte by byte, builds an image made for your outlet from that backup, then writes only the first-slot file system. If the chip, the backups or any check doesn’t match, it stops.

  1. Unplug and connect the programmer

    Unplug the outlet, open the case, clip onto the GD25Q64 (mind pin 1) and connect the CH341A.

  2. Read two backups
    python3 tools/flash.py backup --session private/read-01 \
      --mains-disconnected --voltage-3v3 --no-other-supply

    The three flags say you have checked that mains is disconnected, the voltage is 3.3 V and nothing else is powering the board. The tool cannot measure this for you. Backups go to private/read-01/; keep them safe.

  3. Build the image for this outlet
    python3 tools/flash.py prepare \
      --backup1 private/read-01/before-1.bin --backup2 private/read-01/before-2.bin \
      --release artifacts/releases/matter-8m-region.bin \
      --manifest artifacts/releases/matter-8m-region.json \
      --profile private/outlet-a --output private/matter-target.bin

    This step doesn’t touch the hardware. The --profile folder holds this outlet’s identity. Reuse it if you ever reinstall the same outlet, so its Matter code stays the same.

  4. Write the first slot only
    python3 tools/flash.py write \
      --image private/matter-target.bin --record private/matter-target.bin.json \
      --session private/write-01 \
      --mains-disconnected --voltage-3v3 --no-other-supply

    Only 0x130000–0x3BFFFF is written. The tool then reads the whole chip back and compares it. write_verified_not_boot_tested means the write was verified.

  5. Remove the programmer and close the case

    Take off the clip and every wire, put the case back together, then plug the outlet in.

If a check is unclear, don’t plug it in. Keep the session folders and the original backups; tools/flash.py restore brings back the original file system.

Full flashing & restore guide (Chinese)
CH3

First setup

Plug the outlet in. It opens a setup hotspot, and the LED blinks every half second while it waits.

  1. Join the setup hotspot

    On your phone, pick the Wi-Fi network CommandKit-Setup-XXXXXX. There is no password. It has no internet access, and that is normal.

  2. Open the setup page

    If it doesn’t pop up on its own, open http://192.168.1.254/ in your browser.

  3. Choose your home Wi-Fi

    Tap a 2.4 GHz network and enter its password, or type the name of a hidden network. 5 GHz and WPA3-only networks are not supported.

  4. Create an admin password

    At least 8 characters. You’ll use it to sign in to the dashboard. If you forget it, the only way back is a factory reset.

  5. Save the Matter code

    The page shows this outlet’s own QR code and 11-digit setup code. Take a photo. The code stays the same after restarts and updates.

CH4

Add to your home

The outlet uses Matter by default.

  1. Switch your phone back to home Wi-Fi

    The phone and the outlet need to be on the same network.

  2. Add an accessory in your home app

    Open Apple Home, Google Home or Home Assistant and choose “Add accessory” or “Add device”.

  3. Scan the QR code or type the code

    Use the QR code or 11-digit code you saved in chapter 3 and follow the app.

About “uncertified accessory” warnings: this firmware uses Matter development test certificates, so your home app may warn you. Each platform treats test devices differently; follow that platform’s official instructions.

Using HomeKit instead

Sign in to the dashboard, pick HomeKit on the Pairing tab and save; the outlet restarts. HomeKit uses the code on the outlet’s original label. In HomeKit mode the dashboard pauses live readings and kWh counting.

CH5

Everyday use & updates

WhatHow
Open the dashboardFind the outlet’s IP address in your router’s device list and open http://outlet-ip/. It forwards to :18082.
Guest viewAnyone on your network can see live power, voltage, current, energy and the firmware version without signing in.
AdminAfter signing in you can switch the outlet on or off from the overview (Matter mode), change LED settings, switch protocols, reopen pairing, and change Wi-Fi or the admin password.
Physical buttonA short press turns the outlet on or off. Holding it until the outlet restarts does a factory reset.

Online updates

  1. Open the dashboard

    It checks for new versions on its own. When one is out, the overview page says so.

  2. Sign in and open the Update tab

    Sign in as admin and tap “Download and update” (下載並更新).

  3. Wait for it to finish

    You’ll see download, upload and verify, install and restart. It takes about 1 to 4 minutes. Keep the outlet powered, then sign in again.

No internet? Download matter.ota on a computer and pick or drop it under “Manual update”. Normal updates keep the device identity, Wi-Fi, admin password, home pairings and energy total.

The update feed your outlet reads is this site’s updates/index.json. The outlet only installs packages that are correctly signed, for the right model, and newer than what it runs. It never downgrades.

Dashboard reference (Chinese)
CH6

Reset & restore

You want toDo thisWhat is erased
Pair againDashboard → Pairing → clear pairings for the current protocolThat protocol’s home pairings
Reset the energy totalDashboard → System → resetEnergy total
Forgot the password / start overHold the button until the outlet restarts, or Dashboard → System → factory resetAdmin password, Wi-Fi, both pairings, energy total
Go back to the original file systemRun tools/flash.py restore with the programmerThis firmware (restored from your backup)

A factory reset keeps the MAC address, radio calibration, original HomeKit data and this outlet’s Matter identity.

FAQ

Questions people ask

The setup hotspot keeps coming back

The outlet couldn’t join your Wi-Fi. Make sure you picked a 2.4 GHz network, typed the right password, and your router isn’t set to WPA3 only. Join CommandKit-Setup again and redo the setup.

I can’t find the outlet’s IP address

Look in your router’s connected devices or DHCP list. Reserving a fixed IP for the outlet makes the dashboard easier to reach later.

What if the power goes out during an update?

The updater writes the data first and restores the file-system marker last, then reads everything back. If the new version fails to start, the outlet keeps a recovery page where you can install a newer fix. If it can’t boot at all, you’ll need the programmer to restore it. This is not a full A/B automatic rollback.

Can I install without opening the outlet?

Yes, if it runs factory firmware 10219-1531 from Active Bank 2 with Dual Firmware enabled: use method A in chapter 2. Other versions need the programmer (method B).

Can I flash the 8 MiB BIN onto the whole chip?

No. matter-8m-region.bin is a partial image: only the first-slot file system has data and the rest is 0xFF. Use the tool to build it from your own backup and write only the allowed range.

Does any of my data go to the cloud?

No. Control and measurements stay on your home network. The only outside request is your browser reading the update feed from this site when you open the dashboard.

Is this official Incipio firmware?

No. This project has nothing to do with Incipio. It is research and preview firmware for outlets the author owns. Weigh the risks yourself.

Download

Download

If your outlet already runs this firmware, just update from the dashboard. These files are for manual updates and first installs.

Update package

v0.3.0-preview

matter.ota (2.6 MB) for outlets that already run this firmware. Upload it from the dashboard.

Download matter.ota

First-install files

first-install.bin for the factory web upload (method A), and matter-8m-region.bin/.json for the programmer (method B; personalize it, never flash the whole chip).

Source & docs

Full source, reverse-engineering notes, build steps and change log.

GitHub