Friday, November 13, 2009

T.38 Fax Relay MGCP VG224 2851 and CUCM7.1.3

Working samples below. Location had issues with incoming while utilizing Fax Pass-through. Converted to T.38 Fax Relay and customer could then make neither in nor outbound faxes. After converting to T.38 Fax Relay had to remove mgcp modem passthrough voip redundancy.

Works great now.

2851 MGCP with PRI to PSTN snippet:

voice service voip
fax protocol t38 ls-redundancy 0 hs-redundancy 0 fallback cisco

!
ccm-manager fallback-mgcp
ccm-manager redundant-host 10.10.10.5
ccm-manager mgcp
ccm-manager fax protocol cisco
ccm-manager music-on-hold
ccm-manager config server 10.10.10.5
ccm-manager config
!
mgcp
mgcp call-agent 10.10.10.6 2427 service-type mgcp version 0.1
mgcp dtmf-relay voip codec all mode out-of-band
mgcp rtp unreachable timeout 1000 action notify
mgcp modem passthrough voip mode nse
mgcp package-capability rtp-package
mgcp package-capability sst-package
mgcp package-capability pre-package
mgcp default-package fxr-package
no mgcp package-capability res-package
no mgcp timer receive-rtcp
mgcp timer net-cont-test 3000
mgcp sdp simple
mgcp fax t38 ecm
no mgcp explicit hookstate
mgcp fax t38 gateway force
mgcp rtp payload-type g726r16 static
mgcp bind control source-interface GigabitEthernet0/0.10
mgcp bind media source-interface GigabitEthernet0/0.10
mgcp behavior g729-variants static-pt
!
mgcp profile default

VG224 MGCP snippet:

voice service voip
fax protocol t38 ls-redundancy 0 hs-redundancy 0 fallback cisco
!
ccm-manager redundant-host 10.10.10.5
ccm-manager mgcp
no ccm-manager fax protocol cisco
ccm-manager music-on-hold
ccm-manager config server 10.10.10.5
ccm-manager config
!
mgcp
mgcp call-agent 10.10.10.6 2427 service-type mgcp version 0.1
mgcp dtmf-relay voip codec all mode out-of-band
mgcp rtp unreachable timeout 1000 action notify
mgcp modem passthrough voip mode nse
mgcp package-capability rtp-package
mgcp package-capability sst-package
mgcp default-package fxr-package
no mgcp package-capability res-package
no mgcp timer receive-rtcp
mgcp timer net-cont-test 3000
mgcp sdp simple
mgcp fax t38 ecm
no mgcp explicit hookstate
mgcp fax t38 gateway force
mgcp rtp payload-type g726r16 static
!
mgcp profile default
!

Tuesday, September 22, 2009

Verify what MS-SQL version is running

Ultimately found at http://support.microsoft.com/default.aspx?scid=kb;en-us;q321185, here's how to identify what MS-SQL server version and service pack are running.

For example, executing the following in Query Analyzer:
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')

returns
| 8.00.2282 | SP4 | Standard Edition |

This reflects SQL 2000 SP4.

Monday, August 17, 2009

Excel VBA convert character in string to position in alpahabet

If for some reason you need to convert a string of characters to their corresponding position in the alphabet, here's a dirty little sample of how to do it. The sub below takes the text in B6 and converts each character to a corresponding alphabetic position (i.e. A = 1, B = 2, etc.). It then goes so far as to add the associated integers and plops the sum in B7.

This was motivated by "attitude" equalling 100, while "hard work" only equals 98.

Have fun.

Sub mySub()

myString = UCase(Range("B6").Text)
myAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
myValue = 0

For i = 0 To Len(myString) - 1

myStringChar = Mid(myString, i + 1, 1)

For j = 1 To 26
myChar = Mid(myAlphabet, j, 1)
myVal = Replace(myStringChar, myChar, j)
If IsNumeric(myVal) Then
myValue = myValue + CInt(myVal)
Exit For
End If
Next j
Next i

Range("B7").Value = myValue

End Sub

Tuesday, August 11, 2009

NETSH, DHCP and reservation options

Creating reservations in a Windows DHCP server is not difficult and each reservation can provide unique options to the associated host. Unfortunately, creating each reservation and then modifying the options from default can be time consuming and error prone.

You can use NETSH to display, add, modify and delete DHCP scopes, options, reservations and options unique to the reservations without a GUI.

The reservedoptionvalue is poorly documented but is your key. I would suggest creating a single accurate reservation via the GUI and then using NETSH dump dhcp > filename.txt to verify the command format on your server version.

For reference, or for those that don't have a server to validate against, here are some NETSH commands and associated notes:


