Overview
 

Personal Internet Phone Equipment (PIPE) is a Windows application providing capability of real-time voice communication; i.e. it is a software product that allows you to talk with your friends, colleagues or relatives with the help of a computer and IP network!

PIPE supports voice PC-to-PC calls both over the Internet and local area networks (LAN) based on TCP/IP protocols stack. Basically, the program is intended for the following purposes:

  • Free or low cost long-distance calls between two persons through computers, connected to the Internet.
  • Office telephone, which allows voice information exchange for a company's stuff by means of computers and intranet.

The voice communication through computer networks is a subject of great interest. Nowadays we have more then a dozen well-known software solutions to this problem. However using PIPE is more advantageous in comparison with similar products:

  1. PIPE provides reliable voice transmission of high quality.
  2. PIPE allows establishing connection over Socks Proxies.
  3. PIPE includes a smart and adjustable UDP port scanning mechanism.
  4. Installing PIPE requires little disk space.
  5. The program has a phone-like user interface.

PIPE can operate most of hardware/software configurations based on Win32 platforms with Intel Pentium processors (see the configuration requirements below). I hope you'll enjoy using PIPE for voice talking.

License Agreement
 

PIPE is provided as a shareware program. However it is free for evaluation and doesn't have any restrictions, except you're not able to speak on the unregistered telephone more than 3 minutes. If you intend to use the application permanently, please purchase and register it. Buying the program, you not only get useful software, but you're supporting the development of future PIPE versions. If you decided to make your own contribution, get your registration code. Any suggestions, feedbacks or remarks are also welcome.

No warranties. Headline expressly disclaims any warranty for the software. The product and any related documentation are provided "as is" without any kind of warranty, either expressed or implied, including, without limitation, the implied warranties or merchantability, fitness for a particular purpose. This software is not fault tolerant and should not be used in any environment, which requires this. No liability for occasional damages.

Computer and Network Configuration
 

The product should be installed on a PC with the hardware and software configuration as described below.

Hardware requirements:

  • Pentium CPU, 75 MHz or better with at least 8 Mb RAM.
  • Cable or dial-up IP network connection.
  • Full or half -duplex sound card.
  • Head-phone (or microphone and ear-phones) compatible with sound card.

Software requirements:

  • Windows 98/Me or Windows NT/2K/XP.
  • Valid multimedia driver for sound card.

The PIPE system requirements are obviously extremely modest and prevailing. The most critical resource is the quality of IP network, since low speed connection causes sensible voice data losses. Satisfactory quality of voice stream can be achieved at 19,200 bps link.

Another network limitation is the necessity of having a real IP address for talking over the Internet. Mainly it makes some difficulties for Intranet users - IP address mustn't be local. Otherwise the LAN administrator should be asked to:

  • Assign an arbitrary pair of TCP and UDP ports to user's computer.
  • Set an intranet proxy server (i.e. Internet-to-LAN mediator) to forward all incoming TCP/UDP packets with these ports to the user's computer.
  • Enter assinged ports to the program settings.

If direct connection between computers is blocked by a firewall/proxy server, but a user's IP is real the outgoing call can be performed. The following requirements should be met in this case:

  • The proxy server should support Socks-4 or Socks-5 protocols.
  • The IP address, port and other connection attributes of the proxy should be known.
  • The computer should have a valid Internet IP address (not Intranet IP).
  • You need to know or at least to have an idea of the set of open UDP ports. For example, port 4000 is standard for ICQ and it can be also used by the PIPE application.

These restrictions do not concern computers with direct connection to the Internet. One minor peculiarity of software Internet telephones should also be kept in mind, namely communication lag (up to 5-7 seconds for poor Internet connections) between the request and the reply from the other side of "phone line". This is caused by the necessity of doing the following steps: voice blocks acquisition, compression, and transmission via a number of hosts, voice restoration and reproduction. All the mentioned operations have internal buffering, hence each of them contributes to the integral lag.

Using PIPE application
 

Using PIPE is rather simple and it will be described in the current chapter. The graphics user interface (GUI) consists of the following basic details: the local IP address line, the display and the buttons.

The display is a composite control, which is devoted to show various kinds of information such as: menu choices, context prompt and status messages. It is also used to enter and edit text information of a certain kind, for instance: IP addresses, ports, nicknames and so on.

