Setting up GenieACS for TP-Link

Hi all:

I’m new to GenieACS. I’ve got a server running, with the web gui, and I’ve gotten some devices to connect via TR-069 to GenieACS. Unfortunately, there’s not a lot I can do, and many important functions are missing.

I believe I need to add some map file or something. I’m not really sure. The docs are pretty sparse; they do say you can do practically anything by writing a bit of code, but getting there seems to be a mystery.

Does anyone have any more detailed info on it, and espicially special sampe code or the likes? I’m not currently looking for external connections, I’m trying to use the genieacs web ui to at least see and change the wifi password (one model of device the wifi password is blank; on the TP-Link Archer C5 ISP, the password isn’t even listed anywhere as an option.

I’d also like info like what I’ve seen advertised like wifi client lists and signal strength, IP address of the router, etc. Bonus points for being able to enable and disable remote management and see/set the management Gui password.

I’m a new ISP, and about to do a bulk deployment of these routers, so I’m trying to be ready from a support standpoint!

Thank you!

After doing more reading, I think I can refine my question more.

It appears from a lot of exampes online that the magic I’m looking for are the config/summary_parameters.yml, index_parameters.yml, etc. On my installation, there is no config directory, and I was looking around in the github repo, and it also doesn’t appear to be there.

I do have an /opt/genieacs/ext directory, which is empty…But I do not find the config directory, nor any .yml files, anywhere and yet my genieacs gui is working on port 3000, it does show the default options on top, etc.

So, I think my two specific questions are:

  1. where should I be placing these .yml files / where can I find the active ones (I’ve installed mlocate and searched for .yml or index_parameters, and there are no such files anywhere on my system!)

  2. is there a repository of example/contributed .yml files for different equipment (specifically looking for tp-link and Adtran in this case)

  3. It has become clear that different manufacturers map configuration parameters to different fields. Is there a way to tell genieacs to select different *.yml files based on the device manufacturer?

Thank you again!

Most of what was in the config dir has been made directly editable in the UI.

Great, thanks! I just found this!

Question: when I look at stuff like this:
- label: “‘WLAN 2.4Ghz passphrase’”
parameter: InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.KeyPassphrase

And I have different device types that have the passphrase under different parameter paths, is there a way to have it reference multiple config paths? If so, how?


Actually, it appears I put it in twice, and it appears to work:

- label: "'WLAN 2.4Ghz SSID'"
  parameter: InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.SSID
- label: "'WLAN 2.4Ghz passphrase'"
  parameter: InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.KeyPassphrase
- label: "'WLAN 2.4Ghz passphrase'"
  parameter: InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.X_TP_PreSharedKey
- label: "'WLAN 5.8Ghz SSID'"
  parameter: InternetGatewayDevice.LANDevice.1.WLANConfiguration.2.SSID
- label: "'WLAN 5.8Ghz passphrase'"
  parameter: InternetGatewayDevice.LANDevice.1.WLANConfiguration.2.KeyPassphrase
- label: "'WLAN 5.8Ghz passphrase'"
  parameter: InternetGatewayDevice.LANDevice.1.WLANConfiguration.2.X_TP_PreSharedKey

I’ve read that GenieACS can push firmware out to routers…I haven’t seen any info on how that is done, do you have any?


FYI, KeyPassphrase should always come back as null when refreshed from the CPE, per the spec.

Thanks, I’ve been rereading this several times trying to make sense of the hooks for the scripts and where they go in.

Is there any good manual/reference for ACS? For example, I’m looking at the Presets and Provisions section of the Admin menu, but I don’t know what the different name/channel/weight, etc. all end up doing/meaning. Do I use a Preset to call a Provision?


Yes, a preset calls a provision.

Each preset must have a unique name. Each provision must have a unique name. A preset and a provision can be named the same.

Channels are used for grouping things for purposes of faults. Ex, I put all my provisioning presets in the “provision” channel. If one of the scripts in the provisioning channel faults, then all processing for that channel stops.

Weight is used where there is conflicting values in presets or provisions. Ex, if a preset with weight 200 executes a provision script that sets the InternetGatewayDevice.ManagementServer.PeriodicInformInterval to 30, but another preset with a weight of 800 executes a provision script that sets the InternetGatewayDevice.ManagementServer.PeriodicInformInterval to 55, the one with weight 800 will win, regardless of which order they run in. (As long as they execute within the same session is my understanding).

Great, that helps a lot, thank you! There’s so much of this type of thing that is not in the geneACS manual and I have a hard time finding the info/definitions/etc.

Looking at a preset, there is “Events”, and I see the default bootstrap has an event 0 BOOTSTRAP. Does that mean its automatically run when a device connects for the first time?

In the mass firmware upgrade post you referenced above, it specifies that it uses -0 Bootstrap in the events entry for the preset. What is the purpose/effect of that?

Next, as I try and decipher the provision script, the first section of the example with the Model: version: … inside {} I assume are the files that are already present in the files section? Is that accurate?

I’m also not sure how I can get a comparator running in my case, as my numbers are pretty bad: 3.16.0 0.9.1 v6013.0 Build 210414 Rel.28844n. The last version was very similar, but different build number (same decimal number), a slightly different v number, and a randomly-seeming different Rel. number. I’m just going on the Build numbers for now…


“0 BOOTSTRAP” is an event that is sent by the device the first time it connects to the ACS server. It would be sent again when the device is factory reset.

If the “Events” is left blank it applies to all events. A comma separated list of events is treated as an AND, and events prefaced by “-” means NOT. So in this case, -0 BOOTSTRAP means “run on anything that isn’t bootstrap” - i.e. do not run this on the very first bootup of the device. We have some events that run based on the device hostname, and the hostname will likely have changed upon reset which will impact what programming should be pushed to the device. We have a bunch of provisions that skip the BOOTSTRAP event for this reason, otherwise they could be pushing down wrong config because it has the old hostname from the previous contact just before the factory reset.

As an example, suppose you have three presets and provisions, one to refresh the hostname, one to apply certain settings if the hostname is “foo” and the other to apply certain settings if the hostname is “bar”. Suppose the device is initially “bar” and is in contact with the ACS and then it is factory reset, which changes the hostname to “foo”. The following events would happen:

  1. GenieACS would receive the 0 BOOTSTRAP message from the device and check to see what presets apply.
  2. It will see that events are matching on the hostname, and it still has the hostname from before the reset (because it hasn’t yet asked the device if the hostname has changed).
  3. It will decide to run both the refresh hostname preset/provision and the apply settings for “bar” preset/provision.
  4. The device will refresh the hostname and discover that it is now “foo” and update it, but it is too late because it has already applied the settings for “bar” incorrectly. It is an order-of-operations issue.

In that case adding -0 BOOTSTRAP to the “apply config X if hostname=foo” or “apply config Y if hostname=bar” means that the very first bootstrap it will only run the “refresh hostname” preset, which eliminates this issue.

Yes, the files would have to be present in the files section.

Thank you for that!

Is there a list somewhere of the different event options?

Yes, there is a list here: Event Basics | qa | cafe