# Get ppp username from DSL modem

**URL:** <https://forum.genieacs.com/t/get-ppp-username-from-dsl-modem/1823>\
**Category:** Uncategorized\
**Created:** [July 2, 2021, 10:32am UTC](https://forum.genieacs.com/t/get-ppp-username-from-dsl-modem/1823 "2021-07-02T10:32:05Z")\
**Posts on this page:** 1\
**Showing post:** 4

<div class="post-metadata">

**Author:** ![akcoder](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/akcoder/32/11_2.png) [@akcoder](https://forum.genieacs.com/u/akcoder)\
**Post date:** [July 2, 2021, 9:42pm UTC](https://forum.genieacs.com/t/get-ppp-username-from-dsl-modem/1823/4 "2021-07-02T21:42:44Z")

</div>

Putting the header there doesn’t make the values magically appear.

You have to refresh that value from the CPE.

Create a vparam called “pppUsername” with this script:

```auto
let result = '';

if (declare("Tags.Bridged", {value: 1}).value !== undefined) {
    log('CPE is bridged, setting PPPoE username to null');
} else if ("value" in args[1]) {
    result = args[1].value[0];
} else {
    let keys = [
        'InternetGatewayDevice.WANDevice.*.WANConnectionDevice.*.WANPPPConnection.*.Username',
        'Device.PPP.Interface.*.Username'
    ];

    result = getParameterValue(keys);
}

return {writable: true, value: [result, "xsd:string"]};

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

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

    return '';
}

```

Then in your default provision put this:

```auto
//Refresh the PPPoE username
declare("VirtualParameters.pppUsername", {value: Date.now()});

```

---

_[View the full topic](https://forum.genieacs.com/t/get-ppp-username-from-dsl-modem/1823)._