# Add Scope 10.1.0.0 on server at 10.1.1.1

Dhcp Server 10.1.1.1 add scope 10.1.0.0 255.255.0.0 "Voice" "Voice DHCP"
Dhcp Server 10.1.1.1 Scope 10.1.0.0 set state 1

# Add IP range to the Scope 10.1.0.0 on Server 10.1.1.1

Dhcp Server 10.1.1.1 Scope 10.1.0.0 Add iprange 10.1.1.100 10.1.10.254

# Add router at 10.1.254.254 and TFTP Servers at 10.1.1.2 and 10.1.1.1 to the 10.1.0.0 scope on server 10.1.1.1

Dhcp Server 10.1.1.1 Scope 10.1.0.0 set optionvalue 3 IPADDRESS "10.1.254.254"
Dhcp Server 10.1.1.1 Scope 10.1.0.0 set optionvalue 150 IPADDRESS "10.1.1.2" "10.1.1.1"

# Add a reservation to the scope with IP 10.1.9.1 and MAC 001122334455
# Add a TFTP Servers at 10.1.1.12 and 10.1.1.11 to the 10.1.9.1 reservation
# Add a Router at 10.1.254.254 to the 10.1.9.1 reservation

Dhcp Server 10.1.1.1 Scope 10.1.0.0 Add reservedip 10.1.9.1 001122334455 "SEP001122334455" "Test" "DHCP"
Dhcp Server 10.1.1.1 Scope 10.1.0.0 set reservedoptionvalue 10.1.9.1 150 IPADDRESS "10.1.1.12" "10.180.1.11"
Dhcp Server 10.1.1.1 Scope 10.1.0.0 set reservedoptionvalue 10.1.9.1 3 IPADDRESS "10.1.254.254"

Thursday, July 23, 2009

Cisco ATA186 codecs

The Cisco ATA186 supports G.729, G.729A, G.729AB2, G.723.1, G.711a-law and G.711ยต-law codecs.

The problem is if you are using both analog ports and G.729, the second port is limited to using G.711.

Although this is documented in the datasheet(s), sometimes you need to learn from experience. This is an import consideration if deploying analog devices at sites served by limited bandwidth WAN links. You CAN associate new regions and device pools with only the second port to set G.711 as the codec between regions, but you need to be bandwidth cognizant.

Monday, July 20, 2009

Dialer.exe missing in Windows XP

My office's Windows XP image does not include the phone dialer application by default.

To find it from a command line, run the following, where is the location of the i386 folder:

expand \i386\dialer.ex_ "C:\Program Files\Windows NT\Dialer.exe"
expand \i386\AVTAPI.DL_ "C:\Program Files\Windows NT\avtapi.dll"
regsvr32.exe "C:\Program Files\Windows NT\avtapi.dll"

To run the application, from the command line you can run "C:\Program Files\Windows NT\Dialer.exe"

Sunday, June 07, 2009

Visio and Fractions in Text boxes

I only use one Dynamips / Dynagen lab configuration for all my testing. It's extensive enough to allow me to add features or techniques in isolated network areas without reinventing the whole network. After doing so, I also have the ability to see how the changes may affect the overall design very easily.

Unfortunately, if I don't maintain some documentation on the network, it becomes counter productive to depend on it to test specific features and conditions.

So Visio is an obvious solution, but one thing bugged me. When I dropped a text field on the diagram to hold some basic interface info, like:

R1
F0/0 = 10.101.10.51 / 24
S1/0 = 192.168.1.1 / 30
S½ = 192.168.1.13/30

the IP interfaces with port numbers that can be considered a common fraction (i.e. 1/2 above) get converted to tiny little depictions of fractions. This isn't the worst thing in the world, but does get distracting on a large scale.



Visio does this by default (at least my Visio 2003 version). If you navigate to Tools | AutoCorrect Options and then to the AutoFormat As You Type tab, you'll find a check mark to convert fractions to fraction characters.

Uncheck and you're done.

Thursday, June 04, 2009

Volume Control in Windows XP

After plugging headphones into my T61 for the first time and wishing I had more control over the sound than via the proprietary keyboard buttons, I found Windows' volume control missing.

1. You can try to display it in the SysTray via the Control Panel.

You can try Control Panel | Sound and Audio Devices and click Place Volume Icon in the Task Bar. You should have the tiny speaker icon down in the bottom right corner of your screen.

2. If you find "the Volume Control program has not been installed", you can restore it from your XP installation media (or possibly from the i386 folder on your hard drive). Find the i386 folder, navigate to it via command line and type:

expand -r sndvol32.ex_ %systemroot%\system32