Button controls can be divided into two types: mode selection and action buttons. The buttons of the first type are used to switch among different PIPE working modes: calling mode, address book editing, system operations and information query. The functionality of each action button strongly depends on the current mode.

Table of Buttons

Face Name Description Shortcut
Call Switch to the call mode "Alt-C"
Edit Edit records in the address book "Alt-E"
System Make system actions "Alt-S"
Info Obtain information about the application "Alt-I"
Arrow Up Scroll / Select menu items. Change sound volume during a conversation. Arrow keys or mouse wheel
Arrow Dn
Confirm Mode dependent approval action "Enter" or menu left double click
Cancel Mode dependent reject action "Esc" or "-"
Auxiliary Mode dependent auxiliary action "Alt-Space" or "+"

Run Application

In order to run the PIPE application you just simply click on "Phone" executable. If you want to run it in silent mode (without GUI showing) point out the letter "m" as a command line parameter. In other words launch PIPE as follows: Phone.exe m. Silent mode is useful for auto start goal, so you can create such a shortcut and place it in Win Startup.

There are four basic PIPE modes among which the user can switch. Let us consider them one after another in details.

Call Menu

Call menu is tailored for making phone calls through the IP network. The system switches to this mode by choosing the Call button. To make an outgoing call:

  1. Select the destination host from the address book using arrows. If the desired host is not present in the book enter the IP address and port directly in the appropriate address line below the list. Use button Auxiliary to switch between direct input of the address and port.
  2. Choose the Confirm button.
  3. Connection process continues and the progress information is displayed.
  4. If connection is successful and the call parameters test has passed OK, the dial sound tone will appear. Wait for the owner of the destination host to accept the call.
  5. Otherwise, if PIPE can't provide a voice link, the phone display will show a notification message, such as "TCP link failed" or "No free UDP port" followed by the status message "Disconnected".
  6. If your call is accepted, the dial tone will be terminated and you can start speaking.
  7. The volume can be adjusted using the arrow buttons.
  8. To finish the conversation, choose the Cancel button.
  9. If you want to call back (for example you forgot to say something) press the Confirm button.

An outgoing call with the destination IP address specified as "127.0.0.1" is of a special kind which allows the user to do a loop-back call, to perform a PIPE self-testing. It is strongly recommended to make such a call at the first start of the application.

The user is notified of an incoming call by ring sound. The following actions are to be performed in this case:

  1. Switch to the call mode by choosing the Call button
  2. The IP address or nickname of the caller is displayed.
  3. Choose the Confirm button to accept the incoming call or the Cancel button to reject it.

When the connection has been established successfully and your sound card is full duplex you can talk. If the sound card is half duplex (you will be notified about it by a warning message box) you cannot listen and speak at the same time and have to switch between the "Listen" and "Speak" modes using the Confirm button.

Edit Address Book Menu

The edit menu allows making changes in phone address book, such as creating a new entry, modifying and deleting existing ones and changing the order of records. To set the desired type of operations:

  1. Choose the Edit button.
  2. Select the appropriate type from the edit menu using the arrow buttons.
  3. Activate the selection by choosing the Confirm button.

To create a new contact person:

  1. Choose the "Create entry" menu item and activate the creation wizard.
  2. Enter the nickname for the new person and choose the Confirm button.
  3. Enter the IP address in the dotted notation or a valid host name recognised by the DNS service and choose the Confirm button again.
  4. Assign to the person a TCP communication port (2075 by default) and press the Confirm button.
  5. Put the new record in appropriate position by means of arrows and Confirm button. Or put it down to the address book's end choosing the Auxiliary button.

To modify properties of a contact person:

  1. Choose the "Modify" menu item.
  2. Select the desired record using the arrow buttons and choose the Confirm button.
  3. Edit the nickname (if needed) and choose the Confirm button.
  4. Change the IP address or the host name (if needed) and press the Confirm button.
  5. Enter new port (if needed) and choose the Confirm button again.

To delete a contact person:

  1. Choose the "Delete" menu item.
  2. Select the record to be deleted and choose the Confirm button.
  3. To confirm the operation choose the Confirm button.
  4. To cancel the operation, choose the Cancel button.

