Yeastar NeoGate TG100

2014-Jun-02

Summary

So far, this looks like it is going to be a decent little unit for what I want it to do.

Configuration through the web UI wasn’t a problem. I set up an account on the TG100 and configured my asterisk box to register to it. Once registered – both originating and terminating calls worked properly. I didn’t talk to myself long enough to judge call quality or to see if doing anything in the UI or on the device would load it up enough to impact call quality. Also did not try call waiting, multiple channels, or to see if any voicemail indications were passed through.

SMS didn’t work properly for me with the as-shipped firmware – they showed up in the UI looking corrupted. They have worked properly with the newest firmware (51.18.0.34 released 2014-05-15). It looks like you will either have to use the web interface, or code your own interface to the API to work with SMS messages. I did try sending an SMS while a voice conversation was active. It didn’t send the message until the voice call was over.

Having not used them very much, and it’s not likely the prepaid service I am using supports them anyhow – I didn’t try any MMS messages.

Their API for sending/receiving SMS messages uses the Asterisk Manager interface – with a couple tweaks to the manager permissions there is a lot of potential. With a root shell provided, those tweaks can probably be made.


 

Network services, OS

Plugged into my LAN switch. The default IP (192.168.5.150) and login/password (admin/password) are printed on the label. Instead of rejiggering my network, I just did:
ifconfig eth0:1 192.168.5.1

And for good measure:
nmap -sSV -p1-65535 192.168.5.150

Starting Nmap 5.00 ( http://nmap.org ) at 2014-05-31 21:14 MDT
Interesting ports on 192.168.5.150:
Not shown: 65532 closed ports
PORT STATE SERVICE VERSION
80/tcp open http Boa HTTPd 0.94.14rc21
514/tcp open shell?
5038/tcp open asterisk Asterisk Call Manager 1.1

Connecting to the web interface, it gives a nice popup “Security Advice: Please change the password on the first login.” That’s good of them to do. Tried turning on SSH, it became unresponsive after saving the setting and telling it to apply the change (maybe it was still reeling from nmap). Power cycle – nothing. Hold down the reset button for a while – rebooted and back online.

Try it again – success!

ssh in, turns out this little guy is actually running asterisk 1.6.2.6! I might be able to replace my current asterisk server with this – except that I have some inkling to try out connecting asterisk to my mobile and there is no bluetooth transceiver and no USB port to plug one in.


root@TG100:/etc/asterisk# rasterisk -x "core show version"
Setting max files open to 2048
Asterisk 1.6.2.6 built by root @ lzwyeastar on a i686 running Linux on 2014-02-20 07:46:16 UTC

root@TG100:/etc/asterisk# netstat -pnl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 1100/inetd
tcp 0 0 0.0.0.0:5038 0.0.0.0:* LISTEN 1276/asterisk
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1271/boa
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1100/inetd
tcp 0 0 0.0.0.0:8022 0.0.0.0:* LISTEN 1100/inetd
udp 0 0 192.168.5.150:123 0.0.0.0:* 1383/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 1383/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 1383/ntpd
udp 0 0 0.0.0.0:5060 0.0.0.0:* 1276/asterisk
udp 0 0 0.0.0.0:4569 0.0.0.0:* 1276/asterisk
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ACC ] STREAM LISTENING 2178 1276/asterisk /var/run/asterisk/asterisk.ctl

root@TG100:/persistent# uname -a
Linux TG100 3.2.0 #129 Fri Oct 25 14:39:37 CST 2013 armv7l GNU/Linux


Got excited and took it apart

I like the nice heavy case. Not sure what to take away from the components – but here they are.


 

Power Draw

Cracked out the Kill-A-Watt meter. Plugged in, no SIM card, no ethernet – pulling 2W. With ethernet and GSM registered – 2.2-2.5W. The highest I’ve seen while running has been maybe 2.7W, it’s been up for a little while now – Kill-A-Watt shows 40 hours 15 minutes, 0.08 kWH which works out to roughly 2W average continuous draw.


Corrupted SMS and upgrading firmware

The account validation SMS message from speakout showed up looking corrupted. This unit came with firmware 51.18.0.31, and looking at the release notes for the newest firmware 51.18.0.34 shows a couple maybe relevant bug fixes:

3. Fixed the issue that SMS sent out would have messy codes at the end of the
original message if the SMS has more than 70 characters, containing Chinese
characters and numbers or Chinese characters and English characters.

5. Fixed the issue that the spam messages from China Mobile would be shown
as gibberish on NeoGate TG "Inbox" page.

Upgrading the firmware went smoothly. I already had a TFTP server running (which primarily serves configuration to my Polycom IP550), so I used that option to upload the firmware.

Screenshot-NeoGate - VoIP GSM Gateway - Mozilla Firefox“cause the failure performance!” – awesome.

Re-try the validation SMS: Success! No more corrupted messages.

 

