A project that aims to turn a Raspberry Pi device into an external modem connected to wi-fi emulating both dial-up ISP connections and BBS (based on previous works by Luis Miguel Silva's (@lmsilva) WiFi2DialUp, by Matt Whitted (podsix)'s pimodem and Jim Brain's/FozzTexx's tcpser)



Press Ctrl + Shift + X to open Advanced Options
General TAB
RAS
(if [the wifi is] not working afterwards please sudo raspi-config and make sure you select the correct locale, also DO NOT USE HIDDEN SSID)
Services TAB
The Raspberry Pi Imager will ask if you want to apply your customizations to the OS, please make sure you select 'Yes' and then 'Yes' again to format your SD and copy the image

ping <hostname>.local. (in my case it would be: ping RAS.local)ssh <username>@<pi_ip>Now you've got two options, the auto setup (easy) way and the manual setup (harder) way
If you're going for the auto setup you just got to do this single line solution:
sudo wget "http://icq.antiga.net/setup.sh" && sudo chmod a+x setup.sh && sudo ./setup.sh
Answer 'Yes' to IPv4/IPv6 prompts

The auto setup ends here and you're good to go, add a generic (standard) modem to 38400 baud rate WITHOUT HARDWARE FLOW CONTROL
and either dial (PPP) to 2242525 to use the internet (remember: you WILL need to use your login and password credentials from raspberry to authenticate the dial-up)
or dial via Hyper Terminal (or such) using ATDTyour.bbs.com:port or dial ATDT3372234 to Luiz Pacheco's micronet BBS ;)
But if for some reason you wanted to do the manual setup, follow the next detailed steps:
Use the steps below for granular control.
sudo nano /boot/firmware/config.txt
# this first line is kind of optional because you can use the p2 amplified output anyway, but we're going to use an external amplifier wired to GPIO
# add at end:
dtoverlay=pwm-2chan,pin=18,func=2,pin2=13,func2=4
# now these settings are to make sure we get the "good" UART ttyAMA0 so it would work as it should.
dtoverlay=disable-bt
dtoverlay=pi3-disable-bt
enable_uart=1
sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
# to make it persistent:
sudo nano /etc/sysctl.conf
# uncomment net.ipv4.ip_forward=1
sudo sysctl -p
sudo nano /boot/firmware/cmdline.txt
# remove the console=serial0,115200 so for the console=argument will remain only as console=tty1 (and the other settings unchanged).
sudo apt update && sudo apt upgrade -y
sudo apt install -y pptp-linux iptables git build-essential python3
cd ~/
git clone https://github.com/caiot5/RetroExternalModem.git
# make sure you create a symlink for it in /WiFi2DialUp THIS IS MANDATORY!
sudo ln -s ~/RetroExternalModem/ /WiFi2DialUp
cd RetroExternalModem
tar -zxvf tcpser.tar.gz
cd tcpser
# remove pre-compiled tcpser binary
rm tcpser
# compile
make
# make the start and settings scripts executable
chmod a+x start.sh
chmod a+x settings.sh
sudo iptables -t nat -A POSTROUTING -s 172.16.0.0/12 -j MASQUERADE
sudo apt install -y iptables-persistent
sudo sh -c 'iptables-save > /etc/iptables/rules.v4'
sudo cp ~/RetroExternalModem/options /etc/ppp/options
cd ~/RetroExternalModem/
sudo mv tcpser.service pppd-wrapper.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable tcpser
sudo systemctl enable pppd-wrapper
To add visual indicators using LEDs on your Raspberry Pi, follow these steps:
# get the required files
wget "http://ftp.podsix.org/pub/pimodem/LED.py"
wget "http://ftp.podsix.org/pub/pimodem/set_leds.sh"
wget "http://ftp.podsix.org/pub/pimodem/set_leds.service"
# move the files to the /usr/local/bin
sudo mv LED.py set_leds.sh /usr/local/bin
# give the permissions to the scripts
sudo chmod +x /usr/local/bin/LED.py /usr/local/bin/set_leds.sh
# enable the leds as a service
sudo mv set_leds.service /etc/systemd/system
sudo systemctl daemon-reload
sudo systemctl enable set_leds
sudo systemctl start set_leds

If you need to uninstall or upgrade this project, get and run the uninstaller script:
sudo wget "http://icq.antiga.net/uninstaller.sh" && sudo chmod a+x uninstaller.sh && sudo ./uninstaller.sh
Then, to install again (to upgrade) just download and run the latest setup script:
sudo wget "http://icq.antiga.net/setup.sh" && sudo chmod a+x setup.sh && sudo ./setup.sh
You can connect to your RetroExternalModem via HyperTerminal and use AT commands to configure the modem settings
BAUD RATE:
Use the command ATC BAUD,(BAUD)
For instance: ATC BAUD,9600
Phone Number:
Use the command ATC TEL,(PHONE)
For instance: ATC TEL,2242525
WIFI Settings:
Use the command ATC WIFI,(SSID),(PASSWORD)
For instance: ATC WIFI,MyNetwork,MyPass123
Show current settings:
Use the command ATJ (based on Luis Miguel's ATI approach)
Licensed under GPLv3. Thanks to all contributors & the open-source community for RetroExternalModem and related tools.
First of all I would like to thank my friend Luiz Pacheco for all the encouragement and feedback (also for electronic schematics).
The Sportster (RetroExternalModem) Case has been modeled all by him and only him alone, make sure you get the stl and print yourself, mate ;)
- Luiz Pacheco's Sportster 3D Case
Special thanks to Luis Miguel Silva for his extensive technical contributions. His work laid the foundation for much (almost all) of this project. Explore his insights and projects:
- WiFi2DialUp Progress Update
- [Raspberry Pi Zero W Serial Modem](https://mygpslostitself.blogspo
—
$ claude mcp add retroexternalmodem \
-- python -m otcore.mcp_server <graph>