GitHub

Fox Red Labs / Builds / Tools and languages

Configure a TI radio chip with an ESPHome YAML

Add a TI platform to an ESPHome YAML, run esphome compile and esphome upload, and a development kit joins Home Assistant: Zigbee on the CC2755P10 and CC2340R5.

HardNo wiring

Parts and steps

Your board

You need

  1. Make a Python 3.12 virtual environment and install ESPHome 2026.9.1 into it.TERMINAL

    The cbor2<6 pin is needed on an Intel Mac, where cbor2 6 has no wheel and wants a Rust compiler.

    python3.12 -m venv venv && ./venv/bin/pip install "cbor2<6" esphome==2026.9.1

    You should see: pip finishes in about 26 s and the environment holds 222 MB.

  2. Install TI's tools once, about 8 GB in all: the SimpleLink Low Power F3 SDK 9.21.00.36, TI Arm Clang 5.1.1.LTS (it comes with CCStudio 21.0.1), SysConfig 1.26.3 and UniFlash 9.6.0.INSTALLER

    The downloads need a free myTI login. The platform looks under /Applications/ti, ~/ti and /opt/ti.

    You should see: The four folders sit under /Applications/ti.

  3. Copy the components/ folder and frl-cc27xx.yaml from ports/esphome-ti into one empty folder, and run the remaining steps there.TERMINAL

    Set probe_serial: in the YAML to your debug probe's serial number, or leave it out and pass --device <your-probe-serial> to upload. /Applications/ti/ccs2101/ccs/ccs_base/common/uscif/xds110/xdsdfu -e prints the serial.

    Replace <repository folder> before you run this.

    cp -R <repository folder>/ports/esphome-ti/components <repository folder>/ports/esphome-ti/frl-cc27xx.yaml .

    You should see: The folder holds components/ and frl-cc27xx.yaml.

  4. Build the firmware.TERMINAL

    The YAML adds the cc27xx platform with external_components.

    ./venv/bin/esphome compile frl-cc27xx.yaml

    You should see: The build ends without errors in 35 s cold, 27 s warm. The image is 262.7 kB of flash and 37.6 kB of RAM (124.4 kB free).

  5. Open the join window before you flash: Settings, Devices, Zigbee Home Automation, Add device.BROWSER

    It stays open for 4 minutes.

    You should see: Home Assistant shows that it is searching for devices.

  6. Flash the board.TERMINAL

    Plug in the debug probe first; leave --device out only when probe_serial: is set in the YAML.

    Replace <your-probe-serial> before you run this.

    ./venv/bin/esphome upload frl-cc27xx.yaml --device <your-probe-serial>

    You should see: The upload takes about 15 s. The device appears in Home Assistant 5 to 6 s after the flash, with an LED switch and a chip temperature sensor.

  7. Switch the LED entity on and off from its card.BROWSER

    You should see: The red LED (DIO16) switches on and off; the state settles in a median of 85 to 92.5 ms (32 of 32 commands).

Or hand it to a coding assistant

Paste this in a terminal. It hands off to an AI assistant.

git clone --depth 1 --filter=blob:none https://github.com/Fox-Red-Labs/fox-red-labs.git && cd fox-red-labs ./start.sh cc2755p10 esphome --assistant claude

It runs the steps above and reports what it saw.

Not Claude Code? Copy this prompt instead.
Clone https://github.com/Fox-Red-Labs/fox-red-labs and read AGENTS.md first. Then run Configure a TI radio chip with ESPHome on my LP-EM-CC2755P10, following docs/builds/esphome.md. Tell me when to plug in a board and what you saw at each step.

If something goes wrong

Pip stops asking for a Rust compilerThe cbor2<6 pin is missing.
A build later stops with TI F3 SDK not found (or Arm ClangSysConfig, DSLite), install that tool, or point to it with ESPHOME_TI_F3_SDK, ESPHOME_TI_CGT, ESPHOME_TI_SYSCONFIG or ESPHOME_TI_DSLITE.
ESPHome later says Cannot upload Over the Air as the ota configuration is not presentRun upload from the folder that holds components/, with ESPHome 2026.9.1.
It stops with TI F3 SDK not found (or Arm ClangSysConfig, DSLite), a tool is missing: see step 2.
The window closes before the board is flashedOpen it again and reset the board.
More troubleshooting
A second flash never rejoins while the old device is still listed in Home AssistantRemove the device from ZHA first and flash again (cause unknown).
DSLite reports Error -2001 or Debug is not allowedRead cc2755p10/FAQ.md before any chip erase.
The device does not appearThe 4-minute join window may have closed: open it again and reset the board.

