Monday, December 26, 2011

VoIP "Can't Hear Me, Can Hear Them" Issue

Symptom:

You have (deployed) a SIP VoIP telephone set (can also be a software SIP phone) at home. Your phone rings and you can even dial out but the recipient of a call cannot hear you, though you can hear the recipient's voice.

Issue:

(1) This means that the SIP protocol is going though but the RTP protocol is not going through. This happens in a typical home WiFi "router" scenario connected to cable or DSL service.

(2) Has your phone been in your corporate office or a branch office? Sometimes, these phone are set behind an "EDGE BOX" that provides different protocols and have different codes in the firmware. 

Possible Fixes:

If your situation applies to (2) above then you need to call your IP service provider, explain to them that you have moved your phone from your office to home and requires a "Push of new config to your phone."

Below applies to everyone. In most cases the blocked UDP by your wireless router is the key! 99% of the case this is it.
 
Most people use a wireless router at home. However this will cause an issue as most of them prohibit UDP protocols to go through via their built-in firewall. Thus it is time for you to learn to open up firewall settings on your router.

If you cannot make a call at all or if you cannot receive any calls at all: Check UDP 5060-5063 ports.

If the sound is an issue then try opening UDP Port 16384 - 16482, or 10000 - 20000. This depends on the phone implementation.

Note: If you are an Astound customer, try connecting the phone directly to the DMZ port provided by Astound.








Sunday, December 11, 2011

Mac Lion Windows Remote Desktop Freezes - Alternate Solution

Symptom

When you "log out" from a Remote Desktop session using the Windows Remote Desktop client, it either freezes or hangs. If it is in full-screen mode, it would not even allow you to open the Apple Menu to force quit the application.

As of December 2011, there is no updated version of RDP Client from Microsoft. If you beg to differ on this, please let me know since I am no longer using the MS RDP.

Workaround/Alternate Solution


Try using CoRD from SourceForge. It actually provides better user experience than the RDP client from Microsoft. It works on all recent versions of MacOS X including the Tiger version. I especially like the fact that the user/password management is built in to the software. (for me the Keychain with MS DRP goes out of Sync very quickly if you are connecting to multiple hosts frequently, usually ending up typing user and password every time.)

Update (5/10/2012): CoRD is not that super-stable either on my iMac with Lion, but it never totally hangs. CoRD tends to crash hard when losing a connection that was running, for example, when I close the VPN connection while the RDP is still connected, it is guaranteed to crash right now.







Monday, December 05, 2011

LINQ To XML Tips


Use XElement instead of XDocument in LINQ to XML

I misunderstood that it is usually the XElement that is all I needed and not XDocument to work with LINQ to XML.

XElement has just about everything you need and also LINQ works mainly with XElement.

For example, the following code can locate all the "top level" nodes titled page. Within each of the element you can actually find the element titled "regex" no matter how deeply inside that elemenet's tree. This is because I am grabbing all descendant level nodes.


       public void Test(XElement FinderSpec)
        {

            var pages = from f in FinderSpec.Descendants()
                    where f.Name == "page"
                    select f;

            foreach (var i in pages)
            {
                var reg = from tre in i.Descendants()
                          where tre.Name == "regex"
                          select tre;

                foreach (var re in reg)
                {
                    var rs = re.Value;
                }
            }

        }


The XElement class also has handy Load and Save from file as well.

var el = Xelement.Load("test.xml");
el.Save("test2.xml");