Skip to content

Network

drew.po28@gmail.com edited this page Jul 22, 2026 · 8 revisions

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), которые ставят эмуляцию на паузу, временно разгоняются до настроенной скорости.

Транспорт: GPIO UART или USB-переходник

Пикер 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 запрашивает перезагрузку, чтобы вытесненная периферия отдала/забрала свои пины.

Доступ к файлам — браузер F5

Когда 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) запоминаются между сеансами.

Общие клавиши браузера (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-карте под его настоящим именем.

Remote (FTP / SFTP) — сохранённые подключения

Вместо повторного ввода сервера каждый раз подключения сохраняются и показываются списком:

  • В списке для каждого подключения показывается его алиас (если задан) или 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 подключений.

Web Archives — онлайн-каталоги образов

Просмотр и скачивание дисковых/ленточных образов 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-карты)

Обратное к удалённой передаче файлов: устройство становится 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 test (curl)

Диагностический инструмент: разовый HTTP(S)-GET, чтобы проверить, что TLS-через-ESP вообще работает на твоём железе. Нужно активное WiFi-соединение.

Network → HTTP test (curl) спрашивает по отдельным полям: схему (https / http), хост (Host:) и путь (Path:, по умолчанию /) — раздельно, потому что полный URL не влезает в одно поле ввода.

Показывает сводку в диалоге: URL, HTTP-статус, Content-Length, сколько байт принято, успех TLS-рукопожатия и свободную кучу до/после (полезно понять, не впритык ли памяти для рукопожатия), плюс превью первых ~512 байт тела. Файл на SD не пишется.

Схема подключения ESP-01S

Достаточно 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:

Файлы на SD

Путь Назначение
/.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 включён (переподключение на буте) 0
1
baud Скорость UART ESP-01S 115200
230400
460800
921600
net_host Последний удалённый хост текст
net_user Последний пользователь текст
net_port Последний порт число (0 = порт по умолчанию)
net_proto Последний протокол 0 FTP
1 SFTP
net_dl Последняя папка скачивания/сохранения на SD путь (по умолч. /spec)
net_ul Последняя папка заливки с SD путь
catalog_host Источник каталога архивов хост или базовый URL
catalog_port Порт каталога (только динамический режим) число (0 = 80)
last_loc Последнее местоположение F5 (чтобы открываться там же) L
W\t<site>\t<path>
R\t<host>\t<port>\t<proto>\t<user>\t<path>

Пароли сохранённых подключений лежат в remotes.tsv, не здесь; у FTP-сервера пароля нет.

Ссылки

Clone this wiki locally