Zerocat Chipflasher  v0.4.10-182-333b622f
Flash free firmware to BIOS chips, kick the Management Engine.
Version History

This history gives you a version overview of the chipflasher firmware, software and documentation – in contrast to its hardware, which is represented by files under the hardware folder. To see the version history of the hardware, please check Board Version History instead.

Version Scheme

Tags are using the first three numbers only, i.e. v0.1.0.
  • v – This letter indicates a version tag.
  • <major> – The resulting product is a major change or upgrade.
  • <minor> – Additional functionality or new features are introduced.
  • <revision> – Bug fixes, minor changes, graphical stuff.
  • -<number-of-new-commits>-<commit-hash> – commit description as retrieved with git describe, but git specific ‘g’ marker stripped off, e.g.: -79-g7ccc6034 -> -79-7ccc6034

A fully qualified version description thus might look like this:


Most recent Changes, not yet Tagged

  • Refine usage of SR_report().
  • Review chip_erase() and option_batchblockerase(), fix evaluation of WIP_polling().
  • Clean up documentation files, fix markdown syntax and style.
  • New devices successfully flashed: X1 Carbon Gen1, X60 (64bit) and T520/T520i.
  • List of software tools has been refined, e.g.: inkscape@1.1 and make@4.3.
  • File firmware/src/Makefile now uses the Parallax repository in order to checkout the proper version of “Simple-Libraries”: v1.2.0-5-c4f9a3e
  • File doc/ comes with a refined description in respect to Parallax’ “Simple Libraries” workspace folder.
  • File host/util/manifest.scm can be used with guix environment to prepare a pure environment.
  • Makefiles are improved, they test for missing utilities right at top.
  • File doc/Makefile produces better html headers.


This version is ready to be run on GNU Guix System.

  • Cherry-picked commit: Adjust type qualifier in firmware/src/kick.c and save some bytes, so that the full version number won't make the binary exceed 29000 bytes.
  • Tiny fixes in RS232 Cable Pinouts
  • Rolling version number
  • Updated documentation, reviewed list of software requirements
  • Improved set of Makefiles, ready to be run on Trisquel or GNU Guix System
  • Makefiles: Detect non-available utilities and exit with error status
  • firmware/src/Makefile, provide targets to download Parallax’ Library Archive
  • Use logo image with black background, as old transparent background causes confusion


  • This version basically comes with an improved set of Makefiles and configuration files, most prominently host/src/Makefile and host/start/Makefile. The first builds the entire software, the latter is what you need to operate the chipflasher: It lets you load the firmware, start the menu, and helps to deal with in- and outgoing chip data. The documentation has been updated. Utility scripts have been deleted and bash has been removed from the list of tool requirements.
  • The buildchain automatically retrieves the softare version from the PROJECT_NUMBER tag in Doxyfile.orig.
  • Makefiles consistently offer a help and a hello target.
  • Prototypes for ledstat() and burn() have been changed in order to address compiler warnings.
  • Boards X230t and X201 have been tested and are now listet in Supported Devices.
  • Chip MX25L6445E, found on X201, is now part of the ID_JEDEC_MX25L6405D_06E_45E chip definition.



  • Exclude files that produce strange results with doxygen.
  • Review configuration files and makefiles, fix dependencies.
  • Improve error handling in
  • Fix english spelling (i.e. whether, separate).
  • Fix lists’ indentation in change log files Version History and Board Version History.
  • Rename files, use lower case for startfile.cfg and, but add as a symbolic link to provide backward compatibility.
  • Drop function do__WIP_polling() in kick.c, which saves some bytes and keeps RAM usage below 29000 bytes.
  • Merge branch “wip”, increase chipspec.c database, update Supported Devices.
  • Apply a consistent documentation header pattern for all files by forcing doxygen to use the C-parser with unsupported filename extensions. Turn comment lines marked with ##> or ;;> into C-style comments beforehand. Use @cond..@endcond directives to avoid parsing of non-C code.
  • Review the documentation, improve the doxygen outcome, set up new groups aka modules.
  • Use files.dox, modules.dox and images.dox to improve the documentation.


  • Drop struct member pagesize from chip’s database, which saves some bytes. If command X02_PP is available for the chip in question, use a hardcoded pagesize of SIZE_256 instead.
  • Add support for chips EN25QH54 and MX25L12835E. The former is occasionally found on an X230, the latter is very common for the T430s.
  • Add read support for security registers, which are accessible via X2B_RDSCUR and X2F_WRSCUR commands on some chips. Security registers are displayed in conjunction with status registers, using menu option “[r] show register values”. Write access is not yet implemented.
  • Update and fix database in Supported Devices.
  • Update version and copyright time range in license header message.
  • Fix reference to webpage in README, reflect state of maintenance.
  • Use more descriptive menu option strings.


  • Adapt text color and provide better contrast with default trisquel8 terminal settings.
  • Remove experimental function declaration, which produces a gcc warning.
  • Add Zerocat Favicon to generated documentation.
  • Improve documentation related to Propeller toolchain setup.
  • Modify header strings, use one version only for both, connect and kick.
  • Provide clip info for X60.


  • Add X200 Tablet to list of supported devices.
  • Move improved script utilities into newly created folder host/util.
  • Modify chip database in order to securely support the ThinkPad T430 and its Macronix SPI chips.
  • Add GA-B75M-D3H Desktop Board to list of supported devices (readout tested only).
  • doc/ Update with most recent GNU Guix Version.
