-
Notifications
You must be signed in to change notification settings - Fork 3
Network
Путь в меню: Network (+ файловый браузер по F5) · Платы: только RP2350 (RP2040 не поддерживается) · Требует: модуль ESP-01S (ESP8266) со стоковой AT-прошивкой + SD-карта
Сетевые возможности через модуль ESP-01S, подключённый либо напрямую к паре GPIO-пинов UART, либо через USB-serial переходник (CH340 и подобные) в порт USB-host — см. Транспорт. ESP работает на стоковой AT-прошивке Espressif — перепрошивать его не нужно. На стороне RP2350 реализованы:
-
ZiFi NIC — сетевой интерфейс для ZX-Spectrum-софта (порт
#EF, окно 16550-UART). Совместим с терминалом/драйверами MRF (см. Софт). - WiFi — подключение к точке доступа (скан, пароль). Данные сохраняются и при следующей загрузке переподключение идёт автоматически.
- Синхронизация времени по SNTP → встроенные часы (RTC / Mr Gluk TimeKeeper) — выполняется автоматически сразу после подключения к WiFi и на буте, либо вручную. Нужен включённый RTC (Options → Other → RTC + NVRAM). День недели в часах теперь соответствует российскому/европейскому формату (неделя начинается с понедельника).
- FTP-сервер — расшаривание SD-карты в локальную сеть. ПК подключается к устройству, просматривает SD и заливает/скачивает файлы. Живой лог-терминал показывает активность; эмуляция на паузе, пока не нажмёшь ESC. Анонимно, только активный режим.
- HTTP test (curl) — диагностический разовый HTTPS/HTTP-GET (статус, размер, превью тела, свободная куча до/после) — чтобы проверить TLS-через-ESP на железе.
Доступ к файлам — просмотр удалённых серверов (FTP / SFTP) и онлайн-архивов больше не находится в меню Network: он открывается из файлового браузера по F5 в виде выбора источника (Local / Remote / Web Archives / Add Remote) — в том же окне «Open File», что и SD-карта. См. Доступ к файлам — браузер F5.
Network
├── ESP-01(S) ▸
│ ├── Transport ▸ Off / USB (CH340) / пара пинов UART (TX/RX)
│ ├── Baud ▸ 115200 / 230400 / 460800 / 921600
│ ├── Time zone ▸ UTC−12 … UTC+14
│ └── Sync time (SNTP) разовая синхронизация часов
├── WiFi <статус> подключиться / отключиться (показывает SSID + IP)
├── FTP Server ▸ расшаривание SD-карты в локальную сеть (см. ниже)
├── HTTP test (curl) ▸ разовый HTTPS-GET для диагностики (см. ниже)
└── ZiFi NIC ▸ Off / On — включение сетевого интерфейса
File transfer (FTP/SFTP) и онлайн-архивы раньше были пунктами меню Network; теперь они переехали в выбор источника по F5. Здесь остались только сервер и диагностика.
| Пункт | Значения | По умолчанию | Описание |
|---|---|---|---|
| ESP-01 › Transport | Off / USB (CH340) / пары TX/RX платы | GPIO-пара платы | Как подключён ESP: пара GPIO UART или USB-serial переходник. Конфликтные GPIO-пары помечены (например off: NESPAD); выбор конфликтной пары — или переключение в/из USB — запрашивает перезагрузку |
| ESP-01 › Baud | 115200 / 230400 / 460800 / 921600 | 115200 | Скорость линка. Выше = быстрее передача (~8× на 921600). Меняется на лету через AT+UART_CUR
|
| ESP-01 › Time zone | UTC−12 … UTC+14 | UTC+0 | Часовой пояс для SNTP |
| ESP-01 › Sync time | — | — | Синхронизация SNTP по запросу (нужен WiFi + включённый RTC). Также авто при коннекте/буте |
| WiFi | — | — | Не подключён → скан и пароль → коннект (+ авто-синк времени); подключён → показ SSID/IP, отключение |
| FTP Server | — | — | Расшаривает SD-карту в локальную сеть по FTP (анонимно, активный режим). Эмуляция на паузе; ESC останавливает |
| HTTP test (curl) | — | — | Разовый GET (схема https/http + хост + путь); показывает статус/размер/превью/кучу. Нужен WiFi |
| ZiFi NIC | Off / On | Off | Включает сетевой интерфейс. Хранится в NVS |
О скорости: 921600 даёт максимум, но без аппаратного flow control (ESP-01S не выводит RTS/CTS) на плохих проводах возможны единичные сбои байта — у SFTP это видно как
MAC mismatchи разрыв сессии (FTP такое не заметит). Если ловишь сбои — выбери 460800 или ниже.
Пока включён ZiFi NIC и Z80 работает, линк держит безопасные 230400 независимо от настройки Baud; передачи файлов (FTP/SFTP/HTTPS), которые ставят эмуляцию на паузу, временно разгоняются до настроенной скорости.
Пикер Transport (подменю ESP-01(S)) выбирает способ подключения ESP-01:
-
GPIO-пара — классическое подключение 4 проводами, описанное в разделе
Схема подключения ESP-01S. Пары, отбирающие пины у другой
периферии, помечены в списке (например
off: NESPAD); приоритет у ZiFi — на буте вытесненная периферия пропускает свою инициализацию, поэтому конфликтный выбор просит перезагрузку. - USB (CH340) — воткни ESP-01 в USB-serial адаптер (обычные донглы «ESP-01 USB programmer»: CH340, CP2102, FTDI), а его — в порт USB-host платы. Без пайки и без расхода GPIO. Строка есть только в сборках с поддержкой USB-host (тех же, что принимают USB-клавиатуры).
- Off — линк полностью выключен.
Замечания по USB-транспорту:
- Работает всё то же, что и по GPIO: WiFi, SNTP, ZiFi NIC (MRF и т.п.), передачи FTP/SFTP/HTTPS и FTP-сервер.
- Скорости: при живом NIC линк работает на 230400, как и по GPIO; разгон для передач проверен на железе на 460800, выше — зависит от потолка самого чипа переходника по непрерывному приёму (обычно ограничивает CH340).
- Донгл делит USB-шину с клавиатурами/геймпадами/флешками через хаб.
- Переключение между USB и GPIO запрашивает перезагрузку, чтобы вытесненная периферия отдала/забрала свои пины.
Когда WiFi настроен (или вставлена USB-флешка), нажатие F5 (Load file) сначала открывает выбор источника в том же окне «Open File», что и браузер SD:
Open from
├── Local (SD) SD-карта (обычный файловый браузер)
├── USB Drive USB-флешка (строка появляется, пока флешка вставлена)
├── Remote (FTP/SFTP) сохранённые подключения
├── Web Archives онлайн-каталоги ZX-образов по HTTPS
└── Add Remote добавить новое подключение FTP/SFTP
Сетевым строкам нужен WiFi; строке USB Drive достаточно флешки (см. Storage → USB-флешка).
Тумблер ZiFi NIC независим — доступ к файлам работает и при включённом, и при выключенном NIC, нужно лишь активное WiFi. F5 открывается там, где ты остановился: последний источник и папка (Local, сохранённый remote или источник Web Archives) запоминаются между сеансами.
И удалённый, и архивный просмотр используют один RAM-ограниченный файловый браузер (индекс листинга хранится на SD, как у браузера SD-карты):
| Клавиша | Действие |
|---|---|
| ↑ ↓ / PgUp PgDn / Home End | навигация |
| Enter (на папке/категории) | войти в каталог |
| Enter (на файле) |
быстрый запуск — скачать в RAM (/tmp) и сразу запустить/смонтировать (лента/снимок → загрузка; диск .trd/.scl/… → монтируется в дисковод A и холодный старт TR-DOS; .zip → распаковка, затем запуск). После успеха OSD закрывается |
| F5 | сохранить файл (с настоящим именем) или папку (рекурсивно) в выбранную папку на SD |
| F7 | залить файл с SD в текущий удалённый каталог (только Remote) |
| F8 / Del | удалить удалённый файл/папку, с подтверждением (только Remote) |
| F2 | принудительно перечитать текущий каталог (обновить кэш) |
.. / Backspace |
на уровень вверх |
| Esc | закрыть браузер / OSD |
💡 Enter = запустить, F5 = сохранить. Enter — быстрый путь «просто запустить» (фиксированное имя в
/tmp, перезаписывается каждый раз); F5 — когда нужно оставить файл на SD-карте под его настоящим именем.
Вместо повторного ввода сервера каждый раз подключения сохраняются и показываются списком:
- В списке для каждого подключения показывается его алиас (если задан) или
user@host:port (ftp/sftp). Enter подключает (спросит пароль, если он не сохранён); при коннекте браузер сразуcdв сохранённый стартовый путь. F8 забывает подключение. Последняя строка[Add Remote]открывает форму. - Для SFTP при первом подключении показывается отпечаток ключа хоста (SHA-256) —
доверие сохраняется в
known_hostsна SD (TOFU); при смене ключа подключение блокируется (защита от MITM). - SSH/SFTP-крипта (curve25519, AES-CTR, HMAC-SHA256) считается на RP2350 через mbedTLS; ESP служит TCP-мостом.
Add Remote (из выбора источника или строки [Add Remote]) спрашивает по порядку:
протокол (FTP / SFTP) → хост → порт (по умолчанию 21 FTP / 22 SFTP) →
пользователь → пароль (звёздочками; TAB показывает) → сохранить пароль?
(Да/Нет) → необязательный стартовый путь → необязательный алиас (отображаемое имя).
Подключения хранятся в remotes.tsv на SD; пароль пишется только если выбрано его
сохранить (иначе спрашивается при подключении). До 16 подключений.
Просмотр и скачивание дисковых/ленточных образов ZX-Spectrum из интернет-каталогов
(сейчас — Virtual TR-DOS, Spectrum Computing, ZX-Art, картриджи ALF и
другие; список источников тянется из sites.tsv каталога). Выбор источника → браузер
категорий → файлы, затем Enter для быстрого запуска или F5 для сохранения на SD
(только чтение: без заливки/удаления). Источник картриджи ALF позволяет просматривать
и скачивать образы картриджей ALF по HTTPS и запускать их так же, как остальное содержимое
архивов (картридж монтируется с SD и стримится с карты — во флеш ничего не прошивается).
Как устроено «под капотом»:
- Каталог статический и бессерверный — отдельный GitHub-Action периодически
обходит сайты-источники и публикует дерево индексов (
.tsv) на GitHub Pages (https://drewpo28.github.io/pico-spec-catalog). Устройство читает только эти индексы — никакого постоянного сервера. -
HTTPS считает сам RP2350: TLS 1.2 через mbedTLS, ESP-01 — простой TCP-мост
(та же схема «крипта на хосте / тупой ESP», что и у SSH). Сертификат проверяется
по
cacert.pemна SD (нет файла → без проверки + предупреждение). - Кириллические названия выводятся отдельным шрифтовым начертанием.
💡 Связано: TR-DOS Auto-boot (Storage → Betadisk) дописывает
bootв скачанные диски без автозапуска, чтобы они стартовали сами.
Обратное к удалённой передаче файлов: устройство становится FTP-сервером и расшаривает всю SD-карту в локальную сеть — ПК может её просматривать и заливать/скачивать файлы. Нужно активное WiFi-соединение.
Network → FTP Server запускает сервер на порту 21 и открывает живой
лог-терминал с деталями подключения (ftp://<ip>:21, пользователь anonymous) и
каждой командой/ответом. Эмуляция ZX-Spectrum при этом на паузе; нажми ESC,
чтобы остановить сервер и продолжить.
-
Анонимно — принимается любой логин/пароль (например,
anonymousс пустым паролем). Полный доступ к SD на чтение и запись. - Только активный режим. Прошивка ESP-AT даёт лишь один слушающий порт, поэтому data-соединение открывается исходящим к клиенту. Настрой FTP-клиент на активный (не пассивный) режим. В локальной сети работает сразу; за NAT/файрволом может не пройти.
-
Один клиент за раз. Только бинарная передача (
TYPE I). - Поддерживаемые команды: листинг (
LIST/NLST/MLSD/MLST), скачивание (RETR), закачка (STOR/APPE), докачка (REST), удаление (DELE), создание/удаление папки (MKD/RMD), переименование (RNFR/RNTO),SIZE,CWD/CDUP,PWD.
Пример с консольным клиентом ftp:
ftp> open <ip-устройства> 21
Name: anonymous
Password: (просто Enter)
ftp> binary
ftp> ls
ftp> get game.tap
ftp> put snapshot.z80
ftp> bye
FileZilla / GUI-клиенты: включи режим Active (Site Manager → Transfer Settings → Active) и вход Anonymous — в пассивном режиме data-соединение не откроется.
Постоянных настроек нет: FTP-сервер — разовое действие без собственного конфига.
Диагностический инструмент: разовый HTTP(S)-GET, чтобы проверить, что TLS-через-ESP вообще работает на твоём железе. Нужно активное WiFi-соединение.
Network → HTTP test (curl) спрашивает по отдельным полям: схему (https / http),
хост (Host:) и путь (Path:, по умолчанию /) — раздельно, потому что
полный URL не влезает в одно поле ввода.
Показывает сводку в диалоге: URL, HTTP-статус, Content-Length, сколько байт принято,
успех TLS-рукопожатия и свободную кучу до/после (полезно понять, не впритык ли
памяти для рукопожатия), плюс превью первых ~512 байт тела. Файл на SD не пишется.
Достаточно 4 проводов — питание (VCC, GND) и пара UART (TX, RX). Логика обеих сторон 3.3 В, поэтому переходник уровней не нужен.
Пара UART перекрещивается: TX одной стороны → RX другой.
На схеме ниже — пины по умолчанию для PICO_DV (UART0: GPIO 0 = TX, GPIO 1 = RX). Для других плат меняются только номера GPIO — см. таблицу ниже.
ESP-01S RP2350 (пример: PICO_DV)
┌───────────────────┐
│ ((( антенна ))) │
│ ┌──────────┐ │
│ │ ESP8266 │ │
│ └──────────┘ │
│ TX ●─┼──────────────────● GPIO 1 ( RX у Pico )
│ RX ●─┼──────────────────● GPIO 0 ( TX у Pico )
│ GND ●─┼──────────────────● GND
│ VCC ●─┼──────────────────● 3V3 ( стабильн. 3.3 В )
│ │
└───────────────────┘
EN / RST / GPIO0 / GPIO2 на ESP — НЕ подключать
Перекрёст уже заложен в подписи: ESP TX → RX у Pico, ESP RX → TX у Pico.
Список соединений (PICO_DV):
| ESP-01S | RP2350 (PICO_DV) | смысл | |
|---|---|---|---|
| TX | ──► | GPIO 1 | ESP TX → RX у Pico |
| RX | ◄── | GPIO 0 | ESP RX ← TX у Pico |
| GND | ─── | GND | общая земля |
| VCC | ─── | 3V3 | питание 3.3 В |
Правило перекрёста не меняется (меняются только номера GPIO): TX Pico (чётный пин) → RX ESP, RX Pico (нечётный пин) → TX ESP. Соединение TX→TX / RX→RX — причина №1, почему «ничего не работает».
Питание. ESP-01S при передаче по WiFi потребляет всплесками до ~300 мА. Питай от устойчивого источника 3.3 В и поставь конденсатор 100–470 мкФ у вывода VCC — иначе возможны перезагрузки/просадки. Линия 3V3 самой Pico может быть на грани.
Пару можно сменить в Network → ESP-01(S) → Transport. TX — чётный пин, RX — его нечётный сосед.
| Плата | TX / RX (умолч.) | UART | Примечание |
|---|---|---|---|
| PICO_DV | 0 / 1 | UART0 | выделенный разъём ZiFi |
| MURM2 | 20 / 21 | UART1 | занимает пины NESPAD |
| PICO_PC | 20 / 21 | UART1 | занимает пины NESPAD; альт. 2/3 (QWST1), 10/11
|
| ZERO2 | 24 / 25 | UART1 | свободные |
| MURM-1 (RP2350) | 16 / 17 | UART0 | занимает пины NESPAD |
Если выбрать пару, пересекающуюся с пинами аудиовыхода, приоритет у ZiFi: инициализация звука на буте отдаёт эти пины под UART, поэтому выбранная пара работает надёжно.
Полные GPIO-карты плат: Платы и распиновка.
Клиентского софта на стороне Spectrum для передачи файлов и архивов не нужно — всё делается из OSD. Для ZiFi NIC (сеть внутри ZX-Spectrum-программ) используется терминал/драйверы MRF:
- MRF (Moon Rabbit Firmware / terminal): https://zxart.ee/eng/software/prikladnoe-po/mrf/tabs:releases/
| Путь | Назначение |
|---|---|
/.config/pico-spec/wifi.cfg |
Настройки WiFi + сети (ключи ниже). Старый /wifi.cfg читается как fallback |
/.config/pico-spec/remotes.tsv |
Сохранённые подключения FTP/SFTP (по строке на каждое). Пароль хранится только если выбрано «сохранить пароль» |
/.config/pico-spec/known_hosts |
Доверие к ключам хостов SFTP (TOFU): строки host base64(SHA-256) по серверу |
cacert.pem |
CA-набор для HTTPS (Web Archives). Нет файла → TLS без проверки + предупреждение |
/spec |
Папка назначения по умолчанию для скачивания/сохранения |
Ключи wifi.cfg (ключ=значение, по строке):
| Ключ | Назначение | Значения |
|---|---|---|
ssid |
Имя сети WiFi | текст |
pass |
Пароль WiFi | текст |
tz |
Часовой пояс SNTP | UTC−12 … UTC+14 |
autoconnect |
WiFi включён (переподключение на буте) |
01
|
baud |
Скорость UART ESP-01S | 115200 230400 460800 921600 |
net_host |
Последний удалённый хост | текст |
net_user |
Последний пользователь | текст |
net_port |
Последний порт | число (0 = порт по умолчанию) |
net_proto |
Последний протокол |
0 FTP1 SFTP |
net_dl |
Последняя папка скачивания/сохранения на SD | путь (по умолч. /spec) |
net_ul |
Последняя папка заливки с SD | путь |
catalog_host |
Источник каталога архивов | хост или базовый URL |
catalog_port |
Порт каталога (только динамический режим) | число (0 = 80) |
last_loc |
Последнее местоположение F5 (чтобы открываться там же) |
LW\t<site>\t<path>R\t<host>\t<port>\t<proto>\t<user>\t<path>
|
Пароли сохранённых подключений лежат в remotes.tsv, не здесь; у FTP-сервера пароля нет.
- ESP-01S / AT-команды (Espressif AT): https://docs.espressif.com/projects/esp-at/en/latest/
- Заметки разработчика по ZiFi/сети: ../../../CLAUDE.md
Меню (RU)
Сквозные темы
Для разработчиков