ESP8266-based WiFi serial modem emulator ROM
1## WiFiPPP
2
3Yet another ESP8266-based WiFi serial modem emulator ROM featuring a Hayes
4AT-style command interface that emulates a serial modem and allows old hardware
5to "dial" telnet addresses rather than phone numbers.
6
7It also includes a built-in PPP server that routes through the WiFi interface,
8reachable with `ATDT PPP`.
9Inside the PPP connection is a SOCKS5 proxy that can strip TLS from common
10services like HTTPS and IMAPS, allowing old hardware to talk to modern, secure
11services without needing to do any TLS.
12
13### WiModem232
14
15WiFiPPP currently targets the
16[WiModem232](https://www.cbmstuff.com/index.php?route=product/category&path=59_66)
17hardware, which includes:
18
19- ESP8266-12F WiFi module
20- (Optional) I2C-based
21 [SSD1306 monochrome OLED](https://amzn.to/3zs39OL)
22 (with blue and yellow sections)
23- [NeoPixel 5050 multi-color LED](https://www.adafruit.com/product/1655)
24 with an integrated WS2811 controller
25
26### Installation
27
28For the WiModem232, installation will replace the factory ROM image, though no
29hardware modification is needed.
30
31This manual installation will only be required once, since future updates can
32use the built-in `AT$UPDATE` command to do an over-the-air update over WiFi.
33
34First, clone this Git repo and compile the WiFiPPP ROM.
35
36 $ git clone --recursive https://github.com/jcs/WiFiPPP
37 [...]
38 $ cd WiFiPPP
39 WiFiPPP$ gmake
40
41On the back side of the WiModem232 (with the USB port facing down) are 5
42vertical sockets.
43From top to bottom, these are:
44
451. GPIO0 (to enter bootloader)
462. TX
473. RX
484. 3.3v VCC
495. GND
50
51Connect a
52[4- or 5- pin USB TTL serial cable](https://amzn.to/3kxsssl)
53to the bottom 4 sockets.
54It is recommended to use a breadboard so the 3.3V VCC and GND pins can be
55connected to the breadboard's `+` and `-` rails, and then connect wires from
56those rails to the sockets on the WiModem232.
57
58Connect a jumper wire between the top port (GPIO0) port and the GND rail.
59
60Connect another jumper wire to the GND rail which will be used to reset the
61ESP8266.
62
63Run `gmake install` to launch `esptool` and prepare to flash the WiFiPPP ROM
64through the USB TTL cable.
65
66Touch the jumper wire from the GND rail to the RST pin on the ESP8266, which is
67the bottom-most pin along the right-hand side.
68The blue LED will flash briefly, and if the GPIO0 socket is correctly connected
69through your other jumper wire to GND, the ESP8266 will reboot to the
70bootloader.
71
72`esptool` should see this and start uploading the ROM automatically.
73
74After flashing, disconnect the GPIO0 jumper wire or else it will reboot into
75bootloader again.
76Touch the RST pin again and the device should boot and show WiFiPPP on the OLED
77screen (if your model has one).
78
79In a serial terminal connected to your USB TTL device at any baud rate, you
80should see some junk from the bootloader after rebooting.
81Hit enter and type `AT` and it should echo back.
82
83If all is working properly, you can disconnect all of your cables and connect
84through the DB25 port (but not at the same time).
85You'll need to re-establish your WiFi settings since the EEPROM layout from
86WiFiPPP is not compatible with the factory WiModem232 settings.