New here? This is Part X3 — the final part of the OpenNeato series. Part X1 explained why Neato robots became “dumb” after Vorwerk shut down their cloud servers. Part X2 covered flashing the ESP32 firmware and configuring WiFi. This part was supposed to be about opening the Neato D3, finding the debug port, and wiring the ESP32 in. It didn’t go as planned.
What Was Supposed to Happen
The plan for Part X3 was straightforward:
- Open the D3 (4 Torx T10 screws on the bottom, plus 4 more hidden under the brush roll — requiring the bumper and brush to come out first)
- Locate the P32 debug port on the main board — a 4-pin test point header near the bottom edge, labeled clearly on the PCB
- Solder 4 wires from a JST XH cable to those test points (pinout: RX, 3.3V, TX, GND left to right when viewed from the connector side — or equivalently pins 1 through 4 when numbered from the square pad)
- Connect the other end to the ESP32-C3 (GPIO3 → RX, GPIO4 → TX, 3.3V → 3.3V, GND → GND)
- Power on the D3, watch the ESP32 light up from the robot’s own 3.3V, and open
http://neato.localto see a live dashboard
Steps 1 and 2 went perfectly. The D3 opened cleanly. P32 was found exactly where expected. The pinout was confirmed — a black wire already soldered to pin 4 on the board made it clear that pin 4 was GND, consistent with the OpenNeato documentation.
Then, while moving the open robot from the floor to the table for soldering, it slipped.
What Actually Happened
The D3 hit the floor. The main board — already partially detached from its mounting points with the case open — cracked clean in two.
That was the end of this particular D3.
For Anyone Still Following Along With an Intact Robot
If your D3 survived the teardown (and the trip to the workbench), Parts X1 and X2 are complete and correct — the firmware is flashed, WiFi is configured, and http://neato.local is already serving a dashboard. The remaining steps are:
Solder 4 wires to P32 (test points near the bottom edge of the main board):
P32 Pin 1 (RX) → JST wire → ESP32 GPIO 4
P32 Pin 2 (3.3V) → JST wire → ESP32 3.3V
P32 Pin 3 (TX) → JST wire → ESP32 GPIO 3
P32 Pin 4 (GND) → JST wire → ESP32 GND
Power on the D3. The ESP32 draws power from the robot’s 3.3V line — no USB connection to a laptop needed. The LED on the ESP32 should light up immediately.
Open http://neato.local on any device on the same WiFi. The dashboard should show live robot status, battery level, and controls.
One final reminder from the OpenNeato docs: GPIO pins are configurable after the fact via Settings → Device → UART Pins in the web UI — so if you wired to different pins out of convenience, you can update the settings to match rather than re-soldering.
What’s Next
The OpenNeato project remains a genuinely impressive piece of open-source work — full credit to renjfk on GitHub. For anyone with a D3 through D7 that lost its cloud connection, it’s worth the effort.
For this blog, we’re moving on. Phase 3 continues with the NEO-6M GPS module — a completely different kind of sensor, a completely different kind of project, and hopefully one that survives the trip to the workbench.
Next up: Part 22 — Outdoor Waypoint Logger with NEO-6M GPS.


