After more than four years of avoiding Skype, I discovered it’s not bad at all…

This content is 16 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

In 2004, one of my colleagues tried to get me to use Skype. I wasn’t impressed, especially as I was working on a client site and the proxy server kept on blocking connections to strange educational sites all over the world.

I’ve since learnt that was because of the peer-to-peer networking nature of Skype with it’s system of supernodes but, even so, for the last few years, I’ve managed to avoid it, favouring traditional voice communications and more recently, SIP-based VoIP. Then, as I blogged previously, James Bannan and I decided that we would like to put a podcast together and, as he’s in Australia and I’m in the UK, Skype looks like the most sensible communications option. I listen to a lot of podcasts where the presenters are geographically dispersed and apart from the odd glitch when someone is clearly on a weak connection or running some CPU-intensive software, everything seems fine.

Skype main pageSkype main page
So, one night last month, we gave it a go (we’ll only need audio but we tried the full video capabilities) and I was actually quite impressed. I was at home, using Skype 2.7.0.330 for Mac OS X with the built-in iSight webcam in my MacBook and James was using a recent version of Skype on a Windows PC in his office.

Don’t be put off by the pixellated picture… that was just because it wasn’t exactly the best picture of James (stills from video calls rarely are) but, apart from the deliberately mosaiced face, you can see that the video quality is not bad at all.

Skype technical informationGiven that I have a consumer broadband connection and that James was on the other side of the world (although I don’t know what sort of network connection he had), things were pretty good.

