Device names: where each comes from, and how to change them

Every firmware a plug runs during a conversion has a name, used two ways:

Each firmware uses one name for both. This page lists every name, where each is set, and everything that has to change to rename them. It was written after the 2026-10 renaming, which took every name off the S60, so that another rename can be done in one pass.

The names

The examples are for a plug whose Wi-Fi MAC is 12:34:56:ab:cd:ef (made up): CDEF is the last two bytes, upper case; abcdef is the last three, lower case. Each plug works its own out, so no two plugs share a name.

When Firmware Name (hostname and own network) Where the name comes from
Before conversion Sonoff’s own espressif (no own network the tool uses) Sonoff; not changed
C2-D1 the installer (bridge 4.4.4) autoflash-recovery-CDEF compiled in, from the MAC at boot
D1-E interim (Berry) Tasmota autoflash-recovery-CDEF written into its settings by the installer, on the run’s behalf
E-F2 the startup firmware (Safeboot) autoflash-recovery-CDEF compiled in as a pattern; saved, written out, for what follows
F2-F4 official Tasmota autoflash-recovery-CDEF the name the startup firmware saved
after F4 official Tasmota, converted tasmota-abcdef given by F4 as its reset saves
L1-M1 the mover (ESPHome) autoflash-recovery-CDEF compiled in, written over ESPHome’s name at boot
after M1/I2 ESPHome, converted esphome-abcdef compiled in (ESPHome’s own MAC suffix)

The names an earlier release used are still recognised (see Old names), and so are the ones Tasmota gives itself where its settings are lost (see Tasmota’s own names).

Where each name is set

The installer (bridge)

The interim Tasmota (D1)

The startup firmware

Official Tasmota, and F4

The mover

ESPHome, converted

What the tool looks for

All in tools/autoflash_cli.py unless said:

Tasmota’s own names

Tasmota’s compiled default, %s-%04d - its MQTT topic (tasmota_ABCDEF, written tasmota-ABCDEF) and four decimal digits of the chip ID - gives tasmota-ABCDEF-1234. The plug has it only where its settings are gone: in a Tasmota whose settings were erased by switching it off and on 7 times, and while it tests the Wi-Fi it is given on its setup network after that. The setup network itself then has that name, and the tool looks for it.

For a moment as Tasmota turns its own network on, before it names it, the network goes out as ESP_ and the plug’s access-point MAC (the Wi-Fi MAC plus one: ESP_ABCDF0). Tasmota’s WifiManagerBegin() turns the access point on first (WifiSetMode(WIFI_AP_STA), which ends with delay(100)) and names it after (WiFi.softAP()), so for those 100 ms it beacons under ESP-IDF’s default name. Seen at nearly every Tasmota setup-network start in the emulator, in both builds we install (the 15.6.0 release: 4 starts of 5). Calling WiFi.softAP() first - which turns the access point on and names it at once - ends it: built from the same commit, 8 starts of 8 without the change went out as ESP_ABCDF0 first, none of 8 with it, and the setup page still worked. That is a change to Tasmota (#25169), so it reaches plugs only with a Tasmota release that has it. Until then a computer can list that name for a minute after, and the tool never takes it over the real one (find_ssid()).

Old names

A plug a run of an older checkout left part way through goes by the name it had then, so the tool still looks for every one: Sonoff-Setup-XXXX (the installer 4.4.3, the mover 1.0.0 and ESPHome 1.1.0’s own networks), S60-OTA-Bridge-XXXX with the password s60-ota-bridge (installers before 4.4.3), s60-ota-bridge and sonoff-s60-mover-xxxxxx (hostnames), sonoff-s60-xxxxxx (ESPHome 1.1.0), the “S60 OTA Bridge” page, the S60-IMPRINT- placeholders and the s60_wifi action. Renaming again, add today’s names to these lists rather than replacing them.

Renaming: the checklist

  1. Change the name where it is made (above): the installer, the mover, the startup firmware, the final ESPHome, and the tool’s constants for the interim Tasmota and F4. Keep the mover’s compiled name the length of the new interim name; keep every name within Tasmota’s 32 characters and ESPHome’s lower-case rule.
  2. Add the old names to the lists in Old names, in the tool.
  3. Rebuild every firmware whose name changed, each as a new version, and publish each artifact: the file in artifacts/, its line in SHA256SUMS, its row in artifacts/README.md, the path, SHA-256 and size where the tool pins it (BRIDGE_OTA, esphome.IMAGE, CONTROL_FILES in flash_readout.py), and THIRD_PARTY_NOTICES.md.
  4. Update the tests that name them: tests/test_setup_networks.py, tests/test_published_artifacts.py, tests/test_tasmota_settings.py, tests/test_autoflash.py, tests/test_flash_readout.py.
  5. Update the pages that name them: troubleshooting.md (“The plug’s own network”), what-happens.md, technical-details.md, the ESPHome and installer READMEs, and the changelog.
  6. Test every name in the emulator, as testing.md says: each firmware’s hostname is in the emulator’s DHCP log (/run/autoflash-emu/dnsmasq.log in the container), the network it raises in /run/autoflash-emu/softap, and every network that went out in the plug’s serial log (WIFIAP: guest SoftAP <name> up). Run every route from stock and between the firmwares, and the routes through each firmware’s own network (the fault suite’s fallback scenarios). Run one plug with another MAC too, so a name made from the MAC is seen to follow it: a copy of a backed-up plug under captures/plugs/<mac>/ with the new MAC in efuse.bin (bytes 0x18-0x1D, in reverse order) and test_copy_of in its plug.json.