THIS OLD ROTARY PHONE ANSWERS YOU BACK — CHATGPT IS ON THE OTHER END OF THE LINE

Lift the handset of an old rotary phone and ChatGPT answers through the original earpiece.

by Zoltan Toth-Czifra

FULL CAD BOM FIRMWARE DOCS

AutomationAI

Built withRaspberry Pi

difficulty
●●●○○
time
a weekend
license
MIT
repo
repo FINISHED (NO COMMITS SINCE OCTOBER 2023)57 stars
1
Jump to section

COMPAREE VERDICT

This is a retrofit that barely touches the phone. You plug an old rotary phone into a Grandstream HT801 analog telephone adapter (Zoltan had to solder an RJ11 cable onto his German TAE connector), set the adapter to auto-dial your server when the handset is lifted, and run Zoltan's Python SIP server on a Raspberry Pi or any computer on the same network. The server answers the call, sends your speech to OpenAI, and speaks the reply back through the original earpiece using Amazon Polly — so you need both an OpenAI and an AWS key. The hardest part is not the code — it is getting the adapter's off-hook auto-dial setting right and, on older European phones, adapting the wall connector to RJ11. The payoff is a conversation piece that actually works, and the MIT license means you can sell these at a maker fair if you want to. One thing to know: every conversation costs API credits, so set spend limits in your OpenAI and AWS accounts.

GOOD TO KNOW

  • —Python code and setup instructions are in the repo, MIT license permits commercial use.
  • —No formal bill of materials — you need a rotary phone, a Grandstream HT801 or similar analog telephone adapter, an RJ11 cable and a Raspberry Pi or any computer on your network.
  • —No CAD files; this is a retrofit, not a print.
  • —The README covers connecting the phone to a Grandstream HT801 adapter and setting its off-hook auto-dial to your server; the phone itself stays unmodified apart from its cable.
  • —Optional extra functions (Philips Hue lights, music, TV, world facts) are included but not loaded by default; weather and voice-accent functions are built in.
  • —You bring your own OpenAI API key and AWS keys (the voice uses Amazon Polly); usage costs apply per conversation.

Parts to buy

4 items

From our check of the build. Exact quantities and part numbers are in the creator’s BOM.

  • Rotary phone (thrift store or online)Find
  • Grandstream HT801 or similar analog telephone adapterFind
  • RJ11 cableFind
  • Raspberry Pi or any always-on computerFind

BUILDS OF THE WEEK

Five open-source builds worth your weekend, every week.

Checked like this one: what’s really in the repo, what it costs, how hard it is. One email, unsubscribe anytime.

Can I build this?

Printnothing required
Buyrotary phone (thrift store or online), Grandstream HT801 or similar analog telephone adapter, RJ11 cable, Raspberry Pi or any always-on computer
Toolssoldering iron (only if your phone has a non-RJ11 connector), screwdriver, OpenAI and AWS accounts
Skillsbasic Python and command line, configuring a VoIP adapter's web interface, and possibly soldering an RJ11 cable onto an old phone connector
Timea weekend — longer if you have to re-terminate an old non-RJ11 phone cable or have never configured a VoIP adapter
CostMid-range — an old phone, a Grandstream HT801 adapter and any always-on computer such as a Raspberry Pi, plus ongoing OpenAI and AWS (Polly) usage fees; the creator gives no prices.
SafetyNo mains wiring is involved. The HT801 supplies telephone line voltage, and a higher AC ring voltage when the phone rings, so unplug the phone from the adapter before opening it or soldering its cable. Otherwise ordinary electronics care.

Build at your own risk. Projects involve tools, electronics and sometimes mains voltage — follow the creator’s safety notes.

Videos

I built ChatGPT into my rotary phone and made it sound German

More builds like this

All projects

Gallery

opengraph.githubassets.com
img.youtube.com

Start here

