Aug 31

The meeting id to resolve has unneccessary padding…

door-knob-paddingYeah. That was the error I finally tracked down earlier this week.

The full error is this:

ms-diagnostics: 3169;reason=”The meeting id to resolve has unneccessary padding on the id component.”;meeting-id=”42666530″;source=”medserv1.flinchbot.com”

So where did that error come from?

We use a global ITSP to provide us with local dial in conferencing numbers. So while we don’t have a Lync installation in – let’s go with Latvia – we can still provide a local dial in conferencing number. It’s a pretty cool little feature we rolled out. The ITSP we use doesn’t actually have any lines in Latvia. They just contract with a local carrier, convert the call to IP, then ship it over to one of their location in London or New York where it then connects to our Mediation servers via a SIP trunk.

This all works really well. Except for the times when the carriers do updates and don’t inform the ITSP. And then some of our Dial In Conferencing features fail.

We got a ticket early this week that most users were unable to join Lync meetings by dialing into one of those global numbers and punching in their meeting ID. For sake of keeping this simple, let’s say it was calls to the number in Latvia. Lync answered the call just fine and prompted them to enter their meeting ID. But more often than not, it came back with the “I’m sorry. I can’t find a meeting with that ID” message.

But we were typing in the number correctly. I figured it had to be an issue local to Latvia as no one reported issues when calling the numbers in Slovenia or Hungary or Czech Republic, etc. I opened a ticket with the ITSP and began some Lync logging to see if I could narrow down the issue.

As part of logging, I came across the message above. There are two things that piqued my interest:

  1. I will bet a million dollars that I entered the Meeting ID correctly. But in the log message, the Meeting ID is wrong! It has an extra 6. The real meeting ID value is 4266530 and not 42666530.
  2. And that verbiage about “unnecessary padding”. What does that mean? That’s not an option in Lync that I know of. I can’t just type Set-CsVoiceRoute -UnnecessaryPadding $False to fix this.But it feels like a DTMF issue. And if there is one thing I’ve learned about IT and troubleshooting, it’s all about the feels.

Along with a few other things, this seemed to be a pretty obvious issue with the passing of DTMF tones (As a reminder, DTMF stands for dual tone multi frequency which I guarantee I forgot.) Google provides no value when Googling “DTMF Padding” and Bing isn’t any better (the first hit was for an iOS app.) So I have no idea what padding really means but to me it was confirmation that DTMF wasn’t being sent correctly to Lync.

After many hours (over night, actually) we got a response from the ITSP that the carrier had recently applied “an in-band DTMF patch conforming to RFC2833…The issue was the delay difference between receiving and re-transmitting the DTMF’s. Sot some calls the expected interval was smaller due to carrier interconnect timers…“.

So that “delay difference” is probably what Lync calls “unnecessary padding”.

Anyway, the carrier did something on their end and the problem was solved.

Aug 28

Speakerphone Audio Quality Comparison

While there are a lot of reviews for Skype for Business certified speakerphones, I have never come across a review that lets you hear what they sound like.

I took the three speaker phones I have (caveat: all given to me for free by the vendors) and made some recordings for you to hear.

Three speakerphones

Plantronics, Sennheiser, and Jabra

I used the “Check Call Quality” feature in the Skype for Business client to run the test. The back-end is also a Skype for Business server pool.

I used a Yeti Blue microphone to record me saying the same phrase each time. That phrase is:

I would like to have a pear for supper.

It doesn’t mean anything other than it has some “plosives” to add a little complexity. It’s also a short phrase that fits within the time window provided by the Call Quality test.

To record the dialog I used a Yeti Blue microphone which is a pretty good USB microphone I picked up recently. I placed it about (8 inches/20 cm) away from the center of the speakerphone.

You may hear some background white noise. That is my Hyper-V server which is running my Skype for Business lab. I also normalized all of the audio files to -1.0 db which may enhance some of the white noise.

Note that everything you hear is recorded via the Yeti Blue microphone. So when you hear the prompts, that is a very good example of how the speaker sounds. When you hear the recording of my voice played back, that should give you an idea of how good the microphone is.

First is the Plantronics Calisto.

calisto_p825

Next is the Jabra Speak 510

accessories-4730b-450x350

And finally the Sennheiser SP20.

Sennheiser SP 20 ML

Sennheiser SP 20 ML

 

I won’t say which I liked better or worse. I don’t want to taint your opinion. Also keep in mind that sound quality is a very important factor when selecting a speaker phone but it isn’t necessarily the most important.

  • Some of these support Bluetooth,
  • Some have a built in battery
  • One has a portable microphone
  • One has a jack to to play music off your phone with
  • Plus other unique features

 

Aug 28

New AudioCodes Logging Tool: It’s Sexy

AudioCodes recently released a new syslog viewer named, creatively enough, “Syslog Viewer”. For those who have been working with AudioCodes gateways and SBC’s for a while, then you are probably aware of the previous syslog viewer that AudioCodes provided to assist with logging. This was the “acsyslog120.exe” application which was very bare bones and came with some really bad default settings. So before you could really use the things, most people changed the logging directory, the order in which entries were added to the log (newest on bottom, please) and a few other things.

And once acsyslog120.exe did its thing it was up to you to do all the fun troubleshooting which amounted to searching for a needle in the syslog haystack. About the only advanced feature of acsyslog120.exe was that you could go to the Help\About menu and play Space Invaders.

