Skip to main content

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

Project description

asm3042-flasher

asm3042-flasher это Python-пакет с CLI-утилитой для Linux, предназначенной для загрузки firmware в PCIe-контроллеры ASMedia ASM3042 и ASM3142 через 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, ASM3142 или совместимого контроллера, для которого вы отдельно подтвердили совместимость.

Установка

После публикации в 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.2.tar.gz (15.8 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.2-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: asm3042_flasher-0.1.2.tar.gz
  • Upload date:
  • Size: 15.8 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.2.tar.gz
Algorithm Hash digest
SHA256 db012c4598e4b5dd4a350a2aabe93a442ee3f94c23e8cb87b839faa3888a24c8
MD5 a0d8f9e86d62484c37540c3c29011e0f
BLAKE2b-256 e83149fd3467a618102370b73b45d61c6274ef25fbde68978adb75b869d92fd9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asm3042_flasher-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 eed6fbee6c2c6dc99d20c6f8b0373ed1c35843d0da872601c2ed4ba69fcd083d
MD5 dd386dabb17e066488a856bb4888a179
BLAKE2b-256 204785afde3ca8fced4ca0c36ac7407fc15aadf127ade25b8b491f76dca02f4f

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