Skip to main content

firmware-lifter

Semi-automated firmware transfer to a target device.

Usage

Place these files in your project root:

.firmware-lifter-profiles.yaml

profiles:
  debug:
    image: build/debug.bin
    pre_transfer: make build-debug
  release:
    image: build/release.bin

.firmware-lifter-transport.yaml

transport:
  type: gdb
  details:
    gdb_binary: arm-none-eabi-gdb
    target: localhost:3333

Run firmware-lifter list to show available profiles and firmware-lifter run debug to execute one.

Standalone Uploads

Upload an image without project configuration using firmware-lifter upload:

firmware-lifter upload gdb firmware.elf --target localhost:3333
firmware-lifter upload openocd firmware.bin --openocd-binary openocd --config-file board.cfg --config-file target.cfg
firmware-lifter upload stm32flash firmware.bin --stm32flash-binary stm32flash --device /dev/ttyUSB0 --baudrate 115200 --mass-erase
firmware-lifter upload custom firmware.bin --template 'my-flasher --image "{{image}}"'

gdb accepts optional --gdb-binary (default: gdb-multiarch), and custom accepts optional --shell (default: /bin/sh). Custom templates support the placeholders listed below; the standalone profile name is standalone.

To mass erase through GDB, specify the target server's monitor command. It is sent after connecting and halting the target, before the upload:

firmware-lifter upload gdb firmware.elf --target localhost:3333 --mass-erase-command 'stm32f4x mass_erase 0'

To mass erase with OpenOCD, specify the target's erase command. It is run as init; COMMAND; shutdown before the upload:

firmware-lifter upload openocd firmware.bin --openocd-binary openocd --config-file board.cfg --mass-erase-command 'stm32f4x mass_erase 0'

For configuration-driven uploads, set mass_erase: true in stm32flash transport details, or set mass_erase_command to the target-specific GDB or OpenOCD command.

Supported transports:

  • gdb: target, optional gdb_binary defaulting to gdb-multiarch
  • openocd: openocd_binary, config_files
  • stm32flash: stm32flash_binary, device, baudrate
  • custom: template, optional shell

Custom templates support placeholders like {{image}}, {{profile}}, {{project_root}}, and transport detail keys.

See examples/ for complete configurations for different transports. The profile example file examples/.firmware-lifter-profiles.yaml is usable for all transports.

Contributing

See CONTRIBUTING.md for developer-related documentation.

License

This project is licensed under GNU GPL v3 or later. See LICENSE for the full text.

Metadata

Release files for firmware-lifter 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for firmware-lifter 0.3.0
File Size Uploaded Provenance
firmware_lifter-0.3.0.tar.gz 22.9 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for firmware-lifter 0.3.0
File Interpreter ABI Platform
firmware_lifter-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 42.8 kB

Release files / firmware_lifter-0.3.0.tar.gz

Download URL firmware_lifter-0.3.0.tar.gz
Size 22.9 kB
Tags Source
SHA-256 checksum
How to use checksums
25972518a02f6feca004d467720ecd904c65faa05fef8d24b13acdc53a8ac929
BLAKE2b-256 checksum
How to use checksums
bc35ffc5b5b27ba5a21e6f1902a11e3ed6b32e525a549b415d4bd0ee21fa91f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-httpx/0.28.1

Release files / firmware_lifter-0.3.0-py3-none-any.whl

Download URL firmware_lifter-0.3.0-py3-none-any.whl
Size 19.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3b671705d4580ba78240e56c54c032193d72af6356684fb7f0dedcc6636e6227
BLAKE2b-256 checksum
How to use checksums
232453e98eb09a9a25db1e15980ee76d4128be2007f89ce0b29f9fa6530b4ab2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-httpx/0.28.1

Security for firmware-lifter 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page