ACSI
Sometime around July 2015, AudioCodes quietly released Syslog Viewer. You can download it from the downloads section of their website. Pick “Software/Survivable Branch Appliances/ Mediant 1000…” from the download section. Syslog Viewer will show up in the list of downloads. It’s a simple install.

So what does this new syslog app provide?

For one, it has sensible defaults. New entries to the viewer are added to the bottom and not to the top.
It also automatically colors and formats the logs similar to what acsyslog120.exe did but it looks much nicer.

The toolbar has some new icons.

AC-Toolbar

From Left to right….

The first icon is used to clear out the entries form the viewer. In acsyslog120.exe this was the paint brush icon. And yes, when I first used Syslog Viewer I clicked the paintbrush icon in the middle. It didn’t do what I wanted it to.

The next button – the set of folders – is used to open an existing syslog file.

The blue diskette is used to save the incoming syslog stream to disk. If it’s blue, you’re not saving anything to disk. If it’s red, then the record-to-disk is enabled. By default, it will write the logs to c:\syslog.txt. If you click File\Write Log As… you can change the directory to somewhere not on the root of your drive.

Next is the Play icon. This is used to pause/resume the syslog listener. If you see the play icon (as in the image above) then the syslog listener is paused. If you click the play button, this icon turns to a “pause” icon.

This can be a bit confusing where you see play but it’s really paused and you see pause and it’s really playing.

To help minimize confusion, there is an area in the bottom right telling you the exact state of save-to-disk and play/pause icons.
AC-Status
While working with support it was always hard for them to see the syslog output when sharing my desktop due to high resolution on my laptop and remote desktop scaling issues. Syslog Viewer now includes Zoom in/Zoom Out button which smoothly increases the font size so the person at the remote end doesn’t need to squint to read the logs.
The paintbrush icon is for “external viewer” which means it opens the saved syslog in Notepad. Note that if you haven’t saved the syslog session to disk then you can’t open it in the external viewer. I’m not entirely sure why this opens in Notepad but you can go to Tools\Options and use a different app as your external viewer.

The picture frame icon disables auto scroll which might be useful if you are going through a live log and don’t want the screen constantly scrolling while you are looking at some entries.

The snow flake icon is used to freeze the display. Honestly not sure how this is different than disabling auto scroll.

Finally, we get to the sexiness. The “i” icon opens a ladder diagram or what they are calling the “SIP Flow Diagram”.

 

AC-Sexiness
This is very similar to the ladder diagram found in Snooper. I can’t stress enough how useful this view is. No longer do you need to search for a needle in the syslog haystack. If you look at the ladder diagram, you can see exactly which devices are talking in this conversation. And if you look down towards the end, you can easily zero in on the error or issue which in this case is “403 forbidden”.
With acsyslog120.exe (or any other syslog viewer) you don’t get this view. The ability to see the conversation and quickly spot the error is a total time saver.

Now the example here is a bit silly as I dialed an invalid phone number from an analog phone that I was sending to Lync via an AudioCodes MP112. But this tool gets really powerful with more complex scenarios. If you happen to be logging and 3 or 4 (or 50) other sip conversations are happening, each SIP conversation gets its own entry making it very easy to find the call you are concerned about.

As you click on a rung on the ladder diagram, not only does it show the relevant entry in the bottom right of the SIP Flow Diagram window, but the Syslog Viewer running in the background also jumps to the same log entry so you can then see what other entries are near it.

Syslog Viewer takes AudioCodes’ primary support tool from mid-90’s era technology straight into this century.

Since this was released in mid-July, they have already updated it from version 1.0 to 1.5. So clearly AudioCodes is currently putting a lot of effort to improving this support tool.

If you manage or support AudioCodes gateways or SBC’s in any way, then I highly recommend you immediately go to the AudioCodes website and download this new tool.

Jul 08

Have an AudioCodes SBA? Check for Temp spam.

If you have an AudioCodes SBA, it may be worth peeking into your c:\windows\Temp directory.

AudioCodes has a Windows service named “BoaService”. This service collects the status of Lync Services and helps drive the SBA management page. This is the page you use when you initially configure the SBA. It looks like this:

SBAPAge

There is an issue with earlier versions where AudioCodes didn’t clean up it’s log files. As such, there can literally be hundreds of thousands of log files sitting in your c:\windows\temp directory. These logfiles are the output of Get-CsWindowsService which the BOAservice runs every 5 minutes or so.

To fix this, do 2 things:

1. Run the following command form PowerShell to delete all of the logfiles. With luck, you’ll only have maybe 100 files in there. If you aren’t lucky, this command will run for a long, long time:

remove-item C:\Windows\Temp\Get-CsWindows* -verbose

2. Contact AudioCodes to get the latest version of their SBA management software. This fixes the issue for those of you who just discovered thousands of files in your Windows temp directory. Alternately, stop and disable the service. If, like me, you never need this webpage outside of initial configuration go ahead and save a little CPU and memory. Just be warned that with this service stopped that the SBA Management page won’t open.

Jun 24

Skype for Business Debugging Tools

SnooperNote: Updated 28 August 2015 to reflect changes in newer version.

———–

I’m surprised no one has written about this yet. If someone has, please let me know and I’ll give you props and a link right up top. Until then….

The Skype for Business debugging tools are a replacement for the Lync Server Debugging tools. First off, the Lync debugging tools will work on a Skype for Business server. However the new debugging tools leverage the Centralized Logging Service (CLS)  feature introduced in Lync 2013.  This makes it far easier to do logging across multiple servers at the same time. The Lync debugging tools have to be run independently on each server.

The primary change is that the OCSLogger.exe from Lync 2013 has been replaced with the CLSLogger.exe program. Snooper remains the same though it is a newer version. There has been the addition of a “Codepoint” menu which ….I’m guessing….is used to load external diagnostics…or something. But it’s new, and newer is always better.

Also, CLSLogger can be used against Lync 2013 servers as well as Skype for Business. No dice on Lync 2010 though.

There is nothing that the CLSLogger can do that you can’t do via PowerShell. If you are a CLS ninja, then you can probably skip the CLSLogger altogether and just go on about your business.

But for the rest of us…..

Before you even fire up the tool, run Get-CsClsConfiguration . This will let you know how you are set up. For the most part, ignore everything returned except for the “ETLFileFolder” and “CacheFileLocalFolders” values. By default this is set to %TEMP%\Tracing. And where exactly is that directory?

%WINDIR%\ServiceProfiles\NetworkService\AppData\Local

Or most likely, here:

c:\windows\ServiceProfiles\NetworkService\AppData\Local

These directories are important because this is where the log files are going to be created. You may want to edit this to get them off of your C: drive so you don’t accidentally fill it up.

And since I never like editing the Global configuration of anything (if it can be avoided), create a new CLS Configuration for your Skype for Business Site(s). This is done with the New-CsClsConfiguration cmdlet. Below is an example creating a new configuration for a Site named “Site 2” and changing the logging folders to e:\logging:


New-CsClsConfiguration -Identity "site:Site 2" -ETLFileFolder "d:\logging" -CacheFileLocalFolders "d:\logging"

Even if you only have a C: drive, you may want to change the directories to something you can find more easily than %WINDIR%\ServiceProfiles\NetworkService\AppData\Local

CLS will automatically create the directory you define, so that saves time connecting to every server in your site to create a directory.

So, now that the directories have been defined, it’s time to launch CLSLogger, right? Yeah well not quite.

CLSLogger is really a super elaborate PowerShell wrapper. And if there’s one thing you’ve learned about running PowerShell scripts it should be this: You need to set the Execution Policy before you can run somebody else’s script, even Microsoft scripts.

So open a PowerShell window with “Run as Administrator” and type the following to permit this to run:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

If you are super security conscious, you may want to use something other than Unrestricted. But that’s up to you to figure out the magic voodoo. I always use Unrestricted but then I don’t entirely know what I am doing with this. I just set it to Unrestricted because it tells PowerShell to never bother me again with this security nonsense.

So now, assuming you have installed the Debugging Tools already, you can finally go ahead and launch CLSLogger. Navigate to C:\Program Files\Skype for Business Server 2015\Debugging Tools and launch ClsLogger.exe

Now, even with the execution policy in PowerShell set correctly, you still get:

Error: Access to the registry key ‘HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell’ is denied. To change the execution policy for the default (LocalMachine) scope, start Windows PowerShell with the “Run as administrator” option. To change the execution policy for the current user, run “Set-ExecutionPolicy -Scope CurrentUser”.

Oh wait…Run ClsLogger as Administrator too. Otherwise it won’t have rights to read the key from the registry. So note to self: Run everything as Administrator….

When it starts, the Start/Stop Scenarios tab opens and there are three main sections.

1

 

Section 1 is where you can select a scenario. Remember with OCSLogger you had to semi-randomly pick what to log? So you always picked the same stuff (S4/SIPStack) and then randomly picked some options like Inbound Routing and Outbound Routing hoping to get what you wanted.

Scenarios take the guesswork out of your hands. Microsoft has created a whole pile of scenarios for you with all of the correct options already selected. So for example if you aren’t tracking an Enterprise Voice issue, S4 will be unselected for you thus minimizing the amount of “noise” in your logs.

To select a scenario, just hit the pull down and HOLY DUMBNESS WHAT IN SAM HILL!!!! YET ANOTHER UNSORTED LIST FROM THE LYNC/S4B TEAM. WHAT IS WRONG WITH YOU PEOPLE. SORTING IS LIKE THE EASIEST THING IN THE WORLD TO DO. %^&*(&*^%$#^&!@#!!!!!!!!! pick the desired scenario from the sorted list..

If you have multiple sites, you will also notice that the list contains duplicates…possibly a lot of them. If you type

Get-CsClsScenario | select Identity

in a PowerShell window you will see that the list in PowerShell matches the list in CLSLogger. Except the PowerShell version prepends the scenarios with the site name making the duplication easy to understand. Hopefully they will improve the naming in the scenario list to include the Site name in a future update.

Fortunately, all of the out-of-the-box scenarios are the same regardless of Site so you can pick any one of them. In my case, I selected AlwaysOn because I am lazy and that is the default option. After selecting one, the Scenario Information screen will list all of the logging options, logging levels, and logging Flags that are part of the scenario.

Scenario Information

 

After selecting the scenario, you have to tell the logger against which pools and servers (and trunks????) you want to run this scenario against. So pick a pool or two off the list. You can also drill down to pick a specific server too in case you suspect a subset of your pool is having issues.

mp112.flinchbot.com is an AudioCodes gateway. PBX1 and PBX 2 are Asterisk servers....

mp112.flinchbot.com is an AudioCodes gateway. PBX1 and PBX 2 are Asterisk servers….

 

The 3rd section, at the bottom is a PowerShell window showing you which PowerShell cmdlets the tool is running. This is a nice touch.

There are three buttons above the Topology window (Section 2). Before running a new scenario, click the “Logging Status” button to see if you are already doing logging against the pool/server(s) you selected in the Topology window.

If everything looks ready, click the “Start Scenario” button and watch the magic happen.

Actually, replicate your issue as fast as you can and then click the “Stop Scenario” button. No one wants to deal with a 37GB log file because you couldn’t be bothered to stop the logging until hours after the issue has been tested.

If none of the pre-configured scenarios match what you want to log, you can create your own custom scenario. To do this, click on the “Edit Scenario” tab and the following screen appears.

3

In general you will be editing one of the existing scenarios because you need an additional component to be logged or you need more detail than what is provided. In the image above, the ACPMCU scenario is selected. You can see in section 1 that this scenario logs AcpMcu as verbose and Collaboration, S4, and SIPStack as Information-level. Let’s say we want to add logging of the Mediation service to this scenario.

Scroll down in section 3 to find the “MediationServer” Component. Section 2 will adjust to “Information” and Flags will go to “All”. Just for fun, let’s change the Level value from Information to All.

Now you click on the “Save Scenario” button underneath section 3. You will be prompted to verify the change. After saving the change, Section 1 will be updated. Note that MediationServer is now added to the list.

4

 

The Scenario name now also has a new name I gave it which is admittedly not terribly descriptive. I just added “Custom” to the default name.

To create a new scenario, click the “Create Scenario” button found underneath section 2 and 3 – right above the 4 in the image. You’ll be prompted to provide a name so give it something descriptive beyond just “Test Scenario” or “Flinchböt’s Scenario 1”. A better name would be something like “Inbound calls from SIP trunk”

Now if you flip back to the Start-Stop Scenarios tab, you should see your new scenario in the Scenarios list. Select this and start your logging.

So the next step….looking at all of this wonderful data. That’s where the “Search CLS Logs” tab comes into use.

Unfortunately….nothing is automated here. It would be nice if it carried over the settings from the “Start/Stop Scenario” tab to here. Maybe in a future update….

2

 

From my point of view, the point of this tab is to get a unified log file that you can open in Snooper. As such, I leave most of this stuff empty.

Make sure the Start and End Time fields are correct. To me it feels like this is a semi-random guess by CLSLogger to what window of time you want to review. So don’t trust it to be correct or your logs may be very empty.

The only setting in Section 1 you have to set is the Log File Folder setting. You can’t type anything here and have to navigate to a folder. If you aren’t running this on a server then….manually create the folder on your PC in the exact same location it is on your server. I hope your PC has a D: drive like your server does. If not…..run this from the server.

Remember when we set the logging directory at the very beginning? Navigate to there and click OK.

You do not have to pick anything in section 2. So unless you really want to narrow down your logs, leave this blank. If you are using the AlwaysOn scenario, then it’s a good idea to check the relevant boxes here. How do you know which boxes to select? Go back to the “Start/Stop Scenario” tab and pick a specific scenario off the list and manually replicate what’s pre-configured there into Section 2.

In Section 3, you have to select the pool you logged against. Automatically having this setting copied from the “Start/Stop Scenarios” tab would be a time saver.

Once you have at least a Log File Folder, a valid time range, and a Server/Pool selected, click “Search Logs”. This will go out to the servers, grab the logs and put them into one big file.

Curiously, once this is done it asks you if you want to open the log file. Say No. This just launches Notepad and opening really large log files in Notepad is painful and the whole point of Snooper is so that you don’t have to use Notepad. But do take notice of the file name for the log.

Open Logs

You are going to open the log file in Notepad? Then no, I don’t want to open this file at all!

You don’t have to memorize the log file path in the message. It is conveniently listed in the PowerShell monitor (Section 4).

So how do you get this log file opened in Snooper which by absolutely any logic should be the default? Go to the menu at the top of the Logging Tool and select the Logs pull down. Then select “Open Logs with Snooper”. Like magic, Snooper opens and pulls in the log file automatically.

This should be the default action.

This should be the default action.

Now that it’s in Snooper, go do your Snooper magic to track down your issues and whatever it is you do in there. I know we are all adults, but what happens in Snooper stays in Snooper.

 

 

 

Jun 18

Sennheiser SP 20 ML Speakerphone Review

Just so you know, I was given this free from Sennheiser. Keep that in mind while reading.


0401rcp_sennheiserI work from home about one day a week. When working from home I use a speakerphone instead of a headset. For the past year or so, that speakerphone was the Plantronics Calisto P825-M.

Yesterday I received the Sennheiser speakerphone just in time for my usual Thursday work-from-home day. So I was able to give it a good run through its paces today.

First off, here are the general features of the device.

It’s Lync certified so you can plug-and-play it to your PC. This worked perfectly.

The top of the device has 5 buttons. On the far left and right are volume down and volume up buttons. The center of the speakerphone has a few features. You can press it to mute/unmute the call. When doing so, the lights around the center button turn red when muted and green when unmuted. The lights are also a volume indicator. As you turn the volume up, more lights will get lit up in a clockwise direction. Hitting the volume down turns lights off in a counter-clockwise direction.

The lights in the middle are also a charge indicator. The charge is indicated by blue lights. The more blue lights you see, the more of a charge you have. Yes, this device has a battery in it so you can use it as a speaker for music or as a speaker for your mobile device. Sadly it does not have Bluetooth connectivity.

At the lower end of the device are the call answer and call hang-up buttons. Between the 2 buttons is a white light letting you know if the device is on or not.

Despite not having Bluetooth, you can easily connect a mobile device via an included 3.5 mm headset connector. Both this connector and the USB cable are ingeniously wrapped around the base of the unit and are pretty well hidden while stored. I was surprised how long the cables are. According to my ruler, the 3.5mm analog cable is 25.5 inches/64.77 cm in length. The USB cable is a bit more generous at 30 inches/76.2 cm.

Sennheiser SP 20 ML

Sennheiser SP 20 ML

But how does it sound? That’s the real test right?

I spent a fair amount of time this morning testing this device with a coworker. We would talk and I would switch the conversation between the Sennheiser and the Plantronics device.

From my point of view, that is, the side listening to the output of the speaker, the Sennheiser was a clear winner. No competition, actually. The Plantronics sounds a bit tinny and flat with absolutely no sense of bass. Certainly with the Plantronics my coworker was easy to understand but there was absolutely no nuance. But with the Sennheiser it was like switching from a narrow-band PSTN call to a wide-band Lync call. My coworker sounded much fuller and much more natural.

Also from the listening end, I plugged my Windows Phone into the Sennheiser to see how it sounded as a music speaker. While it is no competition to a home stereo, it is very serviceable. There is too much mid-range and the bass doesn’t stand out. But I imagine this is because the speaker is designed for voice with music being a secondary concern. They claim that they have a “profile” to enhance the music and it does seem to work. With the SP 20 connected via USB, set as the default PC audio, and playing music via the phone everything sounds great until a PC “noise” comes in. When the speaker has to play that noise, such as an incoming IM audio notification, the audio turns very flat and dull (and slightly distorted) while playing that notification over the top of the music. Once the notification is over, the music brightens up considerably.

Interestingly when you play music on the PC via the USB, the audio is fine….until I plug the 3.5mm jack into the phone. Then the PC audio goes to rubbish. I imagine this has to do with the circuitry inside only able to handle a single quality audio stream and they default to the 3.5mm jack getting that quality stream. The USB gets demoted to a much lower quality stream.

If you travel often and just need to use it for listening to music in a hotel room or to improve on the built-in speakers in a laptop then this will certainly perform admirably. Just keep in mind that this is nowhere near audiophile-level audio. And unlike the Plantronics, the Sennheiser comes with a protective case to provide some level of protection to the device while travelling with it.

So which one of the two were easier on the user at the far end? In other words, how did the microphones perform? In general, they were very similar to one another. When just speaking it took some concentration from my coworker to pick out the differences. Eventually he said that the Sennheiser sound less “echo-y”. Put another way, he said the Sennheiser sounds closer to sounding like a headset microphone than the Plantronics. I would hope this is the result of Sennheiser marketing slapping the term “echo cancellation” throughout their materials.

One other test we did was by me playing music in the background and then speaking. For good or bad, the Sennheiser passed it through very clearly. While the music was playing my coworker didn’t mention having trouble hearing me when I was speaking. He just said the background music was coming through very clearly. When switching to the Plantronics he said he thought the Plantronics might be trying to cancel out the music a little bit. The music was much more muddled than with the Sennheiser and he could still understand me just fine while talking over the music

We leaned towards thinking the Sennheiser was the better performer in this regard. Keeping in mind that this is a speaker phone and not a headset, the microphones on the SP 20 should be passing the music through. If this were in the middle of a conference room instead of my desk at home, you would want to be able to clearly hear everyone talking. But this was certainly no thorough or complete test. It’s very possible that the Plantronics “muddling” the music is it’s attempt to cancel out background noise and highlight the speakers voice in which that’s a very good thing to do. This would require different testing to determine which one is better in a conference room environment.

Overall the audio and microphone are much better on the Sennheiser than the Plantronics. Despite lacking Bluetooth, the addition of the 3.5mm jack is a nice touch. The Plantronics has both Bluetooth and the ability to plug in a 3.5mm cable. However it does not let you use it as a music speaker via Bluetooth or 3.5mm connections. At least I couldn’t figure it out. You can use it as a music speaker via USB but the quality is really miserable. The Plantronics was clearly designed solely for call-level quality.

calisto_p825

Plantronics Calisto P825M

The Plantronics does have a screen which is always a positive. It also has a ton more buttons….none of which I’ve ever really used. Understandably this is because my use case is as a single-user speakerphone and not in a conference room. I could see that there is potentially some value to having a number pad and a built-in address book…or whatever all it is this can do. I’ve never used any of those features.

I have tried using the detachable microphone. In theory this is a great idea. This would let me walk around and even turn my back on the speakerphone yet the person on the other end would still hear me clearly. But there are two problem with this.

1. When you pick up the microphone it doesn’t automatically switch the input to the microphone. You have to manually press a button. This seems useless to me and quite honestly I had to refer to the manual a few times when I tested the detachable microphone before my thick head remembered there was a button to push. I know Plantronics knows how to do this as some of their other devices will automatically answer a call when you pick up the Bluetooth device to stick in your ear.

2. But the bigger problem is that the microphone doesn’t work well. Or at least mine doesn’t. When I tested the microphone a few months ago with some coworkers they both immediately reported that my voice was filled with static. And this was with the microphone no more than 6 feet/2 meters from the base station.

The Plantronics Calisto seems like it is full of good ideas that just didn’t get executed properly – at least for a single-user scenario like mine. I would think in a conference room scenario all of those buttons provide some value though I imagine I would be pushing all of those buttons via my Lync/Skype for Business client and not on the device itself.

The price difference between the two is only $7. According to Amazon, the Plantronics Calisto is US$120.99  and the Sennheiser SP 20 ML is US$127.97. I would find it very hard to justify saving the $7. I suppose the primary compelling reason to go with the Plantronics would be the Bluetooth connectivity and all of those buttons.

But if sound quality is your primary requirement then this one is a no-brainer. I’d buy the Sennheiser. Every time.

The final verdict is this: I’m packing up the Plantronics and taking it back to the office in case we ever need a speakerphone for a meeting. I’m keeping this Sennheiser at home and taking it with me when I travel (which I never did with the Plantronics).


BTW – I’ve never used a Jabra Speak and rumor is that they are about to release a new model. Anyone form Jabra want to send me one of the new ones when they are available :)

Jun 17

My Whole World Has Changed

Real-Estate-OnlineI had been using Yahoo! Pipes for over 3 years to drive the Lync News/Skype for Business News aggregator. About 2 weeks ago, Yahoo! announced that they were killing off this service in the August/September time frame. This caused me some consternation. Not because I didn’t see it coming – Yahoo! hasn’t updated the thing in about 3 years – but because of the amount of work to get it going again somewhere else.

To take a step back – I started the Lync News aggregator right about the time Lync 2010 was being released. I was a novice OCS 2007 R2 administrator. The company where I worked at put a hold on continuing to deploy OCS due to the imminent release of Lync. This gave me time to read up on Lync and try to get educated before our consultant showed up to help us install it.

The problem was finding good blogs about Lync and then remembering to check them. Not that there were a lot of blogs back then, anyway. But it was still tough to get notified when there was something new to read. Enter Yahoo! Pipes which let me build a complex aggregator that grabbed the RSS feeds of these sites and spit out a new aggregated RSS feed. I could then look at this aggregated feed and be notified about new articles.

At some point I decided it was a good idea to send this feed to Twitter and thus the @LyncNewsTweets account was born (as well as it’s duplicate spawn – @S4BTweets).

And then I wrote an app for Windows Phone. This was initially hand coded. And by hand coded I mean I ripped off sample code from Nokia and heavily edited it.  I even found 3 bugs in their code and was able to fix 2 of them. While I do have a Bachelor’s Degree in Software Engineering, I hadn’t coded in C in about 15 years. Fortunately, Microsoft has released their AppStudio site which now takes all of the programming out of my hands.

Now that there are Universal apps, there is also a version for Windows 8.1.

A buddy pointed me to AppYet.com and so that’s why there is an Android app. Again, no coding on my part makes me happy. That one has had over 10,000 downloads!

And then I created a MailChimp newsletter to summarize the previous days news. And then along came Facebook, Bitly, Delicious, and Tumblr. Google + was working for a while but posting to Google + isn’t exactly easy. (No jokes – I actually use that thing a few times a week).

About 18 months ago I created an Exchange News pipe and started posting that to Twitter. I don’t ever read that one but I thought I’d be nice. That feed ended up in the Windows Phone and Android apps when I renamed them both to UC Now.

A small peak into one of the many pipes.

A small peak into one of the many pipes.

All of this was powered by Yahoo! Pipes. The Lync/S4B pipe had 142 RSS sources. Exchange much less because those people just don’t seem to blog as much (and I’m not bored enough to dig up the blogs I’m missing). And Yahoo! Pipes was going away. What to do?

I did some research for a week or two and there wasn’t anything that could really scale up to what I was doing. Most aggregators were meant to aggregate a handful of feeds and that was about it. They couldn’t filter to make sure that the resultant articles in the feed contained certain words like “Lync” or “Skype”.

I then came across the “WP RSS Aggregator” plugin to WordPress. I installed it on my throwaway site I’m Smarter Than You and gave it a go. It does pretty much everything I needed out of it except for appending the Source into the RSS Feed for each article. So for those of you that have noticed that I no longer give credit to every article in the Title…well that’s why.

So I migrated all of the feeds over to that, throwing out the ones which no longer worked. The number of feeds dropped to 113 from 142. And you know what? The RSS feed is working better than it ever did on Yahoo! Pipes. Pipes was powerful but also extremely unreliable. Well over half half the time it didn’t pull in my own articles! The nerve! Now it’s pulling everything in like it was always designed to do.

Tonight I flipped the Exchange feed to be powered via WordPress too.

I’ve also run around everywhere and updated the feed URL so that all of the places that I blast this stuff out to is now running off the new feeds. That includes updating the apps too. The Android and Windows Phone apps should be notifying you in the next few days about an update.

