No description
Find a file
2023-03-31 15:11:23 +01:00
docs Ticket #10024: CWMP dual stack 2023-03-30 14:27:12 +01:00
files/etc/udhcpc.user.d Optimized dhcp option handling 2022-12-30 08:14:56 +00:00
gitlab-ci Ticket #10024: CWMP dual stack 2023-03-30 14:27:12 +01:00
schemas Ticket #10024: CWMP dual stack 2023-03-30 14:27:12 +01:00
src cwmp - UCI 'cwmp.cpe.interface' was not documented. 2023-03-31 15:11:23 +01:00
test Ticket #10024: CWMP dual stack 2023-03-30 14:27:12 +01:00
.gitignore Align docs structure with doc portal 2023-01-09 10:03:00 +00:00
.gitlab-ci.yml Ticket #10024: CWMP dual stack 2023-03-30 14:27:12 +01:00
CMakeLists.txt Fix pipeline, update genieacs version and cleanup the code 2023-03-29 11:13:58 +00:00
LICENSE Change License to BSD 3-Clause 2022-09-13 07:42:01 +02:00
mkdocs.yml Fix doc reference path 2023-03-21 13:16:51 +00:00
README.md doc: Language fixes and tables 2023-03-23 11:18:01 +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

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