No description
Find a file
Suvendhu Hansa ef78476270 Probable fix for failure to send inform on CR
During debugging it was observed that main cwmp process was stuck at uloop, this might occur due to ubus operation inside thread, as ubus is not thread safe.
2023-07-20 09:54:50 +00:00
docs Rename var sate UCI file 2023-06-01 08:56:39 +00:00
files/etc/udhcpc.user.d Update dhcp option 125 parsing logic 2023-07-11 03:29:28 +00:00
gitlab-ci Update ci paths 2023-04-18 16:42:02 +05:30
schemas optimize dual stack implementation 2023-04-19 16:42:32 +02:00
src Probable fix for failure to send inform on CR 2023-07-20 09:54:50 +00:00
test Use global buffer instead of dynamic allocation memory 2023-07-06 14:43:00 +02:00
.gitignore Align docs structure with doc portal 2023-01-09 10:03:00 +00:00
.gitlab-ci.yml Fix ci/cd image version 2023-04-27 15:21:19 +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