This would be a good fit for a small python script which would be nicely cross-platform.
It could be something based on this completely untested never run scribbling of mine:
try:
import usb.core,usb.util
except ImportError as e:
print("The pyusb module needs to be installed.\n"
"At command prompt type:\npy -m pip install pyusb\n"
"Also, the libusb library needs to be on the system path")
CH340B_VID = 0x1a86
CH340B_PID = 0x7523
VENDOR_CTRL_IN = 0xC0 #USB control transfer types
VENDOR_CTRL_OUT = 0x40
mydev = usb.core.find(idVendor=CH340B_VID, idProduct=CH340B_PID)
if mydev is None:
raise ValueError('Device not found')
mydev.set_configuration()
# ctrl_transfer(bmRequestType, bRequest, wValue, wIndex, payload)
# where payload=byte[] for OUT transfer, or num bytes to read for IN transfer
#4. In Initialization sequence, sent before writing EEPROM data:
#SETUP out: [ 40 A1 9C C3 E8 D9 00 00 ][ ] : ACK
mydev.ctrl_transfer(VENDOR_CTRL_OUT, 0xA1, 0xc39c, 0xd9e8, None)
#SETUP out: [ 40 A4 DF 00 00 00 00 00 ][ ] : ACK
mydev.ctrl_transfer(VENDOR_CTRL_OUT, 0xA4, 0x00df, 0x0000, None)
#SETUP out: [ 40 A4 9F 00 00 00 00 00 ][ ] : ACK
mydev.ctrl_transfer(VENDOR_CTRL_OUT, 0xA4, 0x009f, 0x0000, None)
usb.util.dispose_resources(mydev)