Bring a vintage rotary phone back to life on a modern telephone exchange. ErdTone converts pulse dialing to DTMF tones in real time, running on a single ATtiny85 hidden inside the phone with no visible modifications.
Built around the Siemens W48 with full support for the Earth key (German: Erdtaste), it goes beyond basic pulse conversion with last-number redial, speed-dial, Direct Dial Mode, auto-dial on pickup, * and # hold gestures, pause support, and adjustable DTMF timing. Everything is configured directly from the rotary dial - no computer needed after flashing.
This project is a fork of the rotarydial firmware, extended with Earth key support, auto-dial, speed-dial, Direct Dial Mode, and configurable DTMF and menu timing.
Needed build parts:
- 1x ATTINY85V
- 1x 78L05 5V regulator
- 1x 4 MHz crystal
- 1x 680 ohm resistor
- 1x 27 V 1 W zener diode
- 2x 22 pF ceramic capacitors
- 4x 0.1 uF (100 nF) ceramic capacitors
- 1x 4 position terminal
- 1x 1N4007 diode
A Fritzing layout is included with a compact footprint designed to fit inside the W48 housing without modifications. See ErdTone.fzz.
-
Disconnect the rotary dial from the phone circuitry. Do not connect it in parallel with the original phone circuit.
-
Connect it to the converter:
- Pulse contact, normally closed and opening for each pulse, to
PULSE - Dial contact, closed while the dial is moving, to
DIAL
- Pulse contact, normally closed and opening for each pulse, to
-
Disconnect the
Earth keyfrom the phone circuitry. -
Connect it to the same
DIALline used by the rotary dial:- One side to
DIAL - Other side to
GND
- One side to
-
Pressing the
Earth keymust pullDIALtoGND.
-
Connect power after the hookswitch:
- Line
+toVCC - Line
-toGND
- Line
-
The device must be off when the phone is on-hook.
-
Optional: add a diode, for example 1N4007, between line
+andVCCfor protection:- Anode to line
+ - Cathode to
VCC
- Anode to line
Install tools:
sudo apt update && sudo apt install gcc-avr avr-libc binutils-avr avrdude makeBuild, flash and set fuses:
make install # default 4 MHz external crystal
make CLOCK_MODE=8 install # 8 MHz internal oscillator, for testing onlyErase EEPROM, clearing all stored numbers and settings:
make eraseDial a number and release. The firmware sends the matching DTMF tone.
If you pause for more than about 3 seconds between digits, a pause is automatically inserted into the redial memory at that point. If you wait more than about 6 seconds, two pauses are inserted. This allows redial to correctly replay numbers that require waiting for an automated phone menu or office switchboard to respond.
The Earth key is a quick redial and speed-dial shortcut.
- Brief press and release: redial the last number
- Hold until the first beep: dial the stored Earth key speed-dial number
- Hold until the second beep: program the Earth key speed-dial number
- Press during startup: cancel auto-dial for that cycle
Use the rotary dial for special functions.
Dial a digit and hold until the first beep, then release:
1= send*2= send#3= redial last number4to9,0= dial the stored speed-dial number
Keep holding until the second beep:
4to9,0= enter programming mode for that speed-dial slot1= cycle DTMF tone duration, 80 ms or 200 ms2= cycle menu hold time, 1 s or 2 s3= enter auto-dial setup
- Dial the slot digit.
- Keep holding until the second beep, then release.
- Enter the number one digit at a time.
- Release after each digit.
- Hang up when done.
Notes:
-
Each digit is written to EEPROM immediately.
-
*,#, and pause can be stored by dialing1,2, or3, holding until the first beep, then releasing. -
The Earth key has its own dedicated speed-dial slot, programmed by holding the Earth key until the second beep.
-
During programming, you can copy into the current slot:
- Press the
Earth keyto load the last dialed number. - Dial a source speed-dial slot,
4to9or0, and hold until the first beep.
- Press the
-
Hold
0until the second beep to clear the current slot. This also works for the Earth key slot.
Auto-dial is stored in one of the speed-dial slots and dials automatically after power-up if enabled.
Set auto-dial:
- Dial
3. - Hold until the second beep, then release.
- Dial the speed-dial slot, or press the
Earth keyto use the Earth key speed-dial number as the auto-dial number. - The auto-dial is saved with the default 5 second delay.
- Optional: dial a delay digit from
0to9to override the delay.
Clear auto-dial:
- Dial
3. - Hold until the second beep, then release.
- Hold
0until the second beep, then release.
Pressing the Earth key or starting to dial during startup cancels auto-dial for that cycle.
Service codes are entered during a normal call using the rotary hold menu for * and #.
Direct Dial Mode turns digits 4 to 9 and 0 into instant speed-dial keys. Pressing any of them immediately dials the stored number without holding. The Earth key also dials its assigned speed-dial slot directly.
Set it up with a 3-digit PIN PPP, using digits 0 to 9 only:
-
**PPPenables Direct Dial with Programming Lock:- Normal dialing still works.
- Speed-dial programming, settings changes, and factory reset are blocked.
-
*#PPPenables Direct Dial Only:- Normal dialing is blocked.
- Digits
4to9and0directly dial their assigned speed-dial slots. - The Earth key directly dials the Earth key speed-dial slot.
- Speed-dial programming, settings changes, and factory reset are blocked.
Disable the active lock mode:
**PPPor*#PPPwith the correct PIN permanently disables the active lock mode and clears the PIN.##PPPwith the correct PIN temporarily disables the active lock mode for the current call only.
To enter a PIN when Direct Dial Only is active:
- Dial
*or#twice via first-level hold as the first two actions after pickup. - Any combination works:
**,##,*#, or#*. - This arms PIN entry mode.
- Dial the three PIN digits directly.
- These digits feed the PIN sequence without triggering any speed-dial slot.
Use **PPP or *#PPP to permanently disable the active lock mode, or ##PPP to disable it for the current call only.
Dial *#0#* to erase all stored numbers, speed-dial slots, auto-dial configuration, and reset DTMF duration and menu hold time to defaults.
Factory reset is blocked when a lock mode is active.
ErdTone builds on the work of Boris Cherkasskiy, who created the original firmware in 2011, Arnie Weber, who reworked the hardware in 2015, and Matthew Millman, who cleaned up the implementation in 2018.
