User Tools

Site Tools

This wiki is read only and for archival purposes only. >>>>>>>>>> Please use the new OpenWrt wiki at <<<<<<<<<<


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