Request for better documentation

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:
Can i get credentials from a file? What format should the file be? Examples of a file?
And then there is:



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.

1 Like

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 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.

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

Parameter example to get RXPower:


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

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:

- 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:

let result = '';

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

    result = getParameterValue(keys);

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

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

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:)

Pull requests are welcome :slight_smile:.

Admin → Config → Edit device page → Added lines.

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