The Orchid V4 Dialler
A Manual Programming Guide
by Roger Shilcock
Orchid V4 Dialler Manual Programming Guide - Version 1.216Page 1 of 19
Table of Contents
Introduction...... 3
Ways to program the dialler...... 3
How to use a telephone to program the dialler...... 3
Make changes or start from scratch?...... 4
Command strings explained...... 4
Set Non-Managed Mode...... 4
Set Daytime Time Band...... 4
Set Weekend Time Band...... 5
Set the internal clock...... 5
Set the local STD Code...... 5
Clear the Carrier Code Table...... 5
Clear the Routing Code Table...... 5
Write a new entry to the Carrier Code Table...... 5
Sample Carrier Code Table...... 7
Write an entry into the Routing Code Table...... 8
Sample Routing Code Table...... 12
Routing Code Attributes...... 12
Manual Programming Template...... 14
Reference Carrier Code Table...... 14
Reference Routing Code Table...... 14
Checking the Dialler Output ...... 15
The BT Socket Recording Lead...... 15
Connecting the recording lead to your computer or laptop...... 16
Recording and Analysing the Dialler Output...... 16
Screen Shots from DTMF Decoder and Switch Sound File Converter...... 17
Conclusion and Disclaimer...... 18
Document History...... 18
Orchid V4 Dialler Manual Programming Guide - Version 1.216Page 1 of 19
Introduction
The purpose of the Orchid V4 Dialler is to intercept phone numbers dialled by telephones connected to it and process them before passing them through to the telephone network. Processing is based on a pair of programmable lookup tables held in the dialler, one called the Routing Code Table and the other called the Carrier Code Table. When a number is dialled by a connected telephone, the dialler looks through the Routing Code Table to try and find a best match for some or all of the number dialled. If it manages to find a match, it uses fields from the Routing Code Table entry to decide what to do with the number which is usually to add a carrier code prefix from the Carrier Code Table to the front of it such as 1899, 18185, 1280, etc. before sending the whole number including the added prefix out to the telephone network. It can however convert the dialled number into a different number (this is called “translating”) and it can also block certain numbers completely (this is called “barring”) so that if someone dials one of these restricted or barred numbers, the phone doesn't dial the number at all and just returns a dial tone.
One thing to appreciate first of all is that the dialler is a “write only device” which means that you can send commands to it but you can't read it's configuration from it. You send it commands to do things such as write entries into the Routing Code and Carrier Code tables, set the time/date, configure daytime/evening/weekend time bands, clear the internal tables, and various other configuration things. You cannot view the device's tables or other configuration afterwards so it is essential that you keep an accurate record of what you have programmed, particularly the two tables.
Ways to program the dialler
The manufacturers of the dialler used to provide a PC program called CWClient which allowed you to make changes to your dialler's configuration tables and store them on their server from where they could be downloaded to your dialler over the phone line. Unfortunately, this facility is no longer available and since the only way to program the dialler is via the phone line OR a telephone (or modem) connected to it, another method was needed. A spreadsheet was subsequently written by Kevin Lawry which worked in a similar way to the original CWClient program using tables, macros and a modem connected to the dialler and allowed full programming to be carried out but requires you to have a modem and Microsoft Excel before you can use it. The alternative way of programming the dialler is to do it simply using a telephone handset attached to the dialler and issue “command strings” to it by dialling special numbers rather than simple telephone numbers. This document has been written to describe how to do this and gives worked examples as well as an explanation of the two tables (Routing Code and Carrier Code) describing what the various entries in them actually do.
How to use a telephone to program the dialler
The best type of telephone to use for programming the dialler is one that has some kind of number display so you can see the string of characters and numbers you are dialling, and can enter the whole string before lifting the handset (or if it's a cordless phone, pressing the dial button) to dial it but if you don't have a phone like that, pretty much any phone that supports tone dialling (all modern phones work that way) should do. However, you must remember that for each “command string” dialled, you have to hang up the phone after you have dialled it before entering and dialling the next one. Have your dialler connected to the telephone socket in your house and plug a telephone into the dialler, you are then ready to go. If you use a phone that allows you to pre-enter a number first and then dial it, enter the whole command string, then either press the dial button on your phone or lift the handset to dial the command string. After the string has been dialled, hang up or replace the handset. If you use a more basic phone, lift the handset and when you hear the dial tone, enter the command string then hang up.
Make changes or start from scratch?
If you already have a dialler that is programmed and working, configured as it was supplied by the manufacturer, you don't really want to mess about with it unless you know what you are doing and have an exact record of how it is programmed already. In other words, you need to know the contents of the Routing Code Table and Carrier Code Table so that you don't accidentally mess up entries already programmed. If you are lucky and have a record of your dialler's configuration, either in the form of a printout from the CWClient program or a spreadsheet which the manufacturer sometimes provided after they ceased support of the CWClient program, then you can use that as your reference and just make changes as and when you need to. If however, you don't have this information or your dialler has played up and you want to reset its configuration starting again from scratch, you can do that using the procedures described in this document. To start from scratch, you would need to go through the following steps by sending the dialler command strings to do the following things:-
Set Non-Managed mode
Set Daytime time band
Set Weekend time band
Set the internal clock
Set you local STD code
Clear the Carrier Code Table
Clear the Routing Code Table
Program entries into the Carrier Code Table
Program entries into the Routing Code Table
Command strings explained
The command strings that you send to your dialler using the attached telephone are made up of ordinary numbers and the “special characters” star (*) and hash (#) because when the dialler receives a string that starts with and contains these “special characters” it understands that it is being told to do something to it's internal programmed configuration rather than just dial a number. All the command strings start with a star (*) and then contain further numbers, stars or hashes depending on what type of command string it is. Below is a description of the command strings that were mentioned above in the order that you would use them to help understand how they are made up.
Set Non-Managed Mode
This command tells the dialler that it is NOT to be programmed via the telephone line from the manufacturer's server as this facility no longer exists.
**#0000*0*8
Set Daytime Time Band
This command starts with three stars (***) followed by the start and end times of the daytime time band in 24 hour format and ends with a star followed by a 5. BT is currently using 7am as the start and 7pm as the end of their Daytime call charging band so that is what the example below is setting.
***07001900*5
Set Weekend Time Band
This command starts with three stars and a 6 (***6) followed by the day of the week and time (24 hour format) for the start and end of the weekend charge period where Monday is day 1 and Sunday is day 7. It ends with a star followed by a 6. In the example the weekend starts at one minute into Saturday and ends at one minute before midnight on Sunday.
***6000172359*6
Set the internal clock
This command starts with **#0000* followed by the time, day of week, date in ddmmyy format and ends with a star followed by a 2. In the example I'm setting the clock at 9:30am on Tuesday the 28th of February 2012.
**#0000*09302280212*2
Note: It is worth running this command every so often to ensure that the internal clock is still correct.
Set the local STD Code
This command starts with three stars (***) followed by an STD code and ends with a star followed by a 4. It sets your local STD code so that if you dial a local number without using the STD code, the dialler will add the stored STD code to the front of the number dialled before sending it out to the telephone network. In the example below it is setting as code of 01329.
***01329*4
Note: Remember that your STD code may be 3 digits (e.g. London 020, Cardiff 029), 4 digits (e.g. Manchester 0161) or 5 digits (e.g. Fareham 01329).
Clear the Carrier Code Table
This command is used to completely empty the Carrier Code Table before you start programming it with your own entries.
**#0000*2222*6
Clear the Routing Code Table
This command is used to completely empty the Carrier Code Table before you start programming it with your own entries.
**#0000*1111*6
Write a new entry to the Carrier Code Table
This command starts with *#** followed by a sequence of numbers, usually the prefix you want to add to the dialled number before sending it out (1899, 18185, 1280, etc.) and ends with a star (*) followed by the location in the Carrier Code Table that you want to write the carrier code into (1 to 8). It is important to note that you cannot erase an individual Carrier Code Table entry, only overwrite it with new data.
There are exceptions to this format, one being the Translate function where the sequence of numbers after the *#** is a number that you want to substitute in place of a number that was dialled. The use of Translate will be described in a bit more detail later.
Note: According to the official Orchid manual, location 9 is reserved and must NOT be used.
Example 1.
This carrier code adds 18185 to the dialled number before being sent out. This is written to location 1 of the Carrier Code Table.
*#**18185*1
*#**The command identifiers
18185The prefix to be added to the original dialled number
*Field separator
1The Carrier Code Table Location
Example 2.
This carrier code adds 1899 to the dialled number before being sent out. This is written to location 2 of the Carrier Code Table.
*#**1899*2
*#**The command identifiers
1899The prefix to be added to the original dialled number
*Field separator
2The Carrier Code Table Location
Example 3.
This carrier code adds 1280 to the dialled number before being sent out which in this case will override any carrier pre-select feature on your phone line and drop the call through to your telephone line provider. This is written to location 3 of the Carrier Code Table.
*#**1280*3
*#**The command identifiers
1280The prefix to be added to the original dialled number
*Field separator
3The Carrier Code Table Location
Example 4.
This carrier code is used for the Translate feature and will replace the original number dialled with 1280 followed by a pause and then 08001183733. This is written to location 4 of the Carrier Code Table.
*#**1280#08001183733*4
*#**The command identifiers
1280The first part of the number to be sent out
#A one second pause
08001183733The rest of the number to be sent out
*Field separator
4The Carrier Code Table Location
Example 5.
This carrier code adds the 0808 access number for using the Call18185 Carrier Preselect Service. It is a way to get round restrictions imposed by some phone service providers. The five hashes provide a 5 second delay (the maximum allowed) in order to allow time for the voice prompt before dialling the actual number you want to call.
This is written to location 5 of the Carrier Code Table.
*#**08081703703#####*5
*#**The command identifiers
08081703703 The access number for call18185
#####5 Second delay for Voice Prompt
*Field separator
5The Carrier Code Table Location
Example 6.
This carrier code adds the 0808 access number for using the Call1899 Carrier Preselect Service. It is a way to get round restrictions imposed by some phone service providers. The five hashes provide a 5 second delay (the maximum allowed) in order to allow time for the voice prompt before dialling the actual number you want to call.
This is written to location 6 of the Carrier Code Table.
*#**08081708708#####*6
*#**The command identifiers
08081703703 The access number for call18185
#####5 Second delay for Voice Prompt
*Field separator
6The Carrier Code Table Location
Sample Carrier Code Table
Below is a sample Carrier Code Table to give you an idea of the type of entries to be found. You should note that the columns headed “Carrier Code” and “Description” are for information only and are not actually programmed into the dialler.
Location / Carrier Code / Description / Programming Code1 / 18185 / Call 18185 / *#**18185*1
2 / 1899 / Call 1899 / *#**1899*2
3 / 1280 / CPS Override / *#**1280*3
4 / 1280#08001183733 / Call 08001183733 via your line provider / *#**1280#08001183733*4
5 / 08081703703##### / Access the Call18185 Service / *#**08081703703#####*5
6 / 08081708708##### / Access the Call1899 Service / *#**08081708708#####*6
7 / empty
8 / empty
9 / **** RESERVED ****
If you look at location 4 in the above table you can see that it has been used along with the Translate feature to call a Freephone number 08001183733 when you actually dialled a different number. There is a free Director Enquiries service on that number so you can put an entry in your Routing Code Table so that when you dial 192 on your phone, your dialler will actually dial 1280 followed by a one second pause, followed by 08001183733 for you. The Routing Code Table entry will look like the one below and is in location 11 of the sample table shown later in this document.
*###192#5444#11#
*###The command identifiers
192The part of the dialled number to be matched
#Field separator
5Routing Code Attribute (Translate)
4The carrier code location to be used for Daytime
4The carrier code location to be used for Evening
4The carrier code location to be used for Weekend
#Field Separator
11The Routing Table Location
#Terminating character
Write an entry into the Routing Code Table
This command is the most complicated to understand and starts with *### followed by all or part of a dialled number that you want the dialler to detect and process. It then has a hash (#) followed by a Routing Code Attribute(this can be 1 = Barred, 2 = Exclude, 3 = Allowed, 4 = Local, 5 = Translate or 6 = Special). Routing Code Attributes will be explained in more detail later in this document. The next part of the command string is a set of three numbers which are the carrier code locations to be used for Daytime, Evening and Weekend calls. ( It should be noted that if you put a zero (0) in any of these three fields, that means that for that time band you don't use any entry from the Carrier Code Table at all and just send out the number as it is). The command string then has another hash (#) followed by the two digit location you want to write into the Routing Code Table and finally a terminating hash character (#). It is important to note that you cannot erase an individual Routing Code Table entry, only overwrite it with new data.
Note: The official Orchid manual says that you can use locations from 0 to 99 but the Kevin spreadsheet and the sample spreadsheets that Orchid used to provide seem to ignore location 00 for some reason.
Because this command is a bit tricky to get your head round, there are some examples below to give you a better idea how it works. They are broken down into their separate parts to make them easier to understand.
Example 1.
All dialled numbers starting with 01 are “Allowed” and are prefixed with the carrier code held in location 2 of the Carrier Code Table before being sent out but only for daytime and evening calls as the third carrier code entry is a zero meaning no routing of the call is done. This is written to location 02 of the Routing Code Table.
*###01#3220#02#
*###The command identifiers
01The part of the dialled number to be matched
#Field separator
3Routing Code Attribute (Allowed)
2The carrier code location to be used for Daytime
2The carrier code location to be used for Evening
0The carrier code location to be used for Weekend (zero means no routing)
#Field Separator
02The Routing Table Location
#Terminating character
Example 2.
Numbers starting with 0845 are Allowed and are ALWAYS prefixed with the carrier code held in location 2 of the Carrier Code Table before being sent out. This is written to location 07 of the Routing Code Table.
*###0845#3222#07#
*###The command identifiers
0845The part of the dialled number to be matched
#Field separator
3Routing Code Attribute (Allowed)
2The carrier code location to be used for Daytime
2The carrier code location to be used for Evening
2The carrier code location to be used for Weekend