Close

Testing with the mother-load of POTS phones

A project log for weeBell - personal central office for POTS phones

weeBell brings the goodness of old telephones into the modern age in a portable package that speaks GUI, Bluetooth and Wifi

dan-julioDan Julio 07/09/2023 at 17:550 Comments

I spent a recent morning at the home of my friend (and great electrician) Randy P who is a telephone collector.  It wasn't until years after we met I learned of his hobby and he was someone I had in mind as I designed weeBell.   He graciously offered his collection and time to test weeBell_bluetooth with a bunch of different phones.

We setup on his kitchen table and both placed and received calls with different rotary dial and DTMF phones.

We had a huge inventory to choose from:

And I'm not even showing the Star Trek phones...

Sadly I didn't think to bring some extra wiring supplies so phones that used the very old 4-prong connector couldn't be tested.  Another day for that I hope.

Testing went well including the discovery of a firmware bug.  One of the rotary phones dialed incorrectly (dialing a 2 returned 1, dialing 1 returned no number at all).  But this only malfunctioned after the phone had rung for an incoming call.  I brought the phone back home with me and connected the GPIO signals to/from the AG1171 to my scope.  The problem was immediately obvious.  There is a signal to the AG1171 called RM which is driven high when you want to initiate ringing (another signal, F/R, toggles to actually ring the bell).  My code was leaving RM high as shown in following image taken from the AG1171 datasheet.

For some reason, that I didn't puzzle through, the phone does not register the first switch closure as the rotary dial moves after dialing.  The bug was a slightly embarrassing one line fix.  I have a subroutine which is supposed to be called at the end of a ring.  It both sets the state of the software ring state machine and the correct GPIO outputs for RM and F/R.  However my code was simply setting the state instead of calling the routine.  Changing the direct setting of the state variable to a subroutine call fixed the problem.

Looking at Randy's collection was a lot of fun.  A couple of phones were really interesting as they show the features we use today were explored a long time ago.

Multi-line phones first made an appearance in the 1930s.

And the video phone in the 1960s.

Sure would be fun to try to make that work again but Randy looked slightly askew at me when I suggested it... :-)

I'm giving Randy a weeBell and he said he plans to use it in his truck and on job sites with different old phones.  He's sure it'll turn a lot of heads.

Discussions