[Amportal-devel] My plans for handset provisioning

I’ve been watching the “DevicesTakeTwo” and “GXP2000Config”,
“ImportExtensions” pages on the Wiki as well as bugs #459, #103, and
#1032.

I’ve been using Grandstream, Elmeg, and Snom devices for a little while
now and I’ve figured out how I think the provisioning and bootstrapping
of these should be handled in FreePBX. I’m intending to start work on
coding up my ideas ASAP and would like to see what other FreePBX
developers think of my solutions.

(a) Devices module

This page would let you define each unique make/model of device you wish
to use, e.e. “Grandstream GXP-2000”, “X-Lite PC softphone” etc. For each
device there are 3 sub-sections: General, Local, and Remote.

“Local” defines settings such as codecs used, SRTP used or not, for
handsets within the local instrastructure (i.e. same building), whereas
"Remote" defines settings for handsets external (remote sites, home
workers) where a different choice of codec, whether NAT is used, etc

General would define info common to both Local and Remote devices such
as:

Protocol to use: SIP / IAX
Firmware download: TFTP / HTTP
Firmware URL
Config file URL
Phonebook URL

All this information would be stored in MySQL in a “device_info” table.

(b) Provisioning page

Selecting “provision a new phone” would let the user pick the device
type from a dropdown list (populated from entries defined in device_info
table).

The user could select provisioning type as one of:

Complete bootstrap - the “add” screen would prompt for MAC address,
device type, IP address to allocate,
extension number to use, person’s name.

When device boots it uses DHCP server on FreePBX box which allocates
IP based
on MAC address provisioned and FreePBX also hosts TFTP and/or HTTP
server for the configuration
files and firmware for that device.

Config-only - the “add” screen" would prompt for IP address of
device, but NOT MAC address. FreePBX would expect
the (external) DHCP server to tell the phone the URL on FreePBX box
to use for config settings.

An external DHCP server handles address allocation, FreePBX box hosts
TFTP and/or HTTP server
for the configuration files and firmware for that device.

Autodetect - possible derivatives of the both 2 methods - some
devices indicate their make & model in
either their TFTP request and/or in their HTTP config file request,
we could possibly use this to
on-the-fly build a config file for the appropriate device.

“Import file” - read a CSV format file that defines extension
numbers, device MAC addresses,
device IP addresses, peoples names, device types etc to create the
config files in bulk.

© device firmwave module - to manage storing files on the FreePBX
server for HTTP/TFTP download

(d) Downloadable Phonebook generation

The Snom 360 and the beta Grandstream GXP-2000 firmware as well as
(apparently) Cisco handsets support downloading a XML-based phone book.
This module would manage the configuration of this - where to put the
files etc as it is likely that several distinct formats would need to be
created for each brand of phone.

(e) Viewable phonebook

A module to view all the phone numbers defined in FreePBX - this could
then be printed out or exported into CSV. There would be options to
print lists either by extension/queue/conf numbers or by DDI.

At the minute I have DNSMASQ and HPA_TFTPD on my FreePBX box and so can
control DHCP/TFTP/HTTP stuff all from the one server.

I’d welcome any feedback or help with the above.


This email is confidential, may be legally privileged and is for the
intended recipient only. Access, disclosure, copying, distribution or
reliance on any information it contains is prohibited and may be a criminal offence. Please delete if received in error and email confirmation to sender.
This email has been swept by MIMEsweeper for the presence of computer viruses.



Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net’s Techsay panel and you’ll get the chance to share your
opinions on IT & business topics through brief surveys – and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV


Amportal-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/amportal-devel

Post generated using Mail2Forum (http://www.mail2forum.com)

Dermot Bradley wrote:

[quote] I’ve been watching the “DevicesTakeTwo” and “GXP2000Config”,
“ImportExtensions” pages on the Wiki as well as bugs #459, #103, and
#1032.

I’ve been using Grandstream, Elmeg, and Snom devices for a little while
now and I’ve figured out how I think the provisioning and bootstrapping
of these should be handled in FreePBX. I’m intending to start work on
coding up my ideas ASAP and would like to see what other FreePBX
developers think of my solutions.

(a) Devices module

This page would let you define each unique make/model of device you wish
to use, e.e. “Grandstream GXP-2000”, “X-Lite PC softphone” etc. For each
device there are 3 sub-sections: General, Local, and Remote.

[/quote]I don’t really like this split out… if I go to edit some parameter on a
specific device, I don’t want to remember what model number it is to be
able to find it. They should be listed simply as distinct devices, and
then each device has the actual type (make/model) defined in it.
Certainly we can make a ‘report’ or view whatever that shows the devices
listed in the way you describe, but I don’t think it’s the most
intuitive way when you’re using it, in general.

[quote] “Local” defines settings such as codecs used, SRTP used or not, for
handsets within the local instrastructure (i.e. same building), whereas
"Remote" defines settings for handsets external (remote sites, home
workers) where a different choice of codec, whether NAT is used, etc

[/quote]I think I described this same sort of thing on the wiki, but instead, on
a per-device basis, you’d select the connection type, something like
"LAN / Remote / Dialup" where these would determine the codecs etc.

The device type itself would determine the rest (protocol IAX/SIP,
method to upgrade firmware, get config settings, etc).

The idea is to ask a minimal amount of information and then
automatically figure out everything we can based on that.

[quote] Complete bootstrap - the “add” screen would prompt for MAC address,
device type, IP address to allocate,
extension number to use, person’s name.

When device boots it uses DHCP server on FreePBX box which allocates

IP based
on MAC address provisioned and FreePBX also hosts TFTP and/or HTTP
server for the configuration
files and firmware for that device.

[/quote]We should really avoid any configs that REQUIRE modifications to the
DHCP server. It’s one thing to insert a “generic” TFTP boot line, but
it’s another to have to allocate addresses etc. This could be done if we
have a ‘dhcp’ module that provides the dhcp functions. The provisioning
or devices module can detect if this module is available, and then add
whatever it wants to add to the dhcp config using this module.

For the rest of this, I still think you’re going about it wrong. There
shouldn’t be a separate ‘provision’ mode from just general operation.
FreePBX should be able to generate configs at any time, without
requiring the the admin actively tell the device to configure. For most
phones, this means when the phone boots, it will configure itself.

If you make changes to the phonebook for example, the phone should just
re-read all of these… you shouldn’t have to go into freepbx and
individually tell each phone to upgrade. Getting the phone to re-read
may be tricky - maybe we can have a ‘mass reboot’ option to remotely
reboot devices that support it, or a ‘mass reload’ to trigger them to
all read their configs.

Another reason I used MAC address for identifying phones is for a
network like at my office. Our DHCP is running on another box… while I
can add the tftp boot lines to it, I don’t want to have to statically
define IPs for each phone, and then also put that IP into freepbx…
Similarly, I don’t want to make major network changes (setting up a
VLAN, moving my DHCP to another box…) just to allow freepbx to have a
DHCP server to give out IPs.

We need to make this as non-intrusive as possible in order to fit as
many situations as possible. I don’t have any problem with adding lots
of features, but the more specific requirements it has, less people will
be able to use it.

ttyl, greg


Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net’s Techsay panel and you’ll get the chance to share your
opinions on IT & business topics through brief surveys – and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV


Amportal-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/amportal-devel

Post generated using Mail2Forum (http://www.mail2forum.com)