!iyoPhone

!iyoPhone is a SIP VoIP (Voice over Internet Protocol) User Agent application. In other words, it turns your Iyonix into a VoIP telephone. This will ONLY run on an Iyonix.

Copyright

!iyoPhone is copyright (C) 2010 Dave Higton, except for the implementation of the "RSA Data Security, Inc. MD5 Message-Digest Algorithm" which is copyright (C) 1990, RSA Data Security, Inc.

What you will need

• An Iyonix.

• An analogue headset, i.e. headphones plus microphone, that plugs into the Iyonix's sound card. Note that a USB headset will NOT work.

• A broadband Internet connection, i.e. either ADSL or cable. Dial-up will NOT work because it won't provide a high enough bandwidth.

• You will need to forward two ports from the outside world to your Iyonix.

• Unless you only want to talk to other VoIP clients on your own LAN, it will be far easier if you register with a SIP provider. There is a good choice of free ones; I use Sipgate: http://www.sipgate.co.uk and Voiptalk: http://www.voiptalk.org. You can probably get a UK geographic number and/or a 056 number for VoIP assigned free; I did.

• Digital Renderer, which is supplied along with UnixLib. If you already use the RISC OS version of NetSurf, you already have Digital Renderer. If you don't use NetSurf: why on earth not? You can get it at http://www.netsurf-browser.org/downloads/ Despite the forbidding-sounding wording, use the latest Test Build, and keep updating it. If you're a NetSurf refusenik, you can currently find the Shared Unix Library at http://www.riscos.info/downloads/gccsdk/sharedunixlib/system.zip

• Christian Ludlum's AudioIn module, version 1.01. See "Installing the AudioIn module" below.

Limitations

This is only alpha software; it has only just enough features to work in an optimal situation. However, most users should be able to create that optimal situation, so it should be useful. Here are some key limitations:

• !iyoPhone's sound will stutter and break if any other application uses significant chunks of CPU time;

• !iyoPhone only implements the G.711 μ-law codec;

• !iyoPhone does not do STUN, so you have to set up static port forwarding and you have to tell it your external IP address;

• !iyoPhone has hardly any error checking, so it doesn't cope with much going wrong;

• !iyoPhone doesn't have an address book;

• You may find that !iyoPhone messes with your sound settings (sample rate, etc.);

• When something goes wrong in the SIP negotiation, you may find that you get a flurry of error boxes;

• !iyoPhone doesn't implement RTCP;

• !iyoPhone doesn't give an audible alert when a call comes in;

• !iyoPhone doesn't dial DTMF.

Downloading !iyoPhone

You can download !iyoPhone for the Iyonix here.

Installing !iyoPhone

Double-click the iyophone archive. Drag the !iyoPhone application to a suitable directory. If you can't think of anywhere better, Apps should do.

Installing the AudioIn module

!iyoPhone uses the AudioIn module to get audio from your microphone. It must be version 1.01 of AudioIn; version 1.00 was fine for its intended application (recording audio), but has too much latency for use in VoIP, which you would notice as long lag or delay in the conversation (worse than satellite delay).

Step 1 is to download and open Christian Ludlum's AudioIn module. Christian seems to have left the RISC OS world, but he published AudioIn under the GPL, so I have made it available from here. Double-click the archive and you will see !System inside.

Step 2 is to do a System Merge of the !System directory you just found. Click Menu on the Iyonix Task Manager icon at the right hand end of the icon bar, and select Configure. The Configuration window should open. Click the System icon and the System Merge window should open. Drag the !System directory from the AudioIn archive into the System Merge window and click Accept. You can now close the Configuration window and the AudioIn archive.

Installing Digital Renderer

If you are using a version of NetSurf built in the last couple of months, this step isn't necessary. Otherwise, menu on the Iyonix Task Manager icon at the right hand end of the icon bar, select Configure, then click the System icon, which will open the System Merge window. Download http://www.riscos.info/downloads/gccsdk/sharedunixlib/system.zip, double-click it, drag the !System directory into the System Merge window, and click Merge.

Setting up port forwarding

We're not talking about physical ports here (RJ-45 connectors and all that); you don't need to alter your LAN's cabling! First, some explanation if you're new to VoIP. !iyoPhone uses two protocols: SIP (Session Initiation Protocol) to control calls (set them up and end them), and RTP (Real Time Protocol) to transport the audio to and from the far party. Each protocol requires a UDP port, which must be forwarded from the outside world to your Iyonix. SIP normally uses port 5060 and I would strongly recommend that you use this unless you have a very good reason not to. RTP can use any even numbered port that's not in use by some other application or other VoIP device. My arbitrary choice is 5678, but you can use whatever even number you want above about 5000 - and it MUST NOT be the same as you use for SIP. It's normal for UDP ports to be used in consecutive pairs, so the even numbered one is used for RTP and the odd numbered one (one higher than RTP) to be used for RTCP; they are companion protocols. Other SIP applications or devices will expect your RTP on even numbered ports for this reason.

Step 1 is to decide what port numbers you are going to use. Leave them at 5060 and 5678 unless you know one or both is/are going to conflict with something else - and if port 5060 conflicts, I would strongly recommend that you move the other application to another port.

Step 2 is to check what port numbers are in !iyoPhone's !Run file, and edit them if necessary. Open the !iyoPhone application by shift-double-clicking it, then opening the !Run file in an editor by shift-double-clicking !Run. The comments in the !Run file should guide you.

