Building your own pulse to tone (DTMF) converter

Related article: A crash course in using GPO telephones in the modern world

A few months ago I purchased a Rotatone module for one of my vintage telephones. It’s a great product, but in the event that you find something you don’t like about its functionality, there’s not a lot you can do about it, because it’s not an open source product. Also if on a very tight budget, you could save yourself a bit of money building your own too.

Rotatone module (red) installed into a GPO 746F

Fortunately there are a few projects kicking around the internet which make for quite a good starting point. One of the earlier efforts was undertaken by Boris Cherkasskiy and subsequently improved on by Arnie Weber on this bitbucket repository. Arnie includes some gerbers with this, which I’ve fired off to Seeedstudio PCB and made some of my own of, forming the basis of this project. I have to say it is quite a luxury to be building someone else’s design for once!

Arnie Weber’s pulse-to-tone converter PCB – as constructed by him
For the benefit of those who don’t use Eagle (like me) this is Arnie’s rendition of Boris’s original design.

All of these are based on the application note AVR314 from Atmel, which includes some tricky code that generates DTMF tones using the PWM module of an AVR. Complicated stuff which I am not going to go into the details of.

My build of the original design

My changes to the design

My version of the PCB

When I built the original design, I found that while it did work – there were a couple of problems with it:

  • It would only dial on a VOIP terminal adapter (Cisco VIC in my case). My BT Landline didn’t seem to recognise the DTMF tones
  • It presents a significant AC load on the line, attenuating speech by 70%, making conversations rather hard to hear

For these reasons I wouldn’t recommend building the original design. Below is my revised schematic:

The main change to the design is the power supply. By replacing the Zener and Resistor arrangement with a 78L05 – the AC load is virtually nothing, meaning speech volume is now the same as it was before installing it.

We can see how this problem sneaked in: R1 of the original design was first specified to be 2K, which kept impedance in check, but left it with a voltage droop problem, this was revised to 220 ohm, which fixed the droop problem, but then meant the adapter was shunting the line through the 200uF capacitor. Having a 78L05 fixes all of this, and we can do away with that 200uF capacitor while we’re at it.

This also happens to fix the BT landline problem, as that was simply that the tones were too quiet, thanks to it attenuating its own output!

I also removed the resistors on the HW de-bounce circuit, now utilising the AVR’s internal pull-ups. We don’t need that transistor either – this has been replaced by a resistor (R1) which effectively does the same thing, with the AC path now through the VCC pin of the AVR, then through the 78L05.

My version of the PCB installed in a GPO 746F

One drawback of this design is that the power supply of the AVR is coupled to the line, meaning we can hear it executing instructions through the earpiece. This is not a problem in practice however because my version of the code puts the AVR in power-down mode during all idle times, thus eliminating the problem.

It is however still possible to hear the AVR processing each pulse through the earpiece. This is heard as a “click” which in my opinion is desirable as this emulates the clicking noises which would have been heard when the rotary dial was in circuit.

Fitted to a 332F (Wedged under the 303A key)

My version of the code

I have made quite a few alterations from the original implementation – adding “Redial” functionality, as well as simplifying the programming of speed dials.

As previously mentioned, in my implementation the AVR is in power-down mode during all idle times, essential when building my version of the hardware.

You can get my code here on github. Alternatively the code on Arnie’s repository will work – provided that internal pull-ups are enabled on PB1 and PB2. Functionality differs significantly.

Gerbers for my version of the PCB

Can be downloaded here.

If you are new to this, mine were built with Seeedstudio’s $4 PCB service.  Default options on their service are OK for this board.

Wiring it up

The exacts of how these are wired varies significantly from phone to phone, you’re on your own there. It is safe to say that interchangeability between converter designs is good. My GPO 746F was originally wired for a Rotatone, and I found that this board dropped straight in its place, with the red wire connected to LINE, and the blue wire connected to GND.

I kept the original blue, pink and grey wires for the connection to the dial, which are wired on as pictured.

Use with NZPO phones (reversed dial)

NZPO Issue GPO phones with reversed dial (Left: 332F, Right: NZPO 100 – New Zealand made 746F)

In the unlikely event you are installing this device into one of these phones, you’ll need different firmware for the converter. Select the “NZ” version of the .HEX file when downloading from the link below.

The reason is because while the numbers appear on the dial in reverse order, the mechanism behind is identical to GPO phones, so this must be translated in software.

