Skip to main content

mcbootflash

build Documentation PyPI License

What

Mcbootflash is a tool for flashing firmware to 16-bit Microchip MCUs and DSCs from the PIC24 and dsPIC33 device families, which are running a bootloader generated by the MPLAB Code Configurator tool.

Mcbootflash is intended to be a drop-in replacement for Microchip's official tool, the Unified Bootloader Host Application (UBHA).

Why

Mcbootflash is:

Scriptable

As a command-line application, mcbootflash is easily scriptable.

Extensible

In addition to its command-line interface, mcbootflash can be used as a library by applications wanting to implement firmware flashing as part of a larger suite of features.

Free and Open Source

Mcbootflash is distributed under the MIT license.

Installation

Stand-alone executables for Linux, Mac, and Windows are available from the Github release page.

Mcbootflash can also be installed from PyPI:

pip install mcbootflash

Usage

Mcbootflash can be used as both a command-line application and a library.

Command-line

$ mcbootflash --help
usage: mcbootflash [-h] -p PORT -b BAUDRATE [--timeout TIMEOUT] [--checksum] [--reset] [--debug] [--quiet] [--version] hexfile

mcbootflash is a tool for flashing firmware to 16-bit Microchip MCUs and DSCs from the PIC24 and dsPIC33 device families, which are running a bootloader generated by the MPLAB Code Configurator tool.

positional arguments:
  hexfile               an Intel HEX file containing application firmware

options:
  -h, --help            show this help message and exit
  -p, --port PORT       serial port connected to the device you want to flash
  -b, --baudrate BAUDRATE
                        symbol rate of device's serial bus
  --timeout TIMEOUT     try to read data from the bus for this many seconds before giving up
  --checksum            verify flashed data by checksumming after write
  --reset               reset device after flashing is complete
  --debug               print debug messages
  --quiet               suppress output
  --version             show program's version number and exit

Example

$ mcbootflash --port /dev/ttyUSB0 --baudrate 460800 firmware.hex
Connecting to bootloader...
Erasing program area...
100%  162.0 KiB  |######################################|  Elapsed Time: 0:00:01
Flashing firmware.hex...
100%  98.8 KiB  |#######################################|  Elapsed Time: 0:00:06
Self verify OK

Library

When using mcbootflash as a library, typical workflow looks something like this:

import mcbootflash as bf
import serial


# Connect to a device in bootloader mode.
connection = serial.Serial(port=<PORT>, baudrate=<BAUDRATE>, timeout=<TIMEOUT>)
# Query its attributes.
bootattrs = bf.get_boot_attrs(connection)
# Load the firmware image and split it into chunks.
total_bytes, chunks = bf.chunked(hexfile=<HEXFILE_PATH_STRING>, bootattrs)
# Erase the device's program memory area.
bf.erase_flash(connection, bootattrs.memory_range, bootattrs.erase_size)

# Write the firmware chunks to the bootloader in a loop.
for chunk in chunks:
    bf.write_flash(connection, chunk)

    # Optionally, check that the write is OK by checksumming.
    bf.checksum(connection, chunk)

    # At this point, you may want to give an indication of the flashing progress,
    # like updating a progress bar.

# Verify that the new application is detected.
bf.self_verify(connection)

See also the API Reference.

Metadata

Release files for mcbootflash 10.1.1

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

Source distribution (sdist)

Source distribution for mcbootflash 10.1.1
File Size Uploaded
mcbootflash-10.1.1.tar.gz 45.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mcbootflash 10.1.1
File Interpreter ABI Platform
mcbootflash-10.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 62.2 kB

Release files / mcbootflash-10.1.1.tar.gz

Download URL mcbootflash-10.1.1.tar.gz
Size 45.0 kB
Tags Source
SHA-256 checksum
How to use checksums
ea1fc75cc8f46c9f272641b8f36d1a910d76c3cbd2412800a3106d772ccbed7d
BLAKE2b-256 checksum
How to use checksums
7ee88fa2e00aca02717f321a4601d171d8ba58e88496f5787bcdd4b084a8b8f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.0.1 CPython/3.12.8

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 20, 2025.

Transparency log

Release files / mcbootflash-10.1.1-py3-none-any.whl

Download URL mcbootflash-10.1.1-py3-none-any.whl
Size 17.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
369b9898cca0f86a48dad8e06d9812afe111ece1be85145d7d327b6f36827931
BLAKE2b-256 checksum
How to use checksums
0e3ed8019b907b39af7dfd345573d9ad16ca3f0af2a381f0b62a627bd4b2ed4f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.0.1 CPython/3.12.8

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 20, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

10.1.1 This release

2 release files

10.1.0

2 release files

10.0.0

2 release files

9.0.1

2 release files

9.0.0

2 release files

8.0.2

2 release files

8.0.1

2 release files

8.0.0

2 release files

7.0.6

2 release files

7.0.5

2 release files

7.0.4

2 release files

7.0.3

2 release files

7.0.2

2 release files

7.0.1

2 release files

6.1.0

2 release files

6.0.0

2 release files

5.1.1

2 release files

5.1.0

2 release files

5.0.0

2 release files

4.1.1

2 release files

4.1.0

2 release files

3.0.0

2 release files

2.0.0

2 release files

1.0.0

2 release files

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