From 48653800e08c358e519d9830d37f471db40087f0 Mon Sep 17 00:00:00 2001 From: Brandon Harvey <8107750+bharvey88@users.noreply.github.com> Date: Mon, 27 Jul 2026 13:31:25 -0500 Subject: [PATCH] Fix the M-1 setup hotspot details in step 3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Step 3 told users to join a WLED-AP network with password wled1234. That is stock WLED, not what our builds do. Both Apollo images broadcast an OPEN hotspot named after the product. Checked against the shipped firmware rather than WLED defaults: wled1234 does not appear in M-1_full_install.bin or in Apollo_M-1_Rev6_14.5.1.bin, while the sibling default wledota does appear in both, so apPass is empty. WLED-AP occurs once in each image, inside the unrelated "All Settings erased. Connect to WLED-AP to setup again" message, not as an SSID. The m1-b8 release notes say it outright: "STEP 1: join the open Apollo M-1 WiFi", plus "cleaner hotspot name: the setup WiFi is now just Apollo M-1 (no serial-number suffix)" as new in that build. 4.3.2.1 was correct and stays. Step 3 now names the open Apollo hotspot, notes that builds before 16.0.1 carry a serial-number suffix, and mentions the on-panel setup card and QR code that 16.0.1 shows. Tests assert the WLED copy contains neither wled1234 nor WLED-AP, so the stock-default wording cannot come back unnoticed. The evidence is written down in docs/m1-wled-migration.md. Verified: scripts/validate_registry.py OK, 44 python tests, 28 playwright tests, 0 skipped. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- docs/m1-wled-migration.md | 12 +++++++++++- js/views/device.js | 8 +++++--- tests/installer.spec.js | 11 +++++++---- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/docs/m1-wled-migration.md b/docs/m1-wled-migration.md index 94a70c5..6725296 100644 --- a/docs/m1-wled-migration.md +++ b/docs/m1-wled-migration.md @@ -15,7 +15,8 @@ guarantees a factory-fresh 64x64 boot. It is offered for Rev6 only, so Rev4 owne to the WLED-MM 14.5.1 (Rev4) variant. The M-1 entry sets `"platform": "wled"`, so step 3 of the wizard gives the WLED onboarding -(WLED-AP fallback, discovered WLED integration, WLED web UI for effects and manual OTA) instead +(open Apollo M-1 hotspot at 4.3.2.1, discovered WLED integration, WLED web UI for effects and +manual OTA) instead of the ESPHome Dashboard "Take control" flow. The hardware can run ESPHome, we just do not offer an ESPHome build yet. When we do, add that manifest as another variant and mark it in a `platforms` map (`"platforms": { "stable": { "": "esphome" } }`); step 3 then switches @@ -32,3 +33,12 @@ Hosting: WLED-MM-M1 serves the 14.5.1 manifests from committed files via legacy WLED-M1 serves the 16.0.1 manifest through an Actions Pages workflow (.github/workflows/apollo-pages.yml) that publishes manifest.json plus M-1_full_install.bin from the latest GitHub release, so the 16MB image never enters git history. + +## Setup hotspot (verified against the shipped images, not WLED defaults) + +Both the 16.0.1 and 14.5.1 Apollo builds broadcast an **open** hotspot, not the stock WLED +`WLED-AP` / `wled1234` pair. The string `wled1234` is absent from `M-1_full_install.bin` and from +`Apollo_M-1_Rev6_14.5.1.bin`, while the sibling default `wledota` is present in both, so `apPass` +is empty. The m1-b8 release notes state it directly: "STEP 1: join the open Apollo M-1 WiFi", and +list "cleaner hotspot name: the setup WiFi is now just Apollo M-1 (no serial-number suffix)" as new +in that build, which is why step 3 says older builds carry a suffix. Setup address is 4.3.2.1. diff --git a/js/views/device.js b/js/views/device.js index 9519033..090adcf 100644 --- a/js/views/device.js +++ b/js/views/device.js @@ -51,9 +51,11 @@ function platformFor(device, channel, variant) { function stepThreeHtml(device, platform) { if (platform === 'wled') { return ` -

If you did not set Wi-Fi during install, join the device's own - WLED-AP network (password wled1234) and pick your network - at 4.3.2.1. Once it is on your Wi-Fi, go to +

If you did not set Wi-Fi during install, join the open + Apollo ${device.name} Wi-Fi hotspot the device broadcasts (builds before + 16.0.1 add a serial-number suffix to the name), then open 4.3.2.1 in a + browser and pick your network. On 16.0.1 the panel itself shows a setup card with that + address and a QR code. Once it is on your Wi-Fi, go to Settings → Devices & services in Home Assistant, where it appears as a discovered WLED device. Click Configure, and you're done. ✓

diff --git a/tests/installer.spec.js b/tests/installer.spec.js index 5e9f145..a53459a 100644 --- a/tests/installer.spec.js +++ b/tests/installer.spec.js @@ -331,8 +331,11 @@ test('step 3 gives WLED instructions on a WLED device, not ESPHome ones', async await page.goto(`/#/${d.id}`); const done = page.locator('#step-done'); await expect(done).toContainText('discovered'); - await expect(done).toContainText('WLED-AP'); + await expect(done).toContainText('4.3.2.1'); await expect(done).toContainText('Manual OTA Update'); + // The Apollo builds ship an OPEN hotspot, not the stock WLED-AP/wled1234 pair. + await expect(done).not.toContainText('wled1234'); + await expect(done).not.toContainText('WLED-AP'); // The ESPHome adoption path does not exist on a WLED device. await expect(done).not.toContainText('ESPHome Dashboard'); await expect(done).not.toContainText('Take control'); @@ -356,15 +359,15 @@ test('step 3 follows a per-variant platform override', async ({ page }) => { await page.goto(`/#/${d.id}`); const done = page.locator('#step-done'); - await expect(done).toContainText('WLED-AP'); + await expect(done).toContainText('4.3.2.1'); await page.locator(`#variant-seg button[data-variant="${espVariant}"]`).click(); await expect(done).toContainText('ESPHome Dashboard'); - await expect(done).not.toContainText('WLED-AP'); + await expect(done).not.toContainText('4.3.2.1'); // And back, so the override is not a one-way trip. await page.locator(`#variant-seg button[data-variant="${wledVariant}"]`).click(); - await expect(done).toContainText('WLED-AP'); + await expect(done).toContainText('4.3.2.1'); }); function blobFromRaw(raw) {