# Request for better documentation

**URL:** <https://forum.genieacs.com/t/request-for-better-documentation/3320>\
**Category:** Uncategorized\
**Created:** [December 15, 2022, 6:22pm UTC](https://forum.genieacs.com/t/request-for-better-documentation/3320 "2022-12-15T18:22:55Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Daniello](https://avatars.discourse-cdn.com/v4/letter/d/22d042/32.png) [@Daniello](https://forum.genieacs.com/u/Daniello)\
**Post date:** [December 15, 2022, 6:22pm UTC](https://forum.genieacs.com/t/request-for-better-documentation/3320/1 "2022-12-15T18:22:55Z")

</div>

I am new to ACS and genie but im trying to learn. Its a really hard road to walk tho with the seriously lacking documentation out there. The documentation in general seems to assume ppl know the basics /basics+.  
It would be really nice if the documentation could explain stuff in more detail, and also the inner workings of genieacs. Some examples would be sweet.

For instance:

> **[CPE Authentication — GenieACS Documentation 1.2.13 documentation](https://docs.genieacs.com/en/latest/cpe-authentication.html)**

Can i get credentials from a file? What format should the file be? Examples of a file?  
And then there is:  
//

## ACS to CPE

TODO  
//

Please - ppl i know speak warmly of genie but for a newbie its really hard to fall in love when i spend a month trying to configure a single CPE.

---

<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:** [December 16, 2022, 6:22pm UTC](https://forum.genieacs.com/t/request-for-better-documentation/3320/2 "2022-12-16T18:22:22Z")

</div>

GenieACS is an opensource project. Documentation is almost always lacking for open source projects. I realize as a user this is sub-optimal. Writing documentation is a real pain, and as developers, unless we are getting paid to go through that pain, its just not something that’s high on the list.

You are free to submit pull requests with updated documentation. You might also try engaging in a support contract by emailing [sales@genieacs.com](mailto:sales@genieacs.com). You can ask questions in this forum and people will help too when they have time. This is why I’m on this forum, to help give back.

As for ACS to CPE authentication, if you are using the `default` provision script that comes with v1.2, then there is nothing more you need to do. The `default` script handles setting each CPE with a unique username/password for connection request authentication.

---

<div class="post-metadata">

**Author:** ![beryindo](https://avatars.discourse-cdn.com/v4/letter/b/a9adbd/32.png) [@beryindo](https://forum.genieacs.com/u/beryindo)\
**Post date:** [December 17, 2022, 3:21pm UTC](https://forum.genieacs.com/t/request-for-better-documentation/3320/3 "2022-12-17T15:21:02Z")

</div>

I really appreciate genieacs, I’m still confused about where to add the script? How to get device parameters?

Parameter example to get RXPower:

`InternetGatewayDevice.WANDevice.1.X_GponInterafceConfig.RXPower`

i want to add new script and display in index. can you help me step by step

---

<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:** [December 19, 2022, 5:35pm UTC](https://forum.genieacs.com/t/request-for-better-documentation/3320/4 "2022-12-19T17:35:57Z")

</div>

Lets start with definitions. What do you mean by “add a new script?” Do you want to add a new provisioning script, external script, script to change how the UI works (not possible)?

Adding a new parameter to the index page is straight forward. Admin → Config → Edit index page. Then at the bottom you add a new label and param. The syntax is YAML. Here is a param I’ve added to ours:

```yaml
- label: "'Config Origin'"
  parameter: VirtualParameters.ConfigOrigin

```

Virtual parameters are a way of synthesizing a value. Example would be one CPE vendor exposes the WPS flag as `InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.X_BROADCOM_COM_WlanAdapter.WlVirtIntfCfg.1.WlWpsCfg.Wsc_mode` and another exposes it as `InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.X_WPS`. Using a vparam allows you to aggregate all of those values into a script and expose the param and abstract away all the implementation details.

Here is a fairly simple vparam script to allow getting/setting of the PPPoE username:

```javascript
let result = '';

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 'UNKNOWN';
}

```

---

<div class="post-metadata">

**Author:** ![beryindo](https://avatars.discourse-cdn.com/v4/letter/b/a9adbd/32.png) [@beryindo](https://forum.genieacs.com/u/beryindo)\
**Post date:** [December 20, 2022, 2:55am UTC](https://forum.genieacs.com/t/request-for-better-documentation/3320/5 "2022-12-20T02:55:26Z")

</div>

Thank you akcode, How to get optic RX from ONU/ONT ZTE ?

---

<div class="post-metadata">

**Author:** ![Daniello](https://avatars.discourse-cdn.com/v4/letter/d/22d042/32.png) [@Daniello](https://forum.genieacs.com/u/Daniello)\
**Post date:** [January 24, 2023, 7:15am UTC](https://forum.genieacs.com/t/request-for-better-documentation/3320/6 "2023-01-24T07:15:44Z")

</div>

Yes i get what you are saying akcoder. I do understand the pain after having documented quite a few projects myself. Documenting it once, however boring, is less pain than answering the same question multiple times on a forum though.  
I also learned that when spending months/years on a project its worth spending a week documenting it so ppl can actually use whatever you spent months/years making:)

---

<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:** [January 24, 2023, 9:53pm UTC](https://forum.genieacs.com/t/request-for-better-documentation/3320/7 "2023-01-24T21:53:16Z")

</div>

Pull requests are welcome 🙂.

---

<div class="post-metadata">

**Author:** ![Clxxcv](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/clxxcv/32/1013_2.png) [@Clxxcv](https://forum.genieacs.com/u/Clxxcv)\
**Post date:** [January 31, 2023, 12:11pm UTC](https://forum.genieacs.com/t/request-for-better-documentation/3320/8 "2023-01-31T12:11:13Z")

</div>

Admin → Config → Edit device page → Added lines.

```auto
- label: "'RX Power'"
      parameter: InternetGatewayDevice.WANDevice.1.X_GponInterafceConfig.RXPower

```

 ![image](https://canada1.discourse-cdn.com/flex035/uploads/genieacs/original/2X/b/bf65ad8bc33b48d202ba863ad79e43e9b878d32f.png)
