atcomsystems.ca/forum
Posted By: simian123 SCM PnP XML file examples - 11/28/19 04:17 AM
Hi,

Currently experimenting with the use of SMT i series handsets running SCM firmware to connect to alternative VOIP systems (asterisk, etc)

We have a bunch of SMT handsets left over from an outgoing OfficeServ setup that will continue to be used, if possible.

I'm trying to "roll my own" PnP/DHCP/TFTP solution to get these handsets auto-configuring and registering to a new PBX, or whichever VOIP system I configure, so phone-by-phone manual setup can be avoided if possible. The ability to set station keys and AoM buttons would be a bonus.

The SCM firmware handsets run through a bootup sequence that requests a number of XML files over TFTP/HTTP from the SCM system.

Having an example of the files would be super helpful. Does anyone have an SCM system in a lab enviro where they'd be happy to send me a copy of these XML files?

The phones request the following files:

via TFTP:

sec_boot.xml

and via HTTP:

/sec_mac/sec_{mac}.xml
/scm_profile/sec_phone.xml
/scm_profile/sec_user_{id}.xml
/scm_profile/sec_line_{group_line}.xml
/scm_profile/sec_service_{group}.xml

/scm_profile/sec_key_xxxxxxxx.xml

Your help would be very much appreciated. Of course, happy to post results of experimentation back here for everyone to enjoy.

Thanks.
Posted By: nameless Re: SCM PnP XML file examples - 11/28/19 04:25 AM
First thing is you'll need to flash the scm firmware to the handsets. This is done automatically when the handsets first connect to a scm system, but can be done manually.
Posted By: simian123 Re: SCM PnP XML file examples - 11/28/19 04:46 AM
Yep. Have the SCM firmware. Happy to do this manually, but also keen to investigate how to ape the SCM auto-update procedure as well.
Posted By: simian123 Re: SCM PnP XML file examples - 11/29/19 12:21 AM
What I don't have is an SCM - just a retiring OfficeServ.
Posted By: simian123 Re: SCM PnP XML file examples - 12/04/19 03:18 AM
An update:

I acquired a copy of SCM firmware for an IPX300B unit. I unpacked it and had a dig around. Found a script in there called: samsung_config_generator.sh which takes a CSV file and puts out the sec_{mac}.xml files I asked about in my original post.

Funnily enough, the file is written by someone at Grandstream Networks, and the file it produces is the same format (matching P values and all) as the XML provisioning done by Grandstream SIP devices.

I've done some XML provisioning of Grandstream devices before, so I'll have a go at sending a file to one of my SMT-i3105 handsets via its PnP process and see what happens.

Will report back with results.
Posted By: simian123 Re: SCM PnP XML file examples - 12/05/19 03:33 AM
Red Herring, I think.

Interesting that the file is there, but my phone seemed to ignore its contents so I am assuming for now it's not related.

I'll keep looking.
Posted By: simian123 Re: SCM PnP XML file examples - 12/06/19 04:17 AM
sec_<phonemac>.xml file:

Code
<?xml version="1.0"?>
<MacProfile>
  <login_info id="2953" password ="34343"></login_info>
</MacProfile>

The phone then immediately requests /scm_profile/sec_user_2953.xml from the HTTP server. Filename is of course determined by the login_info text node in the previous file.

Reverse engineering the format of the sec_user_<userid>.xml file is proving difficult.
Posted By: simian123 Re: SCM PnP XML file examples - 12/12/19 04:48 AM
Code
<?xml version="1.0"?>
<UserProfile>
	<registrar>
		<server_1 addr="serveraddress" protocol="sip" port="5060" />
	</registrar>
</UserProfile>

saved as /scm_profile/sec_user_EXT#.xml gets me as far as "Connecting Server..." on the handset.

If someone could provide an example (sanitised for your security of course) of a sec_user file from an SCM or iBG system we might be able to push this further along an hopefully document the SMT-i series autoprovisioning process.

Without knowing more about the expected internals of this XML file, I will probably leave it there.
Posted By: FoneJacker Re: SCM PnP XML file examples - 12/12/19 10:53 PM
Have you tried installing the SCME software on an old PC? Its an ISO you can burn it to a DVD and install the system. Its linux based and might provide what you need?
Posted By: simian123 Re: SCM PnP XML file examples - 12/13/19 02:29 AM
No, I haven't. The SCM software I managed to get hold of is I think a package for SCMC - yes it's linux, but it's compiled for an ARM processor and won't go on a PC.

Certainly the executable I decompiled to get as far as I have was compiled for ARM anyway, and as far as I can tell it's the only executable or script I found in the system that writes to those files. All others are concerned with reading them, or scripts to delete them.

I'll scrounge around and see if I can obtain an SCME image somewhere.

Thanks for the info. smile
Posted By: simian123 Re: SCM PnP XML file examples - 12/13/19 02:45 AM
Checking out SCME now. Will post what I learn. smile
Posted By: simian123 Re: SCM PnP XML file examples - 12/13/19 05:36 AM
I've had a successful registration of an SMT-i3105 to a off-brand SIP server using TFTP/HTTP autoprovisioning with XML files.

I'll post all about it Monday, once I've had a little play.

Cheers. clap
Posted By: FoneJacker Re: SCM PnP XML file examples - 12/14/19 06:00 PM
That could come in quite handy let us know the ins and outs smile
Posted By: simian123 Re: SCM PnP XML file examples - 12/16/19 03:08 AM
This is going to be a long one. Here we go:

To get your SMT-i series phones autoprovisioning to a non-Samsung system, you're going to need:

