### PonyProg release 3.0 comes with modern UI

A new version of the serial device programmer PonyProg has been released. It comes with a good-looking Qt based interface. Here are some screenshots and tests.

PonyProg is a software application that can read, write and program various memory chips and microcontrollers using the simplest possible interface: a serial port adapter. This adapter consist of only some resistors and some voltage limiting zener diodes. However, this approach has a big downside nowadays. It doesn't work with USB to serial converters. And computers with a real serial port are becoming very rare.

If you still have an older computer with a motherboard serial port, you may take into consideration building the serial adapter used by PonyProg, because it is easy to build and probably the cheapest programmer possible. The schematic of the interface can be found at the author's page (SI-Prog by Claudio Lanconelli).

Currently, PonyProg only support SI-Prog or other serial based programmers and some parallel port programmers. With serial port, it communicates by bit-banging various protocols to the signaling lines contained in the RS232 interface (RTS, CTR and DTR). It would be nice if a future version would support the modern USB based programmers (like the CH341A MiniProgrammer) which lack a good software.

 PonyProg 3.0 main window after reading an I2C EEPROM
You can see the main window in the above screenshot. While for Windows users it may not be a big difference, on Linux there is clearly a better looking UI than the previous V-Lib based interface. The new release has been ported to Qt5 by Eduard Kalinowski and you should know that the Windows binaries are linked with Qt 5.8.0 which is not supported on Windows XP anymore. So, if you still use Windows XP or an older Linux distro that does not support at least Qt4, then go for the 2.x releases of PonyProg (a.k.a. PonyProg2000). You can find all releases on Sourceforge.

Installation is easy. You have a setup for Windows and a deb package for Linux. The package is designed for Ubuntu 16.04 and uses Qt4, but I had no issues installing it in 17.04. Also, the Linux binaries are for amd64 only. If you're looking for the source code, check the GitHub repo.

sudo adduser your_name dialout
Log out and then back in.

If you don't know how to install deb packages in Ubuntu, after you download the file, you open a terminal in the directory where the file is and run the following commands:
sudo dpkg -i ponyprog-3.0.0-ubuntu16.04-amd64.deb
sudo apt install -f
This will install PonyProg and all dependencies. You can start it from your application menu or from command line (ponyprog).

If you want/need to compile from source, start by getting sources from Github. Make sure you also get the forked qhexedit. The easiest way is to use Git. Here are all the commands you need:
git clone --recursive https://github.com/lancos/ponyprog.git
cd ponyprog
qmake
make -j2
sudo make install
You can use qmake-qt4 or cmake . instead of qmake. Note that some errors may occur because of missing development packages. It compiles both with Qt4 and Qt5.

Start PonyProg and follow on-screen instructions and run Calibration then open Interface Setup dialog.
 PonyProg 3.0 I/O port setup
Connect the SI-Prog interface, select the correct port (most motherboards have only one, so the first will be the right one) and click Probe. You should see an Ok message. The Ok message appeared for me even with USB-Serial converters (but that's the only thing that works).

I only tested PonyProg with an I2C EEPROM. I also sampled the protocol with a logic analyzer and it looks pretty nice for a bit-banging approach.

 I2C generated by PonyProg 3.0
The bus speed is about 55 kHz. This is a rather low speed, but it's probably the best choice for compatibility and reliability.
 SI-Prog minimal interface
The interface I used is just a simplified SI-Prog built inside DSUB-9 connector case with a ribbon cable. I placed the EEPROM on a breadboard, provided supply voltage and used dupont wires to connect all together. Read/write operations work without any issue.

USB to serial adapters do not work. I tried to sample the protocol when using a PL-2303 HXD based converter. The protocol is severely malformed and unreadable.

Overall, this new release comes with a new interface (which is good news especially for Linux users). Unfortunately, no new programmer is supported.