Digium/Sangoma D80 and freePBX - still a mission impossible? Seems not ;)

This is a working MAC.cfg-file for the Digium-D80 (Digium phones config module, easy-mode-off, advanced DPMA)…BE CAREFUL…change the locale setting back to english before use!!!

<?xml version="1.0" ?>
<config>
  <setting id="config_server_url" value="sip:[email protected]:5060;transport=udp" />
  <setting id="in_switchvox_environment" value="0" />
  <setting id="server_environment" value="DPMA" />
  <setting id="login_password" value="phone-password" />
  <setting id="time_zone" value="Europe/Vienna" />
  <setting id="time_source" value="ntp" />
  <setting id="ntp_server" value="0.at.pool.ntp.org" />
  <setting id="ntp_resync" value="86400" />
  <setting id="accept_local_calls" value="any" />
  <setting id="transport_udp_enabled" value="1" />
  <setting id="transport_udp_port" value="5060" />
  <setting id="transport_tcp_enabled" value="1" />
  <setting id="transport_tcp_port" value="5060" />
  <setting id="network_enable_dhcp" value="1" />
  <setting id="network_static_ip_address" value="" />
  <setting id="network_subnet_mask" value="" />
  <setting id="network_default_gateway" value="" />
  <setting id="network_domain_name" value="" />
  <setting id="network_primary_dns_server" value="" />
  <setting id="network_secondary_dns_server" value="" />
  <setting id="network_disable_arping" value="0" />
  <setting id="allow_insecure_ssl" value="0" />
  <setting id="logo_file" value="user" path="/user_image.png" url="" md5="dabf50a92e45764a0be1e44dd3a35215" />
  <setting id="display_mc_notification" value="1" />
  <setting id="display_pickup_notification" value="1" />
  <setting id="hide_completed_elsewhere" value="1" />
  <setting id="brightness" value="10" />
  <setting id="contrast" value="10" />
  <setting id="dim_backlight" value="1" />
  <setting id="backlight_timeout" value="30" />
  <setting id="backlight_dim_level" value="2" />
  <setting id="ringer_volume" value="5" />
  <setting id="lock_ringing_volume" value="0" />
  <setting id="speaker_volume" value="5" />
  <setting id="handset_volume" value="5" />
  <setting id="headset_volume" value="5" />
  <setting id="reset_call_volume" value="0" />
  <setting id="active_ringtone" value="Chimes" />
  <setting id="headset_answer" value="0" />
  <setting id="enable_blf_on_unused_line_keys" value="1" />
  <setting id="name_format" value="last_first" />
  <setting id="contacts_max_subscriptions" value="10" />
  <setting id="blf_contact_group" value="Default" />
  <setting id="sip_qos" value="3" />
  <setting id="rtp_qos" value="6" />
  <setting id="pc_qos" value="1" />
  <setting id="log_level" value="debug" />
  <setting id="web_ui_enabled" value="0" />
  <setting id="sip_dscp" value="24" />
  <setting id="rtp_dscp" value="46" />
  <setting id="udp_ka_interval" value="60" />
  <setting id="enable_check_sync" value="1" />
  <setting id="locale" value="de_DE" />
  <setting id="ehs" value="auto" />
  <setting id="ring_headset_only" value="0" />
  <setting id="call_waiting_tone" value="1" />
  <setting id="pc_vlan_id" value="" />
  <setting id="lan_port_mode" value="auto" />
  <setting id="pc_port_mode" value="auto" />
  <setting id="8021x_passthrough" value="0" />
  <setting id="8021x_eapol_on_disconnect" value="0" />
  <setting id="8021x_method" value="" />
  <setting id="8021x_identity" value="" />
  <setting id="8021x_anonymous_identity" value="" />
  <setting id="8021x_password" value="" />
  <setting id="8021x_client_cert" url="" value="" />
  <setting id="8021x_root_cert" url="" value="" />
  <setting id="8021x_debug" value="" />
  <setting id="parking_lot_extension" value="70" />
  <setting id="parking_lot_enable_blind_transfer" value="1" />
  <setting id="use_call_photos" value="1"  url="" />
  <setting id="expansion_enable" value="0" type="EXP100" page_indicators="0" />
      <appconfig id="appscreen">
        <application id="bluetooth" />
        <application id="voicemail" />
        <application id="parking" />
        <application id="status" />
        <application id="contacts" />
        <application id="call_log" />
        <application id="forward_calls" />
        <application id="LogOut" />
        <auto_start />
    </appconfig>
    <appconfig id="phonemenu">
      <auto_start />
    </appconfig>
    <appconfig id="contacts">
        <account account_id="21" username="21" password="password" appserver="dasp://192.168.0.34/json" apiformat="json"/>
        <display_rules>
            <display_rule id="0" action_id="monitor" show="0"/>
            <display_rule id="1" action_id="monitor" target_status="on_the_phone" show="1"/>
            <display_rule id="2" action_id="intercom" show="0"/>
            <display_rule id="3" action_id="intercom" target_status="idle" show="1"/>
            <display_rule id="4" action_id="dial_vm" phone_state="idle" show="0"/>
            <display_rule id="5" action_id="transfer_vm" show="0"/>
            <display_rule id="6" action_id="transfer_vm" phone_state="transfer" show="1"/>
        </display_rules>
        <settings can_transfer_vm="1" name_format="last_first" use_local_storage="0" preferred_contact_group="" />
        <settings in_switchvox_environment="0" />
        <auto_start />
    </appconfig>
    <appconfig id="status">
        <account account_id="21" username="21" password="password" appserver="dasp://192.168.0.34/json" apiformat="json"/>
        <auto_start />
    </appconfig>
    <appconfig id="call_log">
        <account account_id="21" username="21" password="password" appserver="dasp://192.168.0.34/json" apiformat="json"/>
        <auto_start />
    </appconfig>    
    <appconfig id="parking">
        <account account_id="21" username="21" password="password" appserver="dasp://192.168.0.34/json" apiformat="json"/>
        <auto_start />
    </appconfig>
    <appconfig id="voicemail">
        <account account_id="21" username="21" password="password" appserver="dasp://192.168.0.34/json" apiformat="json"/>
        <settings require_password="0" />
        <auto_start />
    </appconfig>
        <appconfig id="LogOut">
        <auto_start />
    </appconfig>
    <events>
        <event id="digium.incomingCall.voicemail" action="app" />
        <event id="digium.parkingLot.parked" action="app"/>
    </events>
  <contacts url ="http://192.168.0.34/digium_phones/blf-list.xml" id="internal" />
  <contacts url ="http://192.168.0.34/digium_phones/phonebook-1.xml" id="external" />
  <smart_blf>
  
    <blf_items url="http://192.168.0.34/digium_phones/21-blf.xml" />
      
  </smart_blf>
  <codecs>
    <codec id="PCMU" priority="11" packetization="20" jitter_min="0" jitter_max="0" jitter_target="0" enabled="0" />
    <codec id="PCMA" priority="125" packetization="20" jitter_min="0" jitter_max="0" jitter_target="0" enabled="1" />
    <codec id="G722" priority="255" packetization="20" jitter_min="0" jitter_max="0" jitter_target="0" enabled="1" />
    <codec id="G726-32" priority="7" packetization="20" jitter_min="0" jitter_max="0" jitter_target="0" enabled="0" />
    <codec id="G729" priority="4" packetization="20" jitter_min="0" jitter_max="0" jitter_target="0" enabled="0" />
    <codec id="L16" priority="2" packetization="20" jitter_min="0" jitter_max="0" jitter_target="0" enabled="0" />
    <codec id="L16-256" priority="1" packetization="20" jitter_min="0" jitter_max="0" jitter_target="0" enabled="0" />
  </codecs>
  <ringtones>
    <tones>
      <tone id="Alarm" display="Alarm" type="phone" />
      <tone id="Chimes" display="Chimes" type="phone" />
      <tone id="my_ringtone" display="my_ringtone" url="http://192.168.0.34/digium_phones/user_ringtone_1.raw" md5="abc123" type="user"/>
      <tone id="Digium" display="Digium" type="phone" />
      <tone id="GuitarStrum" display="Guitar Strum" type="phone" />
      <tone id="Jingle" display="Jingle" type="phone" />
      <tone id="Office" display="Office" type="phone" />
      <tone id="Office2" display="Office 2" type="phone" />
      <tone id="RotaryPhone" display="Rotary Phone" type="phone" />
      <tone id="SteelDrum" display="Steel Drum" type="phone" />
      <tone id="Techno" display="Techno" type="phone" />
      <tone id="Theme" display="Theme" type="phone" />
      <tone id="Tweedle" display="Tweedle" type="phone" />
      <tone id="Twinkle" display="Twinkle" type="phone" />
      <tone id="Vibe" display="Vibe" type="phone" />
      </tones>
  <alerts>
      <alert alert_info="&lt;http://127.0.0.1&gt;;info=normal" ringtone_id="Chimes" ring_type="normal" />
      <alert alert_info="&lt;http://127.0.0.1&gt;;info=Internal" ringtone_id="Digium" ring_type="normal" />
      <alert alert_info="&lt;http://127.0.0.1&gt;;info=Door" ringtone_id="Steeldrum" ring_type="normal" />
      <alert alert_info="&lt;http://127.0.0.1&gt;;info=ring-answer" ringtone_id="Theme" ring_type="ring-answer" />
      <alert alert_info="&lt;http://127.0.0.1&gt;;info=intercom"  ringtone_id=""  ring_type="answer" />
      <alert alert_info="&lt;http://127.0.0.1&gt;;info=visual"  ringtone_id=""  ring_type="visual" />
  </alerts>
  </ringtones>
  <firmwares>
      <firmware model="D80" version="1_12_8" url="http://192.168.0.34/digium_phones/firmware_1_12_8_package/1_12_8_D80_firmware.eff" />
  </firmwares>
  <multicastpage>
  </multicastpage>
  <accounts>
    <account index="0" status="1" register="1" account_id="21" username="21" authname="21" password="password" passcode="password" line_label="Reinhard-2" caller_id="Reinhard-2" dial_plan="xx.|*xx.|**xx." visual_voicemail="1" voicemail="11" outbound_proxy="" outbound_port="" subscription_extension="auto_hint_21" needMwiSubscription="1" >
      <host_primary
        server="192.168.0.34"
        port="5060"
        transport="udp"
        reregister="300"
        retry="25"
        num_retries="5"
        />
      <host_alternate
        server=""
        port="5060"
        transport="udp"
        reregister="300"
        retry="25"
        />
  <permission id="use_voicemail" value="1" />
  <permission id="send_to_voicemail" value="0" />
  <permission id="ignore_calls" value="1" />
  <permission id="record_own_calls" value="1" />
  <setting id="parking_lot_extension" value="70" />
  <setting id="parking_lot_enable_blind_transfer" value="1" />
  <setting id="use_call_log_api" value="0" />
  <setting id="call_log_fetch_entries" value="50" />
    </account>
  </accounts>
    <keymap>
        <state id="idle">
            <softkeys>
             <key id="0" action="missed_or_call_log" />
             <key id="1" action="show_application" label1="_CONTACTS">
                <arg>contacts</arg>
             </key>
             <key id="2" action="show_application" label1="_PARKED_CALLS">
                <arg>parking</arg>
             </key>
             <key id="3" action="show_application" label1="_STATUS">
                <arg>status</arg>
             </key>
             <key id="4" action="forward_calls" label1="_FORWARD" />
             <key id="5" action="menu" />
            </softkeys>
        </state>
        <state id="hold">
            <softkeys>
                <key id="0" action="resume"/>
                <key id="1" action="none"/>
                <key id="2" action="none"/>
                <key id="3" action="end_call"/>
            </softkeys>
        </state>
        <state id="hold/transfer">
            <softkeys>
                <key id="0" action="resume"/>
                <key id="1" action="show_application" label1="_CONTACTS">
                    <arg>contacts</arg>
                </key>
                <key id="2" action="none"/>
                <key id="3" action="cancel_call"/>
            </softkeys>
        </state>
        <state id="hold/conference">
            <softkeys>
                <key id="0" action="resume"/>
                <key id="1" action="split_conference"/>
                <key id="2" action="none"/>
                <key id="3" action="end_call"/>
            </softkeys>
        </state>
        <state id="hold/preconference">
            <softkeys>
                <key id="0" action="resume"/>
                <key id="1" action="show_application" label1="_CONTACTS">
                    <arg>contacts</arg>
                </key>
                <key id="2" action="none"/>
                <key id="3" action="end_call"/>
            </softkeys>
        </state>
        <state id="incoming">
            <softkeys>
                <key id="0" action="accept_call"/>
                <key id="1" action="reject_call"/>
                <key id="2" action="transfer_call"/>
            </softkeys>
        </state>
        <state id="incoming/transfer">
            <softkeys>
                <key id="0" action="show_application" label1="_CONTACTS">
                    <arg>contacts</arg>
                </key>
                <key id="1" action="none"/>
                <key id="2" action="none"/>
                <key id="3" action="cancel_call"/>
            </softkeys>
        </state>
        <state id="connected">
            <softkeys>
               <key id="0" action="conference" />
               <key id="1" action="park_call" />
               <key id="2" action="record_call" />
               <key id="3" action="end_call" />
            </softkeys>
        </state>
        <state id="connected/conference">
            <softkeys>
                <key id="0" action="none"/>
                <key id="1" action="split_conference"/>
                <key id="2" action="record_call"/>
                <key id="3" action="end_call"/>
            </softkeys>
        </state>
        <state id="connected/transfer">
            <softkeys>
                <key id="0" action="transfer_call"/>
                <key id="1" action="none"/>
                <key id="2" action="none"/>
                <key id="3" action="end_call"/>
            </softkeys>
        </state>
        <state id="dial">
            <softkeys>
                <key id="0" action="toggle_url_number"/>
                <key id="1" action="show_application" label1="_CONTACTS">
                    <arg>contacts</arg>
                </key>
                <key id="2" action="none"/>
                <key id="3" action="cancel_call"/>
            </softkeys>
        </state>
        <state id="dial/conference">
            <softkeys>
                <key id="0" action="none"/>
                <key id="1" action="show_application" label1="_CONTACTS">
                    <arg>contacts</arg>
                </key>
                <key id="2" action="none"/>
                <key id="3" action="cancel_call"/>
            </softkeys>
        </state>
        <state id="dial/transfer">
            <softkeys>
                <key id="0" action="none"/>
                <key id="1" action="show_application" label1="_CONTACTS">
                    <arg>contacts</arg>
                </key>
                <key id="2" action="none"/>
                <key id="3" action="cancel_call"/>
            </softkeys>
        </state>
        <state id="dialing">
            <softkeys>
                <key id="0" action="make_call"/>
                <key id="1" action="backspace"/>
                <key id="2" action="none"/>
                <key id="3" action="cancel_call"/>
            </softkeys>
        </state>
        <state id="dialing/conference">
            <softkeys>
                <key id="0" action="make_call"/>
                <key id="1" action="show_application" label1="_CONTACTS">
                    <arg>contacts</arg>
                </key>
                <key id="2" action="backspace"/>
                <key id="3" action="cancel_call"/>
            </softkeys>
        </state>
        <state id="dialing/transfer">
            <softkeys>
                <key id="0" action="transfer_call"/>
                <key id="1" action="make_call"/>
                <key id="2" action="backspace"/>
                <key id="3" action="cancel_call"/>
            </softkeys>
        </state>
        <state id="failed">
            <softkeys>
                <key id="0" action="none"/>
                <key id="1" action="none"/>
                <key id="2" action="none"/>
                <key id="3" action="clear_call"/>
            </softkeys>
        </state>
        <state id="calling">
            <softkeys>
                <key id="0" action="none"/>
                <key id="1" action="none"/>
                <key id="2" action="none"/>
                <key id="3" action="end_call"/>
            </softkeys>
        </state>
  </keymap>