If you check out the technical call information screenshot you can see that the round trip (of at least 21,000 miles, through 4 relays was taking an average of 374ms (just about the limit before delay becomes noticeable but not exactly causing a problem) and there was negligible jitter and barely any packet loss, although the SVOPC codec is designed to tolerate packet loss (I found a forum post on a German site which describes the various metrics used by Skype). Most notably for me, both CPU cores on my 2.2GHz Intel Core2Duo were being hammered as Skype encoded/decoded the video conversation but we were still managing a respectable 15 frames per second.

So, in all the whole experience was a good one. Of course, like any VoIP connection across the Internet, experiences will vary according to the traffic conditions at the time but I was suitably impressed.

Customising a Cisco 79xx IP Phone: Ringtones

This content is 17 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

In my recent post on configuring a Cisco IP phone for VoIP using SIP, the RINGLIST.DAT file pointed to a file called CTU.raw – a custom ringtone for my phone. I hadn’t realised at the time but CTU is something to do with the TV series “24” and had been passed over to me with the rest of the configuration files that I used for reference. If you want to generate your own ringtones it’s quite simple but beware – there is not room for anything more than a few seconds.

I followed Jozef Janitor’s advice to create a custom ringtone, using the SoX Wrap to generate a .RAW file from an .MP3 on my Mac (I can handle the command line but SoX Wrap is also an easy way to get sox into Mac OS X). If you don’t use a Mac then Leigh Harrison offers some alternatives in his blog post on the subject and Josef’s advice suggests some others. Unfortunately though, even after truncated the file to 16KB using dd it was too long and when I tried to select it the phone displayed Custom Ring Unavailable!. Chopping it down to 15 bytes seemed to work but that left a very short clip indeed (about 2 seconds).

If you’re after a good source of pre-recorded tones, then try The Caretakers’ Website or here. I found that, including the two built-in tones, my 7940 only offered a choice of 50 tones.

Incidentally, RINGLIST.DAT is one supported file format but you can also use an XML file (as described in the Cisco Call Manager documentation for custom phone rings).

If your IP phone is in a work environment, the chances are that the administrators won’t let you add your ring tones to the system. Logan Ingalls found a workaround by using his own TFTP server but I have to warn you that they probably won’t like that either!

Configuring a Cisco IP phone for VoIP using SIP

This content is 17 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

Cisco logoOne of my projects at home has involved trying to get a variety of telephony systems to work together so that I can make voice over IP (VoIP) or plain old telephone service (POTS) as necessary to get the best call rates. In truth, it’s probably not about getting the best rates as our phone bill is already pretty small – maybe it’s just because the geek inside me wants to get an IP phone working on my desk… anyway, I still have a few pieces of the puzzle to fit in place but last week I had a major breakthrough in getting a Cisco IP phone to provide a voice over IP (VoIP) service using SIP. It was a long haul, but worth it in the end – and this is how it’s done…

Cisco IP Phone 7940GFirst of all I needed an IP Phone. I managed to pick up a brand new 7940G for £50 on eBay (a bargain) and this was perfect for me. Why a Cisco phone? Partly because we use them at work (so I know they are good phones – and I like the form factor – although I wish it had a backlit screen) but mostly because there are so many of them about – that means that plenty of people have tried to do this and there is information available on the web. Using a Cisco phone does cause a couple of problems though:

  1. The standard protocol used for VoIP is session initiation protocol (SIP) and Cisco IP phones don’t use SIP natively. Cisco has it’s own IP Telephony system (Call Manager) which uses SCCP; however they do provide SIP firmware for their 79xx IP phones.
  2. Some of the Cisco documentation and software is only available with a service contract and generating configuration details can be a challenge if you don’t have access to a Cisco Call Manager solution – thankfully everything I used for this is available on the ‘net through a variety of websites that are aimed at getting people up and running with VoIP solutions.

It’s also worth knowing that there are two types of configuration file for Cisco IP Phones:

  • The 79x0 models use a fairly simple configuration file.
  • The 79x1 models use an XML configuration, which is all very well if you have access to a Cisco Call Manager solution but not so well documented if you don’t.

I found that the 7940 is a good model to go for as it has been around for a while, there is plenty of information available, and it can be picked up for a reasonably low price (and it helped to know that one of my colleagues already had this solution working well for him!). The 7960 is similar but with support for more lines and there are other models available (e.g. cordless phones, or phones with colour screens). In addition, Linksys (owned by Cisco) sells some similar phones that do run SIP natively but I don’t know if they use the same firmware.

After choosing the phone there were a couple of other considerations:

With the phone powered on and able to download a configuration, I uploaded the necessary configuration files to the TFTP server. Cisco Document ID: 5455 – Converting a Cisco 7940/7960 CallManager Phone to a SIP Phone and the Reverse Process gives details of the required files but the main ones to know are:

  • OS79XX.TXT – tells the phone which firmware to use.
  • SIPDefault.cnf – configuration information relevant to all phones.
  • SIPmacaddress.cnf – configuration information relevant to a specific phones.

Other files that I have include:

  • RINGLIST.DAT – Lists audio files that provide the custom ring types.
  • CTU.raw – an audio file referenced by RINGLIST.DAT.
  • dialplan.xml – a dialplan.
  • Various firmware images named as follows:
    • P003x-xx-x-00.bin – universal application loader for upgrades from images earlier than 5.x.
    • P003x-xx-x-00.sbn – secure universal application loader for upgrades from images 5.x or later.
    • P0y3x-xx-x-00.loads – universal application loader and application image, where y represents the protocol of the application image (.loads) file: 0 for SCCP, and S for SIP.
    • P0y3x-xx-x-00.sb2 – application firmware image, where y represents the protocol used by the image: 0 for SCCP, and S for SIP.

With all the necessary files available on the TFTP server, I set about upgrading the firmware to the latest SIP release by editing the OS79XX.TXT file to read P0S3-08-2-00 and resetting the phone. The TFTP server log told me that the phone picked up the appropriate firmware release, but that it couldn’t find one of binary images (P0S3-08-2-00.bin)

After some research, it seems that POS3-08-x-00.bin does not seem to exist for any 8.x firmware:

Versions [6.x] and [7.x] seem to have P0S3-0xxx-00.BIN files which make it easy when upgrading from SCCP to SIP as all you have to do is rename the file it loads in OS79XX.TXT to one of these *.BIN files and its all done straight to SIP.

With version 8 series it doesn’t have these and that forces you to upgrade it in a 3 part reboot and load phase with[:]

XMLDefault.cnf.xml
[SEPmacaddress.cnf.xml]

That loads the *.loads file then it loads *.sbn and reboots
After warm reboot it loads *.sb2 which must be the sip software.

Then reboots again starting in sip and then provisions with[:]

SIPDefault.cnf
[SIPmacaddress.cnf]

Armed with this new information, I put the 7.4 SIP firmware into my TFTP root folder, edited OS79xx.TXT to read P0S3-07-4-00 and created an xmlDefault.CNF.XML file.

After booting the phone I was pleased to see a message that said Upgrading software but that pleasure soon ended as the upgrade never completed. Thankfully I hadn’t “bricked” the phone and, after another reboot, the phone showed a message which said Load ID Incorrect. The TFTP logs indicated that the phone was trying to load a file called SEPmacaddress.cnf.xml.

Googling turned up some more information and it turned out I was trying to go too far in one jump – my phone had been supplied with v3.x SCCP firmware and I was trying to go straight to v7.x firmware:

You have to upgrade to a new version of SCCP or older version of SIP before the bootloader on the phone will be able to handle the newer firmware […] you can either use an older version of SIP first, or a newer version of SCCP. Older SIP is probably easier – 6.3 is the newest you can use to then jump to 7.x and/or 8.x.

I put the v6.3 firmware on my TFTP server, edited OS79XX.TXT to read P0S3-06-3-00 and rebooted the phone. This time I saw the Upgrading Software message and watched the transfer take place.

After rebooting itself the phone came back up on the v6.3 firmware and was showing itself as Phone Unprovisioned.

I set about the second stage upgrade to v8.2 by editing OS79XX.TXT to P0S3-08-2-00 and rebooting the phone again. That didn’t help, but a further OS79XX.TXT edit from P0S3-08-2-00 to P003-08-2-00 did the trick as the Universal Application Loader booted.

Despite attempting to read non-existent files called CTLSEPmacaddress.tlv and SEPmacaddress.cnf.xml (the Cisco 7940 and 7960 IP Phones Firmware Upgrade Matrix explains the hunt algorithm employed by the Universal Application Loader) the phone downloaded the appropriate files and restarted to return as an unprovisioned device, finally running the v8.2 SIP firmware.

By this point, the TFTP logs were not much help as they didn’t indicate any errors but the status message on the phone gave me more clues:

W350 unprovisioned proxy_backup
W351 unprovisioned proxy_emergency
W362 No Valid Line Names Provisioned

The unprovisioned backup and emergency proxies didn’t bother me but I couldn’t understand why I had no valid lines provisioned. I had been trying to get the phone to use my Linksys SPA3102 as a SIP proxy but something was not quite right. In the end, I gave up and registered with SIPgate. After updating my configuration files to reflect the SIPgate account details, my phone picked up a valid line but couldn’t make or receive calls. Following advice on the SIPgate website, I made sure that the following ports were all open:

I’m not sure if all of these are strictly necessary but they seem to have got things working. The final contents of my configuration files are detailed below, after the TFTP log from a successful boot:

Connection received from ipaddress on port 50967 [25/07 00:41:32.672]
Read request for file <CTLSEP
macaddress.tlv>. Mode octet [25/07 00:41:32.672]
File <CTLSEP
macaddress.tlv> : error 2 in system call CreateFile The system cannot find the file specified. [25/07 00:41:32.672]
Connection received from
ipaddress on port 50968 [25/07 00:41:32.703]
Read request for file <SEP
macaddress.cnf.xml>. Mode octet [25/07 00:41:32.703]
File <SEP
macaddress.cnf.xml> : error 2 in system call CreateFile The system cannot find the file specified. [25/07 00:41:32.703]
Connection received from
ipaddress on port 50969 [25/07 00:41:32.719]
Read request for file <SIP
macaddress.cnf>. Mode octet [25/07 00:41:32.719]
Using local port 1203 [25/07 00:41:32.719]
<SIP
macaddress.cnf>: sent 2 blks, 632 bytes in 0 s. 0 blk resent [25/07 00:41:32.735]
Connection received from
ipaddress on port 50970 [25/07 00:41:32.766]
Read request for file <P0S3-08-2-00.loads>. Mode octet [25/07 00:41:32.781]
Using local port 1204 [25/07 00:41:32.781]
<P0S3-08-2-00.loads>: sent 1 blk, 461 bytes in 0 s. 0 blk resent [25/07 00:41:32.781]
Connection received from
ipaddress on port 50962 [25/07 00:41:54.672]
Read request for file <SIPDefault.cnf>. Mode octet [25/07 00:41:54.672]
Using local port 1205 [25/07 00:41:54.672]
<SIPDefault.cnf>: sent 2 blks, 925 bytes in 0 s. 0 blk resent [25/07 00:41:54.688]
Connection received from
ipaddress on port 50963 [25/07 00:41:54.813]
Read request for file <SIP
macaddress.cnf>. Mode octet [25/07 00:41:54.828]
Using local port 1206 [25/07 00:41:54.828]
<SIP
macaddress.cnf>: sent 2 blks, 632 bytes in 0 s. 0 blk resent [25/07 00:41:54.828]
Connection received from
ipaddress on port 50967 [25/07 00:41:56.891]
Read request for file <RINGLIST.DAT>. Mode octet [25/07 00:41:56.891]
Using local port 1207 [25/07 00:41:56.891]
Connection received from
ipaddress on port 50974 [25/07 00:41:56.907]
<RINGLIST.DAT>: sent 1 blk, 15 bytes in 0 s. 0 blk resent [25/07 00:41:56.907]
Read request for file <dialplan.xml>. Mode octet [25/07 00:41:56.907]
Using local port 1208 [25/07 00:41:56.907]
<dialplan.xml>: sent 1 blk, 104 bytes in 0 s. 0 blk resent [25/07 00:41:56.907]

OS79XX.TXT

P003-08-2-00

SIPDefault.cnf

;begin
image_version: P0S3-08-2-00
proxy_register: 1
dial_template: dialplan
tftp_cfg_dir: “”
sntp_server: “ntp.sipgate.net”
sntp_mode: unicast
time_zone: GMT
dst_offset: 1
dst_start_month: March
dst_start_day_of_week: Sun
dst_start_week_of_month: 8
dst_start_time: 01
dst_stop_month: Oct
dst_stop_day_of_week: Sun
dst_stop_week_of_month: 8
dst_stop_time: 02
dst_auto_adjust: 1
time_format_24hr: 1
date_format : D/M/Y

# NAT/Firewall Traversal
nat_enable: 1 ; 0-Disabled (default), 1-Enabled
nat_address: “” ; WAN IP address of NAT box (dotted IP or DNS A record only)
voip_control_port: 5060 ; UDP port used for SIP messages (default – 5060)
start_media_port: 8000 ; Start RTP range for media (default – 16384)
end_media_port: 8012 ; End RTP range for media (default – 32766)
nat_received_processing: 0 ; 0-Disabled (default), 1-Enabled
outbound_proxy_port: 5082
telnet_level: 2
;end

SIPmacaddress.cnf

;begin
image_version: P0S3-08-2-00
phone_label : “markwilson.it ” ; Has no effect on SIP Messaging
line1_name : “sipgateid” ; SIPgate device ID#
line1_authname : “sipgateid” ; SIPgate device ID#
line1_password : “sipgatepassword” ; SIPgate device password
line1_shortname : “phonenumber”
line1_displayname : “phonenumber”
proxy1_address : “sipgate.co.uk”
proxy1_port : 5060
line2_displayname: “”
line2_shortname: “”
line2_name: UNPROVISIONED
line2_authname: “UNPROVISIONED”
line2_password: “UNPROVISIONED”
proxy2_address : “”
proxy2_port : 5060
phone_password: “password”
logo_url: “http://webserver/sipgate.bmp”
directory_url: “http://webserver/directory.xml”
;end

RINGLIST.DAT

CTU CTU.raw

xmlDefault.CNF.XML





2000
2427 2428




P0S3-07-4-00






Further information

Here are some of the sites that I found particularly useful as I went through this process:

[update 10 September 2009: Here’s another useful resource on how to set up a cisco 7940 and 7941 IP phone to do SIP.]

[update 27 March 2010: Tyler Winfield’s article on configuring Cisco IP phones with Asterisk is very thorough and easy to read – even if you’re not using Asterisk.]

Unconditionally contactable – no thanks.

This content is 17 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

This last week has been manic – hence the lack of blog posts… taking a day’s annual leave on Monday and then spending half of it catching up on my administration didn’t bode well, then there were two nights when I was up until 1am trying to write an infrastructure design document and the usual mix of travel, conflicting meeting requirements and trying to get some “real work” done.

“But Mark”, I hear you ask,”surely you use some of the technologies that I see you write about to improve productivity?”

The answer is that I do – I’m using Microsoft Office Communication Server 2007, the Office Communicator client 2007 and Live Meeting 2007 a fair bit – as well as our corporate conferencing service. Soon I’ll be linking all of that in to my voice mail to make use of Exchange Server 2007’s unified messaging capabilities. It’s a really good solution (especially when Communicator reads my calendar or Live Meeting status and sets my presence accordingly). But the technology is no panacea: sometimes something doesn’t work – I spent quite a bit of time this week waiting on a Live Meeting call as Microsoft struggled to get the audio working (they later postponed that particular meeting as even they couldn’t fix it); and other times there is no substitute for getting together in a room – like my main meeting on Friday which necessitated 4 hours travel (which could have been better spent doing something else) but resulted in the production of a migration strategy for a key customer’s messaging infrastructure – something which we had failed to do several times over the phone (and which I doubt even advances in video conferencing would have helped with).

As someone who struggles at times with information overload, and who was described by a friend and ex-colleague as “[sometimes] exhibiting workaholic tendencies”, I need to help myself to become more productive. As I already have a pile of books by the bedside, it’s probably time for an audiobook or two on Getting Things Done (or at least to check out 43 Folders from time to time).

As for unified communications (UC), Dave Bailey wrote an interesting comment for IT Week on the difficulties of getting away from it all – it was only a few days previously that, as I was busily IMing one contact, another team member started e-mailing me on the same subject and I had Outlook “toast” popping up as fast as I could type. Then I spent half of Friday afternoon this week reducing the size of my mailbox so that I could get below the system limits and send mail again (there is one simple answer – the delete key… but that’s not exactly productive either). As my colleague pointed out, it seems that UC really stands for “unconditionally contactable”. No thanks.

Trying to work out why BlackBerries are so popular (I still don’t get it)

This content is 18 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

Whilst the United States is going iPhone crazy, over on this side of the pond we can’t get one yet… so life goes on.

BlackBerry 7100vA couple of weeks back, I was given a BlackBerry to use at work (until I can get my hands on a Windows-powered phone – one of my colleagues had a greater need than I for the Palm Treo 750v we snagged but there are some new models coming soon on Vodafone
that I can’t talk about but which look pretty cool).

So, if I want a Windows Mobile device (for work) why am I even looking at the BlackBerry? Firstly, I was given it to try (my Nokia 6021 is a bit beaten up these days) and secondly, I’m intrigued as to why these things are held in almost universal acclaim by senior executives, causing chaos in IT departments up and down the country who don’t want to support a (proprietary) messaging platform in addition to their corporate e-mail on Microsoft Exchange or Lotus Domino (and even leading to the nicknaming of London’s Jubilee line between the West End and Canary Wharf as the Blackberry line).

I’ve re-written this post a few times over the last couple of weeks because as I’ve used it, I’ve warmed to the BlackBerry:

  • At first I hated the interface (what is it about mobile phones that, almost without exception, they have such appalling user interfaces?) but that was improved by a software upgrade.
  • I didn’t like that I had to buy a USB 2.0 A to mini 5pin cable to charge the device – and battery life is poor – I get about day’s worth of (light) use for voice only (I know that smartphones are battery-hungry but I don’t have a data plan to use it properly… all I do was make and receive calls). As it happens, the fact that I can use a standard cable to charge the device via USB is pretty useful.
  • I’ve discovered features like the auto on/off capabilities which could have a real use for me (I have a personal phone which friends and family can use to contact me 24×7 – and even though one of my friends recent described me as having workaholic tendencies the work phone is not normally answered in the evening or at weekends).
  • Once you get used the the scroll-click wheel and the button next to it, the user interface becomes a lot easier to navigate – and the 240×260 screen is excellent for viewing photos, although there is no card slot for additional memory (and getting pictures onto the device without a data plan is cumbersome). It looks quite good and feels comfortable in my hand (size and weight). Unfortunately though, I found the keyboard difficult to use – a pretty major failing on a device like this (I think the problem is that it has a qwerty layout but it feels like a mobile phone, so my fingers and thumbs want it to be arranged alphabetically).

I’m not trying to write a product review (for that, refer to Lord Percy or The Register and anyway this particular device is a bit old now so I’m not sure how useful any review that I wrote would be)… this is more of a “this is what I found when I tried to use it” post – I’m hoping that my experience may be useful for others too:

  • After inserting my SIM card, all of my calls went to voicemail – it seems that before you can use the device as a phone you have to turn the wireless on. Not realising that this model doesn’t have WiFi capabilities I thought that “wireless” was referring to IEEE802.11b/g but no – the wireless in question is the GSM radio that is required in order to connect to a mobile carrier.
  • Not having any manuals, etc., I had to find out what the device was first so that I could Google for some help. IMEI number analysis didn’t help (probably because this was originally an evaluation unit), but I eventually discovered that there is an option/setting labelled about, which tells me I have a Blackberry 7100 Wireless Handheld and a bit more searching confirms that its the Blackberry 7100v.
  • I noticed that I still had the previous user’s contacts loaded, so I wanted to wipe the phone – there doesn’t appear to be a delete all option for contacts, so the resolution I used (found on BlackBerry Forums) was:
    • Install Blackberry Desktop Manager (4.2), followed by the BlackBerry Handheld Software v4.1.0.314 for Vodafone (UK) – both of these were downloaded from RIM after searching Google. Following the software update, the device had a totally different (much improved) look and feel. The installation also worked on Windows Vista, despite not being listed as compatible (I ran the installer as an Administrator)
    • Open the BlackBerry Desktop Manager application and create a connection to the device (Connection Settings… from the Options menu).
    • To delete the old data from within Desktop Manager, select Backup and Restore and click the Advanced… button. Select the appropriate device databases (multiples can be selected by Control or Shift clicking) then click Clear.
  • I don’t have a connection to a BlackBerry e-mail service – effectively I’m using the device as a PDA and a phone, but it ought to be possible to set up the BlackBerry as a GPRS modem (not by Bluetooth, but using a USB connection). Unfortunately that’s not working (it should – using the same SIM in my Nokia 6021 allows me to browse the web using GPRS) but I’m unlikely to get anywhere with Vodafone unless I sign up for a BlackBerry service. My BlackBerry alternates between GSM and gprs (depending on signal strength/cell coverage) but never shows GPRS because:
    • GSM – GRPS is not enabled (contact your mobile carrier to sign up to a GPRS plan.
    • gprs (in lower case) – GRPS is enabled, but not been set up for use with a BlackBerry device.
    • GPRS (in upper case) – both GRPS and BlackBerry are enabled, (the service should be enabled for BlackBerry Enterprise Server if Exchange Server connectivity is required, rather than BlackBerry Internet Server).

Even though I’ve warmed to the BlackBerry (and newer models like the curve and the pearl are attractive), I’m still not a convert. Exchange Server 2003 SP2 offers push e-mail too (as does Exchange Server 2007), without requiring another layer of complexity in the organisational IT infrastructure. The dependency on a data plan for even basic things like transferring pictures to/from the device is also a hassle. The jury’s still out on my choice of handset for a personal phone (an iPhone would be nice… but do I really need something that expensive… or on a carrier other than Vodafone? It would be nice to have a decent camera in the device I choose… like the one in the Nokia N95… but last time I had a Symbian smartphone I didn’t get on with the interface. Then again, there are devices like the HTC touch… arghhh, brain overload… too much choice) – in any case, if I have any influence over the selection of my next handset for business it will be running Windows Mobile 6.

One man’s campaign for “real” telephone numbers

This content is 18 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

Microsoft’s James O’Neill has been on a crusade for a while now, trying to educate the world (well, the UK at least), that numbers written in the format +44 (0) 1234 567890 are wrong and that the E.164 format should be used instead. Of course, James is right (he explains more in a recent blog post and Ewan Dalton illustrates the issue a little more clearly in his post on the subject) but so many numbers are written incorrectly – it’s not uncommon to see 0207 xxx xxxx (the area code is 020 and the 7 is part of the local number) – and advertising only national rate numbers (as Microsoft does on it’s UK contact page) is not good practice either (another campaign related to phone numbers is Say No to 0870).

What I found particularly interesting is James’ explanation of making a phone number appear as a link in the form of tel:+44-1234-567890 so that those with a supported dialler (like Microsoft Office Communicator) can click to dial (for further information, see RFC 3966). I’ve updated my e-mail signature now (even if it does break the corporate rules for signature formatting)… unfortunately Outlook 2003 keeps on removing the link!

An introduction to voice telecommunications for IT professionals

This content is 19 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

I’ve invested a lot of time recently into learning about two of Microsoft’s collaboration products – Live Communications Server 2005 (real-time presence information, instant messaging and VoIP) and the forthcoming version of Exchange Server (e-mail, scheduling and unified messaging). Both of these products include telephony integration, and for many IT architects, designers and administrators that represents a whole new field of technology.

One of the things I found particularly useful at the Exchange Server “12” Ignite Tour (and which wasn’t covered by the NDA), was when Microsoft UK’s Stuart Clark talked about foundation concepts for unified messaging – i.e. an introduction to voice telecommunications for IT professionals, which I’ve reproduced here for anyone who may find it useful.

There are three main types of business phone system – Centrex, key telephone systems and private branch exchange (PBX) – of these, the PBX is by far and away the most common solution employed today.

A PBX can be thought of as a self-contained telephone system for one or more offices. It allows “internal” calls between telephone extensions (without the need for an operator) as well as allowing many internal extension numbers to share common trunk lines to the telephone company’s network, representing cost savings on outbound calls and making it less likely for an inbound call to be greeted with a busy tone. Typically each office (or campus) would have it’s own PBX, and these can be connected using tie lines to allow internal, cross-organisational calls, without using public telephone networks (i.e. just using internal extension numbers).

There are various types of PBX available:

  • Analogue PBXs retain all voice and signalling traffic as an analogue signal. Even touchtones (the “beeps” when a telephone key is pressed) are sent as analogue signals. These touchtones are technically known as dual-tone multi-frequency (DTMF) signals because they actually consist of two separate tones (one high, one low) played simultaneously – something that is highly unlikely to occur with a human voice – avoiding the possibility of confusion between control signals and conversation.
  • Digital PBXs first started to appear in the 1980s and encode analogue signals in a digital format (typically ITU G.711). Digital PBXs can also support the use of analogue trunk lines.
  • IP PBXs include network interface cards and use an organisation’s data network for voice traffic in the same manner as computers use the network for data transfer. The voice traffic is digitised and packet-switching technologies used to route calls across the LAN (and WAN).

Analogue and digital PBXs employ circuit switching technology and require the use of a gateway to connect with IP-based telephony systems. Hybrid PBXs combine digital and IP PBX technologies, allowing a more gradual migration to IP-based telephony. Many modern digital PBXs can be upgraded to hybrid PBXs; however some hybrid PBXs may still require a VoIP gateway (see below) to connect with other IP-based telephone systems due to protocol incompatibilities.

PBXs have a number of associated concepts:

  • Direct inward dialling (known as direct dial-in or DDI in Europe) is a technology used to assign external numbers to internal extensions, allowing internal extensions to be called from an external line without any operator intervention.
  • A dial plan is a set of rules employed by a PBX in order to determine the action to be taken with a call. For example, the dial plan would determine how many digits an internal extension number includes as well as settings such as the number required to dial an outside line and whether or not to allow international calls to be made. Internal extensions covered by the dial plan can call other internal extensions directly and, where a company has PBXs spanned across multiple geographic sites, the dial plan can be used to allow internal calls to be made between PBXs.
  • A hunt group is a group of extensions defined as a group around which the PBX hunts to find an available extension to which to route the call. For example, a hunt group may be used for an IT support desk and the call will be routed to the first available channel (extension).
  • A pilot number is used to identify a hunt group. It is a dummy extension without an associated person or phone, which acts as a number to dial when calling into a hunt group. In the example above, the number used to contact the IT support desk is the pilot number for the IT support hunt group. Another example pilot number would be a number used to access voicemail services. More than one pilot number might target the same group of extensions.
  • A coverage path determines how to route unanswered calls (e.g. divert to voicemail if not answered within 5 rings or if the line is busy).
  • Unsupervised transfer is the process of transferring a call to another extension without using the services of an operator, also known as a blind transfer.
  • Supervised transfer is the process of controlling a call detecting error conditions, detecting answer conditions, allowing reconnection to the original call and/or combining calls.

Having examined PBX technology, there are a number of other concepts to get to grips with in the world of IT and telephony integration.

Firstly, not all telephone lines are equal. Trunk and tie lines use high-bandwidth links that can simultaneously carry multiple channels (the term port is often used rather than channel, since it is at an entrance or exit to another system and/or network):

  • T1 lines have 24 channels with a data rate of 1.544Mbps, with either 23 or 24 channels available for voice transmission, depending on the protocol being used for signaling. T1 lines are found primarily in North America and Hong Kong.
  • E1 lines have 32 channels with a data rate of 2.048Mbps, with 30 channels available for voice transmission. Of the additional two channels, one is dedicated to timing information. The other channel is used for signaling information. E1-lines are used in Europe, Latin America and elsewhere.
  • J1 lines are found in Japan, including both 1.544 and 2.048Mbps technologies.

The channels provided by T1/E1/J1 lines are virtual channels – not separate physical wires but virtually created when the voice and/or data is put onto the line using a technology known as time-division multiplexing (TDM). Occasionally, analogue or ISDN lines may be used in place of T1/E1/J1 links. Fractional T1 and E1 lines, which allow customers to lease a portion of the line may be available when less capacity than a full T1 or E1 line is needed.

It’s also important to understand the differences between circuit-switched telephone networks and packet-switched data networks:

  • Historically, circuit switching is how phone calls have worked over traditional phone lines. In its simplest form, a circuit is started on one end, when a caller picks up the phone handset to dial a number (when a dial tone is presented). The circuit is completed when the recipient answers the call at the other end and the two parties have exclusive use of the circuit whilst the phone call takes place. Once the call is completed and both phones are hung up, the call is terminated and the circuit becomes available for use.
  • Packet-switching protocols are used by most data networks. With packet switching, the voice data is subdivided into small packets. Each packet of data is given its own identifying information and carries its own destination address (cf. addressing a letter for and sending it via a postal service). Packets can be transferred by different routes to reach the same destination.

One disadvantage of circuit-switching is that peak load capacity has to be provisioned but it cannot be repurposed at off-peak times. This means that excess capacity often sits idle. Packet-switching has the advantage that it can be repurposed at off-peak hours. The exclusive use of a given circuit is one of the big differences between circuit-switched telephony networks and packet-switched data networks. Packet-switching does not preallocate channels for each conversation and instead, multiple data streams are dynamically carried over the same physical network, making packet-switching more demand responsive.

Voice over IP (VoIP) is a term that describes the transmission of voice traffic over a data network using the Internet Protocol (IP). VoIP real-time protocols help to protect against packet loss and delay (otherwise known as jitter) attempting to achieving the levels of reliability and voice-quality previously experienced with traditional circuit-switched telephone calls. IP networks support the transport of multiple simultaneous calls.

As described earlier, some PBXs will require a gateway to provide protocol conversion between two incompatible networks (e.g. a VoIP gateway between a circuit-switched telephone network and a packet-switched data network). When connected to a digital PBX, the VoIP gateway functions as a multiplexer/de-multiplexer, converting TDM signals into a format suitable for packet-switching. When connected to an analogue PBX, the VoIP gateway has to convert the analogue voice signal into a digital voice signal between converting this into data packets. The IP packets are generally transmitted between the gateway and the PBX using a protocol called real time transport protocol (RTP), which uses small packet sizes to facilitate voice streaming at playback. IP PBXs use RTP for end-to-end communications. RTP is defined in IETF RFC 3550. Secure deployments can be enabled using secure RTP (SRTP), defined in IETF RFC 3711.

Session initiation protocol (SIP) is a real-time signalling protocol used to create, manipulate, and tear down interactive communication sessions on an IP network. The VoIP industry has adopted SIP as the signaling protocol of choice. SIP can be secured using transport layer security (TLS).

Although SIP is detailed in IETF RFC 3261 this remains a proposed standard and its implementation varies between vendors. One such variations is how SIP is mapped onto other protocols, in particular, transport layer protocols. Some map it to TCP, whilst others use UDP. These differences can make communications between VoIP applications challenging, possibly requiring a VoIP gateway to facilitate communications between two VoIP systems.

Finally, real-time facsimile (ITU T.38/IETF RFC 3362) is a fax transport protocol for the Internet. T.38 defines procedures for facsimile transmission, when a portion of the path includes an IP network. It is used when relaying a fax that originated on a voice line across an IP network in real time.

With the convergence of voice and data technologies, these terms are becoming ever more important for IT professionals to understand. Hopefully this post provides a starting point for anyone who’s struggling to get to grips with the technology.

Tesco’s VoIP service

This content is 19 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

You can buy everything in the supermarket these days. Last night I was doing our grocery shopping in Tesco (I hate the fact that they make so much money, that they are alleged to be anti-competitive, that I find their customer service to be appalling, and that the shelves are half empty after the weekend, but for some reason I still shop there for the grocery items that we don’t buy locally – generally in person rather than online) and I came out with two Tesco Internet Phone voice over IP (VoIP) handsets…

Tesco Internet Phone
…So there I was, back home, groceries packed away, with some new toys to play with. I’ve been avoiding VoIP up until now but the Tesco deal included two USB handsets and £10 of call credit for £30 (i.e. £20 net), with promises of 2p a minute call charges to fixed phone lines and selected international calls, free calls to other Tesco Internet Phone subscribers and just 10p a minute to mobile (cell) phones. I reckon that at those rates we ought to be able to save some money on our daytime calls (probably not in the evening though) and my wife should be able to call me for free, whenever I’m at my PC and connected to a broadband Internet connection (anywhere in the world). I’m sure Skype is just as competitive but I was put off Skype a few years back when I used it for instant messaging (in addition, SkypeIn and Skype Voicemail are subscription-based, whereas the Tesco Internet Phone offering includes a land line number and voicemail with no ongoing fees, just pay-as-you-go call charges).

Installation of the software was easy, although I found it strange that the phone software was downloaded from the Internet even when installation was launched from the setup CD. One minor complaint would be that I needed to change the capitalisation on the default foldername and program group names but apart from that I just needed to decide whether or not I wanted a desktop icon.

Upon launching the phone software, I needed to let my firewall unblock tescoip.exe but that was a simple click when prompted by the firewall software (the two PCs I used had either Windows Firewall or Zone Labs Integrity Client installed) and then (somewhat confusingly) register online (not as part of the setup wizard) to get a phone number and a password. Although the instructions had led me to believe that I would get a choice of numbers with a local area code based on the supplied post code, in practice it’s not quite that straightforward. Tesco don’t yet support multiple numbers on a single account, so I had two separate account registrations running in parallel to get consecutive numbers for myself and my wife. That worked but, for some strange reason, the process provides four-digit area codes (UK area code prefixes are generally 3 or 5 digits) and none of the towns local to me (Northampton, Wellingborough, Bedford or Milton Keynes) were offered. The closest I could get was Luton (normally 01582, but 0158 according to Tesco), which I believe is still classified as a local call from our area (Bedford – 01234), but not for my family and friends in Northampton (01604). Once the registration process was complete, the account required activation, using a link in an e-mail, following which I could finally complete the setup wizard and connect the USB handset.

Everything looked good until I made a test call between my two Tesco Internet Phone accounts and spent the next hour trying to work out why I could make a call and hear the phone ring, but then there was no-one there when I picked up the call. After playing with firewall settings on the client and my ADSL router (creating various rules to allow UDP port 4569), I found that the issue was much simpler than that – the setup routine had simply left the volume for the soft phone turned right down to zero! Once I had sorted that out, I successfully connected to the test line (*70001234) and set up my voicemail (*123) but was still having problems when I tried calling between my two Tesco Internet Phone accounts (the phone stopped ringing at the receiving end but was still ringing for the caller). That turned out to be a mismatch on my voicemail settings, where the delay before diverting is set both in the phone software and in my online account details.

Tesco Internet Phone

The Tesco Internet Phone service is based on Firefly from Australian VoIP operator Freshtel (not to be confused with Firefly mobile). Using the system is relatively straightforward and calls can be made using either the soft phone on the PC or the USB handset. Status can be set (online, busy, away or invisible), notifications shown when contacts come online (as for many instant messaging clients) and contacts can be either other Tesco Internet Phone users (with status), or normal phone numbers (invisible status). The phone software itself is actually Virbiage Cubix, skinned to Tesco’s design and I’m sure there are other themes available as Virbiage have published a Cubix Skinning Guide.

From my point of view the jury’s still out on Tesco’s VoIP service. The installation routine could do with some work, the online help is patchy (at the time of writing) and the call quality seems a bit tinny (but that happens with cheap handsets on fixed phone lines too)… we’ll see how I get on over the next few weeks. Right now the first disappointment is that my Vodafone
mobile (cell) phones report connection errors when dialling my VoIP number (it works from a BT fixed line though).

For those who want to know a bit more about VoIP, the BBC has an article on making calls over the ‘net. For the more technically inclined, try the general VoIP information and reference. Finally, here’s the press release from last months launch of the Tesco Internet Phone service.

Vodafone VSPAM

This content is 19 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

VodafoneWhen I got my new company mobile a few weeks back, I turned it on and immediately received a couple of spam SMS messages inviting me to call a premium rate number. Of course, I deleted them, but I might not have if I’d known about Vodafone‘s VSPAM initiative.

“When an unsolicited text message is received a Vodafone customer can forward it, free of charge, directly to 87726 or VSPAM on their mobile keypad. Vodafone will then collate a consolidated report of all the unsolicited text messages reported by its customers, which it plans to send directly to mobile messaging regulators… previously customers were advised to contact the Independent Committee for the Supervision of Standards of Telephone Information Services (ICSTIS) directly… [who] can take regulatory action against parties running such services. ICSTIS has prosecuted several service providers so far and it intends to ‘name and shame’ the operators who currently support the service providers running these premium rate services.”

[Vodafone press release, 21 August 2003]

Even though this initiative is two years old, I’ve not come across it before, so I’m blogging it here for anyone who is interested.

Useful mobile handset commands

This content is 19 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

Have you ever been asked to type out some obscure code on your mobile handset to retrieve some information for a support representative? Here are some of the useful codes I’ve found (tested on Nokia handsets using the two largest UK networks: a Nokia 6021 connected to Vodafone; and a Nokia 6600 connected to Orange):

  • *#06# – display the IMEI of the handset (does not require send to process). IMEI number analysis will show details of the handset manufacturer, type and production date (although strangely, my Nokia 6021 is recorded as having been produced two days after I received it!) as well as handset approval information and IMEI number break down.
  • **21*number# – divert all calls to number (call forwarding).
  • *43# – activate call waiting.
  • #43# – cancel call waiting.
  • 141number – temporarily withhold caller line identification (CLI) information when calling number.

These ones might be useful for Vodafone users (none of them worked for my handset connected to Orange):

  • *#100# – obtain own number (returned in local format, e.g. 07812345678). Number analysis will give a whole host of useful information about a number including the number range, country/operator/network (for mobile numbers – although my personal number which has been transferred between networks still shows the operator as Vodafone Ltd even though it’s been connected to Orange for over a year now), number break-down, network technology type (for mobile numbers), and dialling format information.
  • *#104# – obtain voice mailbox number (a response of 447812345678 VF-GMLRE relates to a voice mailbox number of +44-7812345678).
  • *#147# – display number of last caller, along with time and date (e.g. 01234567890 08:00 30AUG05).
  • *61*mailboxnumber*10*duration# – set the ring duration before diverting to voice mail (where mailboxnumber is in international format, e.g. +447812345678, and duration is between 5 and 30).
  • *#1345# – check pay as you talk balance.
  • ##0021# – cancel call forwarding.
  • 1210 – cancel all voicemail diverts.
  • 1211 – reset all voicemail diverts to the standard setting (divert if switched off, engaged, or out of coverage).
  • 1212 – send all calls to voicemail (e.g. when abroad and receiving calls could cost you money!).
  • 1213 – remove the all calls divert (1212).
  • 1471 – voice equivalent of *#147#, with call return options.
  • 21212 – record a personal greeting.

Another useful Vodafone number to know is for checking call rates when abroad. Text from country (e.g. from France) to 4636 and the reply will detail the cost to make a call from country, the cost to receive a call from country, the cost of sending an SMS message from country to a UK number and the name of the Vodafone preferred rate network for country (e.g. SFR in France).

If anyone has some more useful codes (not numbers for information services), please leave a comment on this post including the handset type and network on which the codes have been tested (no requests for handset unlocking codes please).

Other useful links

Area code information
International dialing instructions