Speedtouch Provision fail on ADSL

Hi

Having a weird one with a Technicolor DWA0120 router.

Provisions fine when connected to an FTTC line but when plugged into an ADSL it fails

Working log on a FTTC Line.
2019-07-03T21:19:55.671Z [INFO] 85.91.252.254 000E50-DWA0120-CP1915AD70S: Script: Setting un: 01670812351@zonetelecom.co.uk, pw: e772c5e031
2019-07-03T21:19:55.672Z [INFO] 85.91.252.254 000E50-DWA0120-CP1915AD70S: Script: Done configuring. Setting provisioned tag
2019-07-03T21:19:55.681Z [INFO] 85.91.252.254 000E50-DWA0120-CP1915AD70S: ACS request; acsRequestId=“16bb9b54d840001” acsRequestName=“GetParameterValues”
2019-07-03T21:19:55.934Z [INFO] 85.91.252.254 000E50-DWA0120-CP1915AD70S: ACS request; acsRequestId=“16bb9b54d840002” acsRequestName=“SetParameterValues”

When on an adsl line
2019-07-03T21:09:54.908Z [INFO] 85.91.252.254 000E50-DWA0120-CP1915AD70S: Script: Setting un: 01670812351@zonetelecom.co.uk, pw: e772c5e031
2019-07-03T21:09:54.909Z [INFO] 85.91.252.254 000E50-DWA0120-CP1915AD70S: Script: Done configuring. Setting provisioned tag
2019-07-03T21:09:54.915Z [INFO] 85.91.252.254 000E50-DWA0120-CP1915AD70S: ACS request; acsRequestId=“16bb9ac233a0000” acsRequestName=“GetParameterValues”
2019-07-03T21:09:55.183Z [INFO] 85.91.252.254 000E50-DWA0120-CP1915AD70S: ACS request; acsRequestId=“16bb9ac233a0001” acsRequestName=“SetParameterValues”
2019-07-03T21:09:55.473Z [WARN] 85.91.252.254 000E50-DWA0120-CP1915AD70S: CPE fault; acsRequestId=“16bb9ac233a0001” cpeFaultCode=“9003” cpeFaultString=“Invalid arguments”
2019-07-03T21:09:55.474Z [WARN] 85.91.252.254 000E50-DWA0120-CP1915AD70S: Channel has faulted; channel=“default” retries=0 faultCode=“cwmp.9003” faultMessage=“Invalid arguments”

Any ideas?

are you setting just two parameters (username and password)? or there are also other ones that you don’t log?

I suspect it is related to my problem (Send all parameters on the same setParametersValue RPC). Please activate debugging for this device and compare the two SPV (FTTC vs ADSL). Both of them send all the params you requested?

Hi Lavira

No its not related to your issue unfortunatly. I have done some more digging and it seems that although in the web interface you set the username/password in one place and will work no matter if your on ADSL or FTTC, in the ACS it has 2 different variables.

For ADSL its
InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.Username

for FTTC its
InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.Username

If I try and set both these at same time in provision it fails.

If I refresh the values of these 2 parameters, only the active one returns a value.

Does anyone know how to make the provision script check for which has a value and provision that one?

ah, in that case you should use wildcard or an alias filter (check the wiki https://github.com/genieacs/genieacs/wiki/Provisions), something like:
declare(‘InternetGatewayDevice.WANDevice.1.WANConnectionDevice.*.WANPPPConnection.*.Username’, {value: Date.now()}, {value: ‘username’});

Ok that didnt work, as with a wildcard it tried to update both objects which caused the CPE to fail.

We got round this by using the following code in the provision to detect which one it was using.

let device1 = declare(“InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.Username”, {value: now}).value[0];
if (device1) {
log(‘Provisiong Device type 1’);
declare(“InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.Username”, {value: now}, {value: config.username});
declare(“InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.Password”, {value: now}, {value: config.password});
}
let device2 = declare(“InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.Username”, {value: now}).value[0];
if (device2) {
log(‘Provisioning Device type2’);
declare(“InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.Username”, {value: now}, {value: config.username});
declare(“InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.Password”, {value: now}, {value: config.password});
}
let device3 = declare(“InternetGatewayDevice.WANDevice.2.WANConnectionDevice.1.WANPPPConnection.1.Username”, {value: now}).value[0];
if (device3) {
log(‘Provisioning Device type3’);
declare(“InternetGatewayDevice.WANDevice.2.WANConnectionDevice.1.WANPPPConnection.1.Username”, {value: now}, {value: config.username});
declare(“InternetGatewayDevice.WANDevice.2.WANConnectionDevice.1.WANPPPConnection.1.Password”, {value: now}, {value: config.password});
}
declare(“InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.SSID”, {value: now}, {value: config.wifissid});
declare(“InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.KeyPassphrase”, {value: now}, {value: config.wifipass});

//Refresh the vParams
declare("VirtualParameters.pppoeUsername", {value: now});

}

Hope it helps anyone else in similar issues.

@lavira, you need to specify the object with a . at the end like:
InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.Username.

Furthermore i would advice you to perform a GPV on object parameter InternetGatewayDevice.fayer3forwarding.

to define where you want to set your username.
:wink: