Need an extra phone line for testing call flows in your Unified Communications lab? Why not try magicJack!

One day while at work, my buddy Geoff Clark and I were discussing how expensive it can be to deploy a lab environment at home, especially one that supports VoIP telephony.  When you combine the initial cost of purchasing new server hardware and telephony equipment with the monthly expense of one or more additional telephone lines or SIP trunks, you’ll soon find that deploying a lab environment at home is far from cheap. 

Suddenly Geoff asked, “I wonder if you can connect magicJack to the FXO port on a VoIP gateway to dial out to the PSTN?” 

Unless you live outside the United States (or perhaps under a rock), you’ve probably heard of magicJack.  The magicJack device, roughly the size of a pack of gum, connects to the USB port of a computer.  Upon installing the ad-driven software and selecting a telephone number, magicJack provides unlimited local and long distance dialing for less than $20 per year.  The magicJack USB device can be purchased from a variety of major retailers or from their website at https://www.magicJack.com.

magicjack-productShot-original-cord

While I would never encourage anyone to drop their existing telephone service in favor of switching to magicJack, this little device can provide a cost-effective means of connecting your UC lab environment to the Public Switched Telephone Network (PSTN).  Unfortunately, the magicJack service is not intended to act as either a SIP trunk or as a B2BUA.  Rather, the customer is expected to connect an analog telephone to to the RJ-11 port on the device.  This means that unless you have a VoIP gateway in your lab, you will not be able to place external calls through magicJack using a SIP client or IP phone.

The magicJack device must be physically connected to either a computer or thin-client.  A sound card is required, even though the magicJack device is recognized by Windows to be a generic USB sound device.  When you connect the magicJack device to a computer and launch the magicJack software, it quickly scans the available audio devices on the machine.  After automatically determining which sound device to leverage for encoding/decoding audio for the RTP stream, several audio-related registry keys are then set under the HKCU container in the registry.

After purchasing magicJack for my own UC lab, determining where to connect the magicJack USB device was simply a no-brainer.  Since my entire Unified Communications lab runs on a single Hyper-V host computer, it was the logical candidate for hosting both the magicJack device and the magicJack software.  After connecting the magicJack to the USB port of my Hyper-V host computer, I used a simple telephone cable to connect the RJ-11 port on the magicJack device to one of the FXO ports on my AudioCodes MP-114 gateway.

LabEnvironment

While magicJack can potentially save you a lot of money over time, there are some … well, let’s call them nuances … that can (and probably will) drive you nuts.  For example, the magicJack software runs under the context of a user account, not as a service.  This means that if your host computer restarts due to patching/etc, magicJack will fail to send or receive calls until someone logs in to the computer locally.  Another nuance with magicJack involves the automatic pop-up of the magicJack software whenever a new call is received, causing loss of focus if you’re working on something important.  Although there are workarounds or free utilities available for addressing both of these issues, they may violate the magicJack Terms of Service.

A few of the other issues that I encountered with magicJack are as follows: 

Unable to hear or understand caller

    1. Log on locally to the magicJack host computer.
    2. Launch the magicJack software (it should select a preferred audio device).
    3. Configure the audio settings within the magicJack software as follows:
         a. Click on the ‘Menu’ option, then select ‘Volume/Headset Control’.
         b. Under ‘Choose your device’, select your preferred audio device.
         c.  The Speaker/Microphone settings for the audio device should be configured as follows:
                 Speaker – Move the slider all the way to the right (maximum)
                 Microphone – Move the slider all the way to the right (maximum)
    4. After committing changes, place a call to your magicJack number and test the audio levels. 

Connecting remotely using RDP causes loss of audio settings

    1. Log in locally to the magicJack host computer using your Administrator account.
    2. Manually disconnect (unplug) the magicJack device from the host computer.
    3. Locate the magicJack installation folder (C:\Users\Administrator\AppData\Roaming\mjusbsp).
    4. Remove the mjusbsp installation folder or move it to another location on disk (i.e. the desktop).
    5. Launch the Registry Editor, then locate and remove the cdloader value from the following registry key:
           HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
    6. Create a new user account called ‘magicJack’ and give it administrative rights.
    7. Log on locally to the magicJack host computer using the ‘magicJack’ user account.
    8. Reconnect the magicJack device (magicJack software should install automatically).
    9. Configure the audio settings in the magicJack software and verify that you can send/receive calls.
    10. Configure the settings for all RDP sessions to this computer as follows:
           - Never log on remotely as the ‘magicJack’ user account
           - Never connect to Console (mstsc /c or mstsc /admin)
           - Configure the Remote Audio Settings to ‘Leave at Remote Computer’

Oh, one last thing…

This information is provided AS-IS with no warranties, and confers no rights.  This solution is considered UNSUPPORTED by Microsoft, and as such should not be deployed in a production capacity.

As always, I hope this helps!

-- Dave