···11+## WiFiPPP
22+33+Yet another ESP8266-based WiFi serial modem emulator ROM featuring a Hayes
44+AT-style command interface that emulates a serial modem and allows old hardware
55+to "dial" telnet addresses rather than phone numbers.
66+77+It also includes a built-in PPP server that routes through the WiFi interface,
88+reachable with `ATDT PPP`.
99+Inside the PPP connection is a SOCKS5 proxy that can strip TLS from common
1010+services like HTTPS and IMAPS, allowing old hardware to talk to modern, secure
1111+services without needing to do any TLS.
1212+1313+### WiModem232
1414+1515+WiFiPPP currently targets the
1616+[WiModem232](https://www.cbmstuff.com/index.php?route=product/category&path=59_66)
1717+hardware, which includes:
1818+1919+- ESP8266-12F WiFi module
2020+- (Optional) I2C-based
2121+ [SSD1306 monochrome OLED](https://amzn.to/3zs39OL)
2222+ (with blue and yellow sections)
2323+- [NeoPixel 5050 multi-color LED](https://www.adafruit.com/product/1655)
2424+ with an integrated WS2811 controller
2525+2626+### Installation
2727+2828+For the WiModem232, installation will replace the factory ROM image, though no
2929+hardware modification is needed.
3030+The device can be revered back to stock by just flashing the
3131+[factory ROM](http://www.cbmstuff.com/updates/wimodem232_V2_update.bin)
3232+again.
3333+3434+This manual installation will only be required once, since future updates can
3535+use the built-in `AT$UPDATE` command to do an over-the-air update over WiFi.
3636+3737+First, clone this Git repo and compile the WiFiPPP ROM.
3838+3939+ $ git clone --recursive https://github.com/jcs/WiFiPPP
4040+ [...]
4141+ $ cd WiFiPPP
4242+ WiFiPPP$ gmake
4343+4444+On the back side of the WiModem232 (with the USB port facing down) are 5
4545+vertical sockets.
4646+From top to bottom, these are:
4747+4848+1. GPIO0 (to enter bootloader)
4949+2. TX
5050+3. RX
5151+4. 3.3v VCC
5252+5. GND
5353+5454+Connect a
5555+[4- or 5- pin USB TTL serial cable](https://amzn.to/3kxsssl)
5656+to the bottom 4 sockets.
5757+It is recommended to use a breadboard so the 3.3V VCC and GND pins can be
5858+connected to the breadboard's `+` and `-` rails, and then connect wires from
5959+those rails to the sockets on the WiModem232.
6060+6161+Connect a jumper wire between the top port (GPIO0) port and the GND rail.
6262+6363+Connect another jumper wire to the GND rail which will be used to reset the
6464+ESP8266.
6565+6666+Run `gmake install` to launch `esptool` and prepare to flash the WiFiPPP ROM
6767+through the USB TTL cable.
6868+6969+Touch the jumper wire from the GND rail to the RST pin on the ESP8266, which is
7070+the bottom-most pin along the right-hand side.
7171+The blue LED will flash briefly, and if the GPIO0 socket is correctly connected
7272+through your other jumper wire to GND, the ESP8266 will reboot to the
7373+bootloader.
7474+7575+`esptool` should see this and start uploading the ROM automatically.
7676+7777+After flashing, disconnect the GPIO0 jumper wire or else it will reboot into
7878+bootloader again.
7979+Touch the RST pin again and the device should boot and show WiFiPPP on the OLED
8080+screen (if your model has one).
8181+8282+In a serial terminal connected to your USB TTL device at any baud rate, you
8383+should see some junk from the bootloader after rebooting.
8484+Hit enter and type `AT` and it should echo back.
8585+8686+If all is working properly, you can disconnect all of your cables and connect
8787+through the DB25 port (but not at the same time).
8888+You'll need to re-establish your WiFi settings since the EEPROM layout from
8989+WiFiPPP is not compatible with the factory WiModem232 settings.