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.1.tar.gz (15.7 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.1-py3-none-any.whl (12.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: asm3042_flasher-0.1.1.tar.gz
  • Upload date:
  • Size: 15.7 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.1.tar.gz
Algorithm Hash digest
SHA256 52e91dc50ba9206e176fc36ad7590776985b309048e6983e34de79b1c3b0d8ad
MD5 2f5f4150a93ac10da669c447f3e9bd8a
BLAKE2b-256 76f22f4a8beab6eba13b74bec97a3735bf328abb27846ccd4495104bc360f446

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asm3042_flasher-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b2ad854f3a1f2809abc5383008479de76d5b05c8ff766fdb050fac0e57f624bf
MD5 3c00351601621c60ff778526f34a20cf
BLAKE2b-256 5ba33460b22f654cde28f76e036375232333bcf682c88b60e93892f9dd18edef

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