Every fix for this board: the FAQ.

What to build next

Every build. The code for all of them is in the GitHub repository.

Evidence and limitsESPHome YAML builds and flashes with esphome compile and esphome upload on three TI radio boards, through the repository's cc27xx, cc23xx and cc35xx platforms. It does Zigbee into Home Assistant on the CC2755P10 and CC2340R5, and Wi-Fi with the native API on the CC35X1. Ran on 3 boards. Results, sources, timing and limits.

ESPHome Zigbee router on the LP-EM-CC2755P10

Expected result: A Zigbee router built by esphome compile and flashed by esphome upload appears in Home Assistant's ZHA 5 to 6 s after the flash with an LED switch and a chip temperature sensor, and the red LED follows the switch. From a repeat compile (27 s) to a joined device took about a minute.

What this shows

  • ESPHome 2026.9.1's own compile and upload commands build and flash a TI chip through the cc27xx platform in this repository; no ESPHome file was changed.
  • The device joins Home Assistant and its LED switch worked 32 of 32 times, with a median of 85 to 92.5 ms from command to settled state.
  • The image is 262.7 kB of flash and 37.6 kB of RAM, with 124.4 kB of RAM free.
What this does not establish, and limits

What this does not establish

  • That it works on Windows or Linux, or with another ESPHome, SDK or compiler version: only the versions in step 1 and 2 were built, on macOS.
  • That the device is stable over days: there was no long soak test.
  • That every ESPHome component works: only the Zigbee switch and a chip temperature sensor were exercised.

Limits to keep in mind

  • A second flash with the old device still listed in Home Assistant never rejoined; removing the device first fixed it (cause unknown).
  • esphome logs has nothing to read: the platform has no logging.
  • Pins are written as DIO numbers; only the LEDs are mapped (red DIO16, green DIO12).

Sources

Versions, sizes and timing

ESPHome2026.9.1 in a Python 3.12 virtual environment, cbor2<6 on an Intel MacREADME notes
TI toolsSimpleLink Low Power F3 SDK 9.21.00.36, TI Arm Clang 5.1.1.LTS, SysConfig 1.26.3, UniFlash 9.6.0README notes
Image262.7 kB of flash, 37.6 kB of RAM, 124.4 kB RAM free (router)ESPHome CC27xx platform notes
Build time35 s cold, 27 s warm (median of three, Mac busy)ESPHome CC27xx platform notes
Flash time15 s (14.6 to 16.1 s)ESPHome CC27xx platform notes
Join5.7 s after the first flash, 6.3 s after the thirdESPHome CC27xx platform notes
LED switch32 of 32 commands, median 85.0 to 92.5 msESPHome CC27xx platform notes

Evidence

  • 2026-10-13, clean virtual environment with ESPHome 2026.9.1 and TI's four tools: esphome compile built the CC2755P10 image in 35 s cold (median of three, 34 to 40) and 27 s warm. ESPHome CC27xx platform notes
  • esphome upload flashed it in 15 s (14.6 to 16.1 s over three flashes); Home Assistant listed the entities 5.7 s after the first flash and 6.3 s after the third. The second flash did not rejoin while the old device was still listed. ESPHome CC27xx platform notes
  • The LED switched 32 of 32 times from Home Assistant, state settled at a median of 85.0 to 92.5 ms; the LED pin DIO16 was read from the chip after each group and matched.
  • The board's flash, CCFG and SCFG were backed up twice before the first write and read back identical after the restore.

Other boards

What the status words mean

Works ran here and did what it shouldCould work some of it ran; real porting effort is left; hover for whatNot for this chip the chip or its vendor software cannot; hover for why

ESPHome Zigbee end device on the LP-EM-CC2340R5

Expected result: An end device built by esphome compile and flashed by esphome upload appears in Home Assistant's ZHA 7 to 19 s after the flash with an LED switch and a chip temperature sensor, and the red LED follows the switch.

What this shows

  • The cc23xx platform builds and flashes a CC2340R5, a chip with 36 kB of RAM, from ESPHome's own commands.
  • As an end device with its receiver on it joined 7 to 19 s after the flash and answered 93 of 100 commands over five runs, 20 of 20 in the last.
  • The image is 219.9 kB of flash and 32.0 kB of RAM, with 4.0 kB of RAM free.
