minipro - Man Page

programs various chips using the Minipro TL866XX series of programmers.


minipro -l | -L search | -d device | -D | [-p device] [-c code|data|config] [-o option ... ] [-r|-w filename] [-e][-u][-P][-i|-I][-v][-s|-S][-x][-y][-V][-t] [-T] [-f ihex|srec] [-F filename] [-h]


minipro is an Open Source tool intended to become a complete cross-platform replacement for the proprietary utility from Autoelectric. Currently it supports more than 13000 of target devices - including AVRs, PICs as well as a huge number of other microcontrollers and various memory chips.



Get a list of supported devices.

-L <search>

List devices beginning with this string.

-d <device>

Show device information.


Just read the chip ID and do nothing else (like reading the whole chip contents).  This is for use in scripts where you have for example several similar chips with different IDs and want to check if the currently inserted chip is one in your list of allowed ones. Also useful to detect if a chip is inserted at all when using the -y option.

-p <device>

Specify the device name.  If the desired device name contains a space, parenthesis, or at sign; the device name MUST be surrounded by quotes.

-c <type>

Optionally specify memory type.  Possible values include "code", "data", and "config". The "config" memory type is used to access fuses, see Fuses below.

-o <option>

Specify various programming options. For multiple options use -o multiple times. Valid options are:

  • vpp=<value>

    Set the programming voltage (10, 12.5, 13.5, 14, 16, 18, 21).

  • vdd=<value>

    Set the VDD write voltage (3.3, 4, 4.5, 5, 5.5, 6.25).

  • vcc=<value>

    Set the VCC verify voltage (3.3, 4, 4.5, 5, 5.5, 6.25).

  • pulse=<value>

    Set the programming pulse delay (0-65535 usec).

-r <filename>

Read from the device and write the contents to this file.

-w <filename>

Write to the device using this file.


Do NOT erase device.


Do NOT disable write-protect.


Do NOT enable write-protect.


Do NOT verify after write.




Use ICSP (without enabling Vcc).


Do NOT error on file size mismatch (only a warning).


No warning message for file size mismatch (can't combine with -s).


Do NOT attempt to read ID (only valid in read mode).  Avoids sending high Chip ID read voltages to unknown pins.


Do NOT error on ID mismatch.


Run a logic IC test.

Errorneous states are reported with a "-" (minus) sign next to the expected pin state.


Show version information.


Start hardware check.

-f <ihex | srec>

Specify the file format: either Intel ihex or Motorola srecord.

When writing chips, this is not necessary because the file format is automatically detected.  There is no need to specify the exact Intex hex format (ihex8, ihex16, or ihex32) as the format is automatically detected.  If this option is not used, then the file will be saved as a raw binary file.

When reading chips and the ihex format is chosen, if the data size is up to 64Kb the file will be saved in ihex8 format. Just plain hex records are used -- no segment/linear address records are inserted.  If the data size exceeds 64Kb then the ihex32 format is used. The ihex16 format is not used when reading chips.  The same strategy is used for the Motorola srecord format.

-F <filename>

Update firmware (should be update.dat).


Show help and quit.


If -c is omitted and -r is specified then the code, data (if applicable) and config (if applicable) will be written to filename.$ext, filename.eeprom.bin and filename.fuses.conf correspondingly. If -c is omitted and -w is specified, then -c code is assumed.

The -i and -I options enable use of ICSP port for TL866A and TL866II+ models. The former enables the voltage supply on the Vcc pin of the ICSP port while the latter leaves it off.  These options are of no use for the TL866CS.

The Minipro TL866xx series of chip programmers is distributed by Autoelectric.  Their website is


Minipro supports reading and writing to standard input and output.  To do this, use a dash (-) as a filename for the -w or -r options.

For example:

head -c 256k < /dev/urandom | srec_cat - -bin -o - -intel -Address_Length=4 -obs=16 | minipro -p w49f002u -w-

This is how the hex/srec parsers were tested for reading from stdin. 256kb of random binary data is generated then converted from binary to intel hex by the srec_cat utility. Finally the converted data is passed to our minipro which will read this data, convert it to binary by decoding the intel hex format from stdin and write it to the specified chip.  Note the -r- which tells to read from stdin instead from a regular file.  This is just a test command to test the ihex/srec parsers.  Don't use this in real life (convert from binary to ihex then from ihex to binary).

You can also read a chip and write the data to the stdout like this:

minipro -p w49f002u -r- -f ihex.

You can then pass the output to another command line tool with | for other processing, etc.


Fuses can be read and written with the -c config option. Fuse data is exchanged in a text format. When writing fuses all fuses on your device must be assigned a value. To see what fuses are supported by your device use -r with -c config to get your current fuse values. This also shows you what the text format looks like.


minipro -p 7404 -T

Check whether a 74(LS/HC/...)04 hex NOT gate chip.


minipro was written by Valentin Dudouyt and is copyright 2014.  Many others have contributed code and bug reports.  Development is currently coordinated by David Griffith.


The canonical repository for minipro is at Gitlab:
It is distributed under the GNU General Public License version 3 or (at your option) any later version.
This software is offered as-is with no warranty or liability.  If you find a bug or would like minipro to do something it doesn't currently do, please visit the above Gitlab website and report your concerns.


14 August 2018 (v0.3)