No description
Find a file
2023-02-15 14:54:07 +05:30
docs Align docs structure with doc portal 2023-01-09 10:03:00 +00:00
files/etc/udhcpc.user.d Optimized dhcp option handling 2022-12-30 08:14:56 +00:00
gitlab-ci Ticket refs #9642: CWMP SPAs not persistent 2023-02-08 13:02:13 +05:30
schemas Updated config defaults 2022-10-31 15:01:21 +05:30
src Wait before exit, in case of reboot or factory reset 2023-02-15 14:54:07 +05:30
test Ticket refs #9642: CWMP SPAs not persistent 2023-02-08 13:02:13 +05:30
.gitignore Align docs structure with doc portal 2023-01-09 10:03:00 +00:00
.gitlab-ci.yml Ticket refs #6914: icwmp: migrate from multithreading to uloop 2022-09-12 13:55:00 +01:00
CMakeLists.txt extract ManagementServer datamodel to cwmp package as dynamic aobject 2023-01-18 05:49:49 +01:00
LICENSE Change License to BSD 3-Clause 2022-09-13 07:42:01 +02:00
README.md Align docs structure with doc portal 2023-01-09 10:03:00 +00:00

CWMP Agent

icwmpd is a client implementation of TR-069/CWMP protocol.

It is written in C programming language and depends on a number of libraries of OpenWrt for building and running.

Good to Know

The icwmpd client is :

  • Tested with several ACS such as Axiros, AVSytem, GenieACS, OpenACS, etc...
  • Supports all required TR069 RPCs.
  • Supports all DataModel of TR family such as TR-181, TR-104, TR-143, TR-157, etc...
  • Supports all types of connection requests such as HTTP, XMPP, STUN.
  • Supports integrated file transfer such as HTTP, HTTPS, FTP.

Configuration File

The icwmpd UCI configuration is located in '/etc/config/cwmp', and contains 3 sections: 'acs', 'cpe' and 'lwn'.

config acs 'acs'
	option userid 'iopsys'
	option dhcp_discovery 'enable'
	option compression 'Disabled'
	option retry_min_wait_interval '5'
	option retry_interval_multiplier '2000'

config cpe 'cpe'
	option default_wan_interface 'wan'
	option userid 'iopsys'
	option exec_download '0'
	
config lwn 'lwn'
	option enable '1'
	option hostname ''
	option port ''

Note: icwmpd depends on usp.raw for all datamodel parameters, some DeviceId related parameters can be overwritten by writing them directly on /etc/config/cwmp file.

uci set cwmp.cpe.manufacturer="ABC"
uci set cwmp.cpe.manufacturer_oui="XXX"
uci set cwmp.cpe.product_class="TEST_CLASS"
uci set cwmp.cpe.serial_number="1234567890"
uci set cwmp.cpe.software_version="X.Y.Z"
uci set cwmp.cpe.model_name="MODELXXX"
uci set cwmp.cpe.description="This is a test device"
uci commit cwmp

Complete UCI for cwmp configuration available in link or raw schema

icwmpd gets the datamodel from the DUT via ubus using uspd, and also it registers tr069 ubus namespace to expose some debug and cwmp client rpc funtionalities, so it is required to start it after starting ubusd and uspd.

Important topics

Dependencies

To successfully build icwmp, the following libraries are needed:

Dependency Link License
libuci https://git.openwrt.org/project/uci.git LGPL 2.1
libubox https://git.openwrt.org/project/libubox.git BSD
libubus https://git.openwrt.org/project/ubus.git LGPL 2.1
libjson-c https://s3.amazonaws.com/json-c_releases MIT
libwolfssl https://github.com/wolfSSL/wolfssl GPL-2.0
libcurl https://dl.uxnr.de/mirror/curl MIT
mxml https://github.com/michaelrsweet/mxml GPL-2.0

Runtime dependencies:

Dependency Link License
ubus https://git.openwrt.org/project/ubus.git LGPL 2.1
bbf https://dev.iopsys.eu/iopsys/bbf.git LGPLv2.1
uspd https://dev.iopsys.eu/iopsys/uspd.git GPL v2.0