# KodeDot FTP Explorer — Agent Memory ## Project Overview FTP server for Kode Dot (ESP32-S3) that serves the microSD card over Wi-Fi. Reads Wi-Fi credentials from `SD:/Wi-Fi.json`, syncs time via NTP (Vienna), displays status on AMOLED via LVGL. ## Hardware | Feature | Detail | |---------|--------| | MCU | ESP32-S3, 240 MHz dual-core, 32 MB flash, 8 MB PSRAM | | Display | AMOLED 2.13" 410x502 (CO5300 QSPI + CST820 I2C touch) | | SD Card | SDMMC 1-bit: CMD=GPIO5, CLK=GPIO6, D0=GPIO7, CD=EXP14 | | IO Exp | TCA9555 @ 0x20 (buttons, SD detect, interrupts) | | LED | NeoPixel GPIO4 (1 LED, GRB 800 kHz) | | Partition | App at 0x400000 (8 MB). KodeOS bootloader below — DO NOT TOUCH | | Port | COM10 | ## Key APIs - `DisplayManager` — `init()`, `update()`, `setBrightness()`, `getTouchCoordinates()` - `SD_MMC` — `setPins(clk=6, cmd=5, d0=7)`, `begin("/sdcard", 1)` (1-bit mode) - `SimpleFTPServer` — `FtpServer ftpSrv; ftpSrv.begin("user","pass"); ftpSrv.handleFTP();` - `ArduinoJson` — parse `[{"ssid":"...","pass":"..."}]` from SD - NTP — `configTzTime("CET-1CEST,M3.5.0,M10.5.0/3", "pool.ntp.org")` ## Build Notes - Build flag `-DDEFAULT_STORAGE_TYPE_ESP32=STORAGE_SD_MMC` overrides FtpServerKey.h - Flash: `esptool --chip esp32s3 ... write-flash 0x400000 ` (preserves bootloader) - Upload speed: 460800 baud ## Git Remote - Host: git.lago.dev - Repo: KodeDot-FTP-Explorer - Auth: service key token ## Findings & Notes - SimpleFTPServer v3.0.2 supports SD_MMC on ESP32, passive mode, single session - SFTP not feasible on ESP32 (crypto overhead too high) - Vienna timezone string: `CET-1CEST,M3.5.0,M10.5.0/3` - FTP credentials: `kode`/`kode` - SD card uses `SD_MMC.begin("/sdcard", 1)` — the `1` means 1-bit bus width - LVGL v8.3.x API (not v9) — uses `lv_disp_drv_t`, `lv_label_create`, etc. ## Status - [ ] Phase 1: Project setup & git - [ ] Phase 2: Backend (Wi-Fi + SD + FTP + NTP) - [ ] Phase 3: Frontend (LVGL UI) - [ ] Phase 4: Integration & polish