No description
Find a file
2024-11-04 07:47:19 +05:30
bbf_plugin Align with code-analysis image 2024-09-23 04:36:32 +00:00
docs Store session backup to persistent storage 2024-10-24 05:21:07 +00:00
gitlab-ci Fix missing BBF_VENDOR_PREFIX macro in netmngr compilation 2024-10-22 23:18:20 +02:00
schemas uci option to use ifname in curl option 2024-08-09 13:09:53 +05:30
src Set last_reboot_cause option to 'RemoteReboot' when rebooting via cwmp 2024-10-24 06:03:28 +00:00
test Align with VendorLogFile 2024-10-10 09:31:47 +05:30
.gitignore Serialize uci usages 2023-12-26 08:05:13 +00:00
.gitlab-ci.yml Fix compilation of netmngr 2024-11-04 07:47:19 +05:30
CMakeLists.txt Refactor datamodel plugin code from daemon 2023-12-12 03:47:33 +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 Removed mbedtls and wolfssl support 2023-12-28 16:08:50 +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
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