Directory Integration Options

  • Stand-alone (no integration)
  • Communications Manager's directory (uses AXL)
  • MS Active Directory
  • Unofficially... looks like it could be connected to other LDAP directories
  • LDAP can be used for authentication
Monitoring:  SNMP; nothing new there really.

Backup/Restore:  no more awful Exchange backups, of course.  Selective restore available if we wanted to restore individual users.

COBRAS migrates from Unity to Unity Connection:  users, settings, mailbox contents, handlers.  Cisco is continually improving this migration tool.  Export from Unity is simple; importing that data to Connection may involve a lot of resolution conflict.  Start with a clean Unity system for less importing pain.  

End-user Web Features

  • Unity assistant - per-user settings manager, like Communications Manager User Options site
  • Unity inbox - view, listen to, forward, reply, etc. to voice messages.  Play messages through the web browser or download to PC.  
  • Call transfer rules - set up your own auto-attendant.  Looks like a support nightmare.
For the ITS VoIP and voicemail offering, we could potentially proxy these web features like we currently do Communications Manager User Options.  The first two features in the list above could be really useful.  

Day 1 of 4. What's Cisco Unity Connection all about?

  • Unity for those who don't want MS Exchange integration
  • Cisco's current (Linux-based) platform.  No Windows components for Connection 7.x
  • Hot redundancy/load balancing rather than failover
  • Modern features:  e-mail delivery of VM, visual voicemail, more
  • Calling search space/partitioning allows functional segmenting of the voice mail system