To change the order of contact persons:

  1. Choose the "Relocate" menu item.
  2. Select the record to be moved using the arrow buttons.
  3. Lock the record by choosing the Auxiliary button.
  4. Move the record to desired location using the arrow buttons.
  5. Free the record by choosing the Confirm button.

System Menu

The system menu is intended for performing a set of utility operations such as: hide phone GUI, quit the application, change the PIPE settings and view the history of incoming calls. The first two ones are simple actions, both of them are executed in the following way:

  1. Choose the System button.
  2. Select the required action using the arrow buttons.
  3. To have the selected action performed, choose the Confirm button.

Activation of the third operation brings the user to the Settings submenu, with a number of changeable PIPE options: a preferred language, sound options, etc. Let us consider each option more closely.

Language option allows to make the language selection for the phone user interface and help topic.

The Sound mode determines the Windows sound interface to be used: Direct Sound or Waveform Audio. In general, Direct Sound is preferable but for certain configurations Waveform Audio works better. Which of the two interfaces is more suitable for your configuration can be found out experimentally through a loop-back call.

Voice delay. This option is designed for turning the length of sound buffers and therefore the duration of voice delay. Note, not all of the sound cards work properly with short sound buffers !

Voice detector is a useful feature designed to remove outgoing network traffic when the user keeps silence. But as soon as one begins speaking, the activity detector resumes sending the voice packets. User can enable or disable this option.

Locator helps you to search the other PIPE users within your LAN. Besides it can detect the state of people whose ip/port is in address book. The people are colored in Call menu as follows:

  1. blue color denotes that person is free and online
  2. pink is used for "busy" status
  3. brown - user is not active
  4. gray means the status is not detected.

This option is enabled by default. You can disable it either to save your network traffic or to stay "invisible" for other users.

LINK ports is a list of ports that can be used for incoming calls to establish connection between two hosts. The program works as a TCP/UDP server for all these ports, which waits for incoming call requests. It is optimal to have the list composed of 2-5 values. Note: change in LINK ports list comes into an effect after the PIPE application is restarted.

SCAN ports is a list of UDP ports which may be applied to real-time voice communication. If the program failed to establish UDP connection by LINK ports but TCP handshake is OK, the free UDP port scanning will be performed. It means PIPE will "ping" all ports from the SCAN list. The goal of the procedure is to find an open UDP port which is suitable for direct voice connection. SCAN list can contain up to 50 port values.

You can view the above mentioned list of ports, add a new port or remove existing ones.

Add a new port value.

  1. Select the list of ports and choose the Confirm button.
  2. Choose the Auxiliary button.
  3. Enter a new port.
  4. Choose the Confirm button again.

Remove port

  1. Select the desired list type from the "Settings" menu.
  2. Select the extraneous port from the list.
  3. Choose the Cancel button to delete the selected port.
  4. To confirm the deletion, choose the Confirm button.

Firewall options depend on the type of the proxy server used for IP packets filtering. In a simple case the user doesn't need to care about the proxy server and uses the direct connection for outgoing calls. Otherwise if the direct connections are forbidden by the LAN administrator, the user has to explicitly specify the protocol type used by proxy in the PIPE application. Next the user should choose Arrow Dn and menu options to enter the address of the proxy server and the communication port (usually 1080). In case of Socks-5 protocol the additional information, such as user name and password has to be entered. It is important to emphasize that Socks-4 proxy can help you make connection in outgoing calls only. And to have a successful voice communication firewall should have at least one UDP port opened for in and out.

Information Menu

The information menu gives you access to the help document, to picking up info about the author and sending mail to him, and entering a registration code. To switch to this mode, choose the Info button.

To perform registration:

  1. Switch to the information mode and choose the "Registration" menu item using the arrow buttons and the Confirm button.
  2. Enter the valid registration code.
  3. Confirm it by choosing the Confirm button.
  4. Enter the name you want to be registered.
  5. Use the Confirm button again.

I kindly hope for your generous nature - you have a chance to be registered user.

Tray Interface

PIPE has a simple control interface that can be accessed by means of the phone tray icon. The following actions are available:

  1. Show / hide phone GUI by clicking the left mouse button
  2. Invoke a popup menu by clicking the right mouse button.

Popup menu allows extended PIPE management: exiting the application as well as showing / hiding GUI.

Hotkeys and shortcuts

