Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

BCM50 CP Tone Modification

Status
Not open for further replies.

2600hz

IS-IT--Management
Feb 12, 2009
31
US
Hi guys,

This is a really advanced technical question about the BCM50 back-end so maybe an ex-Nortel engineer or someone at UCx might know.

I'm trying to locate the source of the CP (call progress) tones that are played to the extensions in the system. For various reasons I need to make certain adjustments to some tones due to having two VoIP trunks from different countries at my house. Annoyingly, as you know, the tones are not customisable from BEM or any other UI and are hard-coded to market profiles.

On the bright side of staying-in-shelter at the moment, I've spent a few weeks now looking through files that I believe are relevant and have concluded that the CoreTel executable must be it. I have gone through that file extensively, let's just say, and have been able to customise a few things like date formats and the like but these tones remain elusive.

There is a table in the file called ToneToTn where I believe Tn may refer to Tone Number. I played around with this table but all it does is dictate which tone is played for whatever call state or reason - ie, overflow/reorder tone for overflow, ringback tone during call origination, and the various DTMF outputs (0-9*#ABCD).

From what I've gathered during my testing, I believe when CoreTel is run, it loads into memory the samples of the various tones for the selected market and in the "slots" with the tone ID ranging from 40h to 5Ch.

It's these samples that I'm trying to locate. If that's how it really works...

For example, the following is a typical audio sample of the North American/UK dial tone in U-law 8kHz format (350+440Hz):

Code:
BB BD C1 CD E3 5E 4C 42 3E 3D 3D 3F 45 4E 61 E5 D0 C9 C4 C1 C3 C6 CB D3 E5 6D 5B 52 4E 4D 4E 52 58 60 6F F8 EC E8 E8 EB F2 FD 76 73 74 FF EF E4 DC D7 D3 D1 D3 D9 E2 FD 60 53 4B 47 45 45 48 4C 57 75 DB CC C5 BF BE BE C0 C6 D0 EC 5A 4A 40 3D 3B 3B 3D 44 4D 65 DB CA C0 BC BB

I know that these are obsolete, EOL and all that... but this is just a personal project of mine and although I have an Asterisk system at home which does an ok job, for personal reasons I like the BCM50.

Anyway, it's a long shot but if anyone has any info please get in touch either through here or externally.

Cheers.


Armen K - IT Consultant/Programmer/Switch Tech (ret), Sydney NSW Australia

Always take a backup! Always use a UPS! Never give up!
 
I do not know but I am curious which country is giving you a hard time?


________________________________________
small-logo-sig.png


=----(((((((((()----=
Toronto, Canada

Add me to LinkedIN
 
In my case, the Australia profile.

I have US, Canadian and Australian VoIP trunks (I have family all over). Whilst the US/Canada tones are fine, the Australian ones are not (and never have been) correct. Aussie dial tone is 400+425 (not 400) and overflow/reorder is 425 at -19db & -29db alternating at .375ms on/off (not 800 .100ms on/off). [thumbsup]



Armen K - IT Consultant/Programmer/Switch Tech (ret), Sydney NSW Australia

Always take a backup! Always use a UPS! Never give up!
 
It's these samples that I'm trying to locate. If that's how it really works..."
You won't find any such samples. Tones are generated by tone generators based on tone parameters from the selected market profile. TN is the terminal number to which a tone generator task sends its output.
 
Just taking a wild guess here but would the tone parameters (frequency, level, duration, cadence etc.) for each market still be in a table that would tell the DSP to produce the desired tones?
 
ucxguy said:
"It's these samples that I'm trying to locate. If that's how it really works..."
You won't find any such samples. Tones are generated by tone generators based on tone parameters from the selected market profile. TN is the terminal number to which a tone generator task sends its output.

Ok that makes things a little bit easier to track down I suppose and thanks for clarifying the “TN” abbreviation... "terminal" would have been my second guess. If you think of anything else that might help, I’d appreciate it.

rrmass said:
Just taking a wild guess here but would the tone parameters (frequency, level, duration, cadence etc.) for each market still be in a table that would tell the DSP to produce the desired tones?

You make a good point and the parameters are exactly what I'd like to determine. However, at this point there are two possibilities as to what’s happening: (1) The parameters are in CoreTel (and I still need to keep looking for them) or (2) the parameters are in the DSP firmware files located in /nn/bin/dsp.

This then results in two further possibilities: (1) CoreTel is providing specific tone info to the DSP (frequency, cadence, amplitude, etc) or (2) CoreTel just sends the 1 byte market number to DSP and the DSP does the rest because all of the tone parameters/generators are in its firmware.

I have, so far, found tone parameter tables in each market profile which list the frequencies for CP tones. Each market profile has two sets of them. For dial tone, one is called AdsDvcDial and the other AdsDs30DvcDial. However, the parameters in these tables aren’t it, unfortunately. I think they are used for the GATM or other external module(s) because I have tried changing the bytes in these tables and that had no effect.

For example, the dial tone table for US and Canada has the following bytes:

Code:
01 5e 00 14 00 00 01 b8 00 14 00 00 00 64 00 64 00 64 00 64 00 0a 00 00 00 00

015Eh is 350d and 01B8h is 440d so I changed these as a test but nothing changed. [sad]

In fact, I had originally thought I would just use the South Africa profile and modify its dial tone frequencies which are 367+400Hz. It would have been easy for me just to change the 367Hz (016F) to 425Hz (01A9) and I would have been happy with that. However, the tone tables for South Africa don’t even have 367Hz (01 6F) listed in them anywhere.

If the parameters are indeed in CoreTel somewhere then I'll need to keep looking. It’s been exhausting but hopefully, I’ll find them.

Armen K - IT Consultant/Programmer/Switch Tech (ret), Sydney NSW Australia

Always take a backup! Always use a UPS! Never give up!
 

Can you reinitialize the system for one market copy coretel to another location, reinitialize for another market and then compare coretel and see if there are differences. Can't think of anything else to locate what you're looking for. And do the same for /nn/bin/dsp. But I highly doubt that there will be any diff between those files for either market.
I'd bet there's a template that's loaded with parameters for which ever market is required. Would that be specified in a config file?
Once again just totally an uneducated guess.
 
CoreTel is an executable so its contents does not change. When it is run, it goes through a number of function blocks. One of them looks at the MP number in NVRAM (I think) and based on that, starts the various threads with the relevant parameters. It is a fairly large file with hundreds of functions, tables and pointers to those tables.

I have been thinking about the Tone Generator tasks though. I noticed that when I log into BCM Monitor, on the tab which lists the resources in use, the Tone Generator resource usually has 28 tasks under it.

This makes sense because for any given profile there are 28 tones that are required:

DTMF tones: 0,1,2,3,4,5,6,7,8,9,*,#,A,B,C,D (16)
Private/Internal tones: dial, busy, ringback, overflow (4)
Public/External tones: dial, busy, ringback, overflow (4)
Other tones: call waiting, asynchronous ring, intrusion and 1000kHz test (4)

So, I think I need to focus on the init functions that are called at run time and all the tables/pointers in each market profile.


Armen K - IT Consultant/Programmer/Switch Tech (ret), Sydney NSW Australia

Always take a backup! Always use a UPS! Never give up!
 
However, at this point there are two possibilities as to what’s happening: (1) The parameters are in CoreTel (and I still need to keep looking for them) or (2) the parameters are in the DSP firmware files located in /nn/bin/dsp."
Tone definitions for each market profile are in the DSP firmware. And yes, the 28 tone generator tasks that you see in BCM Monitor are the DSP tasks that generate all the required tones.
 
ucxguy said:
Tone definitions for each market profile are in the DSP firmware. And yes, the 28 tone generator tasks that you see in BCM Monitor are the DSP tasks that generate all the required tones.

Thank you for clarifying that, I really do appreciate it, ucxguy. I can at least focus on the correct file now. [thumbsup2]

There are 2 files which are used to configure the DSP and they are loaded when the Media Services Manager is run. One is a small 12 kilobyte configuration file and the other is, what I believe, the actual firmware file which is about 19 megabytes in size.

mainDSPconfig32_600C6.s
mainDSP32_600C6.s


They are both S-Record files so it'll be a bit tricky. Unfortunately, the tool I use to analyse binaries does not support the TMS32064x architecture. It does support the TMS32062x architecture but it may not help, which means I will be working "in the dark" so to speak.

Depending on how the .c source files were compiled, the actual frequency parameters may be in the file, hopefully. All I would have to do is locate the dialtone frequency bytes for South Africa (016F and 0190) and change the 016F to 01A9 to achieve my objective.

There are a lot of entries containing 016F so I have to somehow locate the correct address.



Armen K - IT Consultant/Programmer/Switch Tech (ret), Sydney NSW Australia

Always take a backup! Always use a UPS! Never give up!
 
Hi guys,

I thought I would provide an update on how things are going on my end.

After a preliminary check through the firmware file, I realised it won't be as simple as changing any 'frequency' setting bytes as I had previously thought, silly me. This is because the firmware file in essence is just that, firmware, or to put it another way, a low-level program. This means that the mechanisms for generating tones will most likely be in the form of mathematical formulas which then produce sinusoidal waves or tones. From my experience, these formulas make use of sine and cosine functions, in addition to sampling rates (which in this case would be 8000) and PI.

I will need to look at the TMS320C family documentation during the next week or so to find out more about the instruction set.





Armen K - IT Consultant/Programmer/Switch Tech (ret), Sydney NSW Australia

Always take a backup! Always use a UPS! Never give up!
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top