Device parameter has wrong type


I am trying to set the password for a TP-Link Archer C5 Router via virtual parameters and I am getting the following error:

faultCode: "9003"
faultString: Invalid arguments
  - parameterName: InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.WPS.X_TP_PeerPassword
    faultCode: "9007"
    faultString: Invalid parameter value

After doing some debugging and investigating I discovered that the parameter itself has the bizarre type of xsd:unsignedInt. If I try to edit the parameter itself it gives me the prompt for an integer. What’s more, I actually can change the password through the virtual parameter–but only if I set the password to be a number.

Your CPE is sending bad soap data. Get a packet capture of the bad data, send it to TP Link. Expect them to say “But it works for everyone else!” If you argue back and forth enough with them, they will likely fix it. But not before blaming the ACS and anything else.

In this case it seems it was me who was mistaken, not TP-Link. X_TP_PeerPassword seems to refer to the WPS PIN. And since that’s a PIN, it makes sense that it’s stored as an integer.

The actual parameter that holds the WPA passcode is


This is the official parameter for the wifi pass: InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.PreSharedKey.1.KeyPassphrase