I know the rules say no device-specific troubleshooting, but I've gotten this to the packet-level capture and still don't know why it's failing. Had I known this 7961 would be so #*(%^ difficult to configure manually, I would have thrown it away and ordered a Grandstream or something. Anyway, too much time invested now to turn back.

So far I've:
- Converted SCCP phone to SIP image (8.5.2)
- Figured out how to create the SEPXXXXX.cfg.xml file (and configured sip.voipwelcome.com and username from the BYOD panel, and the password from the last email).
- tried many configuration options, including enabling NAT support, but I still can't get registered.

Today I captured packets from the phone starting up. The registration message *seems* to me to be formatted correctly, but I'm getting a "401 Unauthorized" message back from VOIPo.

Here's the register packet from my phone. This is captured inside the network so you see the private IP instead of the public IP on the network layer of the packet.

Code:
No.     Time        Source                Destination           Protocol Length Info
    382 55.840001   10.0.1.93             67.228.182.2          SIP      756    Request: REGISTER sip:sip.voipwelcome.com | 

Frame 382: 756 bytes on wire (6048 bits), 756 bytes captured (6048 bits)
Raw packet data
Internet Protocol Version 4, Src: 10.0.1.93 (10.0.1.93), Dst: 67.228.182.2 (67.228.182.2)
User Datagram Protocol, Src Port: 49380 (49380), Dst Port: sip (5060)
Session Initiation Protocol (REGISTER)
    Request-Line: REGISTER sip:sip.voipwelcome.com SIP/2.0
        Method: REGISTER
        Request-URI: sip:sip.voipwelcome.com
            Request-URI Host Part: sip.voipwelcome.com
        [Resent Packet: False]
    Message Header
        Via: SIP/2.0/UDP < MY PUB IP >:5060;branch=z9hG4bKeaa5bd04
            Transport: UDP
            Sent-by Address: < MY PUB IP >
            Sent-by port: 5060
            Branch: z9hG4bKeaa5bd04
        From: <sip:<MY TEL NO>@sip.voipwelcome.com>;tag=002155039275000208182de8-0246ff04
            SIP from address: sip:<MY TEL NO>@sip.voipwelcome.com
                SIP from address User Part: <MY TEL NO>
                SIP from address Host Part: sip.voipwelcome.com
            SIP from tag: 002155039275000208182de8-0246ff04
        To: <sip:<MY TEL NO>@sip.voipwelcome.com>
            SIP to address: sip:<MY TEL NO>@sip.voipwelcome.com
                SIP to address User Part: <MY TEL NO>
                SIP to address Host Part: sip.voipwelcome.com
        Call-ID: 00215503-92750002-7564b7e8-d31dd104@< MY PUB IP >
        Max-Forwards: 70
        Date: Fri, 20 Mar 2015 19:07:26 GMT
        CSeq: 101 REGISTER
            Sequence Number: 101
            Method: REGISTER
        User-Agent: Cisco-CP7961G-GE/8.5.2
        Contact: <sip:<MY TEL NO>@< MY PUB IP >:5060;transport=udp>;+sip.instance="<urn:uuid:00000000-0000-0000-0000-002155039275>";+u.sip!model.ccm.cisco.com="308"
            Contact URI: sip:<MY TEL NO>@< MY PUB IP >:5060;transport=udp
                Contact URI User Part: <MY TEL NO>
                Contact URI Host Part: < MY PUB IP >
                Contact URI Host Port: 5060
                Contact URI parameter: transport=udp
            Contact parameter: +sip.instance="<urn:uuid:00000000-0000-0000-0000-002155039275>"
            Contact parameter: +u.sip!model.ccm.cisco.com="308"\r\n
        Supported: (null),X-cisco-xsi-7.0.1
        Content-Length: 0
        Reason: SIP;cause=200;text="cisco-alarm:25 Name=SEP002155039275 Load=SIP41.8-5-2S Last=initialized"
            Reason Protocols: SIP
        Expires: 3600
The first reply is a "Status: 100 Trying" immediately followed by a "Status: 401 Unauthorized" message. I'm hoping someone can tell me what the VOIPo server doesn't like about this invite and I'll figure out how to beat this phone into submission.