Using CH341A programmer for reading ROM chips

A place to discuss all topics that do not meet the rest of the conference

Moderators: Roman_TS, Maxim_TS

User avatar
Site Admin
Posts: 33
Joined: 06.05.14
Reputation: 1 / (7)

Using CH341A programmer for reading ROM chips

Postby Pavel_TS » 23.03.17, 14:12

Got in my hands such interesting device called CH341A USB-UART converter and I2C/SPI programmer which costs about $2 on Aliexpress including free shipping.


As the name implies, device is based on WinChipHead CH341A chip, which is Chinese analog of FTDI FT232H chip.

I decided to quickly test is it a good for reading ROM chips from PCBs.

In Windows 10 drivers are not installed automatically


So I decided to use for testing my Ubuntu laptop, in Linux kernel drivers for CH341 appeared several years ago.

As software for programming I chose flashrom - most advanced opensource utility for identifying, reading, writing, verifying and erasing flash chips. For now it supports more than 476 flash chips, 291 chipsets, 500 mainboards, 79 PCI devices, 17 USB devices and various parallel/serial port-based programmers. Please note that for working with CH341A-based programmers you will need version 0.9.9 or higher.

I took a PCB for testing from dead 500 GB WD5000BPVT. PCB revision is 2060-771692-005 and it has Winbond 25X40BLN1G chip.

Firstly I transfered ROM chip to SOIC adapted which was included in programmer device kit (if you don't have it you can also order it less than $1 from Aliexpress/Ebay)


Then I plugged SOIC adapter to ZIF socket, and whole programmer to USB port of my laptop:


Flashrom recognized ROM chip and programmer without problems:


I read ROM to image via command

sudo flashrom -p ch341a_spi -r rom.bin

To check that data was readed correctly I also read ROM via PC-3000 and compared results via ACElab HexEditor:


So ROM was readed by ch341a programmer correctly.

Answering possible question: can I use CH341A programmer as main programmer for data recovery jobs ?

It's a good option for start, hovewer in some cases it might not work.

Choice of programmer hardware mainly depends on which chips you are planning to flash. Most likely there is a software limitation, because hardware is quite standart - most chips are able to flash over SPI or I2C bus. Xeltek is considered as leading company in this industry, they supports more that 100k devices. But must programmer for data recovery support so many devices or is it excessive ?

For interst, I took first 7 dirrerent drives from my table and compare support or their ROM chips in Xeltek software and flashrom:

ChipDriveXeltek supportflashrom support
Winbond 25Q80BWS35ST3000LM016++
Winbond 25X40BLNIGHD103SJ++
Atmel 25DF041AHD103SJ++
25FS406Toshiba DT01ACA100, ST2000DM001??
Pm 25ld020Hitachi HDS721050CLA362++
ST25P10V6Maxtor Diamond Max Plus 8++
Winbond 25X20ALNIGWD5000BMVV-11GNWS0++

As you see, flashrom supports almost all chips as Xeltek. So for data recovery you can choose any SPI programmer which is supported by flashrom. I decided to test CH341A-based just because it's cheapest one. For now only one software limitation of CH341A support in flashrom is that it does not support any parameters currently. SPI frequency is fixed at 2 MHz so you wouldn't be able to read correctly SPI chips which are programmed in another frequency. If you are looking for - programmer which doesn't have software 2 MHz limitation now you can look for Bus Pirate, an open source hacker multi-tool.It costs a little bit higher, but it can act not only like programmer, you can use it for reverse engineering too.

Feel free to share your experience about using programmer devices in comments :wink:

Return to “Discussion club”

Who is online

Users browsing this forum: No registered users and 1 guest