CDRouter 16.4

April 23, 2026


New Features

  • DHCPv6 Prefix Delegation only Clients: Added a new dhcpv6-pd-s module with new tests that verify that the DUT correctly assigns a valid IA_PD (non-zero prefix with a valid lifetime) to a DHCPv6 Prefix Delegation only LAN client requesting only an IA_PD (with no IA_NA) as described in RFC 9818. [sc46845]

    • dhcpv6_pd_server_1
    • dhcpv6_pd_server_2
    • dhcpv6_pd_server_3
  • TR-471 Verification Tests: Added two new verification tests to new tr471_functional_usp and tr471_functional_cwmp modules that check the DUT’s data model for the required TR-471 objects, parameters, and commands. These tests allow users to confirm that a speed test configuration will succeed without having to run a complete speed test. [sc47100]

    • tr471_functional_usp_1
    • tr471_functional_cwmp_1
  • Support for obudpst v7.X Servers: CDRouter now supports both obudpst v8.X and v7.X servers for TR-471 Speed Tests. The new tr471SoftwareVersion testvar selects the server version (default 8.2.1), and an Error_Timeout hint is logged when a version mismatch is detected between the DUT and the configured server. [sc46822]

  • USP Service Authentication and Registration Tests: Added a new usp_services test module with UDS MTP Registration and Authentication tests that exercise Device.TestUDS.Register() and Device.TestUDS.Auth() to validate USP Service password-based authentication and Register ACLs over Unix Domain Sockets. A new USP Services section has been added to the USP User Guide. [sc46617] [sc46618]

  • uspAgentID Auto-Discovery: The uspAgentID testvar now accepts a value of auto, which tells CDRouter to automatically discover the USP Endpoint ID and agent path from the DUT’s Connect record. This eliminates the need to configure a unique uspAgentID and uspAgentPath for each DUT. The discovered EID is written to the test log, and auto-discovered values are also used when configuring secondary USP controllers. The uspWaitForConnectRecord testvar controls whether CDRouter waits for a Connect Record during startup; set it to no for legacy agents that do not send Connect Records. [sc43468]

  • TR-181 Data Model 2.20: Updated CDRouter to support the TR-181 Data Model 2.20.1 (previously 2.19.1). All new 2.20 parameters and objects are incorporated in USP and CWMP test cases. [sc46608]

  • prplWare 4.2 Data Model: Added support for the prplWare 4.2 data model in prpl HL-API testing. [sc46868]

  • prplWare 4.2 TestList: prplWare 4.2 Certification testlists are now available. This testlist is a collection of test cases for prpl Foundation prplWare certification. This collection of tests are the recommended test cases to execute as documented in the HL-API and prplOS Network Functionality Test Plans. Additional conditional tests can be selected for certification based on the device’s support for advanced prplWare features. [sc47125]

  • prplOS LAN Device.Hosts Tests: Added nine new tests in the prplos.tcl module covering LAN Device.Hosts verification for prplWare 4.2. [sc46867]

    • prplos.1.7.1
    • prplos.1.7.2
    • prplos.1.7.3
    • prplos.1.7.4
    • prplos.1.7.5
    • prplos.1.7.6
    • prplos.1.7.7
    • prplos.1.7.8
    • prplos.1.7.9
  • Speed Test Optional Arguments: Added new testvars that control the optional TR-471 IPLayerCapacity Speed Test input arguments. The Speed Test now sends only the minimum required arguments (ServerList, Role) by default and exposes the advanced parameters via optional testvars. A warning is logged if the server configuration does not match the DUT. [sc46850]

Changelog

CDRouter

  • Updated the bundled Packet Viewer to 2026.04. [sc46620]

  • The DHCP Server and Client option testvars:

    Now default to the Vendor Specific Information Option using QA Cafe’s IANA Enterprise Number, so uncommenting the testvar in the configuration yields a safe default. [sc46863]

  • Added a new per-LAN group testvar mloDisable that disables Wi-Fi MLO on MLO-capable client cards (such as the Intel BE200). This is useful when the DUT advertises MLO on all SSIDs or when testing requires forcing single-link (SLO) association. [sc40864]

  • Addressed an issue in cdrouter_dhcp_51 where the WAN DHCP client was left in the wrong state during cleanup, which could cause false failures in cdrouter_dhcp_60 and other later DHCP tests. [sc46616]

  • Addressed false failures in the mcast test module when multicastBypassPPPoE is enabled. The NAT address and PPPoE source checks are now skipped so that devices that forward multicast over both PPPoE and IPoE no longer fail intermittently. [sc45350]

  • Added a small delay between mDNS queries in tests mdns_22 and mdns_24 to resolve sporadic failures when the DUT has recently sent the record. [sc46823]

  • Added a note to the cdrouter_upnp_210 and cdrouter_upnp_igd2_210 test descriptions documenting that the upnpMinSubTimeout testvar controls the UPnP subscription timeout used by the test. [sc46558]

  • Log filtering on the /api/v1/results/{id}/tests/{seq}/log endpoint is now applied before pagination, so limit/offset combined with filter parameters returns the expected paginated filtered results. [sc45729]

  • Addressed a panic in Packet Viewer’s qapcap.GetStats that could cause CDRouter to lose packet analysis until the service was restarted. [sc47048]

  • Updated the wireless libraries and improved reliability of Wi-Fi 7 MLO client association. The wifi_30 association test now runs the full 100 attempts rather than exiting early, and additional diagnostic information has been added to the connection log for MLO clients. [sc46864]

  • Addressed a fatal error when processing EAPOL key message 4 that occurred when multiple MLO clients on the same Band/SSID triggered a GTK/IGTK rekey. CDRouter now correctly handles MLO GTK/IGTK in EAPOL group key rekey. [sc46189]

  • Improved the “Ignoring EAPOL message, beacon/probe IE does not match key data” warning to include the specific mismatch, and promoted several EAPOL IE log messages from MSG_DEBUG to MSG_ERROR. [sc46015]

