No description
Find a file
Vivek Kumar Dutta 8a43c6aeb4
Fix pipeline
2023-10-12 16:33:35 +05:30
docs Rename var sate UCI file 2023-06-01 08:56:39 +00:00
files/etc/udhcpc.user.d Rename var sate UCI file 2023-06-01 08:56:39 +00:00
gitlab-ci Fix pipeline 2023-10-12 16:33:35 +05:30
schemas optimize dual stack implementation 2023-04-19 16:42:32 +02:00
src Improvement in inform message sending 2023-06-22 07:24:55 +00:00
test Fix pipeline 2023-10-12 16:33:35 +05:30
.gitignore Align docs structure with doc portal 2023-01-09 10:03:00 +00:00
.gitlab-ci.yml Fix pipeline 2023-10-12 16:33:35 +05:30
CMakeLists.txt Align with bbfdmd 2023-04-14 10:31:08 +00:00
LICENSE Change License to BSD 3-Clause 2022-09-13 07:42:01 +02:00
mkdocs.yml Update ci paths 2023-04-18 16:42:02 +05:30
README.md Update ci paths 2023-04-18 16:42:02 +05:30

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 bbf 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

!!! note

Complete UCI for `cwmp` configuration available in [link](./docs/api/uci/cwmp.md) or [raw schema](https://dev.iopsys.eu/iopsys/icwmp/-/blob/devel/schemas/uci/cwmp.json)

icwmpd gets the datamodel from the DUT via ubus using bbfdmd, 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 `bbfdmd`.

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
bbfdm https://dev.iopsys.eu/bbf/bbfdm.git BSD-3