6 thoughts on “Yeastar NeoGate TG100

  1. Paulo Cruz

    Hello, sorry for ask here but i can´t fid one contact for email.

    I read your post about neogate TG100 and want know if you can tell me, how received sms can be used with neogate API.

    For instance, if i receive one SMS i can able to save in message in one Database ? Is´t possible acess sms inbox from external via API ?

    For now i use one software NOWSMS and when i receive one sms, software send sms content to another adress for exemple: myweb.com/get_sms.php and in this script i can manage data. It´s possible with Neogate API.

    Best regards,
    Paulo Cruz

    obs: sorry for my english.

    Reply
    1. Dana Post author

      Their API uses Asterisk’s Manager interface. I’ve never written a script to work with this, but it should be fairly easy since it is only using stdin/stdout.

      To try yourself – SSH into the box.
      root@TG100:~# cat /etc/asterisk/manager.conf
      [general]
      enabled = yes
      webenabled = no
      port = 5038
      bindaddr = 0.0.0.0

      [admin]
      secret = password
      read = system,call,log,verbose,command,agent,user,config,originate,cdr
      write = system,call,log,verbose,command,agent,user,config,originate
      deny = 0.0.0.0/0.0.0.0
      permit = 127.0.0.1/255.255.255.255
      [apiuser]
      secret = apipass
      read = smscommand
      write = smscommand
      deny = 0.0.0.0/0.0.0.0
      permit = 127.0.0.1/255.255.255.255
      permit = 192.168.10.0/255.255.255.0
      root@TG100:~# telnet 127.0.0.1 5038
      Asterisk Call Manager/1.1
      Action: login
      Username: apiuser
      Secret: apipass

      Response: Success
      Message: Authentication accepted

      Now you wait. It will fire an event when an SMS is received.
      Notice that I actually modified the manager.conf file to allow the apiuser to work from my local network (bolded). This means you can run your script/code on a different machine.

      Event: ReceivedSMS
      Privilege: all,smscommand
      ID:
      GsmSpan: 2
      Sender: +1xxxxxxxxxx
      Recvtime: 2014-09-17 10:24:56
      Index: 1
      Total: 1
      Smsc: +1xxxxxxxxxx
      Content: Test
      --END SMS EVENT--

      So – have your script parse the text fields, and then do whatever you like with it – including storing in a database.

      Here is their documentation: How_to_Use_NeoGate_TG_API.pdf
      And the Asterisk Manager: http://www.voip-info.org/wiki/view/Asterisk+manager+API
      I haven’t looked since maybe the second edition, but the book Asterisk: The Future of Telephony was very helpful in working with Asterisk.

      I don’t know how or if it can handle MMS messages, which NowSMS advertises.
      The default software running on the unit is already storing the messages somehow, you might be able to use that.
      I found: root@TG100:/persistent/var/lib/asterisk/db/MyPBX.sqlite that has saved copies of the received SMS.
      Assuming from the filename – it’s sqlite… And it’s probably a safe bet that there is good documentation about MyPBX.

      Maybe noteworthy – I haven’t touched the unit in a while, and it froze up after I connected to SSH again to look around for this. It was responding before that.

      Reply
  2. sammy

    Hi Dana,

    I’m also using NeoGate TG100, but i’m having difficulties to integrate my asterisk voip server. I haven’t find any documentation that give detail description on how to connect TG100 with asterisk server. Most of the tutorial are using asterisk with GUI such as elastix, 3CX, while i build my asterisk server using command line (non-GUI).
    Could you kindly share some example of sip.conf & extensions.conf to integrate TG100 with asterisk server.

    Thanks
    Sammy

    Reply
    1. Dana Post author

      No problem. I prefer the command-line approach myself.

      I am using my asterisk as a client, registering to the TG100.

      On the TG100 – I’ve set up an account as a “Voip Trunk”, the important part is the account (by memory – numeric only) and a password.

      sip.conf

      
      register => 123456:password@192.168.10.20:5060
      
      [123456]
      type=friend
      context=from-gsmgateway
      host=192.168.10.20
      username=123456
      secret=password
      qualify=5000
      dtmfmode=auto
      nat=no
      disallow=all
      allow=ulaw

      extensions.conf

      [from-gsmgateway]
      exten => s,1,answer
      exten => s,n,ringing
      exten => s,n,dial(SIP/homepolycom,45,r)
      
      [outgoing-calls]
      
      exten => _888.,1,Verbose("Dialing out over GSM gateway")
      exten => _888.,n,Dial(SIP/123456/${EXTEN:3})
      exten => _888.,n,hangup
      

      Incoming calls are handled in the [from-gsmgateway] context in extensions.conf.
      Outgoing calls are handled in the specific context for that user – in this case [outgoing-calls].

      I don’t have anything figured out for handling SMS.

      Reply

Leave a Reply to Dana Cancel reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>