CDRouter 16.9

September 24, 2026


New Features

  • Stability and Memory View Enhancements: The Stability and Memory View now shows functional checks as a status bar across the whole run, shaded by how many checks failed, so you can see at a glance when the DUT started failing. [sc49686]

  • Ethernet Link Speed Tests: New tests verify that the DUT’s WAN and LAN Ethernet ports link up at each supported speed, from 10 Mbps to 10 Gbps, and perform a LAN-to-WAN connectivity check at that speed. Speeds the CDRouter system does not support are skipped automatically. [sc16806]

    • cdrouter_link_speed_wan_10000Mbps
    • cdrouter_link_speed_wan_5000Mbps
    • cdrouter_link_speed_wan_2500Mbps
    • cdrouter_link_speed_wan_1000Mbps
    • cdrouter_link_speed_wan_100Mbps
    • cdrouter_link_speed_wan_10Mbps
    • cdrouter_link_speed_lan_10000Mbps
    • cdrouter_link_speed_lan_5000Mbps
    • cdrouter_link_speed_lan_2500Mbps
    • cdrouter_link_speed_lan_1000Mbps
    • cdrouter_link_speed_lan_100Mbps
    • cdrouter_link_speed_lan_10Mbps
  • MemoryStatus Functional Tests: New USP and CWMP tests verify that the DUT correctly reports its memory usage through Device.DeviceInfo.MemoryStatus. and raises alerts through the MemoryMonitor. object when memory crosses a critical threshold. Run memory_functional_usp_1 or memory_functional_cwmp_1 to confirm a DUT is ready for the memory tests in the Stability and Memory expansion. [sc48633]

    • memory_functional_usp_1 through memory_functional_usp_9
    • memory_functional_cwmp_1 through memory_functional_cwmp_9
  • Wi-Fi 7 MLO Association Stress Tests: Added new tests to the wifi7 module that run 100 disassociate/re-associate cycles with MLO enabled, verifying on every cycle that the client comes back with an MLO association. The paced variants add a fixed delay between cycles, so comparing a pair shows whether a DUT cannot reassociate at all or cannot reassociate that quickly. [sc49137]

    • wifi7_30 - first MLO client
    • wifi7_31 - first MLO client, paced
    • wifi7_300 - all MLO clients
    • wifi7_301 - all MLO clients, paced
  • Paced Wi-Fi Association Stress Tests: Added paced counterparts to wifi_30 and wifi_300 for devices using a single-link connection. These tests add a fixed delay between reassociation cycles. [sc49407]

    • wifi_31 - paced counterpart to wifi_30
    • wifi_301 - paced counterpart to wifi_300
  • Stability LAN to LAN Memory Tests: Added new Stability and Memory tests that monitor the DUT’s memory while an iPerf stream runs between two of its LAN ports, rather than across its routing path. These tests require two physical LAN interfaces and are skipped otherwise. [sc47964]

    • stability_memory_usp_lan_bg_traffic
    • stability_memory_usp_lan_bg_traffic_v6
    • stability_memory_cwmp_lan_bg_traffic
    • stability_memory_cwmp_lan_bg_traffic_v6
  • RFC 7217 SLAAC Tests: Added new tests to the slaac-wan module that verify the DUT generates stable, semantically opaque interface identifiers for its WAN SLAAC addresses as described in RFC 7217. [sc19928]

    • ipv6_slaac_wan_14 - Verify DUT does not use an EUI-64 interface identifier for its SLAAC address on the WAN
    • ipv6_slaac_wan_15 - Verify DUT configures a different address after a DAD collision on the WAN
    • ipv6_slaac_wan_16 - Verify DUT uses a different interface identifier for each prefix on the WAN
    • ipv6_slaac_wan_17 - Verify DUT uses the same interface identifier for a prefix after a reboot
  • PPPoE DHCPv6 Restart Verification: The PPPoE client tests in the pppoe-c-v6 module now verify that the DUT restarts DHCPv6 after the PPPoE link goes down and comes back up, as required by RFC 9915 section 18.2.12. The DUT must send a Rebind/Confirm if its lease may still be valid, or may send a Solicit if the lease could have expired. The check is skipped when the WAN does not use DHCPv6. [sc10475]

Changelog