You can then use the Control Panel method to restore it to the SysTray.

Wednesday, May 06, 2009

VMWare DHCP on bridged networks

After starting up an Ubuntu image in VMWare server 2.0.1 on my XP based laptop, I found the it could not retrieve a DHCP address.

Per KevinG at http://communities.vmware.com/message/101202

Select "Start"->"All Programs"->"VMware"->"Manage Virtual Networks"
Click on the "Automatic Bridging" tab and uncheck "Automatically choose an available physical network adapter to bridge to VMnet0"

Click on the "Host Virtual Network Mapping" and use the dropdown menu for VMnet0 to select the physical network on the host that you want to bridge to.


I found my VMnet0 adapter bridged to a TAP-Win32 adapter, likely done so during some utility install.

Tuesday, April 21, 2009

Cisco IPPhoneDirectory Exit softkey functionality

See http://webmaxtor.blogspot.com/2009/04/cisco-ciscoipphonedirectory-with-next.html regarding basic XML formatting and Next / URL softkey implementation.

The problem you will find is once you start paging through multiple directories, the Exit softkey will return you to the previous directory page, rather than the phone's Services menu. To make the Exit key actually exit the service you need to use a response.expires header. Below is an example of an ASP page implementing the header and presenting the XML appropriately.

### sample starts here ###

<% Response.Expires = -1 %>

<%

response.ContentType="text/xml"
response.Write("<?xml version='1.0' encoding='ISO-8859-1'?>")

response.Write("<CiscoIPPhoneDirectory>")
response.Write("<Title>Super Directory</Title>")
response.Write("<Prompt>Super Directory</Prompt>")

response.Write("<DirectoryEntry>")
response.Write("<Name>Test Local Number</Name>")
response.Write("<Telephone>95551212</Telephone>")
response.Write("</DirectoryEntry>")

response.Write("<DirectoryEntry>")
response.Write("<Name>Other Test Number</Name>")
response.Write("<Telephone>95551000</Telephone>")
response.Write("</DirectoryEntry>")

response.Write("<SoftKeyItem>")
response.Write("<Name>Dial</Name>")
response.Write("<URL>SoftKey:Dial</URL>")
response.Write("<Position>1</Position>")
response.Write("</SoftKeyItem>")

response.Write("<SoftKeyItem>")
response.Write("<Name>EditDial</Name>")
response.Write("<URL>SoftKey:EditDial</URL>")
response.Write("<Position>2</Position>")
response.Write("</SoftKeyItem>")

response.Write("<SoftKeyItem>")
response.Write("<Name>Next Page</Name>")
response.Write("<URL>http://mywebserver/CiscoIPPhoneDirectory.asp</URL>")
response.Write("<Position>3</Position>")
response.Write("</SoftKeyItem>")

response.Write("<SoftKeyItem>")
response.Write("<Name>Exit</Name>")
response.Write("<URL>SoftKey:Exit</URL>")
response.Write("<Position>4</Position>")
response.Write("</SoftKeyItem>")

response.Write("</CiscoIPPhoneDirectory>")

%>

### sample ends here ###

Monday, April 20, 2009

Cisco CiscoIPPhoneDirectory with Next key

The Cisco CiscoIPPhoneDirectory service only supports 32 entries. Below is a simple example of implementing a "Next" softkey to access a second list without requiring a "Refresh" header. The second list of numbers would be served by http://yourwebserver/SecondCiscoIPPhoneDirectoryPage.xml in this example.

*** XML sample starts here ***

<CiscoIPPhoneDirectory>
<Title>Special Directory</Title>
<Prompt>Special Directory</Prompt>

<DirectoryEntry>
<Name>A Sample Phone Number</Name>
<Telephone>918005551212</Telephone>
</DirectoryEntry>

<DirectoryEntry>
<Name>Another Sample Phone Number</Name>
<Telephone>918885551212</Telephone>
</DirectoryEntry>

<SoftKeyItem>
<Name>Dial</Name>
<URL>SoftKey:Dial</URL>
<Position>1</Position>
</SoftKeyItem>

<SoftKeyItem>
<Name>EditDial</Name>
<URL>SoftKey:EditDial</URL>
<Position>2</Position>
</SoftKeyItem>

<SoftKeyItem>
<Name>Next Page</Name>
<URL>http://yourwebserver/SecondCiscoIPPhoneDirectoryPage.xml</URL>
<Position>3</Position>
</SoftKeyItem>

<SoftKeyItem>
<Name>Exit</Name>
<URL>SoftKey:Exit</URL>
<Position>4</Position>
</SoftKeyItem>

</CiscoIPPhoneDirectory>

*** XML sample ends here ***