Step 3 is to configure your router to forward those same ports - UDP only - to the IP address of your Iyonix. Instructions on how to do this will of course depend on your router, so it's impossible to detail the procedure here.

Plugging in the headset

The headset should have two 3.5 mm plugs, of which one will be red and/or will have red bands between the metal sections and/or will have a picture of a microphone moulded into it; this is the microphone plug, which must go into the "Mic" socket of the Iyonix's sound card. The other plug is for the headphones and must go into the "Audio Out" socket of the Iyonix's sound card.

Configuring the Iyonix's sound system

Click the Sound icon in the Configure window (to reach it, click Menu over the Iyonix logo at the right hand end of the menu bar and select Configuration). Make sure the Headphones and Microphone are not muted. You will probably need to drag the Microphone slider up to full - this affects the volume at which the far end can hear you. The Headphones slider affects the volume at which you can hear the far end. If you use headphones already and have found a suitable volume setting, leave it and it will probably be OK. If you haven't, start with the slider about 70% over to the right. You can set both volumes properly during a phone call.

Configuring !iyoPhone

Any SIP client application requires you to give it information about your SIP account so that it can log in to that account, so that you can make and receive VoIP calls. Although !iyoPhone lets you enter these details into its main window, you'll find it a nuisance to have to do so every time you start it up. It will save you some time if you configure it so it remembers your details. You need to tell it:

• Username. This is something that your SIP provider will give you.

• Password. This is something that your SIP provider will give you.

• Realm. This relates to your SIP provider. For example, Sipgate's realm is sipgate.co.uk

• Informal name. This is optional and is entirely your choice. The best explanation is probably by an e-mail address example: in Fred Bloggs <fb1983@email.com> "Fred Bloggs" is the Informal name.

• External IP address. !iyoPhone can't work out what your external IP address is (it doesn't do STUN); you have to tell it. If you don't know it already, one way to find out is to visit http://www.whatismyip.com

To preset the above details so that they're there every time you start !iyoPhone, you will need to edit the !Run file. The comments and examples in there should make it very clear what you have to do. Sorry, I haven't made a press-button way.

Running !iyoPhone

Double-click the !iyoPhone application. It will install its icon on the icon bar and open its main window. Assuming you have registered with a SIP provider (e.g. Sipgate), check your Username, Password, Realm, Informal Name and External IP Address in the boxes - they should have picked up the values you put into the !Run file when you configured !iyoPhone. If you didn't bother to edit the !Run file, just type your details into the boxes. When you've done that, click Register. The content of the Registration box should change from "Not registered" to "Registered", and the Username, Password and Realm boxes will be greyed out. Note that you need to click Register if you want to use the SIP provider's service; you may be able to make or receive calls to/from explicit IP addresses if !iyoPhone is not registered.

Calling by phone number or URL

To connect to another SIP user, enter a SIP URL into the Destination box. This will be something like "sip:123456@sip-provider.co.uk" The "sip:" part is an instruction to use SIP to set up the call. The person you're calling must tell you their SIP URL, just like you have to tell someone your phone number if you wish them to be able to ring you on a traditional telephone. If you are on the same SIP provider as the other party, or if you are on partner networks, the call should be free. Otherwise you can prepay to permit calling traditional telephones from your VoIP service provider; if you use Sipgate, the number will be something like "sip:01234567890@sipgate.co.uk" where the number part is exactly their traditional telephone number. If you're calling by phone number, the sip-provider part is your SIP provider - not theirs.

Having entered a SIP URL, don your headset and click "Connect". The result should be pretty much like a traditional telephone call, except that you have both hands free :-) Click Disconnect to end the call.

Accepting incoming calls

If someone else calls you on !iyoPhone, another window will pop up allowing you to accept or reject the call. Again, you can end it with the Disconnect button.

Calling by IP address

The above shows how to make and receive VoIP calls via a SIP provider. It is also possible to make calls to a specified (non-SIP) URL, which will be resolved to an IP address. Put "sip:" and the URL in the "Destination" box if the other party is using port 5060 for SIP; if they aren't, add a colon and their SIP port number. Examples:

sip:fictitious.co.uk

sip:strange.com:6060

It is also possible to make calls to a specified IP address. This is, of course, only useful if you know the far end's IP address. One common reason to do it is if you're calling someone else on your LAN. Put the IP address in the "Destination" box if the other party is using port 5060 for SIP; if they aren't, add a colon and their SIP port number. Examples:

192.168.16.47

61.177.24.93:8022

This doesn't always work quite like that; it depends on the application you're calling. There are two things you may need to do:

• Some applications or devices require you to call them with a user name. Sometimes this is equivalent to an extension number. For example, I have a mobile phone with Wi-Fi and VoIP capability. When I call it, I need to put its username (this is the username with which it registers to its provider with) in front of the IP address, like so:

sip:112233445@9.8.7.6

•Some applications and devices need to be configured to accept anonymous incoming calls. When iyoPhone is not registered and calls out, it does so with username "anonymous" and a blank (null) password.

Correspondingly, someone can call you by IP address. You will need to tell them your IP address (your external IP address if they are not on your LAN) and the SIP port number you're using.

If you were in any doubt before, you can probably see now how much easier it is to call people via a SIP provider. Anyone can register with their SIP account, wherever they are in the world, and be reached.

Revision history

0.01a 2010 September 3 First issue

0.01b 2012 September 2 Contact details updated

0.01c 2016 August 19 Some download links corrected

Page last updated 2016 August 19