# RDP FIDO — что нового

Клиент и шлюз обновляются вместе: клиент предлагает новую версию при запуске,
шлюз обновляется из клиента после сессии, подтверждённой ключом (галочка
«Автоматически обновлять шлюз на этой машине»). Скачать:
[RdpFido-Setup.exe](https://accounts.new-imobile.com/updates/RdpFido-Setup.exe)
(хост или клиент), [RdpFidoClient-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoClient-Setup.msi),
[RdpFidoGate-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoGate-Setup.msi).
English: [CHANGELOG.en.md](CHANGELOG.en.md).

## 1.19.0 — 16.09.2026

- **120 / 144 / 240 Гц.** Поток идёт с точной частотой вашего монитора
  (143,856 Гц так и остаются 143,856, а не 144): хост захватывает и кодирует в
  этом ритме по таймеру с субмиллисекундной точностью, а вьювер показывает
  кадр либо сразу после декодирования («Сразу»: минимальная задержка,
  разрешён разрыв), либо на следующем обновлении экрана («Плавно»: без
  разрывов и повторов). «Автоматически» выбирает «Плавно», когда частота
  потока совпадает с частотой монитора. Мышь передаётся событие за событием с
  её собственной частотой опроса (1000 Гц включительно); события, скопившиеся
  пока окно было занято, объединяются без добавления задержки. Программные
  кодеры ограничены 60 к/с.
- **Оверлей метрик и трасса.** Ctrl+Alt+O показывает, на что уходит каждая
  миллисекунда: захват, преобразование, кодирование, сеть и сборка,
  декодирование, ожидание обновления экрана, показ; битрейт, потери, доля FEC
  и восстановления, NACK, RTT, задержка в очереди, размер датаграммы, реле;
  частота и дрожание показа; оценка «клик → фотон» — клики и нажатия
  помечаются, и ищется первый кадр, захваченный хостом после их ввода (время
  отклика самого монитора не входит). Ctrl+Alt+T пишет CSV-трассу (строка на
  кадр со всеми отметками времени, строка в секунду со счётчиками канала,
  строка на событие) в `%LOCALAPPDATA%\RdpFidoClient\traces`; сессия может
  стартовать с включённым оверлеем или записью трассы.
- **AV1, 10 бит, 4:4:4 и HDR.** Новые настройки сессии «Кодек» (авто / H.264 /
  HEVC / AV1) и «Цвет» (авто / 8 бит / 10 бит / 4:4:4 / HDR). AV1 кодируется
  на NVENC (RTX 40) и на AV1-кодерах Intel Arc и AMD RDNA3, декодируется на
  NVDEC или аппаратном декодере. 10-битные HEVC/AV1 убирают полосы в
  градиентах; 4:4:4 сохраняет чёткость тонкого текста. При включённом HDR в
  Windows на хосте и HDR-мониторе у клиента рабочий стол дублируется в FP16,
  на видеокарте переводится в 10-битный PQ BT.2020 и показывается как HDR
  (на SDR-мониторе — с тон-мэппингом). Всё автоматически понижается до того,
  что умеют обе стороны; «Автоматически» берёт AV1 или HEVC, когда узкое
  место — канал, и H.264, когда — компьютеры.
- **Звук Opus.** Звук хоста передаётся Opus 128 кбит/с (режим restricted low
  delay, кадры 10 мс), микрофон — 48 кбит/с; потерянный пакет восстанавливается
  из встроенного FEC следующего. libopus 1.5.2 (BSD-3) собран внутрь
  исполняемых файлов; старые версии остаются на ADPCM.
- **Реле для симметричных NAT.** Когда напрямую не достучаться ни до одной
  стороны, поток идёт через ваше реле: `rdpfido-relay` для Linux-VPS
  (`src/relay`, `make install`, systemd-юнит) или `RdpFidoGate.exe relay serve`
  на Windows. Реле перечисляются в `gate.json` шлюза (`"streamRelays":
  [{"address": "relay.example.com:7443", "name": "eu-1"}]`); обе стороны
  пробуют их и берут ближайшее, дав прямым путям фору 1,5 с. Реле пересылает
  только сквозно зашифрованные датаграммы и ключей не имеет.
- **Настройка для WAN.** Контроль перегрузки масштабирует пороги задержки по
  базовому RTT (12 мс в локальной сети, до 50 мс через континенты), бюджет на
  восстановление растёт с RTT, FEC — на длинных путях. MTU discovery поднимает
  датаграмму с 1200 до 1472 байт, когда путь это выдерживает (меньше, но
  крупнее шардов), перепроверяя каждые 30 с и откатываясь при смене пути.
- Совместимо по протоколу с 1.15–1.18: старые версии игнорируют новые
  сообщения.

## 1.18.0 — 16.09.2026

- **Геймпад в FIDO Stream.** Подключите XInput-геймпад (Xbox One/Series,
  Xbox 360, большинство геймпадов с переключателем «X») к клиенту: на хосте
  он появляется как контроллер Xbox 360, игра ничего не замечает, вибрация
  возвращается на ваш геймпад. До четырёх геймпадов на сессию. Как и
  клавиатура, геймпад управляет хостом только пока окно потока впереди.
- **На основе ViGEmBus.** Виртуальный контроллер — открытый драйвер ViGEmBus
  от Nefarius Software Solutions (лицензия BSD-3), тот же, на котором работают
  Sunshine, Apollo и DS4Windows. Проект архивирован в конце 2023 года; его
  последний выпуск (драйвер 1.21.442.0, подпись Microsoft/WHQL) ставится на
  текущие сборки Windows 10/11 x64 без тестового режима и с включённым HVCI.
  Пакет вшит в `RdpFidoGate.exe`: `setup` его устанавливает, шлюз, обновлённый
  на месте, ставит его при следующем запуске службы, а `uninstall` удаляет
  только драйвер, который поставил этот шлюз — ViGEmBus, принесённый другой
  программой, остаётся. `RdpFidoGate.exe gamepad status|install|remove`
  управляет им; `RdpFidoGate.exe stream gamepad-test` проверяет весь путь на
  хосте (подключение, XInput его видит, вибрация возвращается, отключение)
  без вьювера. Если драйвер поставить не удалось, шлюз и поток работают,
  просто геймпад на этом хосте ничего не делает.
- Оба установщика кладут рядом с программой `THIRD-PARTY-LICENSES.txt`
  (ViGEmBus, заголовки ViGEmClient, заголовки кодеков NVIDIA).
- `gate.json`, сохранённый с меткой порядка байтов UTF-8 (Блокнот, Windows
  PowerShell), больше не останавливает службу; номера шагов `setup` теперь
  видны в журнале Windows Installer.

## 1.17.0 — 11.09.2026

- **Один файл на сторону.** Агент хоста FIDO Stream теперь встроен в
  `RdpFidoGate.exe`, окно потока — в `RdpFidoClient.exe`. Оба установщика и
  автообновление приносят всё, что нужно потоку; вручную больше ничего
  копировать не надо. Шлюз запускает себя командой `stream serve` в сеансе
  пользователя, клиент — командой `viewer` в дочернем процессе, поэтому
  падение декодера или драйвера закрывает только окно потока.
- На установленном хосте доступны команды диагностики
  `RdpFidoGate.exe stream encoders`, `stream encoders --bench`,
  `stream selftest` и `stream audio-devices`.
- Самообновление при открытом потоке: старый файл сначала переименовывается,
  потом копируется новый, поэтому обновление больше не срывается, пока идёт
  стрим.
- **Шлюз восстанавливается после зависшей службы брандмауэра Windows.** Если
  вызов в службу брандмауэра не возвращается, сторожевой поток завершает шлюз
  через 90 с, и диспетчер служб перезапускает его — вместо ответа «рабочий
  поток брандмауэра не ответил вовремя» на каждый запрос, пока кто-нибудь не
  заметит. Гранты, записанные из потока брандмауэра, истекают по расписанию,
  даже если вызывающая сторона перестала ждать; удаление правил не теряется.

## 1.16.1 — 11.09.2026

- HEVC декодируется на видеокарте безопасным путём: NVIDIA NVDEC на NVIDIA,
  аппаратный DXVA-декодер на Intel и AMD. Программное расширение HEVC от
  Microsoft не используется (оно падает), поэтому вьювер без подходящей
  видеокарты переходит на H.264, а не падает, и пишет причину в `client.log`.
- Декодер H.264 Media Foundation теперь тоже работает на видеокарте (DXVA).

## 1.16.0 — 10.09.2026

- **Кодер и декодер выбираются в сессии.** «Кодер (хост)»: Автоматически /
  NVIDIA NVENC (напрямую) / Аппаратный (любая видеокарта) / Программный
  (процессор); «Декодер»: Автоматически / Аппаратный (GPU) / Программный
  (CPU). NVENC работает напрямую через драйвер, аппаратный вариант — кодер
  любого производителя через Media Foundation (Quick Sync, AMF), программный —
  H.264 Microsoft.
- `encoders --bench` измеряет каждый бэкенд на синтетических кадрах без экрана
  и сети.
- Два исправления задержки: ожидание захвата экрана больше не блокирует поток
  кодера, а настройки низкой задержки кодера NVIDIA применяются там, где он их
  учитывает. Кодирование 2560×1600 — с 60 мс до 6,5 мс на кадр; задержка «из
  конца в конец» в локальной сети — с 380 мс до 25–45 мс.

## 1.15.0 — 10.09.2026

- **FIDO Stream** — второй режим подключения рядом с RDP для игр и другой
  работы, где важнее всего задержка «клик — фотон». Видео, звук и ввод идут
  по UDP: AES-256-GCM на ключах из ECDH, привязанного к билету, который шлюз
  выдаёт только после подтверждения ключом FIDO2; код Рида–Соломона (FEC)
  вместо ретрансляций; надёжный канал для ввода; контроль перегрузки.
- Хост: захват DXGI Desktop Duplication, аппаратное кодирование (NVENC /
  Quick Sync / AMF через Media Foundation) с путём пикселей D3D11 без копий,
  звук WASAPI, внедрение ввода скан-кодами. Вьювер: аппаратное декодирование,
  вывод D3D11 flip без вертикальной синхронизации, raw input, захват мыши
  (Ctrl+Alt+Home), полный экран (Ctrl+Alt+Enter), отключение (Ctrl+Alt+End).
- Один ползунок **«Баланс»** от «плохой канал» до «слабые компьютеры» с
  режимом «Авто»; звук в обе стороны, включая микрофон; хост сам дозванивается
  до клиента через большинство NAT по кандидатам адресов, переданным через
  HTTPS-канал шлюза. UDP 7441 открывается только для подтверждённого адреса и
  только на время сессии.

## 1.14.0 — 03.09.2026

- **Один объединённый установщик** `RdpFido-Setup.exe` задаёт единственный
  вопрос — это хост (к нему подключаются) или клиент (с него подключаются) — и
  ставит нужную половину. Без диалогов: `RdpFido-Setup.exe host|client`.
  Клиент остаётся пакетом «на пользователя» (без прав администратора), шлюз —
  «на машину» (служба).

## 1.13.0 — 01.09.2026

- Шлюз поставляется как MSI, `RdpFidoGate-Setup.msi`: включает удалённый
  рабочий стол с NLA, привязывает сертификат к порту 7440, регистрирует службу
  и показывает одноразовый код регистрации ключа на последней странице, на
  языке Windows. Тихо: `msiexec /i RdpFidoGate-Setup.msi /qn`.

## 1.12.x — 30.08.2026

- Подписанные лицензия и манифест обновлений, баннеры с картинками по выбору
  сервера с офлайн-ротацией, контроль порта RDP, неудачные вызовы шлюза
  записываются в `client.log`.