Monday, April 06, 2009

Cisco Unity message to Verizon text tip

Recently I gave up my insanely priced Windows smartphone contract with Sprint and went to a straight voice and text package with Verizon. Now that I am lacking the ability to view my Microsoft Outlook Web Access the question is how do I know when I receive a Unity voicemail message?

I want to avoid voice message delivery since I find it both annoying and a drain on my cell minutes, but without a wireless data package I have no corporate email access. Unity now supports SMS delivery natively but is not implemented at our office. My work around is using Outlook rules.

A user can typically create rules in Outlook that allows identifying incoming messages by sender, subject line, etc. and then performing a function. I have simply created a rule to identify Unity messages by “Voice Message” in subject line, and then forwarding it via email to my cell phone number at vtext.com. Since the vtext service does not accept attachments, I do not receive the voicemail itself and am not billed for the data transfer to my cell, but do receive a text indicating I have a voicemail, including the caller id and name.

Not a bad solution and inexpensive too.

Saturday, February 28, 2009

PHP IIS and Windows XP

After installing php-5.2.9-win32-installer.msi on Windows XP Pro version 2002 Service Pack 3, I found a basic PHP script could not be interpreted via IIS.

To fix, you need to add a file extension mapping:

Right click on your Default Web Site,
Choose the Home Directory tab,
Choose the Configuration button under Application Settings,
Choose the Mappings tab, and
add an extension mapping where the executable is "C:\PHP\php5isapi.dll" (or your installation directory) and the extension is ".php"



Another issue you will have is debugging information will not be presented users by default. This is generally a good thing, but for development purposes you may want some feedback behind your failed scripts.

Find your php.ini file, normally in your installation folder.
Search for display_errors = off and change to display_errors = on.
Restart IIS via Start | Run | CMD | iisreset and you should be returned debug info in your browser.

Sunday, February 08, 2009

Fedora 10 static IP and DNS issues

You can modify IP addressing on Fedora 10 either through the GUI by System | Administration | Network or through a terminal by system-config-network . Unfortunately, my experience is something is broken when not using DHCP.

I found the subnet mask being set the same as the IP address, found the subnet mask being set to 32 bits, and found DNS servers not being retained after network, NetworkManager or server restarts.

Ultimately I edited /etc/sysconfig/networking/devices/ifcfg-eth0 by hand and all seems to be well. Mine ultimately looks like so:

# Intel Corporation 82801BA/BAM/CA/CAM Ethernet Controller
DEVICE=eth0
HWADDR=00:00:00:00:00:00
BOOTPROTO=none
ONBOOT=yes
USERCTL=yes
PEERDNS=yes
IPV6INIT=no
NM_CONTROLLED=yes
TYPE=Ethernet
NETMASK=255.255.255.0
IPADDR=10.101.10.4
GATEWAY=10.101.10.1
DNS1=10.101.10.1
DNS2=4.2.2.2

This survives service network restart, service NetworkManager restart, and server reboots, but I imagine it is the only trustworthy method of modifying the IP adressing.

Sunday, January 25, 2009

Dynamips idlepc value and real network interface

If you are working with Dynamips in Windows, ultimately you will need to address the high processor load it creates. The commands in the server interface are:

idlepc get router name in dynamips config

This will return a list of values between 1 and 10, with one or more flagged with an asterisk. Pick one and save it to the Dynamips config:

idlepc save router name in dynamips config db

Once you do this for each running router, you will see an imediate drop in processor load via Task Manager.

If you need to create or modify the interface between a Dynamips switch and your host, the way to identify the host interface is via C:\Program Files\Dynamips\Network device list.cmd. You will need the line beginning with NIO.

For example, this line output by the cmd, NIO_gen_eth:\Device\NPF_{953F2C44-6A41-4C47-9C34-ADAA33FB8517} would be used in the Dynamips lab .net file you are running.

For example, this snippet in your lab config:

[[ETHSW S1]]
1 = access 1
2 = access 2
3 = access 3
# 3 = dot1q 1
#4 = dot1q 1 NIO_gen_eth:eth0
4 = dot1q 1 NIO_gen_eth:\Device\NPF_{F92B0F04-5464-4EED-92FD-F8890A8091A2}

indicates NIO_gen_eth:\Device\NPF_{F92B0F04-5464-4EED-92FD-F8890A8091A2} will be used as a 802.1Q trunk interface on switchport 4.

Monday, January 05, 2009

Hiding AD users from CallManager directory lookups

See official Cisco recommendations and text file editing techniques here: CallManager DC Directory and Active Directory - Hide Users

Basically you need to change the AD user descriptions to CiscoPrivateUser