Ошибка invalid sparse file format at header magic появляется в консоли fastboot в момент отправки образа прошивки на смартфон — чаще всего при выполнении команды вида fastboot flash system system.img. Сообщение означает, что утилита fastboot ожидала получить файл в формате sparse image (разрежённый образ Android), но проверка заголовка файла не прошла: сигнатура magic number в первых байтах не совпала с эталонной. Проще говоря, fastboot считает, что вы скармливаете ему либо повреждённый файл, либо образ в «сыром» формате ext4, который он не может распознать как sparse.
Проблема типична при прошивке устройств на базе Android через fastboot, реже — при работе с утилитами вроде simg2img или при распаковке заводских прошивок. Разберёмся, почему возникает сбой, как отличить битый файл от неправильного формата и что делать в каждом случае, не рискуя получить «кирпич».
Что означает ошибка и как устроен формат sparse
Образы разделов Android (system, vendor, product) часто распространяются в формате sparse — специальном контейнере, где пустые блоки данных не хранятся физически, а описываются маркерами. Это уменьшает размер файла и ускоряет передачу по USB. Каждый sparse-файл начинается со служебного заголовка, в котором записано магическое число — идентификатор формата.
Когда вы запускаете команду прошивки, fastboot читает первые байты файла и сверяет magic number с ожидаемым значением. Если совпадения нет, выводится сообщение invalid sparse file format at header magic. Сама проверка занимает доли секунды, поэтому ошибка появляется мгновенно — ещё до начала передачи данных на устройство.
Важный нюанс: эта ошибка относится к файлу на компьютере, а не к смартфону. Загрузчик устройства здесь ни при чём, и паниковать по поводу состояния аппарата не нужно — до записи в разделы дело просто не дошло.
Основные причины появления ошибки
Проверка заголовка может провалиться по нескольким независимым причинам. Ниже перечислены те, что встречаются на практике чаще всего.
- 📦 Файл повреждён при скачивании — архив прошивки скачан не полностью или с ошибками, сигнатура в начале файла искажена.
- 🗜️ Образ не распакован — вы передаёте fastboot архив (.zip, .7z) или файл внутри него, а не извлечённый .img.
- 🔄 Неправильный формат образа — файл является «сырым» ext4-образом (raw image), а fastboot в данной ситуации ожидает sparse, или наоборот.
- ✂️ Файл обрезан или собран некорректно — например, после неудачной конвертации или склейки частей образа.
- 💾 Ошибки носителя — файл лежит на повреждённом секторе диска или флешки, и его начало читается с ошибками.
⚠️ Внимание: не пытайтесь прошить файл, который fastboot отклонил, обходными способами «вслепую». Если образ повреждён, принудительная запись может привести к незагружающемуся устройству. Сначала убедитесь в целостности файла.
Проверка целостности файла прошивки
Первое действие — убедиться, что образ скачан полностью и не повреждён. Самый надёжный способ — сверить контрольную сумму файла с той, что публикует источник прошивки (обычно это MD5 или SHA-256, указанные на странице загрузки).
В Windows контрольную сумму можно получить через PowerShell:
certutil -hashfile system.img SHA256
В Linux и macOS используйте команду sha256sum system.img. Если полученное значение не совпадает с опубликованным — файл нужно скачать заново, желательно другим браузером или с другого зеркала. Совпадение суммы гарантирует, что проблема не в целостности, и можно переходить к проверке формата.
Дополнительно проверьте размер файла: если на странице загрузки указан один объём, а у вас файл заметно меньше — скачивание явно оборвалось. Также убедитесь, что вы распаковали архив прошивки полностью и работаете именно с файлом с расширением .img, а не с архивом.
Проверка и конвертация формата образа
Если файл цел, но ошибка остаётся, вероятно, образ сохранён не в том формате, который ожидает fastboot. Определить тип файла можно по его начальным байтам. В Linux это делает команда file system.img — она покажет, является ли файл Android sparse image или обычным образом ext4.
Для конвертации между форматами существуют стандартные утилиты из набора Android SDK и открытых репозиториев:
- 🔧 simg2img — преобразует sparse-образ в raw ext4, который можно монтировать или анализировать.
- 🔁 img2simg — выполняет обратное преобразование: упаковывает raw-образ в sparse для передачи через fastboot.
Пример конвертации в sparse-формат:
img2simg system_raw.img system.img
После конвертации повторите команду прошивки. Если исходный файл оказался raw-образом, а fastboot отказывался его принимать, упаковка через img2simg обычно решает вопрос. Обратная ситуация — когда образ нужен в raw-виде для другой утилиты — решается через simg2img.
Проверка fastboot и рабочего окружения
Иногда виновата не сама прошивка, а окружение, в котором выполняется команда. Устаревшая или конфликтующая версия fastboot может некорректно обрабатывать отдельные образы — особенно крупные, разбитые на части, или созданные новыми версиями инструментов сборки.
Проверьте версию утилиты командой fastboot --version и при необходимости обновите Android SDK Platform Tools до актуального релиза с официального сайта для разработчиков. Старые сборки fastboot, идущие в комплекте со сторонними «прошивальщиками», — частый источник проблем.
Также имеет смысл проверить, какой файл реально читает fastboot. Если в команде указан относительный путь, а консоль открыта в другой папке, утилита может подхватывать не тот файл или сообщать об ошибке из-за битого одноимённого файла рядом. Указывайте полный путь к образу:
fastboot flash system C:\firmware\system.img
☑️ Что проверить перед повторной прошивкой
Типичные сценарии и решения
Сведём основные ситуации в таблицу — так проще сориентироваться, с чего начать именно вам.
| Ситуация | Вероятная причина | Действие |
|---|---|---|
| Ошибка сразу после скачивания прошивки | Файл повреждён при загрузке | Сверить хеш, скачать заново |
| Ошибка с образом из стороннего источника | Неверный формат (raw вместо sparse) | Конвертировать через img2simg |
| Ошибка при запуске заводского скрипта flash-all | Устаревший fastboot в папке прошивки | Обновить Platform Tools |
| Ошибка только с одним из нескольких образов | Конкретный файл битый или обрезан | Перекачать этот образ отдельно |
| Ошибка при работе с simg2img | Файл уже raw, а не sparse | Прошивать напрямую, без конвертации |
⚠️ Внимание: если прошивка поставляется с фирменным скриптом (например, flash-all.bat), не подменяйте входящие в комплект образы файлами из других источников. Несовпадение форматов и версий между образами одного комплекта — прямой путь к ошибкам заголовков и сбоям на этапе записи.
Если ничего не помогло
Когда контрольные суммы совпадают, fastboot обновлён, а ошибка сохраняется, стоит расширить диагностику. Попробуйте скопировать образ на другой диск или в другую папку без кириллицы и пробелов в пути — экзотические символы в путях иногда ломают работу консольных утилит в Windows.
Проверьте сам носитель: выполните проверку диска на ошибки файловой системы. Если файл лежит на флешке или внешнем HDD, скопируйте его на внутренний SSD и повторите попытку. Ошибки чтения начала файла дают ровно ту же картину, что и повреждённый заголовок.
Как вручную посмотреть заголовок файла
В Linux выполните команду hexdump -C system.img | head — первые байты sparse-образа содержат характерную сигнатуру формата. Если в начале файла видны данные архива (PK для zip, сигнатуры 7z и т.п.) — значит, вы пытаетесь прошить нераспакованный архив.
Наконец, рассмотрите альтернативный источник прошивки. Если образ получен с форума или пересобран энтузиастами, возможна ошибка на этапе его создания — тогда поможет только заводской комплект прошивки от производителя устройства. Порядок получения официальных образов различается у разных брендов, поэтому сверяйтесь с документацией именно вашей модели.
Частые вопросы
Опасна ли эта ошибка для смартфона?
Нет. Ошибка возникает на этапе проверки файла на компьютере, до начала передачи данных на устройство. Разделы смартфона не изменяются, поэтому состояние аппарата остаётся прежним. Достаточно выйти из режима fastboot обычным способом (удержание кнопки питания или команда fastboot reboot).
Можно ли прошить raw-образ, если fastboot требует sparse?
Современные версии fastboot обычно умеют автоматически определять оба формата. Если утилита отклоняет файл, надёжнее преобразовать его в sparse командой img2simg и повторить прошивку. Это стандартная и безопасная процедура.
Контрольная сумма совпала, но ошибка осталась — что дальше?
Проверьте версию fastboot и обновите Platform Tools, укажите полный путь к файлу и попробуйте другой USB-порт и кабель. Если не помогло — определите тип образа командой file (в Linux) и при необходимости переконвертируйте его.
Почему ошибка возникает только с одним образом из комплекта?
Это указывает на повреждение конкретного файла: он мог оборваться при скачивании или быть некорректно собран. Скачайте именно этот образ заново, сверьте его хеш и размер с данными источника.
Где брать утилиты simg2img и img2simg?
В Linux они доступны в репозиториях большинства дистрибутивов (пакет обычно называется android-tools или аналогично). Для Windows существуют скомпилированные порты, но скачивайте их только из проверенных источников. Альтернатива — использовать подсистему WSL, где доступны штатные пакеты.