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:15]
mohamed.kallel [EasyCwmp (CPE WAN Management Protocol daemon)]
doc:techref:ucwmp [2016/10/03 11:44] (current)
Line 6: Line 6:
 EasyCwmp is developed by PIVA Software.The aim of this project is to be fully compliant with the TR069 CWMP standard. 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 =====
-===== cwmpd =====+{{youtube>​2dzLzk8I_So?​medium}}
-In TR-069 it's CPE role to initiate connection (session) with ACS (Auto Configuration Server) and this is what ''​ucwmpd''​ is responsible for. It'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. 
-''​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.). 
-It registers in ''​ubus''​ a ''​cwmp''​ object with following methods: +===== Compliant Standards =====
-^ 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+  *   TR-069CPE WAN Management Protocol v1.1 
-<​code>​-d <​level>​ Debugging level +  ​* ​  TR-098: Internet Gateway Device version 1 (Data Model for TR-069) 
--e <​json>​ List of events as JSON +  ​* ​  TR-181: Device version 2
--I <​path>​ Path to JSON with device info (Manufacturer,​ ModelName, SerialNumber,​ etc.) +  ​* ​  TR-104: Provisioning Parameters for VoIP CPE version 2 
--m <​path>​ Path to JSONs definint data model (eg. TR-098)</​code>​+  *   TR-106: Data Model Template for TR-069-Enabled Devices 
 +  *   ​TR-111:​ Applying TR-069 to Remote Management of Home Networking Devices
-===== cwmp-session ===== 
-TBD+===== EasyCwmp design =====
-===== connreq =====+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, ...
-Since ACS is a server ​and CPE is a client, there isn't a stadard way for ACS to initiate ​connection. TR-069 ​however specifies a way to workaround this limitationACS can request CPE to initiate session by accessing a special ​HTTP URLThis way ACS may inform ​CPE that configuration was updated ​and ask it to reconfigure without waiting for periodical request.+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 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: 
 +    /​etc/​init.d/​easycwmpd boot 
 +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 ACS. And if you run easycwmpd with boot command then it will send inform ​to the ACS containing "1 BOOT" event. 
 +Note: A third party application could trigger EasyCwmp daemon to send notify (inform with value change event) by calling the command: 
 +    ubus call tr069 notify 
 +If the EasyCwmp daemon receive the ubus call notify then it will check if there is value changed of parameters with notification not equal to 0 
 +=== microxml === 
 +If you got any problem related to libmicroxml when building EasyCwmp in OpenWRT, then you can use the following libmicroxml package: 
 +    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.1475486147.txt.bz2 · Last modified: 2016/10/03 11:15 by mohamed.kallel