What this does not establish, and limits

What this does not establish

  • That the router form is comfortable: it needs heap_size: 0x23BC and then has no heap left over (it ran 50 of 50 commands in a 7-minute run).
  • That a sleepy end device is usable: with TI's default sleep a command took 2 to 3 s and some failed.
  • That it works on Windows or Linux, or with other tool versions.

Limits to keep in mind

  • 4.0 kB of RAM is free on the end device; a larger YAML may not link.
  • The chip temperature sensor reads about 10 C below the room (cause not found).
  • Pins are written as DIO numbers; only the LEDs are mapped (red DIO14, green DIO15).

Sources

Versions, sizes and timing

ESPHome2026.9.1 in a Python 3.12 virtual environment, cbor2<6 on an Intel MacREADME notes
TI toolsSimpleLink Low Power F3 SDK 9.21.00.36, TI Arm Clang 5.1.1.LTS, SysConfig 1.26.3, UniFlash 9.6.0README notes
Image219.9 kB of flash, 32.0 kB of RAM, 4.0 kB RAM free (end device)ESPHome CC27xx platform notes
Build time31 s coldESPHome CC27xx platform notes
Flash time13.7 to 16.7 sESPHome CC27xx platform notes
Join7 to 19 s after the flashESPHome CC27xx platform notes
Commands93 of 100 over five runs, 20 of 20 in the lastESPHome CC27xx platform notes

Evidence

  • 2026-10-13, the same clean setup: the CC2340R5 end device builds in 31 s cold; esphome upload took 16.7, 13.7 and 15.1 s. ESPHome CC27xx platform notes
  • As an end device with its receiver kept on it joined Home Assistant 7 to 19 s after the flash and answered 93 of 100 commands over five runs, 20 of 20 in the last. ESPHome CC27xx platform notes

Other boards

What the status words mean

Works ran here and did what it shouldCould work some of it ran; real porting effort is left; hover for whatNot for this chip the chip or its vendor software cannot; hover for why

ESPHome Wi-Fi device on the LP-EM-CC35X1

Expected result: The board prints ESPHome's log on its serial port, joins your Wi-Fi about 5 s after a reset and serves ESPHome's native API on port 6053. Adding it to Home Assistant's ESPHome integration has not been run.

What this shows

  • ESPHome 2026.9.1's own compile and upload commands build and flash a CC3551E through the cc35xx platform in this repository.
  • The board joined Wi-Fi in 5.3 to 5.7 s after a reset and an API client on the board confirmed 20 of 20 switch commands.
  • Over a 24-hour soak 5,616 of 5,620 commands were confirmed and the board never restarted.
What this does not establish, and limits

What this does not establish

  • That Home Assistant adopts the device: the test network isolates its clients, so port 6053 was not reachable from Home Assistant.
  • That the API is secure: it runs without encryption until TI's random-number driver is wired in.
  • That it survives a power cycle with its settings: preferences do not persist.

Limits to keep in mind

  • The API runs without encryption, settings do not survive a reset, the network name and password are built into the image, and there are no over-the-air updates.

Sources

Versions, sizes and timing

Image1.2 MB of flash used; 74.0 kB main RAM and 86.7 kB TCM free after the linkESPHome CC35xx platform notes
Build time55.7 s cold, 23.3 s warmESPHome CC35xx platform notes
Reset to address5.3 s median of two clean joinsESPHome CC35xx platform notes
Switch command, on the board120 ms median, 20 of 20 confirmedESPHome CC35xx platform notes
Free heap139.7 kB running, 135.7 kB lowest in the 24-hour soak

Evidence

  • 2026-10-13: esphome compile built the CC3551E image in 55.7 s cold and 23.3 s warm; esphome upload took 60 s (a full flash erase, then the signed image). ESPHome CC35xx platform notes
  • The board joined Wi-Fi 5.3 s and 5.7 s after a reset on two clean joins, logged through ESPHome's logger on its serial port, and announced itself over mDNS. ESPHome CC35xx platform notes
  • An API client on the board itself got 20 of 20 switch commands confirmed, median 120 ms. A 24-hour soak confirmed 5,616 of 5,620 commands.

Other boards

What the status words mean

Works ran here and did what it shouldCould work some of it ran; real porting effort is left; hover for whatNot for this chip the chip or its vendor software cannot; hover for why