Licensing
  • Workspace licensing.  Per-phone cost is "slightly more" (instructor's words) than just phone licensing (a la carte) for use on Comms. Manager.  Avoiding WSL will probably cost more in the long run.
PBX Integration

  • CUCM (Skinny), SIP trunk to any SIP system, PIMG for Avaya/Nortel systems
  • Multiple integrations to same Unity system.  Several phone systems could participate in same Unity--CUCM, OpenSER, Avaya, CUCM over SIP trunk...
Installation

  • Identical to current Communications Manager installation
  • Connection is pre-configured to start most services by default, unlike CUCM which has most turned off by default
  • Use Realtime Monitoring Tool for server/cluster analysis, diagnostics, troubleshooting, stats
Administration looks like a familiar mix of Communications Manager 6.x screens and Unity 4.x screens.  Finishing off the day by setting up the lab.

7906, meet Asterisk: the config

| No Comments | No TrackBacks

I have gotten numerous requests for actual configuration details from people who have come to this blog by way of the search engines, looking to set up their Cisco IP Phone 7906 on Asterisk or another non-Cisco PBX.

The 7906 has Cisco's SCCP firmware by default; Asterisk will support this, but there are plenty of reasons to choose SIP over SCCP in a non-Cisco environment.

For me this was an academic exercise. We are running CallManager for our enterprise PBX and whether SCCP or SIP firmware, CUCM will automatically provision the phone. Use the SCCP firmware with CUCM.

The config

What you'll need:

  • PBX that uses the SIP protocol
  • 7906 or 7911 IP phone. General idea can be applied to any of this generation of Cisco IP phone (41, 61, 42, 62, 45, 65, 71) because they use the same provisioning method and files.
  • TFTP server
  • SmartNet contract on your IP phone hardware so you can get firmware from Cisco
  • DHCP server where you can set client options (the DHCP built into the Linksys router won't cut it, but most any other DHCP will)

Steps:

  • Go get the SIP load from Cisco. You need a SmartNet contract on your IP phone in order to get the firmware. They change their site around from time to time but I just navigated the menus in this way: Downloads - Voice and Unified Communications - IP telephony - IP Phones - 7900 series - 7906G - SIP Software. Pick the latest or a former release (at this time the latest is 8.5(2) SR1). Download the ZIP file; the .cop.sgn file is the CUCM installation package.

  • Unzip this file to the TFTP root location on your TFTP server, and verify that you can successfully get a file by using a TFTP client in Windows, Mac or Linux to fetch one of the files. (This is especially important if you don't already have an established TFTP service and you are setting it up just for this.)

  • Create a file named SEPmacaddress.cnf.xml in the TFTP root location. If your phone's MAC address is 001122334455, the file will be named SEP001122334455.cnf.xml. Use my config as an example, filling in your own variables:

    <device>
      <deviceProtocol>SIP</deviceProtocol>
      <sshUserId></sshUserId>     <!-- log in then use log/log or debug/debug -->
      <sshPassword></sshPassword> <!-- debug commands similar to IOS commands -->
      <devicePool>
         <dateTimeSetting>
            <dateTemplate>M-D-Ya</dateTemplate>   <!-- a=12hr, not case-sensitive -->
            <timeZone>Eastern Standard/Daylight Time</timeZone>
            <ntps>
                 <ntp>
                     <name>IP.ADDRESS.OF.NTP.SERVER</name>
                     <ntpMode>Unicast</ntpMode>
                 </ntp>
            </ntps>
         </dateTimeSetting>
         <callManagerGroup>
            <members>
               <member priority="0">
                  <callManager>
                     <ports>
                        <ethernetPhonePort>2000</ethernetPhonePort>
                        <sipPort>5060</sipPort>
                        <securedSipPort>5061</securedSipPort>
                     </ports>
                     <processNodeName>YOUR.SIP.REGISTRAR/PROXY</processNodeName>
                  </callManager>               <!-- addr may work on some -->
               </member>
            </members>
         </callManagerGroup>
      </devicePool>
      <sipProfile>
         <sipProxies>
            <backupProxy></backupProxy>             <!-- most wont need this -->
            <backupProxyPort></backupProxyPort>
            <emergencyProxy></emergencyProxy>
            <emergencyProxyPort></emergencyProxyPort>
            <outboundProxy></outboundProxy>
            <outboundProxyPort></outboundProxyPort>
            <registerWithProxy>true</registerWithProxy>
         </sipProxies>
         <sipCallFeatures>
            <cnfJoinEnabled>true</cnfJoinEnabled>
            <callForwardURI>x--serviceuri-cfwdall</callForwardURI>
            <callPickupURI>x-cisco-serviceuri-pickup</callPickupURI>
           <callPickupListURI>x-cisco-serviceuri-opickup</callPickupListURI>
           <callPickupGroupURI>x-cisco-serviceuri-gpickup</callPickupGroupURI>
           <meetMeServiceURI>x-cisco-serviceuri-meetme</meetMeServiceURI>
           <abbreviatedDialURI>x-cisco-serviceuri-abbrdial</abbreviatedDialURI>
            <rfc2543Hold>false</rfc2543Hold>
            <callHoldRingback>2</callHoldRingback>
            <localCfwdEnable>true</localCfwdEnable>
            <semiAttendedTransfer>true</semiAttendedTransfer>
            <anonymousCallBlock>2</anonymousCallBlock>
            <callerIdBlocking>2</callerIdBlocking>
            <dndControl>0</dndControl>
            <remoteCcEnable>true</remoteCcEnable>
         </sipCallFeatures>
         <sipStack>
            <sipInviteRetx>6</sipInviteRetx>
            <sipRetx>10</sipRetx>
            <timerInviteExpires>180</timerInviteExpires>
            <timerRegisterExpires>3600</timerRegisterExpires>
            <timerRegisterDelta>5</timerRegisterDelta>
            <timerKeepAliveExpires>120</timerKeepAliveExpires>
            <timerSubscribeExpires>120</timerSubscribeExpires>
            <timerSubscribeDelta>5</timerSubscribeDelta>
            <timerT1>500</timerT1>
            <timerT2>4000</timerT2>
            <maxRedirects>70</maxRedirects>
            <remotePartyID>false</remotePartyID>
            <userInfo>None</userInfo>
         </sipStack>
         <autoAnswerTimer>1</autoAnswerTimer>
         <autoAnswerAltBehavior>false</autoAnswerAltBehavior>
         <autoAnswerOverride>true</autoAnswerOverride>
         <transferOnhookEnabled>false</transferOnhookEnabled>
         <enableVad>false</enableVad>
         <preferredCodec>none</preferredCodec>
         <dtmfAvtPayload>101</dtmfAvtPayload>
         <dtmfDbLevel>3</dtmfDbLevel>
         <dtmfOutofBand>avt</dtmfOutofBand>
         <alwaysUsePrimeLine>false</alwaysUsePrimeLine>
          <alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail>
         <kpml>3</kpml>
    <!-- WARNING: if PhoneLabel is longer than 10 characters a 7941 will be "unprovisioned" and a 7961 will refuse to accept any settings!!!!! -->
         <phoneLabel>LABEL</phoneLabel>
         <stutterMsgWaiting>2</stutterMsgWaiting>
         <callStats>false</callStats>
         <silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>
         <disableLocalSpeedDialConfig>false</disableLocalSpeedDialConfig>
         <startMediaPort>16384</startMediaPort>
         <stopMediaPort>32766</stopMediaPort>
         <sipLines>
            <line button="1">
               <featureID>9</featureID>
               <featureLabel>LABEL</featureLabel>  <!-- label next to button -->
               <proxy>PROXY.ADDR.ESS</proxy>       <!-- proxy ADDRESS -->
               <port>5060</port>
               <name>USERNAME</name>  <!-- this is the registrar auth name -->
               <displayName>NAME</displayName>  <!-- outgoing name -->
               <autoAnswer>
                  <autoAnswerEnabled>2</autoAnswerEnabled>
               </autoAnswer>
               <callWaiting>3</callWaiting>
               <authName>USERNAME</authName>    <!-- Auth Username -->
               <authPassword>REG PASSWORD</authPassword>  <!-- registration passwd -->
               <sharedLine>false</sharedLine>
               <messageWaitingLampPolicy>3</messageWaitingLampPolicy>
               <messagesNumber>*97</messagesNumber>  <!-- VM Pilot, *97 for FreePBX -->
               <ringSettingIdle>4</ringSettingIdle>
               <ringSettingActive>5</ringSettingActive>
               <contact>NAME</contact><!-- reg contact field, usually your number -->
               <forwardCallInfoDisplay>
                  <callerName>true</callerName>
                  <callerNumber>false</callerNumber>
                  <redirectedNumber>false</redirectedNumber>
                  <dialedNumber>true</dialedNumber>
               </forwardCallInfoDisplay>
            </line>
         </sipLines>
         <voipControlPort>5060</voipControlPort>
         <dscpForAudio>184</dscpForAudio>
         <ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy>
         <dialTemplate>dialplan.xml</dialTemplate>      <!-- dialplan to load -->
      </sipProfile>
      <commonProfile>
         <phonePassword></phonePassword>
         <backgroundImageAccess>true</backgroundImageAccess>
         <callLogBlfEnabled>2</callLogBlfEnabled>
      </commonProfile>
      <loadInformation>SIP11.8-5-2SR1S</loadInformation> <!-- .loads filename minus the .loads to upgrade to -->
      <vendorConfig>
         <disableSpeaker>false</disableSpeaker>
         <disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>
         <pcPort>0</pcPort>
         <settingsAccess>1</settingsAccess>
         <garp>0</garp>
         <voiceVlanAccess>0</voiceVlanAccess>
         <videoCapability>0</videoCapability>
         <autoSelectLineEnable>0</autoSelectLineEnable>
         <webAccess>0</webAccess>             <!-- 0 = enabled? -->
         <spanToPCPort>1</spanToPCPort>
         <loggingDisplay>1</loggingDisplay>
         <loadServer></loadServer>
      </vendorConfig>
     <versionStamp>1143565489-a3cbf294-7526-4c29-8791-c4fce4ce4c37</versionStamp>
      <networkLocale></networkLocale>         <!-- defines tones, default is US -->
      <networkLocaleInfo>
         <name></name>
         <version></version>
      </networkLocaleInfo>
      <deviceSecurityMode>1</deviceSecurityMode>
    <!-- Contents of authenticate.php can be: <?php echo "AUTHORIZED"; ?> -->
      <authenticationURL></authenticationURL>
      <directoryURL>XML DIRECTORY OR EMPTY</directoryURL>
      <idleURL>IDLE SCREEN XML OR EMPTY</idleURL>
      <informationURL></informationURL>
      <messagesURL></messagesURL>
      <proxyServerURL></proxyServerURL>
      <servicesURL></servicesURL>
      <dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
      <dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
      <dscpForCm2Dvce>96</dscpForCm2Dvce>
      <transportLayerProtocol>4</transportLayerProtocol>
      <capfAuthMode>0</capfAuthMode>
      <capfList>
         <capf>
            <phonePort>3804</phonePort>
         </capf>
      </capfList>
      <certHash></certHash>
      <encrConfig>false</encrConfig>
    </device>


    I emphasized the variables that you need to set by putting in dummy values in UPPERCASE. This config was gleaned from postings on voip-info.org and includes some comments that one of the original posters made. Experiment with it. There are many settings available here; I left much of it "default" (that is, how I got it from voip-info.org). If you are familiar with the device setup screen on CallManager, you'll recognize these settings from that screen.

  • Create a dialplan.xml in your TFTP root directory.  See the DialPlan Notes section on this voip-info.org page.  Sample:

    <DIALTEMPLATE>
     <TEMPLATE MATCH="10.." Timeout="0"/> <!-- internal extensions are 10xx -->
     <TEMPLATE MATCH="1.........." Timeout="0"/> <!-- 11 digit dialing -->
     <TEMPLATE MATCH="011*" Timeout="5"/> <!-- international -->
     <TEMPLATE MATCH="......." Timeout="3"/> <!-- 7 digit dialing -->
     <TEMPLATE MATCH="*" Timeout="15"/> <!-- Anything else -->
    </DIALTEMPLATE>

  • Review the TFTP root directory.  It should have the contents of the firmware ZIP file, the SEPmacaddress.cnf.xml file, and dialplan.xml.

  • Set up DHCP on your network.  If you want to use static IP addressing, I recommend setting up static clients in DHCP.  Here's why DHCP is required:  you won't be able to program the IP address and TFTP information into the phone directly when you do a factory reset to change out the firmware.  If you know of a way to do that, let me know!  Your DHCP configuration for this phone or this phone's network (depending on whether you use dynamic or static DHCP) must include the following two options:

    option-66 = TFTP server hostname
    option-150 = TFTP server IP address

    Option-66 is also known as "tftp-server-name" on our DHCP server.  Option-150 has no name.  For redundancy or load balancing, you can specify a list of IP addresses in option 150 if you have multiple TFTP servers.

  • Configure the endpoint on your PBX.  In my Asterisk config, the endpoints all register, so I specified the auth username and secret in the appropriate places in the SEPxxx.cnf.xml config above.  If you're not registering, you'll want to remove the registrar components from the above config.  Experimentation will likely be required unless your PBX is set up exactly like my test system.

  • The moment of truth arrives:  power up the phone.  Whether your phone is fresh out of the box or coming from another installation, boot up using the factory reset sequence.  Hold down # while plugging in the phone and keep holding it until the message waiting indicator (red light) starts blinking.  Then release # and type 123456789*0# in sequence.  The light will stop blinking and the firmware loading screen will appear.  The phone will get its information from DHCP, contact the TFTP server and download the config and the load files.  Finally, it should register with the PBX (if that's how you've configured it) and be ready to make and receive calls.

  • Test.  Does the Msgs softkey speed dial your voicemail pilot number?  Does your dial plan work (e.g. you can dial your internal extensions without pressing the Dial softkey at the end, and you can dial 11 digits without pressing Dial at the end or waiting for the digit timeout)?  Do you have functional two-way audio?  Browse to the IP address of the phone and check out the information.  (This is read-only; no settings can be changed here.)
See also:

Upgraded

| No Comments | No TrackBacks

Unified Communications Manager 6.1.3, with an "engineering special" patch to quiet some database issues.

Contact Center Premium 5.0.2, now with servers spanning two locations for high availability.

Same old Unity. :-)

What are the first things that University staff will notice on Monday morning?

  • Bugs - let's hope not
  • Wideband audio - the new Communications Manager allows third-generation (7941/61/06 and newer) to auto-negotiate the G.722 codec between themselves, providing higher-quality audio when using the speakerphone or the handset. The standard-issue Plantronics headsets won't do it, though.
  • User Options web site - Now it's the User Options straight out of Call Manager, with the new Cisco interface. In the background, proxying this web site is a lot cleaner than it used to be.
  • Slight changes for ACD agents - Call center agents will see some slight changes on the phone interface including a button to log in to the "backup" ACD, to be used when the primary is not available.
  • ? - We tried to make the transition as unnoticeable as possible. There are lots of great features in the new systems that will be gradually rolled out.

On the tech side of things, we are now at a much better place in terms of supportability and upgradeability of the phone system. It provides new options for interconnection with other systems (much better SIP protocol support for example). I joked with coworkers last night that we have successfully moved from an obsolete system to an outdated system--hooray! (Currently Cisco is selling the 7.x versions of their voice products.) In reality this upgrade has brought us a long way.

At a flea market earlier in the year, my mother picked up a Northern Electric (Western Electric's Canadian counterpart) 302 telephone, manufactured in August 1948, for $20. She gave it to me during a recent visit and I set out to make it work on my home Asterisk setup.

The short of it is, it's functional. I needed to replace the line and handset cords and give the thing a thorough cleaning, but it works. That is to say, it gets a dial tone from my analog telephone adapter and I can answer calls on it. The ringer is extremely weak as I think my ATA only supports about 2, maybe 2.5 REN and the 302 probably needs about that much current to ring the bells. I had thought that a 302 would be 1 REN but maybe this wasn't standardized until the 500 set.

What to do about the rotary dial? I'll buy a pulse-to-tone converter or wire up an inline keypad if I want to get creative--or find a Digium IAXy ATA, now discontinued--but until then, I have a workaround. Some time ago, a friend gave me an old Sharp organizer, the kind that stores a couple hundred names and phone numbers and plays touch tones into your handset for "speed dialing." He found it in a drawer and gave it to me as a joke. Switch it to manual mode and I now have a dialer for my antique phone.

There are lots of resources on the web for people who want to fix up antique phones. I'm not an antiques person but I'm having fun with this little project and will keep my eyes open for more analog goodness in the future. Oldphoneguy is a great resource for restoring and wiring up old phones to work on modern lines. And Bell System Memorial, which I mentioned in an earlier blog post, has some great historical information.

The XMeeting project has been slow-going but fortunately release 0.3.4 from July 2007 has been very stable. Over the past year and a half, Apple released some Quicktime updates that caused a funny distortion of the local camera view. Otherwise, it's been solid.

Near the beginning of the year, I found release 0.4 preview 1 posted on Sourceforge and tried it. Couldn't keep it running. Preview 2 was released at the end of January and seems to be much more stable. It fixes the local camera view bug, has a cleaner Preferences panel and seems to have some updates for H.264. I'm still not connecting to the Polycom MGC-100 at any higher protocol and resolution than H.261 CIF, so that incompatibility has not been fixed. Still, I am pleased to see progress in the XMeeting program and a fix for the video bug.

XMeeting 0.4 preview 2

Unity Connection 7.x

| No Comments | No TrackBacks

Connection has entered the enterprise messaging arena, oddly enough, competing with its sister product, Cisco Unity.

Like Penn State, a number of other large Cisco VoIP installations have deployed Unity to meet the enterprise needs but don't use or want the Exchange-based unified messaging.

Some notes I got from commentary at CIPTUG today...

  • 10,000 users per server (7,500 if IMAP enabled)
  • Linux platform - same OS and voice layer as appliance-model Communications Manager
  • Active/active failover instead of active/passive
  • IMAP integration puts a mail folder appearance on your IMAP e-mail linked directly to Unity Connection. Same effect as Unity unified messaging. Hey, ASET offers IMAP now, free. Hmm.

Until now, Connection was not a contender for enterprise-level voicemail because it didn't scale to our size. Now I think it's worth a fresh look.

Data sheet

Long time, no blog. We're steadily making progress toward upgrading CallManager 4.1.3 to Unified Communications Manager 6.1.2. Date is set for December 20, and many efforts within the VoIP team right now are focused on getting the cluster ready for that date.

One outstanding issue has been how to offer CCMUser, the Communications Manager user settings page, to the Penn State VoIP community. We want to use PSU Access Accounts--ideally, WebAccess--to login. CUCM offers LDAP and Active Directory user integration, but neither option will work correctly in the PSU environment. We don't have access to the code of the CCMUser web site to hack at that, either.

Using Apache, WebAccess, and PHP with the libcurl module, I wrote an authentication, authorization and filtering reverse-proxy wrapper. It's not elegant, but it sure works! I can't post the code, for obvious security considerations, but here are the basic steps the script follows when a user comes along to access CCMUser:

  • Hello, you must be new here. Go authenticate with WebAccess and come back with a valid user ID.
  • Set up a PHP session to store information that needs to be maintained for the CCMUser site.
  • Check the session for stored cookies from CCMUser. If there are no cookies stored, the user hasn't been authorized there yet. Using the WebAccess user ID, in the background, take the necessary steps to authorize with CCMUser and store the resulting session cookies in the PHP session.
  • If authorization is successful, start reverse-proxying the CCMUser site via the PHP script and libcurl to the user, beginning with the CCMUser home page.
  • Filter URLs and other information as it passes through the proxy so that the user continues to interact with the site only through the confines of the proxy script.
  • A custom Logout button replaces the CCMUser logout that destroys both the backend session with CCMUser and the PHP session with the user, then redirects to the WebAccess logout.

With this fairly simple script, the user gets the experience of single-sign-on and full functionality of the CCMUser site; we get the security of hiding CCMUser behind a firewall so that only the proxy server interacts with it; and it appears to the user as if he is directly using CCMUser.

Interop 2008 wrap-up

| No Comments | No TrackBacks

Aside from touring the expo floor, I attended a few more sessions Thursday and then again this morning, gravitating toward the virtualization sessions. As we're now implementing virtual servers in our machine rooms, a lot of the material was review, but not all. I learned that Microsoft has a free hypervisor offering called Hyper-V. It doesn't have feature parity yet with VMware but since they're offering it for free, I would expect VMware to respond by lowering their prices on their infrastructure components. This would be very helpful for us. Having been psyched up by these virtualization sessions, I'm really looking forward to our group getting the first few servers moved to VM and machines turned off.

On the show floor I spent a little extra time talking to network monitoring/management companies and a DNS/DHCP/IP address management company. The latter gave me a blue hat with a cat logo. Guess who? We have honed our DNS and DHCP processes over the years with scripts and mastery of vi but there are better approaches.

I appreciated the breadth of the conference and being able to sample training in various areas. It was an exercise for my brain to be continually switching gears (going from session to session or booth to booth).

Future of the Voice Endpoint

Panel: Representatives from Avaya, Microsoft, and Siemens

There was some discussion on extensions made to SIP by vendors in order to fill in some gaps in the protocol. All acknowledge that SIP lacks what is expected by the customer. To Office Communicator/Server, Microsoft adds strong authentication (Kerberos and TLS) and implements SRTP by default. Avaya (like Cisco) extends SIP to match features that its native protocol has. Sending individual digits immediately to the PBX as they are dialed is another example. (KPML is an extension that allows this.)

Will soft phones replace desk phones? These guys in the industry say "no;" Avaya says fewer than 10% will ever abandon the desk phone for a soft phone; it's most useful in conjunction with a primary desk phone. People just want to pick up the always-on device and dial the digits. This matches with my own personal experience using soft phones (home & trial at work). Again, no one says that soft phones aren't useful (especially me--I love the idea) but they don't, and may never, stand on their own.

Enterprise 2.0: Evaluating the current "2.0" technologies

Blogs, wikis, social networks, tagging, mashups, modern portals. A good review of what's out there and some commentary on the usefulness of each in the enterprise. Implement them with a purpose, not just because they're the current thing. Confluence was highlighted as a good business-oriented wiki for its overall usability, file sharing and access controls. (Kudos to those who selected it for use at Penn State!)

November 2009

Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

Recent Comments

  • Mark McKillen: Hi Bill, I love your 7906 with SIP working... I read more
  • Bill: I have also experienced the same with only getting low read more
  • NATHAN CORAOR: Hi Bill, I see there's no new XMeeting, but I'm read more
  • Richard Rauscher: My wife purchased a candlestick telephone for me a few read more
  • Bill: Are you using the 8.4.x firmware on your 7961? The read more
  • Peter: Do you know how to get the line text to read more
  • Chris: any chance you could email me the config you used read more
  • Bill: ITS has a soft phone project underway. It is being read more
  • Richard Rauscher: Does anyone at PSU use a soft phone? Can someone read more
  • Chris Kauffman: Blog away this week. I will be reading for certain. read more

Contact Me


AIM: TNS BillS

View William Simon's profile on LinkedIn

Donate

Make a gift
Like this blog? Support education and research at Penn State by donating any amount to an area of your choice.

Subscribe

Blogroll

Disclaimer

We are Penn State, but I am not. Opinions expressed on this blog are those of the author and do not represent the opinions of The Pennsylvania State University or any division therein, including but not limited to the author's workgroup, department, administrative unit, or campus. Technologies and ideas discussed on this blog do not describe a production service unless noted.