dialDTMF a Pocket PC (Pocket Contact) plugin to dial telephone numbers using DTMF's (aka Dual Tone Multi-Frequency)
(tested under PPC2000 MIPS, PPC2000 ARM, PPC2002 ARM, Xscale WMPPC2003 and WM2003SE, WM5 - if you want your processor supported either build the exe's yourself from CVS or email me and I may look into it). There is a listed of known working hardware in the FAQ.

dialDTMF is free (in price) and released under the GPL http://www.gnu.org/copyleft/gpl.html (freedom of use). This program is distributed in the hope that it will be useful, but is provided AS IS with ABSOLUTELY NO WARRANTY. As this is GPL there is nothing to stop you creating a fork, but if you do make a change/improvement, I'd like to see it! Please send me any changes.



You can get binaries for PocketPC (and src zip files) here http://sourceforge.net/project/showfiles.php?group_id=91603 . The plugin is provided in a zipped CAB file (zips are smaller + you get a checksum so you can determine if the download was successful. "Naked" CAB files don't give you that). If you are trying to install directly to your PocketPC without access to a desktop check out TotalCommander file explorer, it has built in Zip file support. You also need a text editor to configure the dialing rules for your location (guess what, TotalCommander can do that too). As of version 0.03 nscriptm is no longer required, see the FAQ.

If you do NOT install to the default location, please see the FAQ.

By default the CAB installer will install long tones (the most reliable), you may find that shorter tones are preferably (as they are faster), but they may not work on all phones (especially old/cheap phones), just download and extract them separately.


First thing is get the contents of the unzipped archive on to your PocketPC - you only need the CAB file. Either:
  1. open the active sync window and hit explore; then drag and drop the file to the device
  2. copy the file to the pocket pc directory under "My Documents" (you can do this either when the device is connected or disconnected) and sync as normal
Once the file is on the device, open a file explorer ( you can use the default one that is on the device; or better TotalCommander).
Find the cab file in the explorer.
"tap"/click it like a normal file to open it which install the CAB. On a default device the cab file will be DELETED (this is just how pocket PC's work).

You can get source code either from CVS here http://sourceforge.net/cvs/?group_id=91603  or a nightly CVS tarball here http://cvs.sourceforge.net/cvstarballs/dialdtmf-cvsroot.tar.bz2. I've been using the free eVc 3.0 C++ compiler from Microsoft which allows dialDTMF to work on PocketPC 2000 as well as WM3003SE.

Check out the project page on SourceForge here http://sourceforge.net/projects/dialdtmf


Contact details here http://sourceforge.net/users/clach04/ please contact me with bug reports or sample ini file settings for your country. I also like to hear if any one is using it; ego boosts are nice sometimes :-)

The re-itegration of the poom api and the display of phone numbers in version 0.04 was written by BK Liew .


I wrote this because I'm lazy, manual dialing is a chore, speed dialing isn't an option unless you are in one place and can program that phone. I have to lookup the number in my PDA anyway so why not make the PDA go the extra mile?

There are some commercial packages, but I didn't want to spend money (I've no idea if they are any good or not), there are some (limited) free dialers but they either don't work on MIPS or they are 2.5Mb VB apps (I don't have the space for that on my 32Mb machine) - and none plugin into the contacts application (I don't want to learn a new interface). Plus I wanted the dialer to be smart and dial the correct number no matter where in the world I was, why should I have to remember international dialing codes (that's what the PDA is for isn't it :-p )?

GUI tools require effort to make "pretty" and I'm pretty happy with the Contacts app with PPC so I knocked up a plugin rather than a whole new contacts dialing application.



Select ONE contact in the Microsoft Pocket Contact application, either go to the Tool menu (or tap-and-hold) and select dialDTMF, it should then pop up a basic dialog where the dialing rules (where you are) and the number to dial can be selected. If using wm2003 one can simply use the Action button and the op/down hardware button to select. You need to place the PDA speaker VERY close to the mouth piece of your phone (ideally the volume should be set HIGH, dialDTMF doesn't yet try and increase dialing volume).

If you have a telephone number that does NOT start with a + (plus sign) then the number is dialed as-is.

If the number has a + sign, translation is performed to dial the correct number for your current location. The up shot is that if you move locations (more on locations later) and want to use dialDTMF make sure all of your numbers are in international format. If you use a cell phone and take it abroad, you have probably already modified some numbers to be in international format any way (if you have a cell phone you may not have much need of this app though :-)). Example: say you have a telephone number of a person in San Francisco, CA, USA.  the number in the contacts application should be stored as "+1 415 555 1234", this includes the country code "+1", the area code "415" and the telephone number itself (555 1234).

Dialing rules are stored in an ini file in the same dir as dialDTMF (default install location on an English PocketPC is "\Program Files\dialDTMF"). You should edit location.ini with your location information. An example ini file is provided that has USA and UK dilaing rules; see home and work (for USA examples) see reading (for a UK example).

How does number translation take place?

Check out various web sites for the rules on this subject (e.g. http://kropla.com/dialcode.htm ) or your telephone company phone book.

But basically to dial: Some people may argue over the national dialing "scheme" above, some countries may claim they don't have a national dialing code (e.g. in the UK, the national dialing code is 0 but most people don't realize it, most think 0 is part of the area code, you can tell it is the national dialing code as you don't dial a 0 in front of the area code if you call the UK from another country).

So dialDTMF needs to know where you are, it needs to know the local area code, national dialing prefix, international prefix, your country code and it supports custom prefixes (such as 9 to dial out of an office, or a bunch of numbers for a calling card). Location information is stored a file called location.ini that is stored in the same location as the exe (well dll). The location.ini is a standard ini format ASCII test file, currently one has to manually edit it with a text editor (either on the device or a desktop), there are loads of decent text editors for PocketPC, but if you are in need of one you can't go wrong with TotalCommanderfile explorer, it has built in Zip support, a decent/basic text file editor/viewer and a registry viewer/editor.

Example location.ini file

# INI-like configuration file for dialDTMF
# lives in:
# \Program Files\dialDTMF\location.ini
# Normal home in USA (San Francisco) using standard long distance carrier
country_code = '1'
area_code = '415'
int_code = '011'
nat_code = '1'
custom_prefix = ''

# home in USA using 1010987 for international carrier
country_code = '1'
area_code = '415'
int_code = '1010987011'
nat_code = '1'
custom_prefix = ''

# Normal office in USA, dial 9 to dial out
country_code = '1'
area_code = '415'
int_code = '011'
nat_code = '1'
custom_prefix = '9'

# Normal office in UK (Slough), dial 9 to dial out
country_code = '44'
area_code = '1753'
int_code = '00'
nat_code = '0'
custom_prefix = '9'

# Normal home phone UK (Reading)
country_code = '44'
area_code = '118'
int_code = '00'
nat_code = '0'
custom_prefix = ''

# Do not use dialing rules, just dial "as-is"
["no rules"]
country_code = ''
area_code = ''
int_code = ''
nat_code = ''
custom_prefix = ''

If you end up going abroad you just need to create a new location and you can call anyone without mucking around with the numbers. dialDTMF has been tested in/from/to the USA and the UK, as the code is fairly simple I can't foresee problems attempting to dial (say) Jamaica from the USA (or any country where the country code prefix is a 1). If you find a problem let me know or grab the code and see if you can get it working. But for the people/countries I phone dialDTMF has behaved itself so-far.

Finally there is a delay time for each tone (UK phones can be dialed faster than US phones, don't ask me why they are different), this is in the registry (registry setting \Software\Apps\dialDTMF\tonedelay). The default is 100 millisecs. 200 millisecs appears to be VERY reliable (100 works 99% of the time for me on long numbers and is the default). You need a registry editor to modify this parameter, check out PHM or Tascal.

Tips / FAQ

How to handle different calling plans/long distance carriers

In the US there are various special prefixes that give you cheap deals on phone calls, such as "10 10 220", "10 10 987". If you want to use these create a new location and modify your long distance prefix, e.g. instead of "1" for national calls set it to be "10 10 987 1" (note the 1 at the end). Don't put it in the custom prefix, other wise local dialing will get messed up.

Try changing the dial delay for a slightly faster dial (I've stuck with 100ms as it always works for me).

Errors when selecting dialDTMF from Contact "Tools" menu?

You may have installed dialDTMF to a Storage Card (or other non-default location). It is strongly recommended that dialDTMF be installed to the default location, if you have already installed dialDTMF; simply uninstall and then re-install to the default location. If you have used a tool like CabInstl you will have problems as CabInstl does not correct the location of the registry entries (using the desktop installer to select a different location should address this). One option if you really want to change the location of dialDTMF is to update the registry (you can use TotalCommander for this) and check/update the registry entry:
Check what the "dll" entry is set to, by default it points to:
\Program Files\dialDTMF\dialDTMF.dll

If you have a non-English device the "Progam Files" should be in the local language as the installer installs to %CE1%. 

What numbers can you dial?

Any number in a contact record can be dialed with the exception of:

No sounds play when dialing?

  1. Check that the sound files are available
  2. Ensure that  under Settings->Sounds & Notifications is enabled for "Programs" and "Notifications (alarms, reminders)"

Slow dialing speed - how to speed up dialing?

By default the CAB installer will install long tones (the most reliable), you may find that shorter tones are preferably (as they are faster), but they may not work on all phones (especially old/cheap phones), just download the short tones from http://sourceforge.net/project/showfiles.php?group_id=91603&package_id=100460 and extract them into the  "\Program Files\dialDTMF\wav" directory.

How to add pauses to the dialing?

If you want to add a pause, e.g. dial number, pause, dial password. Just use a comma i.e. "," and a 1 second pause will occur, for 2 seconds use 2 commas, e.g. ",," or 3 commas for 3 secs, etc.

What hardware/software does dialDTMF work on?

In theory any PocketPC or later version of Windows CE (i.e. 3.0 on-wards). dialDTMF has been reported to run on:
dialDTMF (0.03) does NOT run under WM5 (due to the use of CEDB) so use a later version of dialDTMF!

How to operate one handed?

On regular devices: just press the Contact button to bring up the contacts application (even if the PDA is turned off). Scroll up/down to the required contact. Press and HOLD the action button. Select dialDTMF then scroll up/down to select which number to call. Then press the action button. The action button is the button at the center of the D-Pad (or press in the scroll wheel).

On a Smartphone: press the right control button under the screen to bring up the contacts . Scroll up/down to the required contact. Pressthe right control button again to get the tools menu and select dialDTMF.

NOTE for previous (0.02alpha and earlier) users

Older versions of dialDTMF needed nscriptm http://s-k.al.ru/nscript.html. nscriptm is no long required. nscriptm was required to configure the dialer (to select whether to dial home/mobile/cell/work phone numbers, and also to select the dialing location.

To install nscriptm, run the exe for your platform on your device and then open the install.ns script, once that is done you can click open any .ns script and it will run automatically.

There was a script to:
  1. select current dialing FROM location
  2. select current dialing TO location (home, work, mobile [aka cell])

Stuff used to create this project

Uses parsecfg by Yuuki NINOMIYA http://www.icewalkers.com/Linux/Software/56270/parsecfg.html or/and http://sourceforge.net/projects/parsecfg
I've modified it slightly to run under WinCE (you get some compile warnings still but it works), see CVS (or download the source tar [well zip] ball).

Also uses ccdtmf (portable DTMF dialing library) which I've bundled into dialDTMF (written at the same time as dialDTMF), see CVS.

dialDTMF does NOT generate the tones itself (it uses WAV files that I picked up from http://www.giangrandi.ch/jack/radio/dtmf-e.shtml and http://users.hol.gr/%7Etron/software/dialer/top.htm). You could generate them in real time (it might save some space but then you'd need to link in a math library). See Caesar on http://sourceforge.net/projects/caesar/ for one project that does do that. Also DTMF faq http://margo.student.utwente.nl/el/phone/dtmf.htm for theory.

dialDTMF 0.02 and earlier used the poom api to get Contact information, 0.03 now used CEDB access I got the idea/model from SiKi'ho Xialer another free dialer for PocketPC (which doesn't work in WinCE 5.0 - aka WM5), 0.04 uses poom again!

dialDTMF was built using Microsoft eMbedded Visual Tools 3.0 (eVC v3.0) - i.e. the older release to allow building for WinCE 3.0 to support older MIPS (etc.) cpus, as well as the more modern Xscale and ARM which all modern PocketPC, Windows Mobile, SmartPhones use.

If you don't like CVS much you may want to try TortoiseCVS so you don't have to "learn" CVS.

Future ideas

Completely unrelated to dialDTMF but PocketPC related links

Evil Dice PE a Devil Dice clone
Vade Mecum a plucker viewer
SQLite WinCE Port a port of sqlite to Windows CE.

SourceForge.net Logo

Visitor Information

Locations of visitors to this page