Result grid

Project
LP-MSPM0G3507MSPM0G3507 chip
LP-MSPM0L1306MSPM0L1306 chip
LP-EM-CC2340R5CC2340R52 chip
LAUNCHXL-F2800137TMS320F2800137 chip
Configure a TI radio chip with ESPHome
LP-MSPM0G3507Not for this chipNo radio
LP-MSPM0L1306Not for this chipNo radio
LP-EM-CC2340R5WorksZigbee end device joins Home Assistant (ZHA) 7 to 19 s after esphome upload;
Details93 of 100 commands over five runs, 20 of 20 in the last
Experiment write-up
LAUNCHXL-F2800137Not for this chipNo radio on this chip

Works ran here and did what it shouldShould work it builds; only naming, packaging or build glue is in the way; hover for whichCould work some of it ran; real porting effort is left; hover for whatNot for this chip the chip or its vendor software cannot; hover for why

Experiments (7)

StatusWhat was triedResult
Could workWhat does a minimal ESPHome device cost on the ESP32-C6-DevKitC-1?
ESP32-C6-DevKitC-1, 2026-10-11
The smallest useful ESPHome device on the ESP32-C6 is 816 kB of flash and 138 kB of static RAM, with 305 kB of heap free at boot. The Wi-Fi-only image found no network in four boots, and the update over the air...
WorksDoes ESPHome's Zigbee end device work on the ESP32-C6 and what does it cost?
ESP32-C6-DevKitC-1, 2026-10-11
ESPHome's Zigbee end device on the ESP32-C6 joined ZHA 5.8 s after boot, and 31 of 31 counter reports reached Home Assistant in order. The image is 492 kB of flash and 83 kB of static RAM. It offers no switch to...
Could workCan an ESPHome device on Thread reach Home Assistant through the Apple TV?
ESP32-C6-DevKitC-1, 2026-10-11
An ESPHome device on the ESP32-C6 joined the house Thread network within 1.2 s of reset and answered 20 of 20 pings from the MacBook. The Mac that runs Home Assistant has no route to the Thread network, and adding one...
WorksDoes ESPHome's Zigbee device run on the TI LP-EM-CC2755P10, and what does it leave free?
CC2755P10, 2026-10-13
ESPHome's Zigbee router, with a switch and a temperature sensor, built for the CC2755P10 joined the house ZHA network within 8 s of the flash. It switched the LED 20 of 20 times at a median of 87 ms, and the LED pin...
WorksDoes ESPHome's Zigbee code fit on the TI LP-EM-CC2340R5's 36 kB of RAM?
CC2340R5, 2026-10-13
As an end device the Zigbee code fits the CC2340R5: 32.0 kB of its 36 kB of RAM and 219.9 kB of flash, with 4.0 kB left. As a router it needs the FreeRTOS heap cut by 2 kB, and then no heap is left.
WorksCan ESPHome's own commands build and flash the LP-EM-CC2755P10 and LP-EM-CC2340R5?
CC2755P10, 2026-10-13
Add cc27xx to an ESPHome YAML, run esphome compile in 35 s cold and 27 s warm, and esphome upload in 15 s. The CC2755P10 then joins Home Assistant's Zigbee network 5.7 s (first flash) and 6.3 s (third flash)...
Can ESPHome's own commands build and flash the LP-EM-CC35X1 as a Wi-Fi device?
CC35X1, 2026-10-13
ESPHome builds, flashes and runs on the CC35X1 through an external platform cc35xx. esphome compile takes 56 s cold and 23 s warm, and esphome upload takes 60 s with a full erase. The board joins Wi-Fi 5.3 s...

Source files

Code brought from elsewhere

This project uses code that was written for other chips or tools. Each links to how to get it running.

Start with your code, and the prompt to port your own

Get the code and tell us how it wentThe clone command, the board folder with its AGENTS.md, reports from others, and the three report forms.

Get the code

Clone the repository and open the board's folder below. AGENTS.md is a plain text file of notes for AI coding assistants, and llms.txt at the root indexes the site for one.

git clone https://github.com/Fox-Red-Labs/fox-red-labs.git

Code is BSD-3-Clause, writing is CC BY 4.0; third-party folders keep their own licenses.

Built it? Tell us

Built this, or got stuck? Report it on GitHub with a few short answers. Your report shows here in your words, marked as yours. A failure that repeats on the bench gets its fix here.