Grandstream SIP Phones: BudgeTone and HandyTone

Grandstream makes several models of the Budgetone phone and Handytone ATA
All of them support SIP VOIP.

Grandstream lists several models of phones. The original group is the BT-101, BT-102 and the GXP-2000.

The prime difference between the BT-101 and BT-102 units is that the BT-102 has 2 ethernet ports. This lets you link your PC to the phone, which is linked to the network. Saves having to run another Cat5 cable to the desk. Please note that the BT-102 ports are only 10Mb/s, so a 100Mb/s link will be slowed down to 10Mb/s and that the ports are configured as a simple hub.
As of November 2005 Grandstream have released a MKII version of the BudgeTone. The only difference is the addition of a headset port.

In June 2006, Grandstream released the Grandstream Budgetone 200. In addition to BT102 features the BT200 has dual 10M/100M Ethernet ports that can be configured as either switched or routed ports, built-in NAT router/DHCP server (router mode only), high quality full duplex hands-free speakerphone with acoustic echo cancellation, 2.5mm headset jack, visual voice mail indicator, and more memory for future function growth. The Budgetone 200 shares the same firmware code with the GXP-2000.

Grandstream recommends a Retail Price of
  • BT-101 $75 USD
  • BT-102 $85 USD
most resellers sell for retail or slightly less.

Several "Free Service" providers also carry the BT-101 (single ethernet)

Configuration / Provision System

Grandstream Budgetone-Handytone Configuration Wizard by Voxilla - Web based configuration wizard

GSConfigure 1.0.38 (Windows): Stephen R. Besch created a general purpose configuration utility for GS phones to
  • Generates files from scratch (using MAC), from HTML config listing, or by directly downloading from the phone.
  • Does multiple simultaneous edits.
  • Can reboot as many or as few phones at a time as you like.
The zipped install package can be downloaded from http://www.acsu.buffalo.edu/~sbesch/ -or- http://linuxbio.med.buffalo.edu/php/GSConfigure.php

GSUtil 2.0 (Linux/Windows): Charles Howes has created a utility to dump, restore, and reboot GS phones (tested on BudgeTone-100).
  • Written in Perl, using only OS-provided modules (no strange dependencies), developed on Fedora Core 4
  • Reads and writes configuration information using the phone's built-in web server
  • Can dump, restore and/or reboot multiple phones simultaneously
  • Set up one phone the way you like it and clone its configuration onto all other phones
  • Command line driven, great for massive automation
  • Works with the latest firmware
  • May work with other Grandstream products, but needs testing!
The tarball and rpm files can be downloaded from here.

GStftpd gstftpd - A Grandstream Tftpd project ( Auto firmware upgrading & configuration downloading )

Daylight Savings Strings

Many Grandstream models support a 'daylight savings' string that defines when clock time should be automatically adjusted. The common strings to use are:

USA: 3,2,7,2,0;11,1,7,2,0;60
UK: 3,-1,7,1,0;10,-1,7,1,0;60

Custom ringtones

It is a fact that there are two hardware revisions of the phone, which they call "Rev A" and "Rev B." Only "Rev B" phones are able to use ringtones, so those who have the older model are wasting their time trying to use them.
Apparently an upcoming firmware release will reveal which version is on a given phone. In general, I was told, the matte-finish ones are Rev B, and the shiny ones are Rev A.

Note that Grandstream support will sometimes suggest otherwise: Li Wang of Grandstream wrote "Customer [I assume he means custom and that "customer" is a typo] ring tone is a feature which can be supported in the latest firmware. It is not hardware issue." After much discussion he retracted his original statement and admitted that there are two hardware revisions out and that only the newer handles ringtones. We still have not been told how to tell the difference or what serial numbers are Rev A and what are Rev B.

Official Grandstream Ring-tone generator for Linux: http://grandstream.com/DOWNLOAD/Ring_Tone_Generator/Linux-Music-Ring-Tone-GEN.zip
Official Grandstream Ring-tone generator for Windows: http://grandstream.com/DOWNLOAD/Ring_Tone_Generator/MS_Music-Ring-Rone-GEN.zip

The Linux version above appears to be a binary-only package of SOX, compiled for Linux and Solaris. The sources can be obtained by sending an email to support@grandstream.com requesting them. The sources are licensed under the GPL


I decided to write a perl program to read a uLaw stream on standard input and create a suitable header, writing the result to an output file.

