Ok So after much packet sniffing, trial and error and shear dumb luck I've solved my own problem ...
TL;DR
I fixed the problem by setting up my Freephoneline account as a "voip.ms" account in the basic device configuration (instead of a "Generic Service Provider") and then overrode the ITSP Profile > ProxyServer to be "voip.freephoneline.ca"
Here are the details ...
So as I noted in my first post I realized that my
voip.ms account was correctly passing the Caller ID Name and my freephoneline account was not. So I pulled out my old windows laptop I had laying around and plugged in my Obi into the ethernet port and then set up internet connection sharing on the wifi connection. I then fired up wireshark on the laptop and began sniffing traffic as I made calls on both accounts. Here are the INVITE request headers for the 2 accounts
FreephonelineINVITE sip:6045551234@voip.freephoneline.ca:5060 SIP/2.0
Call-ID: 147e4c9b@192.168.137.14
Content-Length: 310
CSeq: 8001 INVITE
From: "
PHONE 2" <sip:002@voip.freephoneline.ca>;tag=SP21fdc3c587ede25ea
Max-Forwards: 70
To: <sip:6045551234@voip.freephoneline.ca>
Via: SIP/2.0/UDP 192.168.137.14:5061;branch=z9hG4bK-fffd714;rport
User-Agent: OBIHAI/OBi202-3.0.0.3184
Contact: "My Name" <sip:17785551234@50.68.1.1:61348>
Expires: 60
Supported: replaces
Allow: ACK,BYE,CANCEL,INFO,INVITE,NOTIFY,OPTIONS,PRACK,REFER,UPDATE
Remote-Party-ID: "PHONE 2" <sip:002@voip.freephoneline.ca>;party=calling;privacy=off
Content-Type: application/sdp
Voip.msINVITE sip:16045551234@seattle.voip.ms:5060 SIP/2.0
Call-ID: af981af2@192.168.137.14
Content-Length: 310
CSeq: 8001 INVITE
From: "
My Name" <sip:1234@seattle.voip.ms>;tag=SP3cefedb7cfddfc5e4
Max-Forwards: 70
To: <sip:16045551234@seattle.voip.ms>
Via: SIP/2.0/UDP 192.168.137.14:5062;branch=z9hG4bK-2db6787e;rport
User-Agent: OBIHAI/OBi202-3.0.0.3184
Contact: "My Name" <sip:1234@50.68.1.1:61347>
Expires: 60
Supported: replaces
Allow: ACK,BYE,CANCEL,INFO,INVITE,NOTIFY,OPTIONS,PRACK,REFER,UPDATE
Remote-Party-ID: "My Name" <sip:1234@seattle.voip.ms>;party=calling;privacy=off
Content-Type: application/sdp
So I quickly realized that the From header contained the caller ID name that was passed to my Canadian home phone. I started researching the SIP protocol and determined that in Canada our phone system does not use a CNAM lookup to find the caller ID name in a 3rd party database. Instead the name that is passed in the SIP Invite message is used, which actually makes more sense but anyways ...
Details here
http://wiki.voip.ms/article/Caller_IDI started playing with a bunch of values on my Freephoneline ITSP profile and Voice Service settings to no avail. I compared them with my
voip.ms settings and found they were identical! In a blind fit or rage I figured I must have missed something, so I setup my sp4 account (which was previously unused) as another Freephoneline account, but by random dumb luck I decided to choose the account type as "voip.ms" because I knew that I could change the ProxyServer address after the initial setup of the account. So after the initial setup I changed the ProxyServer to
voip.freephoneline.ca and voila it worked! I don't know exactly why it worked, but I suspect that there is an undocumented inaccessible setting that can only be setup by picking a preconfigured service provider (like
voip.ms). I'm guessing that when you select Generic Service Provider most people use this setting with an American voip provider that uses CNAM so this problem doesn't affect them.