Skip to main content

CLI-утилита для загрузки firmware в контроллеры ASMedia ASM3042 под Linux

Project description

asm3042-flasher

asm3042-flasher это Python-пакет с CLI-утилитой для Linux, предназначенной для загрузки firmware в PCIe-контроллеры ASMedia ASM3042 через PCI configuration space и BAR0 MMIO.

Пакет ориентирован на сценарий, когда у платы есть рабочий бинарный образ firmware в формате .bin, а загрузку нужно выполнить напрямую из Linux без сторонних графических утилит.

Статус проекта

Текущий статус: alpha.

Инструмент реализует подтверждённую последовательность runtime-загрузки firmware в SRAM контроллера. Это важно:

  • пакет загружает firmware в работающий контроллер;
  • пакет не реализует подтверждённую постоянную запись во внешний SPI ROM;
  • после выключения питания или полного reboot загрузку, скорее всего, придётся повторить;
  • для постоянной прошивки нужен отдельно подтверждённый SPI write-протокол или внешний SPI-программатор.

Возможности

  • поиск ASMedia xHCI-устройств через /sys/bus/pci/devices;
  • чтение текущей версии firmware через mailbox-регистры контроллера;
  • проверка и разбор заголовков firmware-файла;
  • загрузка firmware в SRAM по documented ASMedia upload sequence;
  • автоматический unbind и bind PCI-драйвера на время загрузки.

Требования

  • Linux;
  • Python 3.10 или новее;
  • права root для команд version и upload;
  • PCIe-плата на базе ASMedia ASM3042 или совместимого контроллера, для которого вы отдельно подтвердили совместимость.

Установка

После публикации в PyPI:

python -m pip install asm3042-flasher

Установка из исходников:

python -m pip install .

Локальный запуск тестов из репозитория:

PYTHONPATH=src python -m pytest

Быстрый старт

Найти подходящие устройства:

asm3042-fw discover

Проверить firmware-файл:

asm3042-fw inspect /path/to/firmware.bin

Прочитать текущую версию firmware контроллера:

sudo asm3042-fw version --bdf 0000:03:00.0

Загрузить firmware:

sudo asm3042-fw upload /path/to/firmware.bin --bdf 0000:03:00.0

Если в системе найден ровно один ASMedia xHCI-контроллер, параметр --bdf можно не указывать.

Команды

asm3042-fw discover

  • выводит список подходящих PCIe-устройств;
  • показывает BDF, vendor, device, текущий драйвер и признак known-protocol.

asm3042-fw inspect <firmware.bin>

  • показывает источник файла;
  • показывает размер образа;
  • извлекает распознанные header tags, например 2214A_RCFG и 2214A_FW.

asm3042-fw version [--bdf ...]

  • читает версию firmware из контроллера;
  • требует root;
  • по умолчанию работает только с устройствами из allowlist.

asm3042-fw upload <firmware.bin> [--bdf ...]

  • загружает образ в SRAM контроллера;
  • требует root;
  • отказывается перезаписывать уже загруженный runtime-образ без флага --force-running-firmware;
  • по умолчанию временно отвязывает драйвер, если не указан --keep-driver-bound.

Ограничения и меры предосторожности

  • Утилита рассчитана только на Linux.
  • На время unbind/bind все устройства за этим USB-контроллером будут временно отключены.
  • Перед загрузкой firmware нужно убедиться, что бинарный файл соответствует вашей ревизии платы.
  • Пример файла AQAIC1-USB31-A2.bin содержит теги 2214A_RCFG и 2214A_FW; это повод отдельно проверить совместимость перед прошивкой.
  • Если устройство не входит в текущий allowlist, пакет потребует явный --force-device.

Публикация пакета

Сборка дистрибутивов:

python -m build

Проверка метаданных и рендеринга README:

python -m twine check dist/*

Публикация в PyPI:

python -m twine upload dist/*

Основание реализации

Реализация основана на публично доступных источниках:

Лицензия

Проект распространяется под лицензией MIT. Текст лицензии находится в файле LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asm3042_flasher-0.1.0.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

asm3042_flasher-0.1.0-py3-none-any.whl (12.4 kB view details)

Uploaded Python 3

File details

Details for the file asm3042_flasher-0.1.0.tar.gz.

File metadata

  • Download URL: asm3042_flasher-0.1.0.tar.gz
  • Upload date:
  • Size: 14.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for asm3042_flasher-0.1.0.tar.gz
Algorithm Hash digest
SHA256 52b2357155b4afa3d67e7b45148cd1851ca5093cb4955a1daa8cf421a8b193d5
MD5 27dcc60543f0547a2eafdf4f24a0c862
BLAKE2b-256 e490fbc74940c9561a79ec92b99d0d9cd616a17eee6bc8e596fed79638d84011

See more details on using hashes here.

File details

Details for the file asm3042_flasher-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for asm3042_flasher-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 322f5b1d51a994dbe3d94a68df292930b070ee462787e293e464e606965c7193
MD5 dcf875b2d92e7914f9b3f3a3d4e6235f
BLAKE2b-256 3ac7de96c2d56fbaf2dc2cb3e2fe1f817a270c041dd9dd6bac2b12fd98a8ca3e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page