- An SMT-i series handset (I've been using an SMT-i3105 in my testing), running the SCM firmware
- A DHCP server where you can configure DHCP option 43.
(phones running SCM firmware ignore DHCP option 128, which is used by phones running OS firmware)
- You need a TFTP server, accessible by the phone device
- An HTTP (Web) server, accessible by the phone device

You will see these tags along the way:
<tftp_server>
<http_server>
<sip_server>

Substitute the IP address for these servers as necessary. I haven't tested this process using hostnames instead of IPs. It would probably work - give it a try and report back.

There is no rule that says these can't all be the same server.

Configure your DHCP server to provide option 43 to your phones. The value you need is sec,tftp://<tftp_server>

The first file you want is "sec_boot.xml". It needs to be put in your TFTP server root.

sec_boot.xml
Code
<?xml version="1.0"?>
<BootProfile>
	<active_active enable="yes" />
	

	<user_profile type="http" body_type="xml" security="none" />
	
	<profile_tftp_server>
		<addr ip="<tftp_server>" dir="/" mac_dir="/sec_mac"/>
	</profile_tftp_server>

	<profile_tftp_server_pub>
		<addr ip="<tftp_server>" dir="/" mac_dir="/sec_mac"/>
	</profile_tftp_server_pub>

	
	<profile_http_server>
		<addr ip="<http_server>" port="80" dir="/scm_profile" mac_dir="/sec_mac"/>
	</profile_http_server>

	<profile_http_server_pub>
		<addr ip="<http_server>" port="80" dir="/scm_profile" mac_dir="/sec_mac"/>
	</profile_http_server_pub>


</BootProfile>

This user_profile tag tells your handset that the user profiles can be found via HTTP, and the profile_http_server tag tells your handset which HTTP server the user profiles can be found on and in which directories.

The next thing your phone does is attempt to download the 'mac profile'. If you've left the configuration in sec_boot.xml largely alone, it will attempt to get this from http://<http_server>/sec_mac/sec_MACADDRESS.xml, where MACADDRESS is the MAC address of your handset. This part of the filename MUST BE IN CAPITALS, and no separators. So, if your phone's mac address is f4d9.fb43.2312 then it will go looking for sec_F4D9FB432312.xml.

sec_MACADDRESS.xml
Code
<?xml version="1.0"?>
<MacProfile>
  <login_info id="6423" password ="398697"></login_info>
</MacProfile>

This tells the handset that it plays host to user 6423, and that the user should use password 398697 to keep configuring itself. It will use this to attempt to download the sec_user_USERID.xml file, in this case sec_user_6432.xml from http://<http_server>/scm_profile/sec_user_USERID.xml

If you wish, you can secure the scm_profile directory on your HTTP server with Basic authentication. The phone will authenticate using the username and password in the sec_MACADDRESS.xml file. I chose not to.

Before the phone downloads the sec_user_USERID.xml file, it downloads the sec_phone.xml file.

sec_phone.xml
Code
<?xml version="1.0" encoding="UTF-8"?>
<PhoneProfile>
  <tls_cert>
    <download_info mode="0" type="https" port="443" ca_dir="/sec_cert/COM" device_ca_dir="/sec_cert" format="PEM"/>
    <key_encryption enable="0"/>
  </tls_cert>
  <tls_cert_node_1>
    <download_info mode="0" type="https" port="443" ca_dir="/sec_cert/COM" device_ca_dir="/sec_cert" format="PEM"/>
    <key_encryption enable="0"/>
  </tls_cert_node_1>
  <port_info>
    <signal udp="5060" tcp="5060" tls="5061"/>
    <audio start="20000" end="24999"/>
    <video start="25000" end="29999"/>
  </port_info>
  <qos>
    <tos mode="1" type="dscp" control="26" media="46"/>
    <tos_wireless mode="1" type="dscp" control="48" media="48"/>
  </qos>
  <sip_timer>
    <t1 tmv="500"/>
    <t2 tmv="4000"/>
    <t4 tmv="5000"/>
    <gen_req tmv="32000"/>
    <reg_exp tmv="3600"/>
    <session_exp tmv="1800"/>
    <subs_exp tmv="3600"/>
    <fail_over tmv="7"/>
  </sip_timer>
  <premium_cid>
    <mode enable="0" type="external"/>
    <server addr=""/>
    <ext_server addr=""/>
    <ext_name display=""/>
    <img_server addr="<http_server>" protocol="https" port="443" dir="/sec_photo/down"/>
    <label>
      <charset>utf-8</charset>
      <dataset>
        <language>kor</language>
        <data name="이름" attribute="10"/>
        <data department="부서" attribute="13"/>
        <data position="직책" attribute="12"/>
        <data company="회사" attribute="11"/>
        <data type1="Office Phone Number" attribute="2"/>
        <data type2="Cellphone Number" attribute="1"/>
        <data type3="FAX Number" attribute="4"/>
        <data type4="E-mail" attribute="7"/>
        <data type5="" attribute="0"/>
        <data type6="" attribute="0"/>
        <data type7="" attribute="0"/>
        <data type8="" attribute="0"/>
        <data type9="" attribute="0"/>
        <data type10="" attribute="0"/>
        <data type11="" attribute="0"/>
        <data type12="" attribute="0"/>
        <data type13="" attribute="0"/>
        <data type14="" attribute="0"/>
        <data type15="" attribute="0"/>
        <data type16="" attribute="0"/>
        <data type17="" attribute="0"/>
        <data type18="" attribute="0"/>
        <data type19="" attribute="0"/>
        <data type20="" attribute="0"/>
      </dataset>
      <dataset>
        <language>eng</language>
        <data name="Name" attribute="10"/>
        <data department="Department" attribute="13"/>
        <data position="Position" attribute="12"/>
        <data company="Company" attribute="11"/>
        <data type1="Office Phone Number" attribute="2"/>
        <data type2="Cellphone Number" attribute="1"/>
        <data type3="FAX Number" attribute="4"/>
        <data type4="E-mail" attribute="7"/>
        <data type5="" attribute="0"/>
        <data type6="" attribute="0"/>
        <data type7="" attribute="0"/>
        <data type8="" attribute="0"/>
        <data type9="" attribute="0"/>
        <data type10="" attribute="0"/>
        <data type11="" attribute="0"/>
        <data type12="" attribute="0"/>
        <data type13="" attribute="0"/>
        <data type14="" attribute="0"/>
        <data type15="" attribute="0"/>
        <data type16="" attribute="0"/>
        <data type17="" attribute="0"/>
        <data type18="" attribute="0"/>
        <data type19="" attribute="0"/>
        <data type20="" attribute="0"/>
      </dataset>
    </label>
  </premium_cid>
  <premium_cid_pub>
    <mode enable="0" type="external"/>
    <server addr=""/>
    <ext_server addr=""/>
    <ext_name display=""/>
    <img_server addr="<http_server>" protocol="https" port="443" dir="/sec_photo/down"/>
    <label>
      <charset>utf-8</charset>
      <dataset>
        <language>kor</language>
        <data name="이름" attribute="10"/>
        <data department="부서" attribute="13"/>
        <data position="직책" attribute="12"/>
        <data company="회사" attribute="11"/>
        <data type1="Office Phone Number" attribute="2"/>
        <data type2="Cellphone Number" attribute="1"/>
        <data type3="FAX Number" attribute="4"/>
        <data type4="E-mail" attribute="7"/>
        <data type5="" attribute="0"/>
        <data type6="" attribute="0"/>
        <data type7="" attribute="0"/>
        <data type8="" attribute="0"/>
        <data type9="" attribute="0"/>
        <data type10="" attribute="0"/>
        <data type11="" attribute="0"/>
        <data type12="" attribute="0"/>
        <data type13="" attribute="0"/>
        <data type14="" attribute="0"/>
        <data type15="" attribute="0"/>
        <data type16="" attribute="0"/>
        <data type17="" attribute="0"/>
        <data type18="" attribute="0"/>
        <data type19="" attribute="0"/>
        <data type20="" attribute="0"/>
      </dataset>
      <dataset>
        <language>eng</language>
        <data name="Name" attribute="10"/>
        <data department="Department" attribute="13"/>
        <data position="Position" attribute="12"/>
        <data company="Company" attribute="11"/>
        <data type1="Office Phone Number" attribute="2"/>
        <data type2="Cellphone Number" attribute="1"/>
        <data type3="FAX Number" attribute="4"/>
        <data type4="E-mail" attribute="7"/>
        <data type5="" attribute="0"/>
        <data type6="" attribute="0"/>
        <data type7="" attribute="0"/>
        <data type8="" attribute="0"/>
        <data type9="" attribute="0"/>
        <data type10="" attribute="0"/>
        <data type11="" attribute="0"/>
        <data type12="" attribute="0"/>
        <data type13="" attribute="0"/>
        <data type14="" attribute="0"/>
        <data type15="" attribute="0"/>
        <data type16="" attribute="0"/>
        <data type17="" attribute="0"/>
        <data type18="" attribute="0"/>
        <data type19="" attribute="0"/>
        <data type20="" attribute="0"/>
      </dataset>
    </label>
  </premium_cid_pub>
  <premium_cid_node_1>
    <mode enable="0" type="external"/>
    <server addr=""/>
    <ext_server addr=""/>
    <ext_name display=""/>
    <img_server addr="" protocol="https" port="443" dir="/sec_photo/down"/>
    <label>
      <charset>utf-8</charset>
      <dataset>
        <language>kor</language>
        <data name="이름" attribute="10"/>
        <data department="부서" attribute="13"/>
        <data position="직책" attribute="12"/>
        <data company="회사" attribute="11"/>
        <data type1="Office Phone Number" attribute="2"/>
        <data type2="Cellphone Number" attribute="1"/>
        <data type3="FAX Number" attribute="4"/>
        <data type4="E-mail" attribute="7"/>
        <data type5="" attribute="0"/>
        <data type6="" attribute="0"/>
        <data type7="" attribute="0"/>
        <data type8="" attribute="0"/>
        <data type9="" attribute="0"/>
        <data type10="" attribute="0"/>
        <data type11="" attribute="0"/>
        <data type12="" attribute="0"/>
        <data type13="" attribute="0"/>
        <data type14="" attribute="0"/>
        <data type15="" attribute="0"/>
        <data type16="" attribute="0"/>
        <data type17="" attribute="0"/>
        <data type18="" attribute="0"/>
        <data type19="" attribute="0"/>
        <data type20="" attribute="0"/>
      </dataset>
      <dataset>
        <language>eng</language>
        <data name="Name" attribute="10"/>
        <data department="Department" attribute="13"/>
        <data position="Position" attribute="12"/>
        <data company="Company" attribute="11"/>
        <data type1="Office Phone Number" attribute="2"/>
        <data type2="Cellphone Number" attribute="1"/>
        <data type3="FAX Number" attribute="4"/>
        <data type4="E-mail" attribute="7"/>
        <data type5="" attribute="0"/>
        <data type6="" attribute="0"/>
        <data type7="" attribute="0"/>
        <data type8="" attribute="0"/>
        <data type9="" attribute="0"/>
        <data type10="" attribute="0"/>
        <data type11="" attribute="0"/>
        <data type12="" attribute="0"/>
        <data type13="" attribute="0"/>
        <data type14="" attribute="0"/>
        <data type15="" attribute="0"/>
        <data type16="" attribute="0"/>
        <data type17="" attribute="0"/>
        <data type18="" attribute="0"/>
        <data type19="" attribute="0"/>
        <data type20="" attribute="0"/>
      </dataset>
    </label>
  </premium_cid_node_1>
  <premium_cid_node_1_pub>
    <mode enable="0" type="external"/>
    <server addr=""/>
    <ext_server addr=""/>
    <ext_name display=""/>
    <img_server addr="" protocol="https" port="443" dir="/sec_photo/down"/>
    <label>
      <charset>utf-8</charset>
      <dataset>
        <language>kor</language>
        <data name="이름" attribute="10"/>
        <data department="부서" attribute="13"/>
        <data position="직책" attribute="12"/>
        <data company="회사" attribute="11"/>
        <data type1="Office Phone Number" attribute="2"/>
        <data type2="Cellphone Number" attribute="1"/>
        <data type3="FAX Number" attribute="4"/>
        <data type4="E-mail" attribute="7"/>
        <data type5="" attribute="0"/>
        <data type6="" attribute="0"/>
        <data type7="" attribute="0"/>
        <data type8="" attribute="0"/>
        <data type9="" attribute="0"/>
        <data type10="" attribute="0"/>
        <data type11="" attribute="0"/>
        <data type12="" attribute="0"/>
        <data type13="" attribute="0"/>
        <data type14="" attribute="0"/>
        <data type15="" attribute="0"/>
        <data type16="" attribute="0"/>
        <data type17="" attribute="0"/>
        <data type18="" attribute="0"/>
        <data type19="" attribute="0"/>
        <data type20="" attribute="0"/>
      </dataset>
      <dataset>
        <language>eng</language>
        <data name="Name" attribute="10"/>
        <data department="Department" attribute="13"/>
        <data position="Position" attribute="12"/>
        <data company="Company" attribute="11"/>
        <data type1="Office Phone Number" attribute="2"/>
        <data type2="Cellphone Number" attribute="1"/>
        <data type3="FAX Number" attribute="4"/>
        <data type4="E-mail" attribute="7"/>
        <data type5="" attribute="0"/>
        <data type6="" attribute="0"/>
        <data type7="" attribute="0"/>
        <data type8="" attribute="0"/>
        <data type9="" attribute="0"/>
        <data type10="" attribute="0"/>
        <data type11="" attribute="0"/>
        <data type12="" attribute="0"/>
        <data type13="" attribute="0"/>
        <data type14="" attribute="0"/>
        <data type15="" attribute="0"/>
        <data type16="" attribute="0"/>
        <data type17="" attribute="0"/>
        <data type18="" attribute="0"/>
        <data type19="" attribute="0"/>
        <data type20="" attribute="0"/>
      </dataset>
    </label>
  </premium_cid_node_1_pub>
  <uc_service>
    <vcs mode="0" addr="" port="0"/>
    <presence mode="0" addr="" port="0"/>
    <xml_browser mode="0" url=""/>
    <ldap mode="0" url="" domain="" id="" password=""/>
  </uc_service>
  <uc_service_pub>
    <vcs mode="0" addr="" port="0"/>
    <presence mode="0" addr="" port="0"/>
    <xml_browser mode="0" url=""/>
    <ldap mode="0" url="" domain="" id="" password=""/>
  </uc_service_pub>
  <uc_service_node_1>
    <vcs mode="0" addr="" port="0"/>
    <presence mode="0" addr="" port="0"/>
    <xml_browser mode="0" url=""/>
    <ldap mode="0" url="" domain="" id="" password=""/>
  </uc_service_node_1>
  <uc_service_node_1_pub>
    <vcs mode="0" addr="" port="0"/>
    <presence mode="0" addr="" port="0"/>
    <xml_browser mode="0" url=""/>
    <ldap mode="0" url="" domain="" id="" password=""/>
  </uc_service_node_1_pub>
  <tone_info>
    <tone_dial freq1="400" freq2="425" on_time1="10000" off_time1="0" on_time2="10000" off_time2="0" on_time3="0" off_time3="0"/>
    <tone_svc_dial freq1="350" freq2="440" on_time1="500" off_time1="100" on_time2="500" off_time2="500" on_time3="0" off_time3="0"/>
    <tone_vir_dial freq1="350" freq2="440" on_time1="65530" off_time1="0" on_time2="65530" off_time2="0" on_time3="0" off_time3="0"/>
    <tone_ringback freq1="425" freq2="450" on_time1="400" off_time1="200" on_time2="400" off_time2="2000" on_time3="0" off_time3="0"/>
    <tone_busy freq1="425" freq2="0" on_time1="375" off_time1="375" on_time2="0" off_time2="0" on_time3="0" off_time3="0"/>
    <tone_waiting freq1="440" freq2="0" on_time1="300" off_time1="10000" on_time2="0" off_time2="0" on_time3="0" off_time3="0"/>
    <tone_eov freq1="440" freq2="440" on_time1="100" off_time1="100" on_time2="100" off_time2="100" on_time3="0" off_time3="0"/>
    <tone_error freq1="400" freq2="400" on_time1="250" off_time1="200" on_time2="0" off_time2="0" on_time3="0" off_time3="0"/>
    <tone_bc1_ring freq1="1020" freq2="0" on_time1="2000" off_time1="4000" on_time2="0" off_time2="0" on_time3="0" off_time3="0"/>
    <tone_bc2_ring freq1="1020" freq2="0" on_time1="800" off_time1="400" on_time2="800" off_time2="4000" on_time3="0" off_time3="0"/>
    <tone_bc3_ring freq1="1020" freq2="0" on_time1="400" off_time1="200" on_time2="400" off_time2="200" on_time3="800" off_time3="4000"/>
    <tone_bc4_ring freq1="1020" freq2="0" on_time1="300" off_time1="200" on_time2="1000" off_time2="200" on_time3="300" off_time3="4000"/>
    <tone_bc5_ring freq1="1020" freq2="0" on_time1="500" off_time1="0" on_time2="0" off_time2="0" on_time3="0" off_time3="0"/>
    <tone_bc1_wait freq1="350" freq2="440" on_time1="300" off_time1="0" on_time2="0" off_time2="3000" on_time3="0" off_time3="0"/>
    <tone_bc2_wait freq1="350" freq2="440" on_time1="100" off_time1="100" on_time2="100" off_time2="3000" on_time3="0" off_time3="0"/>
    <tone_bc3_wait freq1="350" freq2="440" on_time1="100" off_time1="100" on_time2="100" off_time2="100" on_time3="100" off_time3="3000"/>
    <tone_bc4_wait freq1="350" freq2="440" on_time1="100" off_time1="100" on_time2="300" off_time2="100" on_time3="100" off_time3="3000"/>
    <tone_scm1_ring freq1="300" freq2="400" on_time1="1000" off_time1="2000" on_time2="0" off_time2="0" on_time3="0" off_time3="0"/>
    <tone_scm2_ring freq1="400" freq2="600" on_time1="1000" off_time1="3000" on_time2="0" off_time2="0" on_time3="0" off_time3="0"/>
    <tone_scm3_ring freq1="800" freq2="1000" on_time1="200" off_time1="200" on_time2="200" off_time2="200" on_time3="200" off_time3="4000"/>
    <tone_scm4_ring freq1="800" freq2="1000" on_time1="400" off_time1="200" on_time2="400" off_time2="4000" on_time3="0" off_time3="0"/>
    <tone_scm5_ring freq1="300" freq2="600" on_time1="400" off_time1="200" on_time2="400" off_time2="200" on_time3="400" off_time3="2000"/>
    <tone_scm6_ring freq1="600" freq2="1000" on_time1="400" off_time1="200" on_time2="400" off_time2="2000" on_time3="0" off_time3="0"/>
    <tone_scm7_ring freq1="300" freq2="800" on_time1="1000" off_time1="1000" on_time2="0" off_time2="0" on_time3="0" off_time3="0"/>
    <tone_scm8_ring freq1="400" freq2="1000" on_time1="3000" off_time1="1000" on_time2="0" off_time2="0" on_time3="0" off_time3="0"/>
    <tone_scm9_ring freq1="885" freq2="625" on_time1="400" off_time1="200" on_time2="400" off_time2="3000" on_time3="0" off_time3="0"/>
    <tone_scm10_ring freq1="800" freq2="600" on_time1="1000" off_time1="2000" on_time2="0" off_time2="0" on_time3="0" off_time3="0"/>
    <tone_scm11_ring freq1="400" freq2="0" on_time1="400" off_time1="200" on_time2="400" off_time2="200" on_time3="400" off_time3="1000"/>
    <tone_scm12_ring freq1="500" freq2="0" on_time1="1000" off_time1="4000" on_time2="0" off_time2="0" on_time3="0" off_time3="0"/>
    <tone_scm13_ring freq1="350" freq2="500" on_time1="600" off_time1="200" on_time2="200" off_time2="4000" on_time3="0" off_time3="0"/>
    <tone_scm14_ring freq1="450" freq2="600" on_time1="300" off_time1="400" on_time2="300" off_time2="2000" on_time3="0" off_time3="0"/>
    <tone_scm15_ring freq1="350" freq2="550" on_time1="300" off_time1="400" on_time2="300" off_time2="3000" on_time3="0" off_time3="0"/>
    <tone_scm16_ring freq1="400" freq2="600" on_time1="300" off_time1="400" on_time2="300" off_time2="4000" on_time3="0" off_time3="0"/>
    <tone_hold freq1="440" freq2="480" on_time1="500" off_time1="500" on_time2="500" off_time2="2500" on_time3="0" off_time3="0"/>
    <tone_ugent_wait freq1="340" freq2="440" on_time1="125" off_time1="250" on_time2="125" off_time2="1500" on_time3="0" off_time3="0"/>
    <tone_disconnect freq1="480" freq2="620" on_time1="500" off_time1="500" on_time2="0" off_time2="0" on_time3="0" off_time3="0"/>
    <tone_dnd freq1="480" freq2="620" on_time1="250" off_time1="250" on_time2="0" off_time2="0" on_time3="0" off_time3="0"/>
    <tone_mwi freq1="350" freq2="620" on_time1="1000" off_time1="250" on_time2="0" off_time2="0" on_time3="0" off_time3="0"/>
    <tone_lcr freq1="350" freq2="440" on_time1="1000" off_time1="250" on_time2="0" off_time2="0" on_time3="0" off_time3="0"/>
    <tone_confirm freq1="350" freq2="440" on_time1="50" off_time1="50" on_time2="0" off_time2="0" on_time3="0" off_time3="0"/>
  </tone_info>
  <directory_service_pub>
    <mode enable="1"/>
    <server addr="" protocol="http" port="80"/>
  </directory_service_pub>
  <directory_service_node_1_pub>
    <mode enable="1"/>
    <server addr="" protocol="http" port="80"/>
  </directory_service_node_1_pub>
  <directory_service>
    <mode enable="1"/>
    <server addr="<http_server>" protocol="http" port="80"/>
  </directory_service>
  <directory_service_node_1>
    <mode enable="1"/>
    <server addr="" protocol="http" port="80"/>
  </directory_service_node_1>
  <expanded_sound>
    <download_info mode="0" dir=""/>
    <dialtone filename="" format=""/>
    <dialtone filename="" format=""/>
  </expanded_sound>
  <ring_priority>scm</ring_priority>
  <keep_alive enable="0" interval="180"/>
  <keep_alive_node_1 enable="0" interval="180"/>
  <snmp>
    <server_1 addr="" port="11162"/>
    <server_2 addr="" port="11162"/>
    <server_3 addr="" port="11162"/>
  </snmp>
  <options use_speaker_key_for_group_listen="0"/>
  <tx_gain>
    <device model="SMT-i2205" value="5"/>
    <device model="SMT-i2205S" value="5"/>
    <device model="SMT-i3100" value="5"/>
    <device model="SMT-i5210" value="5"/>
    <device model="SMT-i5220" value="5"/>
    <device model="SMT-i5220S" value="5"/>
    <device model="SMT-i5230" value="5"/>
    <device model="SMT-i5243" value="5"/>
    <device model="SMT-i5264" value="5"/>
    <device model="SMT-i5343" value="5"/>
    <device model="SMT-i5210S" value="5"/>
    <device model="SMT-i6010" value="5"/>
    <device model="SMT-i6020" value="5"/>
    <device model="SMT-i6011" value="5"/>
    <device model="SMT-i6021" value="5"/>
  </tx_gain>
  <spot_news>
    <mode enable="0"/>
    <server url=""/>
    <phone listening_port="0" reg_interval="0"/>
  </spot_news>
  <spot_news_pub>
    <mode enable="0"/>
    <server url=""/>
    <phone listening_port="0" reg_interval="0"/>
  </spot_news_pub>
  <spot_news_node_1>
    <mode enable="0"/>
    <server url=""/>
    <phone listening_port="0" reg_interval="0"/>
  </spot_news_node_1>
  <spot_news_node_1_pub>
    <mode enable="0"/>
    <server url=""/>
    <phone listening_port="0" reg_interval="0"/>
  </spot_news_node_1_pub>
  <line_skipping mode="default"/>
  <tls_info version="1.0"/>
  <country_code>AU</country_code>
  <phone_decorate>
    <wallpaper>
      <options download="0" dir="" set_forced="0"/>
      <image filename="" size=""/>
    </wallpaper>
    <melody>
      <options download="0" dir="" set_forced="0"/>
      <melody filename="" size=""/>
    </melody>
  </phone_decorate>
  <line_lock_out enable="0" tone_play="1"/>
  <hook_detect_timer hook_on="250" hook_off="0"/>
  <hook_flash_detect_timer>400</hook_flash_detect_timer>
</PhoneProfile>

The sec_phone file describes to the handset how to find directory info, where to download user portraits for handsets with high res screens and so on. Most of these features I don't know how to use, nor do I have a capable handset to test, so haven't experimented.

What you will see in this file is the dialtone definitions. I've modified the dialtones to suit australian expectations. You'll need to modify to suit your environment.

The phone then downloads the sec_user xml file:

sec_user_USERID.xml
Code
<?xml version="1.0" encoding="UTF-8"?>
<UserProfile>
  <server_type>not_a_samsung</server_type>
  <division>node_0</division>
  <display_charset>utf-8</display_charset>
  <profiles>
    <service filename="sec_service.xml"/>
    <dialplan filename="sec_dialplan.xml"/>
    <dialtone filename="sec_dialtone.xml"/>
    <line filename="sec_line_6423.xml"/>
    <softmenu filename="sec_softmenu_eng.xml"/>
    <key_program_menu filename="sec_program_key_eng.xml"/>
    <supplement filename="sec_supplement_6423.xml"/>
  </profiles>
  <profile_id>6423</profile_id>
  <profile_type type="private" public_key="public"/>
  <language>eng</language>
  <display_priority>normal</display_priority>
  <offhook_alarm enable="0"/>
  <transport_conn_reuse enable="1"/>
  <transport_conn_reuse_node_1 enable="1"/>
  <data media="rtp" dtmf="rfc2833" dtmf_payload="101"/>
  <survivable_proxy>
    <server domain="" addr="" protocol="" port=""/>
  </survivable_proxy>
  <sntp>
    <server_1 addr="<sntp_server>"/>
    <server_2 addr=""/>
    <options zone_offset="600" dst="1" dst_start_time="M10.1.0/01:59:59" dst_bias_time="03:00:00" dst_end_time="M4.1.0/02:59:59" refresh="1440" zone_info="Australia/Melbourne"/>
  </sntp>
  <registrar>
    <server_1 domain="<sip_domain>" addr="<sip_server>" protocol="UDP" port="5060"/>
    <server_2 domain="" addr="" protocol="" port=""/>
    <server_3 domain="" addr="" protocol="" port=""/>
  </registrar>
  <registrar_node_1>
    <server_1 domain="" addr="" protocol="" port=""/>
    <server_2 domain="" addr="" protocol="" port=""/>
    <server_3 domain="" addr="" protocol="" port=""/>
  </registrar_node_1>
  <registrar_pub>
    <server_1 domain="" addr="" protocol="" port=""/>
    <server_2 domain="" addr="" protocol="" port=""/>
    <server_3 domain="" addr="" protocol="" port=""/>
  </registrar_pub>
  <registrar_node_1_pub>
    <server_1 domain="" addr="" protocol="" port=""/>
    <server_2 domain="" addr="" protocol="" port=""/>
    <server_3 domain="" addr="" protocol="" port=""/>
  </registrar_node_1_pub>
  <outbound_proxy>
    <server_1 domain="" addr="" protocol="" port=""/>
    <server_2 domain="" addr="" protocol="" port=""/>
    <server_3 domain="" addr="" protocol="" port=""/>
  </outbound_proxy>
  <outbound_proxy_node_1>
    <server_1 domain="" addr="" protocol="" port=""/>
    <server_2 domain="" addr="" protocol="" port=""/>
    <server_3 domain="" addr="" protocol="" port=""/>
  </outbound_proxy_node_1>
  <sms>
    <mode enable="1" type="internal"/>
    <server_1 domain="<sip_domain>" addr="<sip_server>" protocol="UDP" port="5060"/>
    <server_2 domain="" addr="" protocol="" port=""/>
    <server_3 domain="" addr="" protocol="" port=""/>
  </sms>
  <survivable_proxy_pub>
    <server domain="" addr="" protocol="" port=""/>
  </survivable_proxy_pub>
  <sntp_pub>
    <server_1 addr=""/>
    <server_2 addr=""/>
    <options zone_offset="600" dst="1" dst_start_time="M10.1.0/01:59:59" dst_bias_time="03:00:00" dst_end_time="M4.1.0/02:59:59" refresh="1440" zone_info="Australia/Melbourne"/>
  </sntp_pub>
  <outbound_proxy_pub>
    <server_1 domain="" addr="" protocol="" port=""/>
    <server_2 domain="" addr="" protocol="" port=""/>
    <server_3 domain="" addr="" protocol="" port=""/>
  </outbound_proxy_pub>
  <outbound_proxy_node_1_pub>
    <server_1 domain="" addr="" protocol="" port=""/>
    <server_2 domain="" addr="" protocol="" port=""/>
    <server_3 domain="" addr="" protocol="" port=""/>
  </outbound_proxy_node_1_pub>
  <sms_pub>
    <mode enable="1" type="internal"/>
    <server_1 domain="ug1.scm.com" addr="" protocol="UDP" port="5060"/>
    <server_2 domain="" addr="" protocol="" port=""/>
    <server_3 domain="" addr="" protocol="" port=""/>
  </sms_pub>
  <tls_key_decryption_info>
    <password type="direct" info=""/>
    <pdf_info device_id="" salt="" ic="512" dk="20"/>
  </tls_key_decryption_info>
  <tls_key_decryption_info_node_1>
    <password type="direct" info=""/>
    <pdf_info device_id="" salt="" ic="512" dk="20"/>
  </tls_key_decryption_info_node_1>
</UserProfile>

OK. So the sec_user_USERID.xml file basically says which SIP server we're using. It also defines:

- the time server - swap in your network values for <sntp_server>.
- daylight savings settings. You can see the settings for Australia/Melbourne above. We start on the first (1) sunday (0) of Octobe (10), and finish on the first sunday of April, hence the M10.1.0 and M4.1.0 above.

I'd guess that a lot of the unused settings could be excised here, but I haven't tested that yet.

The important thing in the sec_user_USERID.xml file is the contents of the <profiles> tag. These describe the next lot of files the handset will download. The first of these is the line file, sec_line_LINEID.xml, where LINEID in this case is 6423.

sec_line_LINEID.xml
Code
<?xml version="1.0" encoding="UTF-8"?>
<LineProfile>
  <display charset="utf-8"/>
  <dual_regist>2</dual_regist>
  <line_authname>6423</line_authname>
  <line_displayname>Simian123</line_displayname>
  <line_name>6423</line_name>
  <public_num></public_num>
  <line_password>398697</line_password>
  <station_display_num></station_display_num>
  <station_display>0</station_display>
  <msg_subscription_uri></msg_subscription_uri>
  <call_intrusion>2</call_intrusion>
  <intrusion_no_tone>2</intrusion_no_tone>
  <cf_all>1</cf_all>
  <cf_all_num></cf_all_num>
  <cf_noanswer>1</cf_noanswer>
  <cf_noanswer_num></cf_noanswer_num>
  <cf_busy>1</cf_busy>
  <cf_busy_num></cf_busy_num>
  <cf_unreg>1</cf_unreg>
  <cf_unreg_num></cf_unreg_num>
  <gcf_all>1</gcf_all>
  <gcf_all_num></gcf_all_num>
  <remote_office>1</remote_office>
  <remote_office_num></remote_office_num>
  <pick_up_group>2</pick_up_group>
  <pick_up_direct>2</pick_up_direct>
  <dnd>1</dnd>
  <dnd_white_lists></dnd_white_lists>
  <dnd_override>0</dnd_override>
  <hot_line>1</hot_line>
  <hot_line_num></hot_line_num>
  <hot_line_timer>3</hot_line_timer>
  <absentee>1</absentee>
  <conference>2</conference>
  <mcid>2</mcid>
  <wake_up>1</wake_up>
  <wake_up_type></wake_up_type>
  <wake_up_time></wake_up_time>
  <intercom_codes></intercom_codes>
  <call_park>2</call_park>
  <call_back>2</call_back>
  <last_call_redial>2</last_call_redial>
  <cru>1</cru>
  <auto_answer>1</auto_answer>
  <follow_me>1</follow_me>
  <follow_me_num></follow_me_num>
  <call_appearance></call_appearance>
  <no_ring>1</no_ring>
  <ame>2</ame>
  <auto_redial>1</auto_redial>
  <record>2</record>
  <paging>2</paging>
  <predefined_conf>2</predefined_conf>
  <acd></acd>
  <hot_desk>1</hot_desk>
  <hot_desk_max_time>8</hot_desk_max_time>
  <call_waiting>1</call_waiting>
  <station_barring>none</station_barring>
  <premium_cid>2</premium_cid>
  <extension_replaced_num></extension_replaced_num>
  <public_replaced_num></public_replaced_num>
  <public_replaced_name></public_replaced_name>
  <phone_bridge_record></phone_bridge_record>
  <phone_bridge_record_access_num>880880</phone_bridge_record_access_num>
  <extension_replaced>1</extension_replaced>
</LineProfile>

As you can see, the sec_line_LINEID.xml file contains the line details for the handset, like auth id and password. It also defines the display name that appears on the screen of the handset. You'll see I've got my handle in there.

The next file the handset will go for (defined in the user xml file) is the sec_service.xml file.

sec_service.xml
Code
<?xml version="1.0" encoding="UTF-8"?>
<ServiceProfile>
  <fc_cfa_act>*611</fc_cfa_act>
  <fc_cfa_deact>*610</fc_cfa_deact>
  <fc_cfb_act>*621</fc_cfb_act>
  <fc_cfb_deact>*620</fc_cfb_deact>
  <fc_cfna_act>*631</fc_cfna_act>
  <fc_cfna_deact>*630</fc_cfna_deact>
  <fc_cfur_act>*661</fc_cfur_act>
  <fc_cfur_deact>*660</fc_cfur_deact>
  <fc_abs_act>*411</fc_abs_act>
  <fc_abs_deact>*410</fc_abs_deact>
  <fc_wakeup_call_act>*451</fc_wakeup_call_act>
  <fc_wakeup_call_deact>*450</fc_wakeup_call_deact>
  <fc_dnd_act>*401</fc_dnd_act>
  <fc_dnd_deact>*400</fc_dnd_deact>
  <fc_cru_act>*421</fc_cru_act>
  <fc_cru_deact>*420</fc_cru_deact>
  <fc_auto_redial_act>*171</fc_auto_redial_act>
  <fc_auto_redial_deact>*170</fc_auto_redial_deact>
  <fc_callback_act>*161</fc_callback_act>
  <fc_callback_deact>*160</fc_callback_deact>
  <fc_rmo_act></fc_rmo_act>
  <fc_rmo_deact></fc_rmo_deact>
  <fc_multi_ring_act>*461</fc_multi_ring_act>
  <fc_multi_ring_deact>*460</fc_multi_ring_deact>
  <fc_multi_ring_set>*471</fc_multi_ring_set>
  <fc_multi_ring_del>*470</fc_multi_ring_del>
  <fc_no_ring_act>*441</fc_no_ring_act>
  <fc_no_ring_deact>*440</fc_no_ring_deact>
  <fc_auto_ans_enable>*431</fc_auto_ans_enable>
  <fc_auto_ans_disable>*430</fc_auto_ans_disable>
  <fc_ame_start>*201</fc_ame_start>
  <fc_ame_stop>*200</fc_ame_stop>
  <fc_ame_enable>*211</fc_ame_enable>
  <fc_ame_disable>*210</fc_ame_disable>
  <fc_callwait_enable>*181</fc_callwait_enable>
  <fc_callwait_disable>*180</fc_callwait_disable>
  <fc_follow_me_act>*671</fc_follow_me_act>
  <fc_follow_me_deact>*670</fc_follow_me_deact>
  <fc_call_record_start>*22</fc_call_record_start>
  <fc_cc_start>*89</fc_cc_start>
  <fc_call_park>*11</fc_call_park>
  <fc_call_intrusion>*23</fc_call_intrusion>
  <fc_call_intrusion_no_tone>*24</fc_call_intrusion_no_tone>
  <fc_dnd_override_start>*25</fc_dnd_override_start>
  <fc_temporaty_cid_barring_start>*35</fc_temporaty_cid_barring_start>
  <fc_mal_call>*26</fc_mal_call>
  <fc_call_pickup_group>**</fc_call_pickup_group>
  <fc_call_park_retrieve>*12</fc_call_park_retrieve>
  <fc_call_pickup_direct>*0</fc_call_pickup_direct>
  <fc_last_call_redial>*31</fc_last_call_redial>
  <fc_acc_voluntary_start>*36</fc_acc_voluntary_start>
  <fc_intercom>*30</fc_intercom>
  <fc_ums_start>*88</fc_ums_start>
  <fc_shared_call_retrieve_start>*15</fc_shared_call_retrieve_start>
  <fc_acd_login>*501</fc_acd_login>
  <fc_acd_logout>*500</fc_acd_logout>
  <fc_acd_work_set>*521</fc_acd_work_set>
  <fc_acd_work_unset>*520</fc_acd_work_unset>
  <fc_acd_break_set>*511</fc_acd_break_set>
  <fc_acd_break_unset>*510</fc_acd_break_unset>
  <fc_me_pick_on_desk_start>*14</fc_me_pick_on_desk_start>
  <fc_svc_passwd_set>*33</fc_svc_passwd_set>
  <fc_pref_lang_set>*34</fc_pref_lang_set>
  <fc_predefined_cc_start></fc_predefined_cc_start>
  <fc_progressive_cc_start></fc_progressive_cc_start>
  <fc_meetme_cc_join_start>*82</fc_meetme_cc_join_start>
  <fc_cc_on_ans_start>*81</fc_cc_on_ans_start>
  <fc_ums_memo_start>#</fc_ums_memo_start>
  <fc_ums_msgl_start>*85</fc_ums_msgl_start>
  <fc_ums_admn_start>*86</fc_ums_admn_start>
  <fc_page_start>*55</fc_page_start>
  <fc_vm_transfer_start>*87</fc_vm_transfer_start>
  <fc_stg_in>*531</fc_stg_in>
  <fc_stg_out>*530</fc_stg_out>
  <fc_disable_cwt_for_next_call>*79</fc_disable_cwt_for_next_call>
  <fc_disable_cwt_for_cur_call>*78</fc_disable_cwt_for_cur_call>
  <fc_act_cc>*77</fc_act_cc>
  <fc_drop_list_join_party></fc_drop_list_join_party>
  <fc_all_cf_clear>*60</fc_all_cf_clear>
  <fc_all_feature_clear>*99</fc_all_feature_clear>
  <fc_remote_set>*70</fc_remote_set>
  <fc_remote_set_barr_set>*71</fc_remote_set_barr_set>
  <fc_attcon_continue_call>*73</fc_attcon_continue_call>
  <fc_intercept_call>*72</fc_intercept_call>
  <fc_call_park_orbit>*10</fc_call_park_orbit>
  <fc_group_callforward_reg>*681</fc_group_callforward_reg>
  <fc_group_callforward_clear>*680</fc_group_callforward_clear>
  <fc_last_receive_call_redial>*32</fc_last_receive_call_redial>
  <fc_callforward_busy_and_noanswer_reg>*641</fc_callforward_busy_and_noanswer_reg>
  <fc_callforward_busy_and_noanswer_clear>*640</fc_callforward_busy_and_noanswer_clear>
  <fc_isc_insert></fc_isc_insert>
  <fc_isc_del></fc_isc_del>
  <fc_ringplan_override_enable></fc_ringplan_override_enable>
  <fc_ringplan_override_disable></fc_ringplan_override_disable>
  <fc_predefined_msg></fc_predefined_msg>
  <fc_dispatch_conference></fc_dispatch_conference>
  <fc_peer_call_intercept>*75</fc_peer_call_intercept>
  <fc_pagong_on_answer></fc_pagong_on_answer>
  <fc_ht_staff_loc></fc_ht_staff_loc>
  <fc_ht_staff_svc></fc_ht_staff_svc>
  <fc_ht_cos_chg></fc_ht_cos_chg>
  <fc_reminder_r></fc_reminder_r>
  <fc_reminder_c></fc_reminder_c>
  <fc_conf_join_sca></fc_conf_join_sca>
  <fc_conf_intercom></fc_conf_intercom>
  <fc_mv_to_mobile>*19</fc_mv_to_mobile>
  <fc_make_isc_call></fc_make_isc_call>
  <fc_dts_call></fc_dts_call>
  <fc_unknown></fc_unknown>
  <fc_cancel_mv>*98</fc_cancel_mv>
  <fc_nfc_move></fc_nfc_move>
  <fc_nfc_intercept></fc_nfc_intercept>
  <fc_mv_to_mtd></fc_mv_to_mtd>
  <fc_unknown>*131</fc_unknown>
  <fc_unknown>*130</fc_unknown>
  <fc_divert_to_number></fc_divert_to_number>
  <fc_unknown></fc_unknown>
  <fc_moved_call_pickup></fc_moved_call_pickup>
  <fc_unknown></fc_unknown>
  <fc_unknown></fc_unknown>
  <fc_unknown></fc_unknown>
  <fc_unknown></fc_unknown>
  <fc_unknown></fc_unknown>
  <mwi_method>1</mwi_method>
  <vm_ext_num>880880</vm_ext_num>
  <line_seize_report enable="0"/>
  <options>
    <calllog store_missed_in_busy="1"/>
    <calllog update_peerinfo_for_pickup_group="1"/>
    <calllog update_peerinfo_for_pickup_direct="1"/>
    <calllog update_peerinfo_for_park_retrieve="1"/>
    <calllog update_peerinfo_for_shared_call_retrieve="1"/>
    <calllog update_peerinfo_for_redial="1"/>
    <call hide_dtmf_digit="0"/>
    <phone display_profile_update="1"/>
  </options>
</ServiceProfile>

As you can see, the service xml file defines the system feature codes the handset dials when you use buttons like DND and what not. I've left this one as defined by SCM, you can modify these codes to suit your system. I haven't tested modifications to this file yet.

The next file the handset downloads is sec_dialplan.xml.

sec_dialplan.xml
Code
<?xml version="1.0" encoding="UTF-8"?>
<DialPlan>
  <timer start="30" long="6" short="2"/>
  <end_of_digit value="#"/>
  <digitmap>2[25678]XX|6[123]XX|0[23456789]XXXXXXX|00[23478]XXXXXXXX|013[12]XXX|01[38]00XXXXXX|000</digitmap>
  <dts>
    <timer interdigit="3" total="10"/>
    <accesscode_map></accesscode_map>
  </dts>
  <disconnect_timer base="2" handset="5" service_wait="10"/>
</DialPlan>

As you can see, the dialplan xml file contains the dial plan for the handset. numbers that match the dial plan are immediately sent to the SIP server, rather than waiting for keypress timeout or the send (#) key. The dial plan you see above suits my internal PBX and my location - four digit numbers starting with 22, 25, 26, 27, 28, 61, 62, and 63 are dialled immediately, as are numbers that match local, interstate and 13/1300/1800 PSTN numbers, where prefaced by a leading zero. The emergency 000 (our 911) is in there as well. You should modify this to suit your environment. If you just want the normal timeout and # to dial, then delete the contents between <digitmap> and </digitmap>

The next file to be downloaded is sec_softmenu_eng.xml which contains the internationalised names of functions in the handset soft menu.

sec_softmenu_eng.xml
Code
<?xml version="1.0" encoding="UTF-8"?>
<SoftMenuProfile>
	<soft_menu_display charset="utf-8" />
	<soft_menu_idle>
		<function svc_tag="redial" display="Last Outgoing Redial" control="1" attribute="" num="" enable="1" />
		<function svc_tag="pickup_grp" display="My Group Pickup" control="1" attribute="" num="" enable="1" />
		<function svc_tag="park_ret" display="Park Pickup" control="1" attribute="" num="" enable="1" />
		<function svc_tag="vms" display="VM" control="1" attribute="" num="" enable="1" />
		<function svc_tag="paging" display="Station Paging" control="1" attribute="" num="" enable="1" />
		<function svc_tag="predefined_conf" display="Predefined Conf" control="1" attribute="" num="" enable="1" />
		<function svc_tag="pickup_dir" display="Direct Pickup" control="1" attribute="" num="" enable="1" />
		<function svc_tag="park_ret_id" display="Park Orbit Pickup" control="1" attribute="" num="" enable="1" />
		<function svc_tag="callback" display="Callback" control="1" attribute="" num="" enable="0" />
		<function svc_tag="callback_cancel" display="Callback Cancel" control="1" attribute="" num="" enable="0" />
		<function svc_tag="auto_redial" display="Auto Retry" control="1" attribute="" num="" enable="0" />
		<function svc_tag="auto_redial_cancel" display="Auto Retry Cancel" control="1" attribute="" num="" enable="0" />
		<function svc_tag="mcid" display="MCID" control="1" attribute="" num="" enable="0" />
		<function svc_tag="eov" display="Barge-In" control="1" attribute="" num="" enable="0" />
		<function svc_tag="eov_no_tone" display="Barge-In No Tone" control="1" attribute="" num="" enable="0" />
		<function svc_tag="intercom" display="Intercom" control="1" attribute="" num="" enable="0" />
		<function svc_tag="end_call" display="End Call" control="1" attribute="" num="" enable="0" />
		<function svc_tag="moved_call_pickup" display="Cancel Move" control="1" attribute="" num="" enable="1" />
	</soft_menu_idle>

	<soft_menu_busy>
		<function svc_tag="callback" display="Callback" control="1" attribute="" num="" enable="1" />
		<function svc_tag="auto_redial" display="Auto Retry" control="1" attribute="" num="" enable="1" />
		<function svc_tag="end_call" display="End Call" control="1" attribute="" num="" enable="1" />
		<function svc_tag="dnd_override" display="DND Override" control="1" attribute="" num="" enable="1" />
		<function svc_tag="eov" display="Barge-In" control="1" attribute="" num="" enable="1" />
		<function svc_tag="eov_no_tone" display="Barge-In No Tone" control="1" attribute="" num="" enable="1" />
		<function svc_tag="new_call" display="New Call" control="1" attribute="" num="" enable="1" />
	</soft_menu_busy>

	<soft_menu_conv>
		<function svc_tag="hold" display="Hold" control="1" attribute="" num="" enable="1" />
		<function svc_tag="attended_xfer" display="Transfer" control="1" attribute="" num="" enable="0" />
		<function svc_tag="swap" display="Swap" control="1" attribute="" num="" enable="1" />
		<function svc_tag="end_call" display="End Call" control="1" attribute="" num="" enable="1" />
		<function svc_tag="conf_adhoc" display="Conference" control="1" attribute="" num="" enable="0" />
		<function svc_tag="listen" display="Group Listen" control="1" attribute="" num="" enable="1"/>
		<function svc_tag="listen_off" display="Listen off" control="1" attribute="" num="" enable="1"/>
		<function svc_tag="park" display="Park" control="1" attribute="" num="" enable="1" />
		<function svc_tag="record" display="Record" control="1" attribute="" num="" enable="1" />
		<function svc_tag="paging" display="Station Paging" control="1" attribute="" num="" enable="1" />
		<function svc_tag="park_orbit" display="Park Orbit" control="1" attribute="" num="" enable="1" />
		<function svc_tag="vm_xfer" display="VM Transfer" control="1" attribute="" num="" enable="1" />
		<function svc_tag="conf_on_ans" display="Conf On Answer" control="1" attribute="" num="" enable="1" />
		<function svc_tag="mcid" display="MCID" control="1" attribute="" num="" enable="1" />
		<function svc_tag="mute" display="Mute" control="1" attribute="" num="" enable=&
								
Posted By: simian123 Re: SCM PnP XML file examples - 12/16/19 03:18 AM
I got cut off. Too long... here's the rest:

The next file to be downloaded is sec_softmenu_eng.xml which contains the internationalised names of functions in the handset soft menu.

sec_softmenu_eng.xml
Code
<?xml version="1.0" encoding="UTF-8"?>
<SoftMenuProfile>
	<soft_menu_display charset="utf-8" />
	<soft_menu_idle>
		<function svc_tag="redial" display="Last Outgoing Redial" control="1" attribute="" num="" enable="1" />
		<function svc_tag="pickup_grp" display="My Group Pickup" control="1" attribute="" num="" enable="1" />
		<function svc_tag="park_ret" display="Park Pickup" control="1" attribute="" num="" enable="1" />
		<function svc_tag="vms" display="VM" control="1" attribute="" num="" enable="1" />
		<function svc_tag="paging" display="Station Paging" control="1" attribute="" num="" enable="1" />
		<function svc_tag="predefined_conf" display="Predefined Conf" control="1" attribute="" num="" enable="1" />
		<function svc_tag="pickup_dir" display="Direct Pickup" control="1" attribute="" num="" enable="1" />
		<function svc_tag="park_ret_id" display="Park Orbit Pickup" control="1" attribute="" num="" enable="1" />
		<function svc_tag="callback" display="Callback" control="1" attribute="" num="" enable="0" />
		<function svc_tag="callback_cancel" display="Callback Cancel" control="1" attribute="" num="" enable="0" />
		<function svc_tag="auto_redial" display="Auto Retry" control="1" attribute="" num="" enable="0" />
		<function svc_tag="auto_redial_cancel" display="Auto Retry Cancel" control="1" attribute="" num="" enable="0" />
		<function svc_tag="mcid" display="MCID" control="1" attribute="" num="" enable="0" />
		<function svc_tag="eov" display="Barge-In" control="1" attribute="" num="" enable="0" />
		<function svc_tag="eov_no_tone" display="Barge-In No Tone" control="1" attribute="" num="" enable="0" />
		<function svc_tag="intercom" display="Intercom" control="1" attribute="" num="" enable="0" />
		<function svc_tag="end_call" display="End Call" control="1" attribute="" num="" enable="0" />
		<function svc_tag="moved_call_pickup" display="Cancel Move" control="1" attribute="" num="" enable="1" />
	</soft_menu_idle>

	<soft_menu_busy>
		<function svc_tag="callback" display="Callback" control="1" attribute="" num="" enable="1" />
		<function svc_tag="auto_redial" display="Auto Retry" control="1" attribute="" num="" enable="1" />
		<function svc_tag="end_call" display="End Call" control="1" attribute="" num="" enable="1" />
		<function svc_tag="dnd_override" display="DND Override" control="1" attribute="" num="" enable="1" />
		<function svc_tag="eov" display="Barge-In" control="1" attribute="" num="" enable="1" />
		<function svc_tag="eov_no_tone" display="Barge-In No Tone" control="1" attribute="" num="" enable="1" />
		<function svc_tag="new_call" display="New Call" control="1" attribute="" num="" enable="1" />
	</soft_menu_busy>

	<soft_menu_conv>
		<function svc_tag="hold" display="Hold" control="1" attribute="" num="" enable="1" />
		<function svc_tag="attended_xfer" display="Transfer" control="1" attribute="" num="" enable="0" />
		<function svc_tag="swap" display="Swap" control="1" attribute="" num="" enable="1" />
		<function svc_tag="end_call" display="End Call" control="1" attribute="" num="" enable="1" />
		<function svc_tag="conf_adhoc" display="Conference" control="1" attribute="" num="" enable="0" />
		<function svc_tag="listen" display="Group Listen" control="1" attribute="" num="" enable="1"/>
		<function svc_tag="listen_off" display="Listen off" control="1" attribute="" num="" enable="1"/>
		<function svc_tag="park" display="Park" control="1" attribute="" num="" enable="1" />
		<function svc_tag="record" display="Record" control="1" attribute="" num="" enable="1" />
		<function svc_tag="paging" display="Station Paging" control="1" attribute="" num="" enable="1" />
		<function svc_tag="park_orbit" display="Park Orbit" control="1" attribute="" num="" enable="1" />
		<function svc_tag="vm_xfer" display="VM Transfer" control="1" attribute="" num="" enable="1" />
		<function svc_tag="conf_on_ans" display="Conf On Answer" control="1" attribute="" num="" enable="1" />
		<function svc_tag="mcid" display="MCID" control="1" attribute="" num="" enable="1" />
		<function svc_tag="mute" display="Mute" control="1" attribute="" num="" enable="0" />
		<function svc_tag="mute_off" display="Mute off" control="1" attribute="" num="" enable="0" />
		<function svc_tag="resume" display="Resume" control="1" attribute="" num="" enable="0" />
		<function svc_tag="blind_xfer" display="Blind Transfer" control="1" attribute="" num="" enable="0" />
		<function svc_tag="new_call" display="New Call" control="1" attribute="" num="" enable="0" />
		<function svc_tag="answer_call" display="Answer" control="1" attribute="" num="" enable="0" />
		<function svc_tag="reject_call" display="Reject" control="1" attribute="" num="" enable="0" />
		<function svc_tag="record_off" display="Record Off" control="1" attribute="" num="" enable="1" />
		<function svc_tag="move_to_mobile" display="Move to Mobile" control="1" attribute="" num="" enable="1" />
		<function svc_tag="move_to_number" display="Move to Number" control="1" attribute="" num="" enable="1" />
		<function svc_tag="move_to_mtd" display="Move to Multi-Device" control="1" attribute="" num="" enable="1" />
		<function svc_tag="cancel_move" display="Cancel Move" control="1" attribute="" num="" enable="1" />		
	</soft_menu_conv>

	<soft_menu_ring>
		<function svc_tag="answer_call" display="Answer" control="1" attribute="" num="" enable="1" />
		<function svc_tag="reject_call" display="Reject" control="1" attribute="" num="" enable="1" />
		<function svc_tag="ame" display="AME" control="1" attribute="" num="" enable="1" />
		<function svc_tag="vm_fwd" display="Deflect To VM" control="1" attribute="" num="" enable="1" />
	</soft_menu_ring>
</SoftMenuProfile>

I didn't modify the sec_softmenu_eng.xml file.

The next file to be downloaded is sec_dialtone.xml

sec_dialtone.xml
Code
<?xml version="1.0" encoding="UTF-8"?>
<DialTone>
  <digitmap>0</digitmap>
</DialTone>

This file sets the digit map a user dials to have the dial tone change to the tone_vir_dial dialtone set in the sec_phone.xml file. If your users dial a leading zero to access an outside line, this setting will cause the dialtone to change as soon as the handset sees the zero. Useful for old timer phone users who expect a prompt tone for an external line. Alter as you see fit. Remove the contents between <digitmap> and </digitmap> to never have the dialtone change.

Next file is sec_program_key_eng.xml.

sec_program_key_eng.xml
Code
<?xml version="1.0" encoding="UTF-8"?>
<KeyProgramProfile>
	<button_programming_menu>
		<display charset="utf-8"/>
		<svc_info code="17" display="AME Enable" need_val="0" />
		<svc_info code="18" display="AME Mode" need_val="0" />
		<svc_info code="15" display="Absence" need_val="0" />
		<svc_info code="19" display="Auto Answer Mode" need_val="0" />
		<svc_info code="1" display="BLF" need_val="1" />
		<svc_info code="9" display="DND" need_val="0" />
		<svc_info code="25" display="Forward All" need_val="1" />
		<svc_info code="26" display="Forward Busy" need_val="1" />
		<svc_info code="27" display="Forward Busy/NoAns" need_val="1" />
		<svc_info code="28" display="Forward Clear" need_val="0" />
		<svc_info code="30" display="Forward No Answer" need_val="1" />
		<svc_info code="60" display="Headset" need_val="0" />
		<svc_info code="32" display="Last Incoming Redial" need_val="0" />
		<svc_info code="33" display="Last Outgoing Redial" need_val="0" />
		<svc_info code="35" display="Meet-Me Conference" need_val="0" />
		<svc_info code="36" display="Mobile Pickup" need_val="0" />
		<svc_info code="37" display="Multi-Ring Enable" need_val="0" />
		<svc_info code="38" display="My Group Pickup" need_val="0" />
		<svc_info code="3"  display="One Touch Dial" need_val="1" />
		<svc_info code="59" display="One Touch Transfer" need_val="1" />
		<svc_info code="40" display="Park Extension" need_val="0" />
		<svc_info code="41" display="Park Orbit" need_val="0" />
		<svc_info code="42" display="Park Pickup" need_val="0" />
		<svc_info code="55" display="Predefined Text Message" need_val="1" />
		<svc_info code="14" display="System Speed Dial" need_val="1" />
		<svc_info code="45" display="Transfer to VM" need_val="0" />
		<svc_info code="62" display="Deflect to VM" need_val="0" />
		<svc_info code="46" display="VM Access" need_val="0" />
		<svc_info code="63" display="Other User MWI" need_val="1" />		
		<svc_info code="48" display="VM Quick Memo" need_val="1" />
		<svc_info code="57" display="VM Reminder" need_val="0" />
		<svc_info code="50" display="Wake-Up Cancel" need_val="0" />
		<svc_info code="51" display="Wake-Up Set" need_val="0" />
		<svc_info code="61" display="Second Service Class" need_val="0" />
		<svc_info code="64" display="Phone Logout" need_val="0" />
		<svc_info code="65" display="Move To Mobile" need_val="0" />
		<svc_info code="67" display="Ring Plan Override Set" need_val="1" />
		<svc_info code="68" display="Ring Plan Override Cancel" need_val="1" />
		<svc_info code="69" display="Trunk Redial" need_val="0" />
	</button_programming_menu>
</KeyProgramProfile>

I didn't modify the sec_program_key_eng.xml file.

Next and last file is the sec_supplement_LINEID.xml file. LINEID matches the line id for the sec_line file. Of course, the handset will download whatever you tell it to in the sec_user file...

sec_supplement_LINEID.xml
Code
<?xml version="1.0" encoding="UTF-8"?>
<SupplementProfile>
  <display charset="utf-8"/>
  <programmable_button>
    <button index="1" display="6423" line_num="6423" code="0" blf_id="" attribute="callbtn" grp_num="" num=""/>
    <button index="2" display="6423" line_num="6423" code="0" blf_id="" attribute="callbtn" grp_num="" num=""/>
    <button index="3" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="4" display="Simian123" line_num="6422" code="0" blf_id="6422" attribute="callbtn" grp_num="" num="6422"/>
    <button index="5" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="6" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="7" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="8" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="9" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="10" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="11" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="12" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="13" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="14" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="15" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="16" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="17" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="18" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="19" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="20" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="21" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="22" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="23" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="24" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="25" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="26" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="27" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="28" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="29" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
    <button index="30" display="" line_num="" code="" blf_id="" attribute="" grp_num="" num=""/>
  </programmable_button>
  <options>
    <call hide_dtmf_digit=""/>
    <call auto_retrieve_in_xfer_cancel="0"/>
    <security telnet_access="0"/>
    <network WiFi_access="1"/>
    <service bluetooth="all" USB="all" NFC="1"/>
    <call sip_use_PRACK="0"/>
    <call media_use_CN="0"/>
    <call media_send_RTCP_in_inactive="0"/>
    <security WEB_allow_only_secured_access="0"/>
    <call media_offer_separately="disable"/>
    <phone EHS_Headset_operation_like_BT_Headset="0"/>
    <phone display_forward_num="1"/>
    <calllog xml_p_cid="0"/>
  </options>
  <tx_gain value=""/>
  <line_skipping mode="default"/>
  <offhook_line_seize primary_line="" next_line_select="disable"/>
  <call_history mode="on"/>
  <country_code></country_code>
  <nfc_call_mobility_info enable="" coupled_profile_id="" coupled_extension_num="" coupled_mobile_num=""/>
  <auto_login_info id="" password=""/>
  <move_key_user_info enable="1" dest_num=""/>
</SupplementProfile>

The supplement xml file sets the programmable buttons on the handset. I've done a little experimentation, which you can see on button 4, but haven't yet worked out how to set a dial button yet. Still experimenting.


In short:
You'll need at minimum:

DHCP with option 43 set to sec,tftp://<tftp_server>

tftp:

sec_boot.xml file

http:

/sec_mac/sec_MACADDRESS.xml
/scm_profile/sec_phone.xml
/scm_profile/sec_user_USERID.xml
/scm_profile/sec_line_LINEID.xml

With these files, the phone will register. If you want more, like control over dial plan or menu names etc. then you need to add some or all of these files:

http:

/scm_profile/sec_service.xml
/scm_profile/sec_dialplan.xml
/scm_profile/sec_softmenu_eng.xml
/scm_profile/sec_dialtone.xml
/scm_profile/sec_program_key_eng.xml
/scm_profile/sec_supplement_LINEID.xml


There's a good chance you can remove a lot of the crud (sections with no settings etc.) from the files and still have it work. Samsung doesn't see the need to do that, though, so why should we?

Apologies if I've left any of my settings in the files.

Enjoy.

PS.

Add-on-Modules:

I have an AoM, but I don't have a spare compatible handset. I need to juggle some gear around to free up an i5210 or i5230 to test the AoM process.

As I understand it, the process involves an additional sec_aom_MACADDRESS.xml file. More to come.

Posted By: nameless Re: SCM PnP XML file examples - 12/16/19 03:32 AM
The i5220s supports the aom but not the original 5220.
© Sundance Business VOIP Telephone Help