See
https://www.onetransistor.eu/2017/08/ch341a-mini-programmer-schematic.htmlI said measure with jumpers removed, because some mods/versions of the CH341x ZIF programmer board use a jumper for VCC selection usually by shorting out the 3.3V regulator for 5V operation. This is *NOT* ideal as the CH341x chips need 3.3V for their USB interface to operate correctly, and if the dropout voltage of their internal regulator supplying V3 (pin 9) from Vcc (pin 28) is too high, when Vcc is at 3.3V the reduced voltage on V3 can cause USB communication errors, and/or data corruption. The datasheet says to link Vcc and V3 to bypass the internal regulator when Vcc is 3.3V.
To determine what mods if any are needed for your programmer, its easiest to use the USB shell as a ground point and measure the I/O pins 1-4 on the header beside the ZIF socket near the same board edge as the crystal. You can also easily measure Vcc at pin 28, but the risk of damage from a short if your probe slips is much higher. Don't try to measure at the ZIF socket itself, as the contacts aren't easily accessible from the top with a multimeter probe. Note that the usual parking (storage) position of the jumper on pin 1 & 2 of the other header shorts ACT# to ground. This does no harm because there is a series resistor between the header's ACT# pin and the CH341x.
Three possible conditions will be found when measuring a powered, idle CH341x programmer with no jumpers fitted. Either Vcc and the SPI I/O pins will be at 5V, or at 3.3V or at 0V (if the design version or mod requires a jumper fitted to supply Vcc power).
If you get either 3.3V or 5V and your memory chips aren't the same voltage, you need to do a mod. This topic is about modding the 5V version down to 3.3V, either permanently or switchably. If you get 3.3V and need 5V its a different mod, not covered yet here.
If you get 0V, *either* your programmer is modded or a different version and you should follow its supplier's instructions for what jumpers to fit for 3.3V or 5V operation *or* its not getting power from the USB, or its faulty. As it has a power LED, its easy to see if its getting power.
My reply #3 was only updated to fix a broken link to the CH341x datasheet. Many have modified this programmer following my suggestion in #3, and some have even made videos about it. The key to success is to use desoldering braid (aka: solderwick) to remove as much solder as possible from pin 28 before lifting it, only lift it far enough to break the surface tension of the molten solder between it and the pad so it no longer bridges, and to use *THIN*, preferably solid core wire, thinner than the pin so you don't stress it too much when handling the wire. I prefer Kynar insulated silver plated solid core 30 AWG wirewrap wire, but others prefer magnet wire. It can be very difficult to remove the varnish insulation from thin magnet wire without damaging the wire, and Kynar insulation is fairly tough, so the wire will be pulled on when you strip the end, so in either case, to avoid pulling pin 28 off the IC, prepare the wire to length and bent to shape, and get both ends tinned before you solder it to the board. Using electronics grade flux will make all the desoldering and soldering operations easier.
I also discussed a 5V/3.3V switchable mod in reply
#55. There are others that *DON'T* use a DPDT switch, but many of those don't power V3 properly when switched to 3.3V so even if the CH341x still enumerates correctly, may cause hard to trouble-shoot programming errors. If the other mod gives less than 3.1V or greater than 3.6V on V3 (pin 9) expect trouble!