I believe there are other dial layouts which at present are unsupported however could be supported easily by modifying and rebuilding the source code.

Shopping list

I ordered most of the parts for my board from the Mouser UK website.

  • 1x ATTINY85V
  • 1x 78L05 5V Regulator
  • 1x 4 MHz crystal
  • 2x 22pF ceramic capacitors
  • 4x 0.1uF (100nF) ceramic capacitors
  • 1x 680 ohm resistor
  • 1x 27V 1W zener diode
  • 1x 4 position 8.25mm pitch barrier terminal i.e. OSTYK42104030, Molex 38700-7504, Molex 38700-7304 (with mounting ends).

Programming the AVR

There’s quite a few different ways to do this, I’ll let you do your own research. Your programmer will need:

The .HEX file from here

Correctly set fuse bytes:

  • LFUSE: 0xFD
  • HFUSE: 0xDF
  • EFUSE: 0xFF

The user manual (for boards running my code)

Normal dialing

Just pull the dial round from the desired number to the fingerstop and release immediately.

Dialing * and #

for * Pull the dial from ‘1’ and hold on the fingerstop for 2 seconds until you hear a beep, release, and a tone for * will be generated.

For # do the same but use ‘2’.

Redial

Pull the dial around from ‘3’ and hold on the fingerstop for 2 seconds. Release when you hear the beep, and the last number will be redialed.

Speed dials

There are 7 speed dial locations. 0, 4, 5, 6, 7, 8, 9. Pull the dial around  to the fingerstop and hold for 2 seconds, release when you hear the beep and the desired number will be dialed.

Programming a speed dial

Pull the number of the desired location around to the fingerstop and hold for 4 seconds, you will hear a two-tone beep. Release the dial.

You are now in programming mode. Now simply dial out the number you wish to store, releasing the dial immediately after each digit. You will hear a simple beep after digit. Once complete, hang up, the number is now saved.

When doing this you will likely have your telephone exchange furiously beeping at you because you haven’t dialed a number. If annoying, you can enter the BT “quiet line test” (For people in the UK) during programming.