CDRouter

  • The Stability and Memory View now shows a live elapsed time while a test is running. [sc49377]
  • Log filters are once again retained when using the forward and back buttons to move between tests, and when switching to and from the Stability and Memory View. [sc49355]
  • The Analyze Package and the Networks buttons now work as expected when the systemDebug testvar is set. [sc47649]
  • CDRouter now warns you when a -testvar override will not reach other testvars in your config that are built from it, and lists the testvars that still use the original value. [sc49118]
  • The CDRouter package now declares its dependency on iptables, so it is installed automatically if it is missing from the system. [sc49575]
  • Fatal wireless errors on the CDRouter system now fail only the affected tests instead of ending the test package. CDRouter runs its normal cleanup to restore the DUT and attempts to continue testing. [sc49211] [sc49501]
  • Addressed a fatal error in wifi_10 and other wireless tests using legacy modes. Wireless security errors now report the underlying cause, and a routine deauthentication by the DUT no longer ends the test run. [sc49083]
  • wifi_30 and wifi_300 now report accurate results when some clients fail to reassociate, including which clients failed and how often. A client the DUT drops is now retried on later cycles. [sc49407]
  • wifi7_22 and wifi7_23 now require one MLO client instead of two. They now run on setups with a single MLO client, where they were previously skipped. [sc49137]
  • MLO clients now request every link the DUT advertises, even when a link was missed during the initial scan. Any link that cannot be used is reported in the log. [sc49260]
  • Single-link wireless tests against a Wi-Fi 7 DUT now connect on the intended band. Wireless clients prefer the highest band with a strong signal, and fall back to the strongest signal otherwise. [sc49357]
  • The MLO “Station Connected” log message now lists every link negotiated with the access point, including each link’s frequency and BSSID. Previously only one link was shown. [sc48053]
  • The guest and guest-v6 module tests now explain in the log when a connectivity check is skipped because isolation was already confirmed. [sc22870]
  • Updated the acsCertPath, acsDownloadCertPath, uspControllerMTPCertPath, and uspControllerUSPCertPath testvar descriptions to refer to Sectigo, the issuer of the certificates included with CDRouter, instead of Comodo. [sc49825]
  • Fixed a typo in the supportsIPv6MulticastOut and supportsMulticastOut testvar descriptions. [sc49182]

IPv6

  • dhcpv6_pd_131 no longer fails DUTs that follow RFC 9096 by continuing to advertise the old prefix with zero lifetimes after a WAN disconnect. [sc49446]
  • cpe_v6_47 no longer fails on DAD packets not transmitted by the DUT. [sc48396]

Performance

  • Addressed intermittent TCP performance test ended unexpectedly failures and 0 Mbps results in performance tests when the DUT sends ARP probes to check for address conflicts. [sc49636]

prpl Certification

  • prplos.1.3.12 now restarts DHCPv6 on the other active LAN clients when the DHCPv6 server pool is re-enabled. Previously, stale leases on those clients could cause later test cases to fail. [sc47660]
  • prplos.1.3.7 now waits for the DUT’s DHCPv6 client to recover during cleanup. Previously, prplos.1.3.8 could fail intermittently if it started before recovery finished. [sc49263]
  • prplos.1.3.14 and prplos.1.3.15 no longer fail when the DUT includes a non-success status code in the IA_NA or IA_PD option while offers are enabled. [sc49659]
  • Device.Users.User.{i}.X_PRPLWARE-COM_HashedPassword and X_PRPL-COM_HashedPassword are now marked as secured in the USP and CWMP prplWare data model profiles. The prpl HL-API Set and SetParameterValues tests no longer attempt to set them. [sc49079]

RvR

  • CDRouter now retries a dropped or unresponsive attenuator connection before failing the test. The new rfAttenuatorTimeout testvar controls how long CDRouter keeps retrying. [sc49368]
  • RvR tests no longer fail when the attenuation read back from the attenuator differs slightly from the requested value due to the resolution of the attenuator. The rfAAV_24, rfAAV_56, and rfAttenuationDb testvars now accept integer values only. [sc49241]
  • The rfAAV_24 and rfAAV_56 testvar descriptions now correctly cite TR-398 instead of TR-389. [sc49385]

Security

  • Updated the ET Open ruleset in the CDRouter Security expansion from 11261 to 11292. [sc49306]

TR-069

  • Addressed a fatal error when profiling a TR-069 DUT that reports a parameter with an unrecognized data type. CDRouter now logs a warning and continues testing. [sc49404]
  • tr69_alias_10 now sends the data type the CPE reports for the discovered parameter in its SetParameterValues requests, instead of always sending string. [sc48631]
  • The tr69_wireless tests now detect sooner that the DUT has stopped advertising an old SSID, instead of waiting for the full timeout. [sc4030]
  • The multi-connection IPv4 tests in the tr143_http and tr143_ftp modules are now skipped when supportsIPv4 is set to no. [sc49574]
  • The “View Graph” button and TR-143 performance graph are now available for tr143_ftp tests. [sc49409]

USP

  • usp_factory_reset_1 and usp_factory_reset_2 no longer fail when the EUT correctly removes Controller-created subscriptions during a factory reset. usp_factory_reset_2 now requires the EUT to have its own enabled Device.Boot! subscription, and expects the Boot! event to report RemoteFactoryReset as the Cause. [sc48677]
  • usp_21 through usp_27 now only consider Notify messages from the test’s own subscription. Notifications from other subscriptions on the Agent could previously cause intermittent failures in usp_22 and usp_23, or a false pass in the other tests. [sc49225]
  • usp_conformance_8_7 and usp_legacy_1_3_test_8_7 now wait for the EUT to finish rebooting before continuing. Previously, the mDNS message an EUT sends as it shuts down could cause these tests to continue too early and fail. [sc49462]
  • usp_conformance_8_6 and usp_legacy_1_3_test_8_6 now find the USP TXT record when the EUT sends it in the additional section of the mDNS response. [sc49049]
  • usp_conformance_1_55 and usp_legacy_1_3_test_1_55 now wait an additional 5 seconds after the subscription’s TimeToLive expires before checking that it was removed. This avoids intermittent failures on Agents that remove expired subscriptions on a periodic timer. [sc48891]
  • The usp_services tests are now skipped when supportsUSP is set to no, instead of ending the test run with a fatal error. [sc49008]