AsProgrammer and other Windows utilities for CH341A

 Posted by:   Posted on:   Updated on:  2023-10-28T19:23:32Z

Program I2C and SPI memory chips with AsProgrammer utility on Windows.

CH341A serial programmers are cheap and quite popular. Probably the most used device is the MiniProgrammer. The CH341A is a USB interface chip that can emulate various communication protocols, such as UART, I2C, SPI, and JTAG. It is commonly used for programming EEPROM and BIOS chips, as well as debugging serial devices. The MiniProgrammer has a 16-pin ZIF socket that can hold different types of chips. CH341A requires a driver and a software tool to operate.

The manufacturer of CH341A chip offers drivers for all operating systems. They even offer API for programmers who want to build software to talk to CH341A. In spite of this, software tools for CH341A are not very easy to find. For Windows there is a programming utility that requires a license which is offered only if you buy the programmer from the developer's shop, on Chinese platform Taobao. In this post I'll show you the alternatives.

Reading 25xx SPI FLASH with AsProgrammer
Reading 25xx SPI FLASH with AsProgrammer

AsProgrammer

AsProgrammer is a graphical interface tool that can read, erase and write serial memory chips. It has been created by Alexander and it seems to exist since late 2011, being initially developed as an utility for UsbAsp. It is open source, actively maintained and it comes with support for UsbAsp, AVRISP-MKII and CH341A programmers. In the newest version, support for FT232H and Arduino (with a provided sketch) is added. The utility is released under MIT license and can be downloaded from GitHub – binary releases here. I tested AsProgrammer with I2C EEPROM and SPI FLASH chips with great success.

Download the release archive from GitHub and extract it. The software is portable, no install needed. The archive includes drivers and firmware for all supported programmers. Older releases will run on Windows XP.

Connect the programmer to an USB port. In AsProgrammer main window, go to Hardware menu and select CH341a. Then go to IC menu and select the one that you fitted on programmer. If using SPI memory, there’s a question mark button on the main toolbar (Read ID). Click this and it will (probably) detect the chip type, without you needing to choose it from menu.

AsProgrammer is now ready. Use the toolbar buttons to read, write, erase and verify chip (hover the mouse cursor over them to see what the do).

I tested it with 24C02 I2C EEPROM (256 bytes). Reading took less than a second. Programming took 36 seconds. Then I placed a SPI flash on the programmer. I didn’t even bother to see what’s marked on it, I used the Read ID button and it detected W25Q128 (16 Mbytes). Reading took 2 and a half minutes and writing slightly more than 3 minutes. Note that some chips are write protected and you will need to alter protection registers (see the dropdown menu on the Unprotect toolbar button).

Other utilities

NeoProgrammer is based on AsProgrammer and it is also created by a Russian developer, TTAV134. Getting the software is very hard since you have to register on a forum to be able to download it. The latest version is 2.2.0.10 from 15.10.2021 and it supports UsbAsp and CH341A (black and green programmers). What I like about it is that once you selected a chip it shows you how to connect it to programmer and as soon as you start reading data it is displayed in the binary viewer.

Usage is similar to AsProgrammer. Since I could not find any license information or mentions about any restrictions of distributing this software, here is a download link. I don't like pieces of software which are released as attachments to forum posts, available only to forum members, especially nowadays when there are many ways of freely publishing your software on the internet. Keep in mind this software is not open source and use it at your own risk. The archive is considered safe.

SPI flash memory read with NeoProgrammer
SPI flash memory read with NeoProgrammer

On the forum page of NeoProgrammer there are also some other utilities for CH341A which I will not include in this post.

Some command line utilities are available on Windows too. SNANDer is a cross-platform, open source utility for CH341A serial programmers. There is a big difference between this utility and the others: it does not use the I/O library provided by CH341A manufacturer so it needs a different driver, libusb based. You have to use Zadig to create the driver. If you have never installed the official driver, CH341A will automatically show in the devices drop-down. Otherwise go to Options - List All Devices.

Install or replace driver with Zadig
Install or replace driver with Zadig

Be very careful what device you select. CH341A has USB IDs 1A86:5512. Choose libusb-win32 and click on Install/Replace. Usage is easy after you read the list of available commands which can be invoked with -h argument.

SNANDer usage example on Windows
SNANDer usage example on Windows

Overview

Serial programmers based on CH341A have been around for a while and fortunately some good, open source programming utilities have been developed. I recommend AsProgrammer (with official drivers) and SNANDer (with libusb drivers).

If regularly using CH341A to program chips, you may want to buy a programmer with voltage level switch between 3.3V and 5V. There are also adapters to 1.8V. It’s important to know that the black MiniProgrammer supplies 3.3V to memory chips placed in the ZIF socket and 5V to CH341A. I2C and SPI bus I/O voltage levels are set to 5V! A fix that requires soldering already exists.

Have you ever used AsProgrammer before? What about other programming utilities? If you're using Linux, this is for you.

13 comments :

  1. I was using H341A with ASProgrammer to programm BIOS ms25x6435f 1.8 volt , perfect work - no errors , even was be able to fix original one
    Option to remove protection byte and programm and verify , all is working perfectly
    Was using WIN7 64 bit laptop to install drivers and managed to revive my motherboard GIGABYTE
    Recommend to use if you have broken BIOS 24XXX or 25XXX chip .Mst of 1.8 volts chips ARE SUPPORTED !!!!

    ReplyDelete
    Replies
    1. How were you able to do it? I bought a 1.8v adapter to program my Winbond W25Q64FWSIG. Tried it in both AsProgrammer and CH341A 1.34, 1.29 and even 1.18 (I own the Black Edition and did the 5V to 3.3V modification) and the chip cannot be detected. The 1.8V adapter is getting hot, and lights up the Run LED of my CH341A.

      Delete
    2. did you use sop8 clip? did you make sure the ic pin connect correctly (paying attention on dot marks)? as I had the IC getting hotter because I clip it too tight till the pin went bent or tilted and get short.

      Delete
    3. Jerome, Where do I see the 5v to 3.3v modification tutorial? For what situation is it necessary?
      Where is the 1.8v adapter required?

      Delete
  2. Hello, is it possible to read/write on a ST 080D0WQ EEPROM with AsProgrammer? thanks

    ReplyDelete
  3. How to use Rx and TX pins of the CH341A PROGRAMMER FOR read and write FIRMWARES/softwares from any type of led tv controller board, please provide circuit wiring diagram. Can we use CH341A PROGRAMMER for read and write EMMC CHIP OF ANDROID LED TV CONTROLLER BOARD, IF YES PLEASE PROVIDE DETAILS OF ITS CONNECTION DIAGRAM.

    ReplyDelete
  4. How to Checksum show CRC16 and CRC32?

    ReplyDelete
    Replies
    1. Save the binary data as a file, then open it with a hex editor (i.e., HxD) and compute checksums.

      Delete
  5. There is also https://tomeko.net/software/CH341A_tool/

    ReplyDelete

Please read the comments policy before publishing your comment.