Internet PSTN (iPSTN)

Internet PSTN (iPSTN)


The goals are:

  • enable data modems to connect to each other in the absence of a telephone network
  • restore period correct communications for retro devices
  • compatible with existing hardware (computers) and terminal software
  • open source, modern technology solution
  • point to point, not depending on any third-parties, eg SIP gateways
  • local and remote modems sync with each other, not with this local intermediary
  • inspire retro users, BBS sysops, ISP system admins
  • Ideally work with analogue telephones too
  • Ideally fast and flexible enough to also support ISDN and ADSL
Please comment if you have any suggestions.

Issues with exisiting solutions

  • Telephone line emulator/adapter (TLE):
    • also known as Line Voltage Inducer or telephone line simulator
    • local connections only
    • does not generate dial tone or ring. Modems are unable to autoanswer without ring
  • Analogue telephone adapter (ATA): do not support data well, if at all
  • PABX: big, hot, noisy, expensive and complicated to setup. Data support unknown, ie fax at best
  • Serial to wifi adapters are definitely more convenient and probably faster for outright file transfer and system maintenance:
    • but really, where's your modem? You may as well be using an emulator if your retro hardware is not using a modem for comms
"Dial-up over VoIP can be unreliable so it is best to keep speeds low. If you don't already have a modem I would recommend looking for a 14.4k modem for the sake of reliability."

Solution strategy

  • New design and build. 2020's processors and networks are orders of magnitude faster than the components in existing ATAs.
  • Version 1 goal: 
    • modems syncing at 33.6kbps over a LAN
    • modems syncing up to 33.6kbps over a WAN
  • modem PSTN/Line socket <-telephone cable-> iPSTN RJ11 socket <-> analogue to digital <-> microcontroller <-> IPv4 <-> UDP <-> Network Interface (wifi/ethernet)



  • RJ11 socket
  • PSTN signalling:


  • Network/wifi configuration
  • Detect modem on/off hook
  • Detect DTMF dial tones. Translate phone number into ip address. perhaps a dedicated country code for the internet. 12 digit telephone number for ip addresses, eg 008004004008 for Perhaps an optional extension to specify non-default UDP port. 
  • codec, compression, buffer - latency monitor/alert
  • PSTN service announcements, eg "the number you have dialled is not connected" for an incorrect IP address followed by busy signal so the modem can detect the connection failure

IP Networking

  • Wifi makes the most sense to reduce cabling
  • ethernet may be required to minimise latency and avoid wifi noise


  • IPv4
  • UDP v TCP: Low latency would favour UDP
  • Default port: 21978
  • Is a control channel needed for return signalling, eg ring, busy, or can we work that out from IP/UDP 
  • TLS: confidentiality requirements are not high for expected use (ie BBS and chat), but would be good to have if the latency overhead is acceptable

UDP packet format

  • magic number
  • protocol version
  • unique session id
  • packet type: data, control
  • packet length - this could be dynamic to optimise signal to noise for best throughput
  • data / control message
How to handle out of order packets due to asymmetric routing? Leave it to the modem error correction if possible.


  • iPSTN carrier board with power, telephone and network modules, socket for mounting off the shelf MCU
  • Museum iPSTN: multiple PSTN ports - eg as many ports as a raspberry pi 4 could handle
    • this would centralise the PSTN facility, cabling is standard telephone cable with rj11 connectors
    • saves having iPSTN with power and network connectivity at every modem
    • See also: Setting up a Dialup Server in 2020

Power Supply

  • 5V 2A USB
    • based on the power supply for Cisco SPA 122 ATA

Carrier Board

  • breadboard for development


  • Arduino/esp with wifi
  • Raspberry Pi Pico PIO ports could a good fit for higher baud rates
  • Raspberry Pi Zero W for development stage

Subscriber Line Interface Circuit (SLIC)

    • Supply PSTN line level voltage (48V)
    • voltage level convert from PSTN line level (48V ??) to ADC voltage levels
      • voltage divider

Are these things of any use? is general availability going to be an issue?
"The Silvertel Ag1171 is a single Subscriber Line Interface Circuit (SLIC) in a 14 pin single in line (SIL) format. The combination of features and packaging offers extremely efficient use of board area, saving significant system size and cost, minimising time to market for Telephony Systems developers. 
The Ag1171 has been designed to work with loop lengths of typically 1.0km (470R including telephone). The Ag1171 has integral dc/dc converter and ringing generation thus providing all the line powering requirements from a single supply. The Ag1171 requires a minimum of external components, making it ideal for low line count, short loop length applications, such as WLL Terminal (WLL), Fixed Cellular Terminals (FCT), Fixed Wireless Terminals (FWT) and Internet Telephony (VoIP)."

Analogue to digital conversion (ADC)

Network Interface

  • to eliminate potential wifi noise and latency issues, develop with wired ethernet
  • 100mbps ethernet minimum
  • Example Ethernet Network Modules:
    • W5500 Ethernet Network Module Microcontroller Board for Arduino UNO

Operating System/Software


  • use existing libraries for these functions
  • Further review needed:
    • GNU Radio
    • software defined modems




Alternate Project Names

  • Analogue Data Adapter: ADA
  • Internet Plain Old Telephone Service: iPOTS, POTSi
  • PSTN over Internet Protocol: PSTNoIP
  • something else that is inclusive of ISDN and ADSL
    • eg copper (Cu) pair emulator: CuPE