"Invalid arguments" can anyone please help me in solving this error

faultCode: “9003”
faultString: Invalid arguments

  • parameterName: InternetGatewayDevice.ManagementServer.PeriodicInformTime
    faultCode: “9007”
    faultString: Invalid parameter value

You didn’t show what value you are trying to set, but values in the 9000 range are all CPE faults. In this case, the CPE is telling you the value you are trying to set is invalid.

how to check that range value.?

how to check that range value.?

Well, it would probably help if you posted the exact script/preset/provision/data you are trying to send to the CPE.

// Device ID as user name
const username = declare(“DeviceID.ID”, {value: 1}).value[0]

// Password will be fixed a given device because Math.random() is seeded with devcie ID by default.
const password = Math.trunc(Math.random() * Number.MAX_SAFE_INTEGER).toString(36);

const informInterval = 300;

// Refresh values daily
const daily = Date.now(86400000);

// Unique inform offset per device for better load distribution
const informTime = daily % 86400000;

declare(“InternetGatewayDevice.ManagementServer.ConnectionRequestUsername”, {value: daily}, {value: username});
declare(“InternetGatewayDevice.ManagementServer.ConnectionRequestPassword”, {value: daily}, {value: password});
declare(“InternetGatewayDevice.ManagementServer.PeriodicInformEnable”, {value: daily}, {value: true});
declare(“InternetGatewayDevice.ManagementServer.PeriodicInformInterval”, {value: daily}, {value: informInterval});
declare(“InternetGatewayDevice.ManagementServer.PeriodicInformTime”, {value: daily}, {value: informTime});

declare(“Device.ManagementServer.ConnectionRequestUsername”, {value: daily}, {value: username});
declare(“Device.ManagementServer.ConnectionRequestPassword”, {value: daily}, {value: password});
declare(“Device.ManagementServer.PeriodicInformEnable”, {value: daily}, {value: true});
declare(“Device.ManagementServer.PeriodicInformInterval”, {value: daily}, {value: informInterval});
declare(“Device.ManagementServer.PeriodicInformTime”, {value: daily}, {value: informTime});

const hourly = Date.now(3600000);

// Refresh basic parameters hourly
declare(“InternetGatewayDevice.DeviceInfo.HardwareVersion”, {path: hourly, value: hourly});
declare(“InternetGatewayDevice.DeviceInfo.SoftwareVersion”, {path: hourly, value: hourly});
declare(“InternetGatewayDevice.WANDevice..WANConnectionDevice..WANIPConnection..MACAddress", {path: hourly, value: hourly});
.WANConnectionDevice..WANIPConnection..ExternalIPAddress”, {path: hourly, value: hourly});
declare(“InternetGatewayDevice.LANDevice..WLANConfiguration..SSID”, {path: hourly, value: hourly});
// Don’t refresh password field periodically because CPEs always report blank passowrds for security reasons
declare(“InternetGatewayDevice.LANDevice..WLANConfiguration..KeyPassphrase”, {path: hourly, value: 1});
declare(“InternetGatewayDevice.LANDevice..Hosts.Host..HostName”, {path: hourly, value: hourly});
declare(“InternetGatewayDevice.LANDevice..Hosts.Host..IPAddress”, {path: hourly, value: hourly});
declare(“InternetGatewayDevice.LANDevice..Hosts.Host..MACAddress”, {path: hourly, value: hourly});

I’d suggest reading the specification. The CPE is correctly throwing a fault given that you sending bad data to the CPE.

Umm, your hardware ver, software ver, mac address, etc will not be changing hourly. The parameters in the DeviceInfo struct are sent to the CPE on every inform.

The path value of the second parameter is how old the path can be before GenieACS will refresh the path. This is almost certainly not needed for things like WLANConfiguration. The CPE isn’t adding/removing radios on a whim. You are going to have performance issues if you do this across all the devices in your network.

Is there a need to refresh the Hosts? Especially hourly? I only refresh those values on demand, never preemptively.

No there is not the need of the
// Refresh basic parameters hourly.