Problem setting PPPoE on ONT Zhone

Hello, I’m pretty newie in TR-69 and GenieACS.
I’m trying to configure PPPoE credentials on an HX2466GN ONT using GenieACS v1.2.13 without success.
Within the ONT, I can see the created PPPoE interface.
When I try to apply the credentials using my provisioning script, nothing happens.
When I enter the GenieACS UI, I see a partial path that goes to

InternetGatewayDevice.WANDevice.1.WANConnectionDevice

I tried updating the path to the end using

declare(‘InternetGatewayDevice.WANDevice.1.WANConnectionDevice..’, {path: Date.now(), value: Date.now()})

, but the path doesn’t update.
If I refresh the path using the GenieACS UI, the path is populated, and the credentials are set using my provisioning script.
By enabling debugging, I could see that the difference between updating the path using the declare function within the script and using the UI is that in the first case, the NextLevel field is true, and in the second, it’s false.
Is there a way to accomplish this using the provisioning script?
Is it normal to have to update the entire path to set a parameter?

GenieACS works in a declarative fashion. Don’t worry about refreshing things, set the values you want in the provision script.

declare('InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.Username', null, {value: 'some_username'})
declare('InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.Password', null, {value: 'some_password'})
1 Like

Thanks for your reply. The first thing that i tried was

declare(‘InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.Username’, {value: Date.now()}, {value: ‘some_username’})

But on the ONT the PPPoE user isn’t set.
I also try as you suggest using the timestamp as ‘null’, but the behavior is the same.
By the way, can you tell me what is the difference between this two approach?.
Thanks in advance.

This is covered in the docs

Does an instance of InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection exist on the ONT? If not, you will need to add one.

const basePath = 'InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.';

const params = {
    Username: 'some_username',
    Password: 'some_password',
    // Add any other key/value pairs in here
};
const path = basePath + '.[' + Object.keys(params).map(key => key + ':' + params[key]).join(',') + ']';

declare(basePath + '.[]', null, {path: 0}); // Remove all existing instances
declare(path, {path: 1}, {path: 1}); // Ensure only one entry using the key/values in params to ensure uniqueness

If you refresh the path

InternetGatewayDevice.WANDevice.1.WANConnectionDevice

using the ui, you can see the path

InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.Username

image

and if you do the refresh, you can set the username by using the declare function. But you can do it, only after doing the path refresh using the ui.
As i can understand setting the timestamp value to null is similar to the most recent value, so it will force a sync with the device and set the value declared in the declare function. Am I correct?

There is no requirement to refresh parameters to set parameters via provision script. GenieACS will resolve the path itself.

Yes, I understand that. But setting the value directly doesn’t do anything on the ONT.
Now the ONT is in SUF status and I can’t manage it. Tomorrow I’ll try to debug what happens when I try to set the username directly.
Thanks.

I have recovered the management of the ONT, and made some more test with GenieACS debug enable to see the cwmp messages.
The first attempt is to set the PPPoE username and password in a declarative way.
The provision script is executed in every PERIOD event.

Log before refreshing path

But I never see a SetParameterValues message, only the GetParameterNames displayed above.
Then i did the path refresh using the GenieACS UI while the the provision script is still running, you can see the whole WANPPPConnection path in the incoming message, and the Writable flag in false in the top of it.
And in the next PERIODIC event, the SetParameterValues is sent to the ONT.

Log after refreshing path

Any suggestion?
Thanks in advanced

After some effort, and looking for another configuration alternative, trying to send a configuration file instead of doing it through the declare function, I found that the PPPoE credentials in the file I downloaded from the ONT were not saved in the path

InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.Username

, but in

InternetGatewayDevice.LANDevice.10.LANHostConfigManagement.IPInterface.1.X_ZHONE_COM_PPPoEConfig.Username

. A similar path is for setting the password.
Using this path, the configuration can be done in a declarative way as you mentioned before.
Thank you for your help and the time you used to helping me.

1 Like