Problem with PPPoE information

Hello everyone,

We’re having some trouble creating a new tag called “PPPoE” that takes the WAN PPPoE information from the Tp-link router.

First hand, it takes all the PPPoE information if it is created in instance 1:


but if by mistake in the tp-linl router the service was created as second, the genieacs does not take information and leaves it blank:

I have this created in the main panel:

  • label: “‘PPPoE’”
    parameter: InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.Username ( it does not let me create another parameter )

How do I show the information in any instance, for example:



I need it to be something generic

Can you help me ?

Use a vparam for that.

let result = '';

if ("value" in args[1]) {
    result = args[1].value[0];
} else {
    let keys = [

    result = getParameterValue(keys);

log('pppoeUsername: ' + result);
return {writable: true, value: [result, "xsd:string"]};

function getParameterValue(keys) {
    for (let key of keys) {
        let d = declare(key, {path: - (120 * 1000), value:});

        for (let item of d) {
            if (item.value && item.value[0]) {
                return item.value[0];

    return '';

Hi akcoder,

After I create the parameter, how do I make it appear on the front panel? I mean what command do I have to put in the device> pppoe section. since it still doesn’t show me

Captura de pantalla 2022-03-29 091711

This is what i have in the part Editing index page

What should I put in that section?

Replace line 7 with VirtualParameter.WhatEverYouNamedTheParam. You will need to refresh the value before anything will show.

Hi Akoder,

I have applied what you said me and it does not work. i attach you image


Virtual parameter configured

Editing Index Page conf

I wait your answer

You did not refresh the Paramter.
Over the ui it would be possilbe by:
2022-03-30 09_41_50-00040E-FRITZ%21Box-1CED6F0FF682 - Devices - GenieACS
Or by adding the VirtualParameter.WhatEverYouNamedTheParam to a provision. e.g. the default provision.

Hi JonasGhost,

I do not get it. above in the conversation I followed the steps and it does not work. What do i do exaclty ?

Did you follow the Steps in my Post?
Go to the device, scroll down to All Parameters, then to Virtual Parameters. Then click on the refresh and commit.
The it should reload the Virtual Paramters for this devices, if this works, you can change your provisioning script to automatically load the paramter.

Or in your provision script that sets the pppoe username do this:

declare('VirtualParameters.WhatEverYouNamedTheParam', null, {value: 'the_user_name'});

This will prevent GenieACS from needlessly refreshing params.

Hi akcoder,

I have applied what you comment above but still it does not work. I explain to you :slight_smile:

I have 4 columns created to observe the following information:

in the pppoe section I have a line configured to print the following:

  • label: “‘PPPoE’”
    parameter: InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.Username

this configuration is ok since it is showing the username but i have others one device that the instance is different. For example:


I need that in the PPPoE label independently in the instance that it shows me the PPPoE username

My question is: what should I put in the edit device section so that it shows it to me (the virtual parameter does not work with different distance)

- label: "'PPPoE username'"
  parameter: VirtualParameters.pppoeUsername

My vparam is called pppoeUsername. You either need to set the value of VirtualParameters.pppoeUsername in your provision script. Or refresh the value (in your provision script, via the api, using aliens, etc) of VirtualParameters.pppoeUsername. This is the only way it will work…

In my provision script, I’m doing this to set the un/pw:

// {value: now} forces GenieACS to update/set the value of the username/password
declare('InternetGatewayDevice.WANDevice.*.WANConnectionDevice.*.WANPPPConnection.*.Username', {value: now}, {value: config.username});
declare('InternetGatewayDevice.WANDevice.*.WANConnectionDevice.*.WANPPPConnection.*.Password', {value: now}, {value: config.password});

//Set the vParams
declare('VirtualParameters.pppoeUsername', null, {value: config.username});

Hi Akcoder,

I did the same that you and it shows me in the label PPPoE for all PPPoE username: The_user_name


How do I make it show the corresponding PPPoE of each one?

My routers are Tp-link


Any news ?. I need to know how to use this part of Genieacs

You have been given all of the information needed to accomplish your goal. I suggest you re-read everything that @JonasGhost and I have written in this thread.

If you still need help, then you should probably engage with a commercial support contract by emailing

GenieACS is not, and by its very nature cannot ever be a plug and play system. It requires programming ability. There is no way around this.

1 Like

Hi @akcoder ,
I already tried contacting and most likely peoples also did the same I guess so. I nearly tried messaging 4 to 5 times in a single month but there is use and there was no response, because of the no response thing people are trying to asking question forum.


Did you add your declare statement to the default provision script?

Hi akcoder,

the script now works and shows me the PPPoE regardless of the instance that is created, now two things.

Is there a way to update the pppoe automatically without having to do it manually?

  1. Is there a way to apply the same script but for the IP section? The same thing happens to me that if it is created in another instance it does not show me correctly. Do you have a script for this too ?

can u please tell me what did you do to let it work ? I did the same steps but it still return pppoe username as blank