3.6 KiB
LattePanda 3 Delta setup kit
For the Delta fleet: a LattePanda 3 Delta host, an onboard ATmega32U4
("Arduino Leonardo") driving two TMC5160 boards, yaw and pitch. Run through
scripts/install-tower, or ./install.sh --help on its own.
What is known, from tower 111 (surveyed 2026-09-23, read-only)
| OS | Ubuntu 22.04.5 LTS, kernel 6.8 |
| Motor MCU | /dev/serial/by-id/usb-Arduino_LLC_Arduino_Leonardo-if00, USB 2341:8036 |
| Camera | Alvium, USB 1ab2:0001, port 2-2 |
| Modem | Quectel RM520N-GL, four ttyUSB nodes |
| Serial / I2C | /dev/ttyS0..3, /dev/i2c-0..15; the ambient sensor is on /dev/i2c-2 |
| Packages | every entry in packages.txt already installed |
| Preconditions | NOT applied: usbfs_memory_mb 16, camera usb3_lpm_permit u1_u2 |
hardware.ini |
none - the tower has never been migrated |
Applied to tower 111, 2026-09-23 [partial]
Through scripts/install-tower, host half only: preconditions (usbfs 16 -> 1000,
camera LPM u1_u2 -> 0), hardware.ini (yaw + pitch, MTi, SHT41, standard
pins.ini, every drivetrain value ; TODO), config.ini keys that hardware.ini
now owns commented out, the missing night camera profile exported, the host
rebuilt on Ubuntu 22.04 (GCC 11) and restarted with --init --start. It homed and
resumed capturing. test hardware: axes, IMU, env and camera PASS; motor FAIL on
the old firmware's missing echoes, as expected. Firmware NOT flashed.
Firmware flashed on tower 111, 2026-09-24 [verified]
With the drivetrain converted from what the replaced firmware ran (see
docs/hardware-config-plan.md section 13) and 75 mOhm sense resistors read off
both boards. tools/flash.sh flashed it through the Leonardo's 1200-baud touch
unchanged. The new firmware asked, the host answered, test hardware passed
every leaf, and it homed to within 0.03 % of the old firmware's travel.
Rebooted 2026-09-24 over ssh: the boot service started it with --init --start,
it homed and resumed capturing within ~35 s, and install-tower --verify passed
every check, the USB preconditions included. The Leonardo was not reset by
that warm reboot - USB power stayed up, its uptime carried on - so the boot-time
config request was not exercised there; the host's re-send on connect covered it.
What this kit has NOT done yet
In particular:
pins.iniis not a traced loom. It carries the numbers the firmware ran on before pins moved intohardware.ini. Trace one Delta's wiring and replace it with a table the way the IOTA's was done.- Other Delta towers' drivetrains are not known. 111's values are 111's: converted from the firmware it ran, with its own boards' sense resistors. Do not copy them to another tower without reading that tower's boards and firmware revision the same way.
The legacy loom (pins-legacy.ini)
For the four legacy towers: yaw only, with a DHT11 (pin 9) and the enclosure fan
it runs (PWM 10, tach 11) on the Leonardo, and a second SPI device's chip select
(pin 2) held high. The pins are transcribed from the legacy firmware (a TMC-API
Arduino sketch); the yaw pins match the standard loom. Declare it with
env = dht11 and cooling = fan. The installer offers it as loom = legacy,
and keeps only the lines for what is declared. Not yet run on a real legacy
tower.
Migrating an existing Delta tower
Host first, firmware second (docs/hardware-config-plan.md section 13). The
installer's order already is: it writes hardware.ini, builds the host and runs
test hardware against the OLD firmware before any flash - and blocks the flash
while a drivetrain value is still a ; TODO.