← Установщик
# Установка Neverhood на M-VAVE FM-1

Пакет — `neverhood.fwsc`, тот же файл, который запускается в fm1-emu. Публичный установщик: **https://neverhood.moode.ru/**. Для установки откройте его в Chrome или Edge, подключите включённый FM-1 по USB, нажмите «Установить Neverhood» и разрешите MIDI / SysEx.

Можно также использовать **локальный браузерный установщик** из исходников проекта:

```sh
cd /Users/egorgam/git/vibe/fm1/neverhood
./installer.sh
```

1. Закройте M-UPGRADE, DAW и другие MIDI-программы. Включите заряженный FM-1 и подключите его напрямую USB-кабелем с передачей данных.
2. Откройте [установщик](http://127.0.0.1:8793/build/installer/) в **Chrome или Edge**.
3. Нажмите **«Установить Neverhood»**, разрешите MIDI / SysEx.
4. Дождитесь сообщения **«Готово»**. Не закрывайте страницу и не отключайте питание или USB во время записи.

Страница использует USB-MIDI updater из закреплённой версии fm1-base/Felucca. При открытии она только загружает локальные файлы и проверяет их SHA-256 и идентификатор. Запрос MIDI и установка выполняются по нажатию кнопки. Установка включает загрузку update loader, запись приложения, перезапуск и проверку идентификатора. Повторная попытка поддерживает уже запущенный OTA loader. Если появилась ошибка, сохраните лог со страницы для диагностики.

После новой сборки перезапустите `installer.sh` и обновите страницу: он копирует актуальный пакет в `build/installer/` и обновляет закреплённую контрольную сумму. Сам файл прошивки не изменяется. Сервер доступен только с этого компьютера (`127.0.0.1`), интернет для передачи прошивки не нужен.

## Почему M-UPGRADE пишет file format error

В установленном M-UPGRADE функция `OtaFormat::tryParse` разбирает только три цифры версии после `FM-1_`. Идентификатор нашей development-сборки — `FM-1_731800`: четвёртая цифра уже отвергается. В логе от 20 октября 2026 года ошибка появляется при выборе файла, до передачи прошивки устройству. Это не свидетельство запрета любых кастомных прошивок.

Предыдущая рекомендация ставить этот файл через M-UPGRADE была неверной. Подмена идентификатора только в контейнере не используется: он должен совпадать с тем, что сообщает само приложение. Подробности локального разбора — `build/check/m-upgrade-format.md`.

## Что проверено

Сборка проверена в host-версии и fm1-emu. Настоящий код update loader также прошёл офлайн-тест с виртуальной flash: переход официального V15 на текущий Neverhood завершился, приложение совпало с новым образом, защищённая загрузочная область `[0, 0x4000)` сохранилась, записи вне разрешённых диапазонов не было. Диапазон приложения — `[0x4000, 0x93000)`; служебные записи обновления проверяются отдельно.

20 октября 2026 года владелец устройства подтвердил успешную установку этой сборки на физический FM-1 через браузер. Это подтверждает установку на одном устройстве; полная проверка всех функций на железе ещё не выполнена. Сохранность старых пресетов при смене прошивки не проверена; сохраните ценные настройки заранее.

## Возврат к заводской версии

Если устройство отвечает по USB-MIDI, раскройте на странице **«Возврат к заводской V15»** и нажмите **«Установить заводскую V15»**. Используется сохранённый официальный `build/recovery/FM-1-V15.fwsc` с SHA-256 `db1642b2b6fa5c2cccb11ffd13878068bb28601678d3644049f99dc40e7edb8a`. Этот официальный файл также можно выбрать в M-UPGRADE.

Чёрный экран и отсутствие MIDI требуют отдельной диагностики режима загрузчика. В зависимостях есть `felucca-bsp/tools/fm1_rescue.py` для macOS с проверкой ключа и flash, полным backup и проверкой записанных секторов чтением. Это отдельная процедура; на вашем устройстве мы её не выполняли.

## Источники

- [fm1-base: Web MIDI updater](https://github.com/charlesvestal/fm1-base/blob/main/web/fm1ota.js).
- [fm1-base: упаковка прошивки](https://github.com/charlesvestal/fm1-base/blob/main/tools/fm1pkg_make.py).
- [M-VAVE: M-UPGRADE и официальный FM-1 V15](https://www.m-vave.com/download).
- [Felucca](https://github.com/hugelton/Felucca).