And during this big rebuild of the feeds, I finally went ahead and moved flinchbot.com off of WordPress.com and to its own hosted site. I’ve been wanting to do this for a long time as I’ve always wanted more flexibility than what wordpress.com gives you.

And yesterday I read this article by Andrew Morpeth. He basically did the research for me so this site is also now hosted by MDDHosting. He’s right – the support is fantastic. I’m getting answers in 5 minutes.

So I’ve migrated the whole site from flinchbot.wordpress.com to here. It gave me a great opportunity to refresh the look of the site, if for no other reason than the theme I had been using is no longer available. I like this new theme. It’s similar to what I had but much less drab. It’s much more modern and seems less hacked together. Which is exactly what the old theme was.

So now I have a new feed and a new website host. This is all worth it to me as I still read most of the articles that come through via the feed. I hope you get some of value out of this too. While it’s not hard work (well, now that I don’t have to code the Windows Phone app by hand!) it is fairly time-consuming.Adding or editing a new entry into the Yahoo! Pipe monstrosity was a giant pain. This new system is much easier.

I always appreciate it when I get a random ping from someone asking to get their blog added. And I hope more of those continue to trickle in every few months. It let’s me know some people value my efforts.

And if you know of any good Exchange blogs, please let me know.

 


BTW – If you’re a Windows/Windows Phone user, can you give the UC Now app a rating and/or review? Thanks!

Jun 09

Emoji URL’s are Cool

funny-emoji-rob-bankWhat’s an emoji URL?

This is one: http://🍺🏈💻🎸.ws

Go Ahead. Click it.

I promise it’s safe.

That’s an emoji URL.

Pretty neat huh?

Last night I accidentally stumbled across this article – You Can Now Visit Norwegian Airlines Using an All-Emoji URL

That’s cool I thought. I wonder how it works.

Which then led me to this article.

Which then led me to creating my own emoji URL. The magic behind all of this is something called “Punycode“. If you don’t want to read the Wikipedia article, it boils down to this: It’s basically a text version of a binary table. As you add and arrange emoji’s (or any character, really) a unique ASCII hash gets created. For the emoji’s in the URL above, the Punycode is:

xn--xj8h2dwb17d

And here comes the final bit of joy – take some Punycode and register a domain name with it. Any very-modern browser will translate the emoji to Punycode and then do the DNS lookup to see where it is supposed to go. If you click on the emoji URL again –http://🍺🏈💻🎸.ws – you’ll notice that the address bar will quickly change to the Punycode domain name of xn--xj8h2dwb17d.ws. I then just told my registrar to URL forward back to this blog.

There are a few caveats with emoji URL’s –

Either the .com domain doesn’t support emoji URL’s, or someone bought up all the emoji URL names already. I’ve found a lot of success registering with .ws as the Top Level Domain. So be prepared to use some less well known TLD’s.

Not all emoji’s show up on all devices yet, so hold off on using brand-new emoji’s. For example, I had trouble with the global soccer (association football) emoji but oddly the (American) football emoji showed up everywhere just fine.

Not every registrar plays nicely with emoji URL’s. I stumbled upon name.com and they do an amazing job. Look inside my control panel. They don’t show the domain in Punycode, they show it in emoji instead.

name emoji

Emoji URL’s are supposedly an easier way to type in a URL on a phone than a fully spelled-out domain name. However, on Windows Phone the keyboard brought up by both Internet Explorer and Opera Mini don’t let you enter emoji’s. Depending on your Android keyboard, it is supported and iOS seems to support it as well. (I haven’t tested on all devices if an emoji URL actually works, just that the keyboard in the browser let’s you enter them).

It’s also not supported on older desktop browsers however both IE11 and whatever version of Chrome I have running on Windows seem to work fine.

To make anemoji URL, you first need to find the emoji’s you want to use. I used these two websites to help me out – Emojipedia and Getemoji.

You need one more website to convert your emoji collection to a Punycode. I used Punycoder

Copy the emojis into the left hand side of Punycoder and click “Convert to Punycode” to get the ASCII representation. Once you have a string of emoji’s you want, go register a domain name somewhere.

As mentioned above, I used name.com. I have no loyalty to them other than my primary registrar didn’t seem to want to play ball. I tried a few and name.com seemed to work well and charge only $15 for a .ws domain name.

The only major problem I have with an emoji URL is that I don’t think it really saves time in entering a URL. I find I spend way more time looking for the emoji’s than it would take to type in a “regular” URL – including fixing typo’s.

But that’s not the point is it?

My website has an emoji URL and yours doesn’t. So that makes me better than you. Right?

Isn’t that how it works?

Jun 09

Windows 8.1 Apps Won’t Update

80070490For the past year or so, my home Windows 8.1 PC wouldn’t update most of the apps. So as Microsoft has slowly improved the Music app, I’m not getting any of those benefits. Heck, the apps wouldn’t even start.

Every so often I would spend an hour or two trying to fix this, eventually giving up and hoping the inevitable Windows 10 upgrade will fix it. Last night I spent way too much time on this problem. I spent over 4 hours trying to fix it.

I spent the night Googling/Binging and trying everything I could find.

Wsreset didn’t fix it.

SFC /Scannow didn’t fix it but it did send me on a side project to figure out why that was failing. SFCFix with some sfcfix.zip file fixed that problem. My apps still wouldn’t update.