</config>

location is /etc/asterisk/digium_phones

blf-list.xml at /var/www/html/digium_phones (example, replace ext_name with original name of extension)

<phonebooks>
  <contacts group_name="Default" editable="1" id="0">
    <contact
	  id="0"
	  prefix=""
	  first_name=""
	  second_name=""
	  last_name="ext_name"
	  suffix=""
	  contact_type="sip"
	  organization=""
	  job_title=""
	  location=""
	  notes=""
	  account_id="11"
	  subscribe_to="sip:[email protected]"
	  >
	  <emails>
	  </emails>
	  <actions>
		<action id="pickupcall" dial="11" dial_prefix="**" label="Pickup" name="Pickup" />
		<action id="primary" dial="11" dial_prefix="" label="ext_name" name="ext_name" />
		<action id="itcm" dial="11" dial_prefix="*80" label="ITCM" name="ITCM" />
	  </actions>
	</contact>
    <contact
	  id="1"
	  prefix=""
	  first_name=""
	  second_name=""
	  last_name="ext_name"
	  suffix=""
	  contact_type="sip"
	  organization=""
	  job_title=""
	  location=""
	  notes=""
	  account_id="12"
	  subscribe_to="sip:[email protected]"
	  >
	  <emails>
	  </emails>
	  <actions>
		<action id="pickupcall" dial="12" dial_prefix="**" label="Pickup" name="Pickup" />
		<action id="primary" dial="12" dial_prefix="" label="ext_name" name="ext_name" />
		<action id="itcm" dial="12" dial_prefix="*80" label="ITCM" name="ITCM" />
	  </actions>
	</contact>
    <contact
	  id="2"
	  prefix=""
	  first_name=""
	  second_name=""
	  last_name="ext_name"
	  suffix=""
	  contact_type="sip"
	  organization=""
	  job_title=""
	  location=""
	  notes=""
	  account_id="13"
	  subscribe_to="sip:[email protected]"
	  >
	  <emails>
	  </emails>
	  <actions>
		<action id="pickupcall" dial="13" dial_prefix="**" label="Pickup" name="Pickup" />
		<action id="primary" dial="13" dial_prefix="" label="ext_name" name="ext_name" />
		<action id="itcm" dial="13" dial_prefix="*80" label="ITCM" name="ITCM" />
	  </actions>
	</contact>
    <contact
	  id="3"
	  prefix=""
	  first_name=""
	  second_name=""
	  last_name="ext_name"
	  suffix=""
	  contact_type="sip"
	  organization=""
	  job_title=""
	  location=""
	  notes=""
	  account_id="14"
	  subscribe_to="sip:[email protected]"
	  >
	  <emails>
	  </emails>
	  <actions>
		<action id="pickupcall" dial="14" dial_prefix="**" label="Pickup" name="Pickup" />
		<action id="primary" dial="14" dial_prefix="" label="ext_name" name="ext_name" />
		<action id="itcm" dial="14" dial_prefix="*80" label="ITCM" name="ITCM" />
	  </actions>
	</contact>
    <contact
	  id="4"
	  prefix=""
	  first_name=""
	  second_name=""
	  last_name="ext_name"
	  suffix=""
	  contact_type="sip"
	  organization=""
	  job_title=""
	  location=""
	  notes=""
	  account_id="15"
	  subscribe_to="sip:[email protected]"
	  >
	  <emails>
	  </emails>
	  <actions>
		<action id="pickupcall" dial="15" dial_prefix="**" label="Pickup" name="Pickup" />
		<action id="primary" dial="15" dial_prefix="" label="ext_name" name="ext_name" />
		<action id="itcm" dial="15" dial_prefix="*80" label="ITCM" name="ITCM" />
	  </actions>
	</contact>
    <contact
	  id="5"
	  prefix=""
	  first_name=""
	  second_name=""
	  last_name="ext_name"
	  suffix=""
	  contact_type="sip"
	  organization=""
	  job_title=""
	  location=""
	  notes=""
	  account_id="17"
	  subscribe_to="sip:[email protected]"
	  >
	  <emails>
	  </emails>
	  <actions>
		<action id="pickupcall" dial="17" dial_prefix="**" label="Pickup" name="Pickup" />
		<action id="primary" dial="17" dial_prefix="" label="ext_name" name="ext_name" />
		<action id="itcm" dial="17" dial_prefix="*80" label="ITCM" name="ITCM" />
	  </actions>
	</contact>
    <contact
	  id="6"
	  prefix=""
	  first_name=""
	  second_name=""
	  last_name="ext_name"
	  suffix=""
	  contact_type="sip"
	  organization=""
	  job_title=""
	  location=""
	  notes=""
	  account_id="18"
	  subscribe_to="sip:[email protected]"
	  >
	  <emails>
	  </emails>
	  <actions>
		<action id="pickupcall" dial="18" dial_prefix="**" label="Pickup" name="Pickup" />
		<action id="primary" dial="18" dial_prefix="" label="ext_name" name="ext_name" />
		<action id="itcm" dial="18" dial_prefix="*80" label="ITCM" name="ITCM" />
	  </actions>
	</contact>
    <contact
	  id="7"
	  prefix=""
	  first_name=""
	  second_name=""
	  last_name="ext_name"
	  suffix=""
	  contact_type="sip"
	  organization=""
	  job_title=""
	  location=""
	  notes=""
	  account_id="19"
	  subscribe_to="sip:[email protected]"
	  >
	  <emails>
	  </emails>
	  <actions>
		<action id="pickupcall" dial="19" dial_prefix="**" label="Pickup" name="Pickup" />
		<action id="primary" dial="19" dial_prefix="" label="ext_name" name="ext_name" />
		<action id="itcm" dial="19" dial_prefix="*80" label="ITCM" name="ITCM" />
	  </actions>
	</contact>
    <contact
	  id="8"
	  prefix=""
	  first_name=""
	  second_name=""
	  last_name="ext_name"
	  suffix=""
	  contact_type="sip"
	  organization=""
	  job_title=""
	  location=""
	  notes=""
	  account_id="20"
	  subscribe_to="sip:[email protected]"
	  >
	  <emails>
	  </emails>
	  <actions>
		<action id="pickupcall" dial="20" dial_prefix="**" label="Pickup" name="Pickup" />
		<action id="primary" dial="20" dial_prefix="" label="ext_name" name="ext_name" />
		<action id="itcm" dial="20" dial_prefix="*80" label="ITCM" name="ITCM" />
	  </actions>
	</contact>
    <contact
	  id="9"
	  prefix=""
	  first_name=""
	  second_name=""
	  last_name="ext_name"
	  suffix=""
	  contact_type="sip"
	  organization=""
	  job_title=""
	  location=""
	  notes=""
	  account_id="21"
	  subscribe_to="sip:[email protected]"
	  >
	  <emails>
	  </emails>
	  <actions>
		<action id="pickupcall" dial="21" dial_prefix="**" label="Pickup" name="Pickup" />
		<action id="primary" dial="21" dial_prefix="" label="ext_name" name="ext_name" />
		<action id="itcm" dial="21" dial_prefix="*80" label="ITCM" name="ITCM" />
	  </actions>
	</contact>
  </contacts>
</phonebooks>