This version works best with board versions 'board-edition-1' and 'board-v1.2.0'.


  • doc/ Provide exact software version infos
  • doc/Makefile: Add some .PHONY targets in order to facilitate Zerocat’s website build process
  • Direct users to Zerocat Website in order to get shop information
  • Remove branding of suggested or recommended hardware
  • Small fixes within the documentation


  • In the documentation, references to the chipflasher webpage now point to:
  • Macro VERSION is introduced which helps to emit the software’s version on screen. This macro should match PROJECT_NUMBER tags of doxygen’s *.orig config files in doc/doxygen-resources/.
  • Bug fix: Job cancellation requests are processed even in case of transmission timeouts.
  • In several functions, flow control and feedback loop has been reviewed.
  • A compiler switch has been added to facilitate experimental re-allocation of line buffer space on the fly.
  • Handling of internal error codes has been simplified.
  • On startup, connect now checks whether the serial port is already busy.
  • Due to trademark concerns, a “Zerocat Logo License” has been added to the set of licenses. This license has been inspired by Trisquel’s Logo Page.
  • The reset pulse issued by connect has been extended in order to make an MAX3232EPE+ chip start reliably.


  • Dependencies for the documentation build process have been fixed in order to avoid doxygen error messages.
  • Chip detection has been fixed (i.e. ThinkPad T60) and improved, a zero JEDEC ID due to power failure or misplaced SOIC clip is handled with an individual message.


This version works best in conjunction with board version 'board-edition-1', please compare to Board Version History.

  • The chip database has been reviewed. The default entry is used as “unknown” chip without capabilities, thus increasing security against accidental key strokes. T60’s BIOS chip has been added. Bits of status registers are now each tagged as volatile/static.
  • Global sector protect/unprotect features are now supported for Atmel chips as well.
  • The chip readout function has been deeply improved; transmission errors are now reliably detected by connect and the data lines in question are resent by kick upon connect’s request.
  • Obsolete features like increase/decrease UART FiFo Size and UART IRQ Latency have been deleted; they didn't work anyway.
  • Transmission status report now follows a three color pattern known from traffic lights. You will be able to grab the status at a glance:
    • Green = Success
    • Yellow = Success, but errors had to be repaired; verify carefully!
    • Red = Error
  • Probing the chip with menu option [d] now works more reliable, for it automatically issues three subsequent trials.
  • Error report has been improved, a missing file for data storage on disk will be reported.
  • The menu status line has been relieved from obsolete infos.
  • Three script utilities have been added to folder host/src/.
  • In order to make it quit more reliably, kick’s exit sequence is repeated.


This version works best in conjunction with board-v1.1.0.

Note that older boards may still be used, but the configuration file should be modified according to twisted pin functions.

  • Nets PIN_PNP and PIN_PLUGTESTn have exchanged their pin numbers.
  • A small delay has been added in SPI_ini(), thus making the Gigabyte GA-G41M-ES2L sysboard accessible.
  • The menu option '[q] - quit/cancel' will now switch the SPI bus off as an intermediate step in case it has been left powered for devices with a non-static status register.
  • A wrong copyright note has been reverted.


  • Add specs for the Winbond 25X40 spi flash.
  • Support the D945GCLF Intel Desktop Board.
  • Apply minor fixes within documentation.


Improve hardware documentation...

  • Add footprints into gEDA/gschem circuit file.
  • Add a worked pcb layout.
  • Add documentary of a first pcb-prototype.


Make the chipflasher repository freely distributable...

  • apply CC BY-SA 4.0 for logo files
  • fix ambiguities in libprop/putChar.c


Yep, this is a real version! It comes with a complete set of licenses.

  • The README explains how to start and the license setup.
  • Source files are enriched by appropriate license headers.
  • A license hint is provided when connect starts up.
  • Codesize has been further reduced to guarantee enough runtime RAM.
  • All documentation source files have been reviewed, sections have been rewritten.
  • A screenshot of an invocation example had been added to doc/images/.
  • The folder doc-generator/ contains reviewed doxygen resources and an updated Makefile. All generated documentation output will be created in doc/.


Unfortunately, version v0.2.1 introduced a severe bug, due to exorbitant HUB-RAM usage. The system will hang. This commit reverts the commit that introduced that bug and reduces code size by 20 bytes. Now, flashing should work fine although we are still pretty much at the edge.


Important bugfixes for chip readouts:

  • An address roll-over will now be catched.
  • The Motorola S-record format now comes with an inline-0xff blob of up to 16 bytes, thus decreasing transmission overhead.
  • In contrast, the Hexdump format is a real dump. Each byte is listed.

New features:

  • The mode that is used to deal with 0xff bytes is shown in the menu status field.
  • The roll-over feature when scrolling up/down with some menu options has been removed to reduce confusion.


This version must be used with board-v1.0.0 and later, however board-v1.0.5 is recommended due to its pnp MOSFET.

  • supports new chips like W25Q32FV, W25Q64FV
  • supports new sysboards like T400, T500, X220
  • faster SPI transmission


This version may be used with all v0-boards (i.e. below board-v1.0.0), usage is probably limited to X60/X60s and X200/X200s sysboards.