I smoked the C:WindowsSoftwareDistribution folder a few times.

AppsDiagnostic.diagcab and app.diagcab? Ran those along with WindowsUpdateDiagnostic.diagcab with no fix for the issue.

I tried a bunch of other things so let me skip ahead.No Update Apps

I tried uninstalling the Apps form Windows Store but I couldn’t. It wouldn’t let me click on the apps at all – it just showed them on the list. So I figured I would try to manually uninstall them hoping a re-install would fix them.

That brought me to this article – http://all4naija.blogspot.com/2015/04/how-to-remove-microsoft-apps-using.html

While the article says it’s for Windows 10, it worked like a champ on windows 8.1. I had the list up of my failed updates and then pecked around via PowerShell to delete them. Once I got them all uninstalled, I rebooted and went to install them again. While it took a long time, they all started installing and were working fine.

So that problem is (mostly) fixed. There are three apps still in the list that wont update. But that is a huge improvement over what I had.

My theory is that they were in Windows’ list of “installed apps” but they weren’t actually installed. So when Windows tried to install the updates, it failed because there was actually nothing to update.

————————————-

For the search-ability reasons, here are some of the errors I had and couldn’t resolve using any of the popularly recommended issues:

0x80070002

0x80070490

80246007

Event Viewer Event ID 1001

Problem signature: P1: 9600 P2: 788 P3: 115 P4: 1 P5: US P6: en-US P7: 120 P8: -2147023728 P9: Microsoft.BingFoodAndDrink_8wekyb3d8bbwe P10: 0

Fault bucket , type 0 Event Name: WindowsStoreUpdateFailureV2 Response: Not available Cab Id: 0

 

May 21

Calls Not Completing for user with “Non-Western European” characters

This topic has already been covered in Spanish here  and in German hier.

I am just adding an English language version because I recently ran into the same issue and there is no blog in English about it.

If I ever wondered why we buy support from gateway vendors, this issue validated it for me.

We were bringing up a new location with a PRI. Through testing, I was able to make outbound calls but the people in the actual location were unable to complete the calls. This didn’t make sense. How can I make a successful call, sitting thousands of (pick one: miles/kilometers) away, and the people in the actual office could not?

In this case, our gateway was an AudioCodes Mediant 1000 and we were working with an AudioCodes engineer on the implementation. The AudioCodes engineer had given us numerous things to try to no avail. Finally he had us e-mail him some WireShark logs so he could spend more time on the issue.

A day later, he recommended that we set this value in our ini file:

ISO8859CharacterSet = 0

After making this change, the users in the location were suddenly able to make calls.

The issue is that the users in that location all use the following character in their display name as part of the spelling of their office location:

è

So what does this ISO8859CharacterSet value actually mean? For one, it’s not documented anywhere. I followed up with AudioCodes and they sent me the following documentation.

ISO8859-charset

 

Basically, this value expands the default character set that AudioCodes uses to parse SIP traffic. Why isn’t it set to zero by default? Who knows. I asked that question to the AudioCodes engineer and he had no answer. I asked if maybe there was a performance impact to this value. He replied that there isn’t one that he knew of. I asked a second AudioCodes engineer and he confirmed that he had never heard of an issue by setting this to 0.

It’s surprising to us that we hadn’t run into this issue before but then our standards are to use the generic ASCII character set in all display names, usernames, etc.

How do you know you might have this issue? I don’t have the AudioCodes syslog files anymore so I swiped the below from the German blog mentioned above.

 

<132>[S=831454] Error Indication: Last Command (Primitive) was not performed due to cause 100  [Trunk:0 Bchannel:1 ConnID:2] [Code:0x23127]
<133>[S=831455] (   lgr_psbrdex)(833974    )   recv <– UnHandled event:EV_ISDN_ERROR_INDICATION (317)
<133>[S=831456] [SID:766997237] (   lgr_psbrdex)(833975    )   pstn recv <– CALL_RELEASED Trunk:0 Conn:2 RetCause:73 NetCause:255
<132>[S=831457] REPORT_TYPE_ERROR_IN: ErrorCauseString = Incorrect parameter type, DiagnosticString= Condition unknown, ErrorCause = d, Diagnostic =  [Trunk:0 Bchannel:-1 ConnID:-1] [Code:0x23127]
<133>[S=831458] [SID:766997237] (   lgr_psbrdif)(833976    )   pstn send –> PlaceCall: Trunk:0 BChannel:1 ConnID:2 SrcPN=xxx SrcSN= DstPN=151xxxxxxxx DstSN= SrcNT=4 SrcNP=1 SrcPres=0 SrcScrn=0 DstNT=2 DstNP=1 ServiceCap=M RdrctNum= RdNT=0 RdNP=0 RdPres=0 RdScrn=0 RdRsn=-1 Excl=1 Display=Müller, Max IE= UUIE=0, RawData:0 CLIRReason:-1 OrigPN= OLI=-1 OffhookInd=0
<133>[S=831462] [SID:766997237] (   lgr_psbrdif)(833980    )   Abnormal Disconnect cause:255#?reason(255)? Trunk:0 Conn:2

 

If you see the above that’s a clue. In this case, it was the u-umlaut (ü) in “Müller, Max” causing the issue.

Older posts «