It can be found at http://www.softins.co.uk/makering.pl.txt. Save and rename to makering.pl. Usage is described in the file, but here is an example:
sox inputfile -r 8000 -c 1 -t ul - rate | makering.pl ring1.bin
(try using /usr/share/sounds/phone.wav for the inputfile). After putting the ringN.bin file into /tftpboot and rebooting my phone, amazingly enough it works! I now have a new ringtone.

Firmware or later

  • When creating the audio file make sure that it is called ring.bin. Later on rename this to ring1.bin or ring2.bin or ring3.bin when preparing the TFTP upload.
  • Updated makering.pl script

Individual ring tones for each phone

I have just successfully got the TFTP file remapping to work such that I can have unique ringtone files for each and every extension. I added the following to my server_args line in the xinetd configuration for TFTP:

-m /home/asterisk/grandstream/ringmap.cfg

Now the entire line reads:

server_args = -v -s /home/asterisk/grandstream -u asterisk -m /home/asterisk/grandstream/ringmap.cfg

(There is no line break in the actual file!). When debugging, you can use more "v"'s in the verbosity option. Then, in the TFTP root, I add the file "ringmap.cfg", with access rights set to 660 (so that the TFTP server won't serve the file up). That file contains the following line:

ri ring(.)\.bin ring\1_\i

This tells TFTP to replace any file requests that look like "ringx.bin" with ringx_yyy.yyy.yyy.yyy, where yyy.yyy.yyy.yyy is the phone's IP address. So, for example, if requests ring1.bin, TFTP will get ring1_192.168.10.100 and serve it up as ring1.bin, effectively lying to the phone. Then you only have to generate your ring files and place them in the TFTP root folder with access rights 664. Works like a charm!
--Stephen R. Besch

Other web resources

Occassionly discussed on these mailing lists:

Firmware updates

You can find newest releases here http://www.grandstream.com/firmware.html

Important Note from Grandstream:

This firmware has major changes compare with previous firmware (1.0.6.x or 1.0.7.x), so downloading time may take up to 8 minutes.

REMOVE ALL the files in the TFTP/HTTP server, including the configuration files. (Or use different directory for Firmware versus configuration/provisioning file)

Make sure all the files that come with Release_ BT100-HT486-
HT286_1.0.8.33.zip are unzipped into the TFTP or HTTP server.

It is strongly recommended that you are running at least code, as of 18-Nov-03. Previous versions have
NAT and DHCP along with other issues.

Some firmware is available here, including version

Or, you can get the firmware from Grandstream's TFTP server:
  • IP address:
As of 2004-Aug-10, it is supplying version
2004-10-31, Grandstream's TFTP IP address:

If your phone does not retrieve the new firmware from a tftp-server, but you DO see requests at the tftp-server logs. Try the following:
  • Make a bogus cfg.txt with the firmware version number in it
  • Change your codec preferences
  • Reboot

Unoffical bug list

Unofficial Bug List as gathered from mailing list postings


  • Cannot load new firmware if configured for DHCP?


  • Phone crashes sometimes generating a loud tone until rebooted (in, should be fixed in
  • Fix for voice echo problem during calls
  • Problem with dialing numbers
  • Speaker phone volume set to a higher volume
  • Possible DTMF problems fixed

Firmware: -

  • The phone sends some SIP traffic to port 0 at the destination, not to port 5060. See a more detailed explanation on the page Asterisk phone grandstream budgetone under the heading "Early dial".

Firmware: (and probably earlier)

  • Early dial and challenge/MD5 authentication do not play nicely together. Specifically, the Grandstream device correctly handles the "407 Authentication Required" challenge for the first two digits, but (usually) once the third is reached, it decides that 407 is a failure code, produces a busy signal, and aborts the call. This can be worked around by specifying "auth=plaintext" in your sip.conf.


  • Message button is broken. It sends a malformed SIP INVITE message.

Possible problems and solutions:

Asterisk doesn't accept my DTMF tones!
  • try changing 'send audio' to 'send in SIP' Asterisk phone grandstream

After firmware upgrade of HT-486 web interface become not accessible
  • try to access web interface via LAN port. Web interface is disabled from WAN side by default.

I can't hang up the handset after putting the call on hold!
  • This is normal behavior for the phone under all firmware versions; if you hang up after pressing the "Hold" button, the call will be disconnected. (This issue has been brought to Grandstream's attention, but it is unknown if it will be changed.)

  • After upgrading to the 1.08.16 firmware I was able to hang up with a call on hold. It rang untill I picked it back up.

Where to Buy?

See also

Created by: jht, Last modification: Wed 30 of Jul, 2014 (16:24 UTC) by voxsys
Please update this page with new information, just login and click on the "Edit" or "Discussion" tab. Get a free login here: Register Thanks! - Find us on Google+