Different usernames and passwords on ONUS

Hi all.

I will try to explain this problem in the best way possible, keep in mind that English is not my native language.

I have several ONUs, each of which uses a different username and password. I can’t change it on the ONUs at the moment. I’m talking to the manufacturer about a solution.
In the meantime, is it possible to have GenieACS obtain the username and password from the same ONU? Through “inform”?

I should do this on the ONUs identified with version: “v2.0.7” this is under :
InternetGatewayDevice.DeviceInfo.SoftwareVersion

And the parameters are visible in:
“InternetGatewayDevice.ManagementServer.ConnectionRequestUsername”
“InternetGatewayDevice.ManagementServer.ConnectionRequestPassword”
If this is possible, can I see an example?
Thank you very much.

If the manufacturer is conforming to the specification, you will not be able to read any passwords via TR-069/TR-181.

sorry akcoder, the parameters are present and i can read it:
“InternetGatewayDevice.ManagementServer.ConnectionRequestUsername”
“InternetGatewayDevice.ManagementServer.ConnectionRequestPassword”

i’m able to read … so .. how can use it?

You can read them because GenieACS sets those values in the default inform script. Here is a trimmed down version of the default script:

const username = declare("DeviceID.ID", {value: 1}).value[0]; // Device ID as username
const daily = Date.now(86400000);                             // Refresh values daily

// Password will be fixed for a given device because Math.random() is seeded with device ID by default.
const password = Math.trunc(Math.random() * Number.MAX_SAFE_INTEGER).toString(36);

declare("InternetGatewayDevice.ManagementServer.PeriodicInformEnable", {value: daily}, {value: true});
declare("InternetGatewayDevice.ManagementServer.ConnectionRequestUsername", {value: daily}, {value: username});
declare("InternetGatewayDevice.ManagementServer.ConnectionRequestPassword", {value: daily}, {value: password});

declare("Device.ManagementServer.PeriodicInformEnable", {value: daily}, {value: true});
declare("Device.ManagementServer.ConnectionRequestUsername", {value: daily}, {value: username});
declare("Device.ManagementServer.ConnectionRequestPassword", {value: daily}, {value: password});

I’m still unsure what you are actually wanting GenieACS to do. Are the ONU’s connected to GenieACS?

If I understand you correctly, I may have also encountered this issue before.

Seems like you have a certain model ONU that you cannot change the connection request username and password. In the meantime, you would still like to manage them from GenieACS, using their default username and password.

Is that correct?

yes, that is correct.

In my lab server, I changed the inform script to include switch/case to apply different options per vendor’s Product Class:

// get productClass
let productClass = declare("DeviceID.ProductClass", {value: 1}).value[0];
switch (productClass) {
    case "Vendor A productClass":
	    declare("InternetGatewayDevice.ManagementServer.ConnectionRequestUsername", {value: daily}, {value: username});
        declare("InternetGatewayDevice.ManagementServer.ConnectionRequestPassword", {value: daily}, {value: password});
        declare("InternetGatewayDevice.ManagementServer.PeriodicInformEnable", {value: daily}, {value: true});
        declare("InternetGatewayDevice.ManagementServer.PeriodicInformInterval", {value: daily}, {value: informInterval});
        //declare("InternetGatewayDevice.ManagementServer.PeriodicInformTime", {value: daily}, {value: informTime});
        let wimaxIP = declare ("InternetGatewayDevice.WANDevice.*.WANConnectionDevice.*.WANIPConnection.*.ExternalIPAddress", {value: Date.now()})
        declare("VirtualParameters.unifiedIP", {value: daily}, {value: wimaxIP});
		break;
    case "Vendor B productClass":
	    declare("InternetGatewayDevice.ManagementServer.ConnectionRequestUsername", {value: daily});
        declare("InternetGatewayDevice.ManagementServer.ConnectionRequestPassword", {value: daily}, {value: password});
        declare("InternetGatewayDevice.ManagementServer.PeriodicInformEnable", {value: daily}, {value: true});
        declare("InternetGatewayDevice.ManagementServer.PeriodicInformInterval", {value: daily}, {value: informInterval});
        //declare("InternetGatewayDevice.ManagementServer.PeriodicInformTime", {value: daily}, {value: informTime});
        let gpIP = declare("InternetGatewayDevice.WANDevice.*.WANConnectionDevice.*.WANIPConnection.*.ExternalIPAddress", {value: 1}).value[0];
        declare("VirtualParameters.unifiedIP", {value: daily}, {value: gpIP});
        //get IMSI
        //let gpIMSI = declare("InternetGatewayDevice.X_3GPPLTE_DeviceInfo.TerminalEquipment.IMSI", {value: 1}).value[0];
        let gpIMSI = declare("InternetGatewayDevice.X_3GPPLTE_DeviceInfo.TerminalEquipment.IMSI", {value: Date.now()});
        declare("VirtualParameters.unifiedPPP", null, {value: gpIMSI});
        //declare("VirtualParameters.unifiedPPP", {value: daily}, {value: gpIMSI});
		break;
}

In Vendor A case, I am changing the connection request username and password.
In Vendor B case, I am only changing the connection request password.

Modify it to match what you’re trying to accomplish.

1 Like

Thank you very much, that’s exactly what I was looking for.
thanks for sharing !!!

No problem.
Let me know if you get it to work for you.

1 Like