118 thoughts on “Building your own pulse to tone (DTMF) converter

  1. Good morning!
    Very impressed reading about your pulse-to-tone converter. I have tried most of the commercial ones and found them all lacking in one respect or another.

    May I ask you two questions please?
    1. Does using your converter require the user to wait a palpable amount to time between digits?
    2. Are you in a position to sell me a PCB and a programmed ATTINY85V?
    This will be for my own private use and not sold on , nor will I do anything evil with it. Happy to pay a generous price, as I appreciate the cost of developing projects like this.
    Thanks and congratulations on a great website!

    1. If you’re wanting to “buy” something from me, probably easier to just buy the Rotatone. It’s 95% the same as this! This project is just for D.I.Yers.

      Actually the main difference is that this board has a 4s timeout between speed-dial and program-speed-dial whereas the Rotatone is fixed at 1.5s (which for me was too short).

      The Rotatone also has some ability to configure various unlikely-to-need-to-be-changed settings by dialing digits on to the “3” position (redial) which I haven’t bothered with.

      On my design the delay from last pulse to tone is 128ms, the tone is 100ms long so you could then start dialing another digit after that. It’s 228ms minimum between digits.

      1. Hi
        This is a very nice project and well written. I fit Rotatones to old telephones and find them brilliant. However I eould love to br able to fit them to 10 button Trimphones. So many are being scrapped. I am no electronics wizard and cannot find a way to get over the keypad being powered. Sadly fried a few Rotations in the r red process. I think you would enjoy the challenge and in the process save s lot of phones from landfill. Please help 🙏

        1. Hello. I have seen your website. You don’t strike me as the type who is going to be throwing away any telephones. If I can get myself excited about old phones I might take a look in the future but fairly preoccupied with other things at present.

          1. Hi it’s not me that will throw them away. I don’t currently buy them unless they are rare. I would buy them and restore them. To me it seams a simple problem but I’ve asked a few telephone experts and they tell me it’s impossible? Fully understand you are too busy but I feel sure you would find the answers by looking at a diagram without needing to actually do it physically. Anyway thanks for the fast response it was much appreciated.

          2. It’s not impossible but it would require a device that is fundamentally very different to a Rotatone. It would be quite a job to develop it.

  2. I made a few mods to tweak the code to my liking.

    I made the state revert back to normal STATE_DIAL state after the redial or # or * functions are used. Previously, the ATTINY85 remained in the STATE_SPECIAL_L1 state until hangup.

    I added the capability of storing a # or * in redial memory.

    I added the capability of adding a * or # into any memory location.

    the updated main.c is at:

    http://projectmf.homelinux.com/pulsetotone/

    Don

  3. Thanks for the detailed instructions. I was able to make the boards and program the ATTiny with little fuss. Just a question, does the +line out need to go through the hook or just straight onto the positive on the line where it comes into the phone.

  4. Question:
    During dialling, are the dial pulses sent forward or shunted out?
    I am investigating the use of this pulse to dtmf converter with a modified WE 7A Rotary exchange. If pulses are sent forward they will cause the 7A Rotary connecting circuit to go into premature release.

      1. Some dial pulse to dtmf converters send forward both the generated dtmf tones as well as the dial pulses. My question, are the dial pulses sent forward with the dtmf tones or are the dial pulses shunted out?

      1. OK …. I’m working on it. Compiles fine with Atmel Studio and I’ve just programmed an ATTiny45 successfully. I’ll keep you posted.
        PS: Are you a n ex pat Kiwi ?

  5. In the original schematic, the 4K7 resistor and 100N cap filtered the PWM signal from the micro to the bass of the emitter follower. Are you relying on C1 and C2 100N caps to do this now ? Cheers

  6. Using Atmel Studio to compile and progam an ATtiny45: – No good at all. Runs crazy with all sorts of whistles and buzzes. An ATtiny85 programs and runs fine.
    There are a number of differences between the 2 chips apart from memory sizes. Perhaps Studio is not taking care of some housekeeping with the change of micro. I told it I was using a tiny45 in the project configuration too. I’m an assembly language freak so I’m used to taking care of this stuff. All I can think of is some C compiler setting needs to be checked or other. I’m not a C compiler expert.
    Wow , with a working tiny85, it draws very little current even when dial switches are pulling enabled pullups to ground. Some clever disabling of pullups when not needed I suspect. Nice work Matt. Cheers Jim

    1. As an assembly language freak you are better prepared than 95% of others to make the necessary changes to run on tiny45. I’m happy to incorporate them if you end up doing so.

      1. Looks like I haven’t got enough SRAM in the Tiny45 (256 bytes)
        I’m not an AVR GCC expert but guess that constant program data (DTMF data perhaps) is being copied to SRAM on startup maybe.

        1. Yeah I think it is. A while back I experimented with putting it in flash – I believe it worked so should be possible to move it.

          1. Ok succeeded in reducing SRAM usage by 128 bytes (Sin Table) by keeping its use in program memory only.
            So it doesn’t get shifted to SRAM on startup like before.
            Runs fine like this on a Tiny85, but still not on a Tiny45.
            I even reduced the EEPROM use by reducing size of SPEED_DIAL_SIZE to 4 digits temporarily.
            This is starting to piss me right off now !

  7. Makefile reads ‘MCU = attiny45’
    SRAM is reduced to 54 bytes.
    EEPROM 32 bytes (8 slots x 4 digits)
    Program: 2306 bytes (1153 words)
    Fuse bits are the same. Low FD High DF Ext. FF
    Runs fine on the tiny85 but not th 45

  8. My reason originally was because I have plenty of DIP tiny45s and one SOIC 85. Now my reason for wasting time is because there’s an unsolved problem which shouldn’t exist.

  9. Success ! Had to switch off all optimisation to -O0 plus also needed sin table in program memory only. (Not copied to SRAM on startup)
    This is weird shit. I’m done with C compilers for now. I’m heading back to ASM where no one messes with my bits and if it doesn’t work, it’s only my fault! Thanks for your great work Matt. Cheers from NZ

  10. Re: “executing instructions through the earpiece.”
    This can be eliminated or reduced in amplitude if desired by continuing to use the 2nd spare mute switch on the dial (746 phone) wired accross the earpiece. A suitable resistor could be placed in series, to adjust the amplitude if you don’t want to completely eliminate the clicks. 746 phones have 2 mute switches, one wired accross the microphone and one accross the earpiece. In fact it would be even more authentic to use this because currently the dial tone is still sounding while the first number is being dialed, right up untill the first DTMF tones are generated. Normal landline operation has the dial tone cease immediately after start of clockwise rotation of dial.

      1. Sure, but you’re better to just have a look here: https://hannahgoldblattmddn251.files.wordpress.com/2013/04/schematic.jpg
        It’s not actually a change at all. This is standard wiring for a 746 and many other phones.
        D1 and D2 are the rotary dial mute switch (normally open) terminals for the earpiece and D3 and D4 usually used for the microphone.
        Just re-connect the spare unused dial switch in parallel with the earpiece T1 and T2 or experiment with a resistance value in series to just reduce the click volume only.

  11. PS: The only reason you do still hear low level dial clicks on a standard landline is because the dial mute switch accross the earpiece is not zero resistance accross its contacts. If it was a perfect short, you’d hear nothing.

  12. Thanks for the great project. I’ve built some and want to try them in a WE 500. I notice you said it was a drop in for a Rotatone. On the site with the manual (https://drive.google.com/file/d/1E4oFwOcxIDtTwu3R_pn8xxGpryxYl9d6/view), I see this:

    Step 4 – Install Rotatone Module
    1. Attach red wire from Rotatone to ‘RR’ terminal on network. ‘RR’ terminal should now have
    Green from Polarity guard, Red from Rotatone and one side of Diode.
    2. Attach blue wire from Rotatone to ‘C’ terminal on network (May require soldering, see Figure 1
    above). ‘C’ terminal should now have blue from Rotatone and White from Polarity guard
    3. Attach orange wire from Rotatone to green wire from dial
    4. Attach white wire from Rotatone to Blue and one of the White Wires from the dial.
    5. Attach brown wire from Rotatone to other white wire from dial.
    6. Test the phone to ensure that it is fully functional (DTMF dial, transmit, receive and ring)

    Can you please let me know what the equivalent to these are for your device? Our dial does have four wires – blue, green, and two whites.

    1. I think the mapping is this:

      Red: LINE+ (Terminal 4)
      Blue: GND (Terminal 3)
      Pink/White: GND (Terminal 3)
      Brown: DIAL/MUTE (Terminal 2)
      Orange: PULSE (Terminal 1)

  13. Hello,

    Awesome article. I’m looking forward to build one based on your design.
    I have multiple old phones laying around. When I open them, I see that there are 4 wires coming from the rotary wheel and (sometimes) many others.

    How can I identify which cables I need to connect the device to?

  14. Thank you for this simple design. We have ordered 10 pcs of boards from seeed, and i am impressed. Everything works on first try 🙂

    I have employed project mf modification. Saving # sign in the speed dial is very helpful for voip ATA connection as default ata setting is to wait for few seconds before accepting the number.

    We have rebuild 3 pcs of “tesla ds 3600” phones. All phones have pretty advanced electronics in headset and this board just plugs parallel to the headset. Rotary dialed to the board. Everything works. Rectifier with zener diode was already present on the main board!

  15. Hello,
    Thank you for this project 😉

    – Does anyone have a more precise BOM list of components ?
    – Does anyone have experience on 29 or 50 models used in Switzerland ?
    Thank you for your help.

  16. Hello,

    Thanks for all this information, very helpful. I have however some difficulties identifying the connection I need to use inside my phone. Here is the schematics : https://imgur.com/a/rvSaEiN

    My guess is
    13: LINE+
    III : GND/DIAL COMMON
    IV : DIAL MUTE (SHUNT)
    I : PULSE

    But im lost with the II (I have 4 connections to the dial, I: red, II: white&red, III blue, IV: white&blue)
    If someone have any advice on how to correctly detect them and use them is this project 🙂

    Thanks in advance for your time,
    Have a nice day!

    1. Typically quite a bit of modification of existing wiring is required before this can be installed. Take a look at the wiring diagrams for Rotatone. You’ll need to translate those changes to your phone.

  17. Thanks!
    PCB works like a charm, the program also.
    The tutorial was great in order make another hex-file with different placement of the digits 🙂
    /Jan-Anders

  18. Ciao, sono ancora inesperto sulla programmazione di attiny85, mi potresti dire il progamma e la periferica di programmazione che hai usato?

  19. sorry I was wrong to send the message before

    Hi, I’m still inexperienced on attiny85 programming, could you tell me the program and the programming device you used?

  20. Hi.
    So if I am understanding this correctly I can purchase the device you built from Seeedstudio by using your Gerbers file? I am fairly technically inclined, but I am just getting into trying to refurbish some French Socotel S63 phones and convert them to Tone. I saw the Rotatone V2 device, but this is interesting. Would I need to program something at the point I get the device from Seeedstudio? Mostly my experience is in audio and music equipment. Is this something I could do?

  21. Hi Matt – Many thanks for a great project, and a great write up. I have just finished converting a GPO706 with one of your boards, and I know my daughter will be very happy with the result – she loves old-school stuff!

    1. Hi Paul, do you have any more info on how you converted the 706? I have one here, have just made up my first board but the rotatone website appears offline now so I’m not sure how this should be wired. I can’t find much at all.

        1. Thanks for this, I’m looking now and I have a question. Do I need to have the other rotatone mods before your unit will work? (You mentioned yours had already been wired for a rotatone). The instructions have the 706 rewired, it appears to reverse the polarity to the bellset and also has a bridge rectifier in place as well as a 1N5338BG Zener Diode. I can see now where the dial wires come from (although your 746 picture has re-used colours in a different pattern to how they were on the phone originally) but I can’t see where you are wiring the red and blue back to now. I suspect the red is as per the rotatone diagram and pulled from the link wire under the circuit board but the blue seems much more complicated! I’m making this as a present for my boss who leaves next week so hopefully will get it running on time 🙂

        2. I see my mistake, I have now reconfigured the phone just as the rotatone instructions, someone has specifically done a howto for the 746 without diode and rectifier (The 706 appears identical). I am running through a Grandstream adapter and I get no dial tone but it does register the handset has been picked up. No response from dialling anything either. I’m going to take it over to a known good working BT line to see if that helps otherwise I must have got something wrong on the board or the programming.

      1. Thanks for now!
        Something tells me that I’m going to be back with more questions. I’m trying to do this with a “telephone 7p type” and the circuit is a little different from yours and there is no circuit diagram available in the internet.
        Wish me luck!

  22. I have an old Bell System black rotary phone I am interested in making this for. However, I don’t have a typical landline in my home. The only voice line I will have is coming off of my cable internet modem. I’m guessing this is something akin to a VOIP adapter? Will this converter work when used with that sort of phone line?

  23. Thank you for the great tutorial! I build one following your Instructions, but I won’t get it to fully work. I connected the rotary dial to the board and hooked it up to the Line. I’m able to make calls, this is great!
    Now to my Issue: If I call the Phone it rings for about a second, then it stops ringing and the call hangs up. Looks to me like problem with the AC when ringing. If I disconnect the board from either terminal of the Line I am able to call the Phone normally.

    Does anybody have an idea why this is?
    Could the problem be me using an ATTINY85 not the V model?

    1. Definitely not the ATTINY85/V.

      Your hook switch probably isn’t wired correctly. The converter should not see the ring voltage at its input.

      1. Oh, it was my bad. I wired it before the hook switch to LINE+ . Now if its connected after the hook switch everything works fine. I did not spot that. Thank you very much for your help.

        If anyone wants to know: I wired it to an Siemens W48.

  24. Thank you very much for this amazing project! Now I have a old rotary phone in my house! And I have learned how to program a AVR chip 🙂

    I found some trouble cabling my italian Siemens S62 phone but here you can find the correct scheme: https://www.elettronica.cc/viewtopic.php?t=1081
    (in that project the user use a PIC instead of AVR but the result and the cabling it’s the same).

    ATTENTION: my phone have a lot of noise generated by bad pin connection from the earphone to the phone. With all this noises the AVR became confused and didn’t work properly. Simply remake the weld! Enjoy 😉

    1. Hi, I am trying to find the scheme for a Siemens S62, but your link is no longer available, could you please give me a new link for that?

  25. Matt, thanks again for a great project and write up.
    Can anyone point me in the right direction on the installation in an Australian series 400 phone. They are very similar to the GPO 332 but with different wiring.
    I have installed the converter and changed the wiring as per the Rotatone guides.
    The converter hears the pules and generates the correct tones on the line loud and clear but the dial tone doesnt go away.
    The line is connected to a pap2t voip adapter.
    Any pointers appreciated.

  26. thanks for the info lucio.

    I found an old grandstream HT 801 which had pulse dialling and I am using that at the moment But I will get back to getting this little board to work in this phone shortly.

    I know I am close

    David

  27. Sorry to repeat….
    Wich version must be used : attiny85 or attiny85v ?
    The hex file ready to be flashed is for the V version ?

    Regards to all, and thank you to Matt for this great project

  28. Hello, I’m curently working on getting this to work for me. I’ve assembled the whole board, checked everything and when it came to installing it into my telephone, I didn’t know which to which. I can’t find anything on the internet, because my telephone (Czechoslovak Tesla AS 10) was fixed by hobyist in 70’s and 80’s and nobody fixes them nowadays. Could somebody please help and check, how to install this correctly? Here is diagram of the telephone: https://imgur.com/a/AgEqc6X and several pictures of dial itself: https://imgur.com/a/7SVHFD2

    Thank you for any response

    1. I would note that during testing I discovered that yellow and green cables must be connected otherwise the telephone will not even work. Normally, these two are connected, but during dialing a number they are, acordingly, interrupted (when dialing 5 it gets interrupted 5x times before making contact together again).

  29. Hi Matt,

    It’s been a while ago since I mad some boards made of your design, and now I finally got around to placing them into my old phone. It’s an Ericssion type 51 and I did my research on how to connect the board.
    I ran into a problem regarding the power supply, when i measure line+ after the hook, it’s about 5v, and the volatge regulator outputs around 3V or so.
    My phone is connected to a cable modem, which I think is the cause. Have you seen this before or am I doing something wrong?

    I am looking into a solution by replacing the zener on the board with a 5.1 and removing the voltage regulator and bridging pin 1 and 3 of the regulator. So it would go to the original design.

    1. By doing the mods as mentioned I got the board to work, but it’s not working properly.
      I think something is off with the pulse counting, I keep getting number not in use, so it’s not dialing the correct number, also I am unable to dial “zero”, doing this gives me no tone.
      Also, the volume in quite low, this was also the case without the mod.

      1. I found that the dial is always one pulse more than the number that I am dialing. I have no experience in C, but I was able to add some lines to the code that substract ‘1’ to the number dialed and it now works good.
        Only thing left now is the volume, it’s still very low when the pcb is attached, and I have read about this but have seen no solutions (I think). This is wired up now without the 5v regulator.

        1. Do you maybe have the .exe for the modified code?
          I might have a similar thing going on; I think my phone sends one more pulse and that messes things up.
          Thanks!

  30. This project makes me feel really dumb, I built the circuit, but I can in no way figure out how to wire it to my WE500 phone. (425b network) I looked at the Rotatone install directions and did my best to convert them to this but I just can’t get it to work at all. With the circuit in place, I can’t even get a dial tone anymore. Is there some way to test the circuit off a phone? Does anyone know what gets hooked where on the WE500?

  31. I’ve started looking at this since I got the letter from BT that I am forcibly being moved to Digital Voice. It looks like the best implementation out there… thanks for sharing it!

    BT now have dropped support on Digital Voice, not only for pulse dialling, but also for local dialling (so to ring my neighbour I’m going to have to dial 11 numbers on a rotary dial which is not ideal!). I was thinking it might be a good idea to add automatic prefixing to this device: start a number with 2,3,4,5,6,7, or 8 [0,1,9 are used for national, international and special services like 101] and the dtmf codes will be generated for your area code first (using one of the speed dial slots to save your area code). I’m trying to get my head around the code so maybe I can make this work. But if you’ve got any thoughts I’d be grateful to hear them!

  32. I was wondering if it would be possible to make one of these that, for authenticity, doesn’t make the DTMF tones audible on the pulse phone’s handset. I’m guessing it would complicate the circuit significantly, but what do you think?

    1. That would be quite difficult indeed, would have to disconnect the speaker with a relay. Not sure how it would be powered. Nothing is impossible however. It’s an entirely open design, you can do what you like to it.

  33. Hello, Just made a set of these for use with my Cell2Jack. I am struggling to wire it to an old Western Electric model 500 though. These have the “network” box inside them. Any tips? I looked through the comments for some help and didnt see it. Mine is the 500C/D with a scematic here: https://www.telephonecollectors.info/index.php/browse/wiring-diagrams/western-electric/500-series/13928-500-series-desk-telephones-500c-500d-wiring/file

    Thank you!

  34. Very nice project! Saved me quite a bit of work. Now all that’s left is adapting it to a German W48.

    Thanks for your efforts!

  35. It works with a Tesla Stropkov T65S phone, made in Czechoslovakia 1971, with no code and converter HW changes. A diode needs to be installed in place of the pulse selector. Phone connected via Grandstream HT503 to IP telephony network. Ask for photo documentation at robo@abyss.sk if you are struggling.

  36. Hi,
    I know this maybe difficult to answer but I have old rotary “ITT” rotary phone which I believe is from the 1980’s.

    Same idea, convert pulse to DTMF tones so I can dial out on it. The phone works otherwise, rings and you can talk on it.

    Will your solution work for this type of phone? I’m not sure where to wire it in to the phone. I have pictures I can send along – if it helps.

    I would consider myself “intermediate” level in electronics and constructing and programming the Atmel chip would not be a problem.

    1. It’ll work on any rotary phone. They all work on the same principle.

      Intermediate electronics skills ought to be enough to figure out how to wire it.

  37. Hi Matt. I have built this, (plus arnie’s and boris’ versions) plus others and I have been unable to get any to work. I either have a problem with my ic or construction problems or my connections on the phone are wrong. If I buy a Rotatone or equiv. I still need the connections correct. Would you please confirm connections for a Aussie PMG801/802. It would be much appreciated.
    Link to schematic- http://www.classicrotaryphones.com/forum/index.php?PHPSESSID=6d9f288618ff8df55315d04183a7ced7&action=dlattach;attach=62565;image

    1. I can’t unfortunately. This kind of thing take time to work out. I’ve just got too much else on at the moment.

      I’d suggest learning how these phones work. Once you have that insight you’ll be able to figure out.

  38. Hello,
    With the current worldwide shortage of components:
    ATtiny85V-10PU (same for: ATtiny85V-10SU).
    (Farnell/Mouser/Digikey/RS-online/etc – available in 2023 !).
    https://octopart.com/attiny85v-10pu-microchip-77762335
    https://www.heisener.com/ProductDetail/ATTINY85V-10PU :
    Quotation: 100x $5.70 ! $570.00 – 1-2W.

    Can you confirm that the circuit works with an ATtiny85-20PU ? (V /MHz).
    (I see some available in China – approx. $2.10 with shipping – AliExpress).
    Thanks in advance.

  39. Hi,
    I programmed the hex file to a an attiny85 using my usbtiny programmer and everything went well.
    Then I did
    avrdude -c usbtiny -p attiny85 -U lfuse:w:0xfd:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m to set the fuses as they should be and now I’m locked out of the attiny.

    avrdude -c usbtiny -p attiny85 yields :

    avrdude: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.
    Is this to be expected? I mean did the efuse setting locked the chip from reading/programming or I’ve done something wrong?
    Thanks so much for this project BTW.

    1. It was my fault (of course) as I was doing the whole thing on a breadboard and the 4MHz crystal was absent so yes I shouldn’t be able to talk to the chip after setting it for an ext clk.
      Thanks again for making this avalaible!

      1. The same thing happened to me. The bad thing is that with the quartz and the two capacitors connected, it does not communicate either and the worst thing is that the quartz oscillator does not oscillate. I haven’t tested the circuit, maybe it’s normal because it’s in sleep mode? I think I have no choice but to test it in the real circuit, but I am very surprised not to be able to communicate it with the programmer while having the quartz and the two 22pf capacitors connected.

  40. I have 7 of Matts great little board that i dont need if anyone is having trouble getting parts or is interested. Only want $10 AUD each. I am in Australia so its probably not worthwhile posting internationally unless you want all 7. They are programmed and I will throw in a uno programmer if someone wants all seven. As Matt has said you will have to experiment a bit and learn as each type of phone will have different wiring.

    1. G’day David , yes I am interested and also interested in how to learn to proram the ATtiny85 via my Arduino Uno which seems reasonable straight forward from some of the videos I watched. I also see Don made some changes to the code which I also would like to have a go at. However with all the part shortages I am happy to grab 3 of those boards. Cheers

      1. Hi Stephen,
        sorry for the delayed reply. I have also played around with the code. How do I contact you ? perhaps Admin could forward you email.
        thanks
        David

  41. Bonjour,

    J’ai un ancien téléphone en bakelite que j’aimerais connecter à ma box internet . Je pensais l’équiper d’un rotatone
    avez vous cet accessoire avec les schémas de raccordement
    quel est le prix et les délais

    Cordialement

  42. Hi, this is a great article and very useful. I was wondering if you have the PCB design files, schematic and board for this unit? I want to make some changes in the board design and would prefer to work at the schematic level vs the board level. Thanks, Jon

  43. Dear Mr. Millmann good morning and congratulations for your work. However, I can’t figure out which program I have to load into the ATTiny85… There are so many lists: in the end which one should I use? You write: ” There’s quite a few different ways I’m doing this, i’ll let you do your own research. Your programmer will need: The .HEX file from here”…. But which one should I use? dtmf.c, dtmf.h, main.c, rotarydial.hex, rotarydial_nz.hex.hex???? Thanks and best regards. Mark Mattius. Turin (Italy). March 8, 2023

  44. Excuse me, but do you program the Attiny85 via Arduino (turning it into a programmer and connecting it to the Attiny85) or directly from the PC with a USBasp? In the first case from which .c listing is the rotarydial.hex file derived? Thanks for your patience and regards.

    1. It is not an Adruino project of any sort. However you program it is up to you. There are probably Arduino based programmers out there but it isn’t something I’ve looked at personally.

  45. Bonjour
    j’ ai besoin d’information sur le telverssement sur Attiny85 .J’ai realisé un syteme avec Arduino Nano, ou j’ai envoyé un programme de test led qui fonctionne par contre je ne connais pas la procedure por transfferrer de l’exadecimal
    J’ai un pickit4 , a votre avis
    merci

  46. Hello,
    when I try to upload the program I get the following error message:

    error: expected identifier before numeric constant
    int8_t EEMEM _g_speed_dial_eeprom[SPEED_DIAL_COUNT][SPEED_DIAL_SIZE] = { [0 … (SPEED_DIAL_COUNT – 1)][0 … SPEED_DIAL_SIZE – 1] = DIGIT_OFF };

    In your opinion what is the cause?
    Thanks in advance for your help!
    Federico

  47. Hi sir i am 15 and currently trying to build this converter for my dads old telephone… I did not understand what to do with the code… I am not that familiar with microcontrollers… So what all files from the github page do i need to flash to the attiny? Can i just paste em? Please guide me here I don’t know much about coding…. By the way very cool project… Here in India these converters are hard to come by so building ones the best option.

  48. Awesome work. Is there an easy way with this design to account for 20 pps (pulses per second)? I’ve recently acquired a Japanese 600-A2 that does pulse dialing at 20 pps. However, most of the world’s pulse dialing telephones are 10 pps. Any ideas? Thanks again.

  49. Hello, I’ve done this project but I think I’m missing something in the wiring, because I can hear the tone from my router. And when I try to dial a number I hear a tone but nothing happens.
    I have a Socotel S63.

    I found this diagram for the Rotatone but I don’t know if I should do the same thing, but with my DIY tone converter instead of the Rotatone?

    https://lh4.googleusercontent.com/proxy/u0t6ukbPD1RJbI6TXOCHLmyEZbxdc3W4HgmjZEPBQqV7sYkI73gDgBtViRvVmvvphiwGMVDPfIMcwwLj6XMSmMFuUOtW14W_NokNvpYT_DlJhoQXXRWucYBZVwnAitO4ThdxE9ZUMjkG4TPM

  50. Been hooking this up for the 500 Western Electic

    While adding in a polarity protection (rectifier ) taking from Slate-White and Slate-Brown
    +ve to RR + Diode
    -ve to C

    I under stand that the diagram to put Red to Line and
    Gnd to C(-ve)

    But how do I connect the Dial portion to the last 2 pins:

    I have a green and Blue from the rotary mechanism,
    and 2 Whits that close a switch when its winding up and then counting the pulses.

    Would it make sense to wire the white Switch in series to the dial mechanism

    then feed one “dial wire” Blue to the Terminal :Dial
    and the White to Pulse

    https://www.classicrotaryphones.com/forum/index.php?action=dlattach;attach=13519;image

    1. looks like I made sense of it.

      kept the “polarity” rectifier in place .

      though the DTMF from the pulses seems very Chirp like

      and after dialing the numbers, seems like it does nothing / no dialing.

      would that have connection with the Diode between RR and F
      and I source the GND from C

  51. HI and congratulations on your design.
    There are two things that I don’t quite understand, the first is that when the phone rings, we are introducing alternating current to the 7805 and that doesn’t seem good, maybe a series diode would be good? and the second is that when the phone rings, in theory, there is an alternating voltage much higher than the 27 volts of the zener, which does not seem good either and my question is, won’t it considerably limit the volume of the ringtone?
    Thank you very much for your help.

Leave a Reply

Your email address will not be published. Required fields are marked *