Internal-only basic configuration for analog phones to call each other when running through Grandstream HT704

Hi everyone!

I am trying to set up an internal-only “art” project where (to begin with) 4 phones can call each other. The goal is to have this run without any internet, simply raspberry pi and grandstream and some local dnsmasq magic. For now, I simply have the two using LAN DHCP with Automatic fixed IPs.

I have 4 analog (pulse) phones configured through a Grandstream HT704, talking to FreePBX on raspberry pi. I will submit screenshots of the configuration and provide any more info as requested.
I have the Asterisk logs showing that each is registered against their extensions configured in FreePBX so I know that the Grandstream HT704 is talking to Asterisk and registering the extensions but nothing shows when trying to dial the extensions from one to another, I just get an intermittent beep and I am unable to diagnose where the issue originates, but I assume it is generated by FreePBX since I get only silence if the network cable is removed from GrandStream.

I am sure that the configuration required is super simple, but I have tried searching every end of this forum, I have RTFM and documentation countless times and I have spent 3 long days over the past month trying everything I can find. I am not reaching out on this forum as anything other than a last resort and would hugely appreciate any help anyone can give. I am very willing to buy many beers/wines/gifts for the time and help given - I appreciate that people’s time has a value and will happily pay for people’s time if they can help me get one of my four phones to call each other.

Detailed screenshots and configuration can be provided but I’m unable to post a link or embed any image as a new user… How odd.

Many thanks to anyone who has the time and patience!

Do you see those phones up in Asterisk Info > Peers?

I do!

Please ignore the trunk - I was just desperately trying to figure out how to get these things working. I even created an inbound route, which I currently understand to not be necessary with no future WAN/internet/other entity. Here is the info I see in Asterisk Info → Peers under PJSIP:

Chan_PJSip Endpoints	

 Endpoint:  <Endpoint/CID.....................................>  <State.....>  <Channels.>
    I/OAuth:  <AuthId/UserName...........................................................>
        Aor:  <Aor............................................>  <MaxContact>
      Contact:  <Aor/ContactUri..........................> <Hash....> <Status> <RTT(ms)..>
  Transport:  <TransportId........>  <Type>  <cos>  <tos>  <BindAddress..................>
   Identify:  <Identify/Endpoint.........................................................>
        Match:  <criteria.........................>
    Channel:  <ChannelId......................................>  <State.....>  <Time.....>
        Exten: <DialedExten...........>  CLCID: <ConnectedLineCID.......>

 Endpoint:  111/111                                              Not in use    0 of inf
     InAuth:  111-auth/111
        Aor:  111                                                1
      Contact:  111/sip:[email protected]:5060               775c60fc19 Avail        14.924

 Endpoint:  222/222                                              Not in use    0 of inf
     InAuth:  222-auth/222
        Aor:  222                                                1
      Contact:  222/sip:[email protected]:5062               19301f6ec6 Avail        14.580

 Endpoint:  333/333                                              Not in use    0 of inf
     InAuth:  333-auth/333
        Aor:  333                                                1
      Contact:  333/sip:[email protected]:5064               ec2547fa8d Avail        15.107

 Endpoint:  444/444                                              Not in use    0 of inf
     InAuth:  444-auth/444
        Aor:  444                                                1
      Contact:  444/sip:[email protected]:5066               150154495d Avail        14.695

 Endpoint:  GrandStream_Trunk_111                                Unavailable   0 of inf
        Aor:  GrandStream_Trunk_111                              0
      Contact:  GrandStream_Trunk_111/sip: f24e88ca73 Unavail       0.000
  Transport:               udp      3     96
   Identify:  GrandStream_Trunk_111/GrandStream_Trunk_111

 Endpoint:  anonymous                                            Unavailable   0 of inf

 Endpoint:  dpma_endpoint                                        Unavailable   0 of inf

Objects found: 7

Inside grandstream, here is how they are configured:

At the Asterisk console, type
pjsip set logger on
which will cause all SIP traffic to appear in the Asterisk log (along with the usual entries). Make a failing test call, e.g. 222 to 333 and save the relevant section of the log (view in the GUI at Reports -> Asterisk Logfiles). Paste it at and post the link here.

(If nothing appears, it’s probably an issue with the HT704 dialplan or related settings.)
Take screenshots of the Profile page and post here. If trouble posting multiple images, create a post at and post the link.

If you have trouble posting a link, edit it by removing the http:// or https:// and replacing the dot before com or org with %2E then put the result on a line by itself. The reader can easily open it by triple-clicking (to select it), then right-clicking and choosing “Go to …”

For example, change to

Thank you so much for your help.

I ssh’d in to raspbpx/asterisk and turned on logging. Here are some of the outputs of the test calls.

  1. Dial 444 from 111. Both are registered. pastebin.freepbx%2Eorg/view/99cbff2f
  2. Dial 111 from 444. pastebin.freepbx%2Eorg/view/f24dfbf1
  3. Dial 789 from 111 (789 does not exist). pastebin.freepbx%2Eorg/view/c74c6cca

I’m suspicious of certain settings that I may have very wrong. Above all, the Extension -> Advanced -> Dial. I have tried many combinations and nothing seems to alter the output of the debug PJSIP log.

IP of Grandstream HT704:
IP of FreePBX/Asterisk:
Port of phones within Grandstream (111 => 5060, 222 => 5062 … 444 => 5056)

For example, I have tried SIP:444, SIP:[email protected]%2E10.10.13, [email protected]%2E10.10.20, SIP:[email protected]:5066, PJSIP/444, local/[email protected]
444/sip:[email protected]%2E10.10.20:5066

Here are some screenshots of the extension config in freepbx:


Thanks again for your time and patience helping me out - I really appreciate it.

I’d suggest trying with normal DTMF phones before you go down a rabbit hole. Sounds like the grandstream doesn’t understand pulse dialing.

I’d suggest trying with normal DTMF phones before you go down a rabbit hole. Sounds like the grandstream doesn’t understand pulse dialing.

Thanks, Rob! My mistake for using the wrong wording initially. I’m actually using 3-4 DTMF phones right now to test and verify the basics. The cute old pulse phones have 2 ways forward after this first step - 1. via a couple of pulse to tone converters (which seem to work, but have issues with the ON HOOK awareness) or via grandstream’s pulse-awareness. Either way, for now, I’m using tone until everything else works as expected.

OK, so your first test ALWAYS is dialing *43. That is the echo test. That makes sure that you can talk to FreePBX, and you have audio.

I’d also suggest starting again with the FXS device - do a factory reset, configure one port, dial *43. Make sure that works. Then configure the second port, dial *43, make sure it works. Then try to call the first port from the second, and vice versa.

If you do it in simple steps, you won’t get buried in a bunch of confusion, where you may have done something wrong 10 steps ago, and didn’t notice.

Delete your extensions and set up just one. Leave everything at default except for User Extension (the extension number) and Secret (set a short password that matches what you have in the Grandstream).

In the Grandstream Profile 1 page, set the Dial Plan to
(this permits dialing * codes).

Confirm registration, test dialing *43. If it doesn’t work, post the log as you did before. If it works, configure another extension and test calling between them. Proceed from there.

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.