Navigation into the creator’s own docs — we don’t rewrite the guide, we route you to the source.

  1. 1.Read the README hardware section and set up a Grandstream HT801 to auto-dial your server when the handset is lifted (If your phone has an old non-RJ11 plug, you will need to solder on an RJ11 cable)
  2. 2.Set the OpenAI and AWS environment variables and start the SIP server with python3 rotarygpt.py (Lift the handset and confirm the adapter calls the server before adding extra functions.)
  3. 3.Set up your OpenAI API key and test with a short prompt to confirm billing limits(Conversations cost per token; set a monthly cap in your OpenAI dashboard.)

Resources

Documentation, files and community threads for this build — we link straight to the original sources and never rehost the creator’s files.

KNOWN ISSUES

  • Buying a phone with a connector you cannot adapt — older European phones may need an RJ11 cable soldered on.
  • Not setting an OpenAI API spending cap and running up a bill during testing.
  • Forgetting the HT801's off-hook auto-dial setting — without it, lifting the handset does nothing (direct IP calls need the *47 prefix).
  • Plugging the phone into your real phone line instead of the HT801 — the project needs the adapter between the phone and your network.
  • Running the server on a machine that sleeps or changes IP — the adapter dials a fixed address, so give the Pi a static IP.
  • Not setting an AWS spending alert as well — the voice runs through Amazon Polly on your own AWS account.

Does the phone need to be connected to a landline?

No — you plug the phone into a Grandstream HT801 adapter instead of the wall, and the adapter calls the Python server over your home network.

Can I use this with a different AI service instead of OpenAI?

Yes, but you will need to rewrite the OpenAI module (rotarygpt/openai.py); speech output goes through Amazon Polly, which you can also swap.

How much does each conversation cost?

The creator does not publish a cost. Each conversation uses the OpenAI API for the reply and Amazon Polly on your AWS account for the voice, both billed per use, so set spending caps on both accounts and test with short calls first.

Will this work with a push-button phone instead of rotary?

Very likely — the adapter calls the server as soon as you lift the handset, so the dial is never decoded. Any analog phone the HT801 accepts should work.

Community builds

No community builds yet — be the first, we feature the best ones.

Discussion1

FROM THE COMPAREE TEAM

Lift the handset and an old rotary phone answers with ChatGPT through a cheap VoIP adapter — no dial decoding needed. What would you wire it to first: lights, music, or something else in your home?

CompareeTEAM2mo agoedited

Practical notes from our verification: the MIT license is clear and the code is compact Python, but the repository was last pushed in October 2023, so treat it as a finished hobby project rather than an actively maintained one. The key thing to understand is the architecture: the phone does not talk to a Raspberry Pi over GPIO. It plugs into a Grandstream HT801 analog telephone adapter, which is set to auto-dial the computer when you lift the handset, and the Python script runs a SIP server on port 5060 that handles the call. There is no rotary dial decoding — picking up the handset starts the conversation. Speech goes through OpenAI and the voice comes back via AWS Polly, so you need API keys for both. The creator's phone had an old German TAE connector, so he had to solder an RJ11 cable; check what plug yours has. Extra functions for lights, music, TV and world facts are included but not loaded by default. Correction (4 October 2026): we re-checked this page line by line against the project's own repository, documentation and videos, and fixed errors in earlier versions.

Zoltan Toth-Czifra

Zoltan Toth-Czifra built this to turn an old rotary phone into a home voice assistant with ChatGPT on the line, and demoed it in a video where the assistant also switches lights and changes its accent.

GitHub

Star the project on GitHub

DISCLAIMER

  • Comparee is not the author of the projects featured here. All rights to each project belong to its creator — every page links to the original source, and we never host creators’ files.
  • Information is provided without warranty and may become outdated as projects evolve. Prices are indicative bands only — always check the creator’s parts list for current costs.
  • Building and operating any project is at your own responsibility. Protective equipment, safe workshop practice and compliance with local regulations are the builder’s responsibility.