ESP01 as wireless programmer

Here we use a ESP-01 to program a Arduino.
The base is the Esp-link project,
I use a ESP-01 and connect it like this:
URXD: connect to TX of microcontroller
UTXD: connect to RX of microcontroller
GPIO0: connect to RESET of microcontroller

When using a 5V Arduino I use a resistor divider on the ESP:s RX as it's not 5 volt tolerant. 20k from Esp:s RX to ground, 10k to Arduino:s TX. No divider is needed on the ESP:s TX as it is an output.
The firmware for the ESP is at, there we also find how to upload it to the ESP:

curl -L | \
tar xzf -
cd esp-link-v2.2.3 --port /dev/ttyUSB0 --baud 460800 write_flash -fs 4m -ff 40m \
0x00000 boot_v1.5.bin 0x1000 user1.bin 0x7E000 blank.bin

For a newer module (has a black circuit board) I use this: --port /dev/ttyUSB1 --baud 460800 write_flash -fs 8m -ff 40m 0x00000 boot_v1.5.bin 0x1000 user1.bin 0xFE000 blank.bin

We then find the settings for the ESP in the web browser on its IP-address, which is found by the Android-app Fing (or the serial port?).
First I use the Androids network settings to connect to the Esp:s network (named ESP-xxxx).
Then I use the Androids web browser to open, here we find the Esplink gui.

Here we set the following:
Reset Gpio0
ISP disabled
Conn LED disabled
Serial led gpio2 (optional)
Uart pins Normal
RX pull-up not selected.

Also change baud rate to 57600 on the uC Console page.

Compile the code in the Arduino IDE. A hex-file is then placed in /tmp. Here I compiled the sketch "lawnmower2016.ino" and got this hex-file:

Then upload the Arduino code:

avrdude -C/home/patrik/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino2/etc/avrdude.conf -v -patmega328p -carduino -P net: -b57600 -D -Uflash:w:/tmp/buildc32c2ad5c4b48bdb68bb9d08401b0d31.tmp/Blink.ino.hex:i

Another one:
avrdude -C/home/patrik/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino2/etc/avrdude.conf -v -patmega328p -carduino -P net: -b57600 -D -Uflash:w:/tmp/builde2680df248d7f8adec6f6bb45c90d9b2.tmp/lawnmower2016.ino.hex:i