IPv6

  • The DHCPv6 Server and Client option testvars:

    Now default to the Vendor Specific Information Option using QA Cafe’s IANA Enterprise Number, so uncommenting the testvar in the configuration yields a safe default. [sc46863]

  • Test dhcpv6_56 is now automatically skipped in DHCPv6 relay setups, where the Decline and Duplicate Address Detection portion of the test cannot run when CDRouter is off-link. [sc46729]

  • Fixed a typo in the icmpv6_21 and icmpv6_22 test descriptions. [sc46696]

  • Added a small delay between mDNS queries in test ipv6_mdns_22 to resolve sporadic failures when the DUT has recently sent the record. [sc46823]

Performance

  • Updated bundled iPerf from 3.19.1 to 3.20, which picks up the upstream fix for an iperf3 segfault when -J is used without a JSON output file. Note the iperf auto mode for packet length is no longer supported by the upstream release. [sc46602] [sc35659]

prpl Certification

  • Updated the prplOS Test Plan reference from revision 1.2 to 1.3. [sc47125]
  • Updated prplos.1.6.19 to transmit an IPv6 Echo Request of size 1500 so that Host-1 replies with an Echo Reply of size 1500, and the test now verifies the ICMPv6 Packet Too Big message on the WAN interface as required by RFC 4443. [sc47103]
  • Updated prplos.1.3.19 to send the DHCPv6 Vendor Specific Information option as the sentOption. The enterprise number used in prplos.1.3.10 has also been updated to QA Cafe’s IANA number. [sc47121]
  • Updated the DHCP Option Tag in prplos.1.2.30 from 0104 to 04. [sc47104]
  • Addressed a fatal error in prplos.1.3.10 when the DHCPv6 Vendor-Specific Information value check failed. [sc47149]
  • Updated prplos.1.2.24 to release LAN clients at the start of the test so that the test’s chosen DHCP pool no longer overlaps with the addresses the LAN clients received during setup. [sc46472]
  • Added a missing fail message in dhcpv6_pd_20 so that the test reports a proper FAIL when the DUT has no IA_PD binding at the start of the test. [sc47133]
  • Improved the log message in the prpl_hl-api writable-parameter tests when required objects are missing from the profile. Previously the test reported a misleading “Could not determine writeable parameters” message. [sc46878]

Security

  • Updated the ET Open ruleset in the CDRouter Security expansion to 11172. [sc46631]

Speed Test

  • Addressed a fatal error in the CWMP TR-471 tests. [sc46839]
  • Addressed an issue with TR-471 speed tests reporting a false failure due to 0.01 Mbps floating-point rounding between the DUT-reported and server-recorded rates. A log message typo has also been corrected. [sc46993]

TR-069

  • Addressed an issue in tr69_131 introduced in 16.3 where the test did not correctly wait for the TransferComplete RPC after a firmware Download. [sc46932]
  • Addressed an issue in tr69_400 where the expected number of entries in the Device.IP.Diagnostics.TraceRoute.RouteHops table was incorrectly adjusted when the DUT was in bridge mode. [sc46122]
  • Addressed a fatal error in tr69_annex_n_37. [sc47117]
  • Updated tr69_dns_sd_1 to send a GetParameterNames RPC with NextLevel=0 so that the Service.{i}. objects under Device.DNS.SD. are returned. [sc40081]
  • Updated tp181_test_5.6.15 to include Wi-Fi scan results in the log when the test detects that the DUT is still broadcasting an SSID after the SSID and AccessPoint objects have been deleted. [sc34370]

USP

  • Added a config check error when uspControllerIpMode is set to ipv6-only but supportsIPv6 is set to no. [sc46532]
  • Updated usp_conformance_2_18 to accept a USP operate_resp with cmd_failure{ error_code 7006 } (Permission Denied) when the DUT correctly rejects a Reboot() after a new Device.LocalAgent.ControllerTrust.Role.{i}.Permission disallows it. [sc46132]
  • Addressed duplicate MQTT message logging after a DUT reboots without sending a clean MQTT DISCONNECT. The MQTT server now cleans up stale subscriptions from previous sessions when a new CONNECT is received. [sc47028]