User Tools

Site Tools



This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
doc:techref:ucwmp [2016/10/03 11:14]
mohamed.kallel [EasyCwmp (CPE WAN Management Protocol daemon)]
doc:techref:ucwmp [2016/10/03 11:44] (current)
Line 2: Line 2:
 EasyCwmp project is a client implementation of [[http://​​wiki/​TR-069|TR-069]] for OpenWrt. EasyCwmp project is a client implementation of [[http://​​wiki/​TR-069|TR-069]] for OpenWrt.
 Code is licensed under GPL 2 and can be accessed at Code is licensed under GPL 2 and can be accessed at
 +EasyCwmp is developed by PIVA Software.The aim of this project is to be fully compliant with the TR069 CWMP standard.
 +===== EasyCwmp Presentation in Broadban Worl Forum =====
 +===== Compliant Standards =====
 +  *   ​TR-069:​ CPE WAN Management Protocol v1.1
 +  *   ​TR-098:​ Internet Gateway Device version 1 (Data Model for TR-069)
 +  *   ​TR-181:​ Device version 2.
 +  *   ​TR-104:​ Provisioning Parameters for VoIP CPE version 2
 +  *   ​TR-106:​ Data Model Template for TR-069-Enabled Devices
 +  *   ​TR-111:​ Applying TR-069 to Remote Management of Home Networking Devices
 +===== EasyCwmp design =====
 +The EasyCwmp design includes 2 parts:
 +  *   ​EasyCwmp core: it includes the TR069 CWMP engine and it is in charge of communication with ACS server. It is developed with C.
 +  *   ​EasyCwmp DataModel: it includes the DATAModel of TR-06 and it is compliant to some DataModel standards such as  TR-098, TR-181, TR-104, ...
 +The key design goal is to separate the CWMP method execution from the CWMP engine. That makes easy to add and test new features.
 +DataModel is developped with shell as free solution and with C as commercial solution.
 +===== Benefits =====
 +  *   Easy to update the DataModel parameters ​ thanks to the DataModel solution design.
 +  *   Easy to install on Linux systems and to port on POSIX systems thanks to the design flexibility.
 +  *   Easy to use thanks to the availability of a good documentation.
 +  *   ​Supports all required TR-069 methods.
 +  *   ​Supports integrated file transfer ​ (HTTP, HTTPS, FTP).
 +  *   ​Supports SSL.
 +  *   ​Supports IPv6.
 +===== Interoperability =====
 +  *   ​ACSLite (Commercial ACS from Netmania)
 +  *   tGem (Commercial ACS from Tilgin)
 +  *   Open ACS/​LibreACS (open source ACS)
 +  *   ​GenieACS (open source ACS)
 +  *   ​FreeACS (open source ACS)
 +===== Install =====
 +=== EasyCwmp ===
 +EasyCwmp is mainly developed and tested with OpenWRT Linux platform.
 +Download the easycwmp-openwrt-{x}.{y}.{z}.tar.gz and then copy it to your /​path/​to/​openwrt/​package/​
 +    cd /​path/​to/​openwrt/​package/​
 +    tar -xzvf easycwmp-openwrt.tar.gz
 +    cd ..
 +Build as built-in
 +    make menuconfig ​  #(And then select the package as <*>)
 +    make
 +Build as package:
 +    make menuconfig ​  #(And then select the package as <M>)
 +    make package/​easycwmp/​compile
 +Build as built-in: install your OpenWRT system in your device according to the OpenWRT manuals and then  start your system and you will get easycwmp running automatically
 +Build as package: copy the package to the OpenWRT system and then install it with:
 +    opkg install
 +And then run it with:
 +    /​etc/​init.d/​easycwmpd start
 +or run it with:
-===== cwmpd =====+    /​etc/​init.d/​easycwmpd boot
-In TR-069 ​it's CPE role to initiate connection (session) with ACS (Auto Configuration Server) ​and this is what ''​ucwmpd''​ is responsible forIt's a daemon that reads config from ''​cwmp''​ UCI section (so it's usually located in ''/​etc/​config/​cwmp''​) and starts sessions ​with ACS when needed.+Note: If you run easycwmpd with  start command then it will send inform ​to the ACS containing "2 PERIODIC"​ event and send GetRPCMethods to the ACSAnd if you run easycwmpd ​with boot command then it will send inform to the ACS containing "1 BOOT" event.
-''​ucwmpd''​ daemons knows almost nothing about TR-069 protocol, all it understands are events. It needs to be aware of them as it knows exactly the reason for starting a session ​(this could be ''​0 BOOTSTRAP'',​ ''​2 PERIODIC'',​ ''​6 CONNECTION REQUEST'',​ etc.).+Note: A third party application could trigger EasyCwmp daemon ​to send notify ​(inform with value change eventby calling the command:
-It registers in ''​ubus''​ a ''​cwmp''​ object with following methods: +    ​ubus call tr069 notify
-^ Method ^ Argments ^ Description ^ +
-| ''​server_info_get''​ | ''​{ }''​ | Dump current config (info about ACS, periodic config, etc.) | +
-| ''​server_info_set''​ | ? | Update config | +
-| ''​connection_request''​ | ''​{ "​username":​ "//​username//",​ +
-  "​realm": ​   "//​realm//",​ +
-  "​nonce": ​   "//​nonce//",​ +
-  "​uri": ​     "//​uri//",​ +
-  "​response":​ "//​response//",​ +
-  "​cnonce": ​  "//​cnonce//",​ +
-  "​nc": ​      "//​nc//"​ }''​ | Request for initializing connection (session) with an ACS | +
-| ''​event_sent''​ | ? | ? | +
-| ''​event_add''​ | ? | ? | +
-| ''​session_completed''​ | ? | ? |+
-When session ​is supposed to be started, ''​ucwmpd''​ executes external binary called ''​cwmp-session''​ with the following arguments:​ +If the EasyCwmp daemon receive the ubus call notify then it will check if there is a value changed ​of parameters ​with notification not equal to 0
-<​code>​-d <​level>​ Debugging level +
--e <​json>​ List ​of events as JSON +
--I <​path>​ Path to JSON with device info (Manufacturer,​ ModelName, SerialNumber,​ etc.) +
--m <​path>​ Path ​to JSONs definint data model (eg. TR-098)</​code>​+
-===== cwmp-session =====+=== microxml ​===
-===== connreq =====+If you got any problem related to libmicroxml when building EasyCwmp in OpenWRT, then you can use the following libmicroxml package:
-Since ACS is a server and CPE is a client, there isn't a stadard way for ACS to initiate a connectionTR-069 however specifies a way to workaround this limitationACS can request CPE to initiate session by accessing a special HTTP URL. This way ACS may inform CPE that configuration was updated and ask it to reconfigure without waiting for a periodical request.+    cd /path/to/​openwrt/​package/​ 
 +    wget http://​​download/​libmicroxml.tar.gz
-In ''​ucwmp''​ project this is handled by CGI compatible ''​connreq''​ binary. It simply requires configuring ''​uhttpd''​ (or some different HTTP server) to handle some specific URL with a ''​connreq''​ CGI. 
-When ''​connreq''​ is called, it verifies ACS request using CGI environment variables (''​HTTP_AUTHORIZATION''​ and ''​REQUEST_URI''​) and calls ''​connection_request''​ ubus method. As the result ''​ucwmpd''​ will start a session if the authorization succeeded. 
doc/techref/ucwmp.1475486063.txt.bz2 · Last modified: 2016/10/03 11:14 by mohamed.kallel