In order to speed up working with PIPE beside the buttons shortcuts several hotkeys were added:

  • "Alt-Shift-P" show phone GUI (global hotkey)
  • "Alt-H" hide phone GUI
  • "Alt-X" exit PIPE application
Frequently asked questions
 

Question. I use dial-up connection to the Internet. How can I find IP address of my computer ?
Answer. In order to detect your local IP:

  • first connect to the Internet
  • run PIPE application.
Now look at the white digits above the phone display - it is your IP address.

Question. My local IP address changes each time I connect to the Internet. Why and how should I work with it?
Answer. When you connect to the Internet your computer is bounded to IP address by your Internet provider. This IP can be static (fixed) or dynamically assigned. Certainly the dynamic addresses are inconvenient to incoming calls. If you want to make your location constant you should create DNS recognized name for your computer (eg. mycomputer.redirectme.com) and then use it instead of "naked" IP address. It is possible to do it here: http://www.no-ip.com. Also try to install and use this server-side component PIPE Meeting.
The next and simplest way to avoid the problem is:

  • connect to the Internet and get your current IP
  • tell it to your friend in a different way, for example by e-mail, sms, and so on
  • do not disconnect and wait for incoming call
Another solution to this problem is as follows: PIPE can be integrated into the ICQ client (unfortunately it doesn't work with versions 2001 or higher, because ICQ no longer supports external modules). ICQ servers register current IP address for each unique ICQ user. PIPE can obtain user's IP by means of the connected ICQ client. Then this address can be used for a call. In order to bind PIPE with ICQ you should:
  • install ICQ client (download ICQ2000b)
  • next install PIPE.
A request for voice connection from ICQ Advanced mode choosing the popup menu items "Other IP Phones/Voice Chat", "Personal Internet Phone Equipment" and pressing the button "Send".

Question. The sound quality is very bad, how to fix it ?
Answer. Please, change the option Sound mode from Direct Sound to Waveform Audio or vice versa. Also try to increase a value of the Voice delay option in order to fit the configuration of your hardware.

Question. I'm tried to make the loopback call but I don't hear myself. What was wrong ?
Answer. First check the cable connection between a sound card and microphone. Next make sure that the microphone recording is enabled. To allow it:

  • run Windows mixer utility (just double-click the volume icon in right-bottom corner)
  • in the menu "Options" select the item "Properties" to open properties dialog
  • select the "Recording" radio button
  • choose the microphone control in the list below and press OK
  • enable the microphone recording checkbox
  • set the microphone recording volume to maximum value.

Question. I am software developer and I'd like to customize the phone program. Can I do it ?
Answer. Yes. Please use Optional installation type and check the item Copy C++ code examples. You'll have the samples how to use PIPE binary components from a third-party application.

Question. Does PIPE support a multi-point voice conference ?
Answer. Since the version 2.7 this feature was introduced. It is designed not as a part of PIPE-telephone, but as a standalone server side component - NT service. It mixes up incoming voice streams and sends the result back to all conferees. The component will be copied to your computer if you select the Optional installation type and check the point PIPE vox chat service. Then do as follows:

  • execute the batch file start.bat
  • add the service "coordinates" (i.e. host and port) to PIPE address book. Activated service should be highlighted by green color.
  • to start conversation just call the service. Of course your friends should do the same.
It should be emphasized it is enough to have only one voice chat server in your network.

Acknowledgements
 

I would like to express many thanks to my friends and colleagues for valuable words of advice and software testing. Personal gratitude is expressed to:

  • Dmitry Karpov - for useful consultations in Win32 GDI.
  • Ilya Pozdnov - for sensible advice concerning the voice codecs, and wav files with real phone sounds.
  • Alexey Tolmachev and Oleg Sigida - for pre- and alpha testing.
  • Anton Victorov - for some significant remarks about the PIPE user interface.
  • Dmitry Waldman - for recommendations in voice broadcasting over ip networks.
  • Andrei Goumeniouk - for German translation of the manual and beta testing.
  • Andrey Lebedev - for translating this manual into HTML.
  • Alexey Shinkin, Sergei Volvenko, Maxim Falko - for beta testing.
Contact information
 
Please, send your suggestions or remarks here
E-mail telephone@fromru.com
PIPE Meeting meeting.redirectme.net : 6970