I found solution by setting connection user and pas to blank , everything is ok now
how ?
it didn’t work for me.
How to debug in v1.2.6+20210916212615 .
can anybody help me?
thanks!
Yes, work on 1.2.8 for ont huawei HG8245W5
tried this but still does not work
Hello Guys!
I am having a similar problem here on my side…
I have a few devices activated on my ACS here (all Huawei models), now i am trying to connect a new device from a different vendor (BluCastle UNG221E), and i am facing this behavior…
Since our ACS doesnt need the ConnectionRequestAuthentication all my Huawei devices are running fine, for this new BluCastle one i cant leave the Connection Request Credentials blank… i need to insert a username and password to it work and return my RPCs … and also i had to add a config “AUTH(“myusername”, “mypassword”)” on my ACS side as well …
But when i add this config on ACS side, all my others Huawei devices stop to respond the RPCs…
There is any way to use this ACS config only for this new BluCastle device? or once i add it on ACS it will requires this authentication in all my devices?
Do you have any clue on how can i handle this situation?
I already tried to remove all connection request credentials from the BluCastle device, but even this way if didnt add the ACS config for authentication i always receive " [202 Connection request error: Incorrect connection request credentials]"
Than you in advance!
Best Regards!
Remove your entry in the config for cwmp.connectionRequestAuth. GenieACS will use the default value when none is provided. The default value for that parameter is AUTH(username, password)
. It is exactly that value.
This will cause genie acs to look at the value of the ConnectionRequestUsername and ConnectionRequestPassword parameters. So the easiest thing for you to do is add something like this to your provision script:
const now = Date.now();
const productClass = declare('DeviceID.ProductClass', {value: 1}).value[0];
if (productClass === 'UNG221E') {
declare('Device.ManagementServer.ConnectionRequestUsername', {value: now}, {value: "SomeUsername"});
declare('Device.ManagementServer.ConnectionRequestPassword', {value: now}, {value: "SomePassword"});
}
I have removed the config from admin>>config:
And created a custom Bootstrap provision file to handle only this special case i have…
bootstrap_custom file:
/**
* Data: 04/11/2022 - Autor: Guilherme R. Miguel
* Rev. 1.0
*
* Script_Tipo: Provisions
* Provisionamento de novos dispositivos
*
*/
const script_name = "bootstrap_custom";
const inicio = new Date().getTime()
const date = new Date();
var dateString =
("0" + date.getUTCDate()).slice(-2) + "/" +
("0" + (date.getUTCMonth()+1)).slice(-2) + "/" +
date.getUTCFullYear() + " " +
("0" + date.getUTCHours()).slice(-2) + ":" +
("0" + date.getUTCMinutes()).slice(-2) + ":" +
("0" + date.getUTCSeconds()).slice(-2);
log(" -- Iniciando Script de Provisionamento: " + script_name + " -- " + dateString);
const username = declare("DeviceID.ID", {value: 1}).value[0];
let serialNumber = declare("DeviceID.SerialNumber", {value: 1}).value[0];
log(script_name + " - " + "DeviceID: " + username + " | " + "Serial: " + serialNumber);
log(script_name + "|" + username + " -- TEXTO AQUI -- ");
const now = Date.now();
// Clear cached data model to force a refresh
clear("Device", now);
clear("InternetGatewayDevice", now);
const informInterval = 600;
// Refresh values daily
const daily = Date.now(86400000);
// Unique inform offset per device for better load distribution
const informTime = daily % 86400000;
const productClass = declare('DeviceID.ProductClass', {value: 1}).value[0];
if (productClass == "UNG221E") {
log(script_name + "|" + productClass + " -- AQUI -- ");
declare("Device.ManagementServer.ConnectionRequestUsername", {value: now}, {value: "teste"});
declare("Device.ManagementServer.ConnectionRequestPassword", {value: now}, {value: "teste"});
declare("Device.ManagementServer.PeriodicInformEnable", {value: daily}, {value: true});
declare("Device.ManagementServer.PeriodicInformInterval", {value: daily}, {value: informInterval});
declare("Device.ManagementServer.PeriodicInformTime", {value: daily}, {value: informTime});
commit();
log(script_name + "|" + productClass + " -- FIM -- ");
}
(i know i can remove the IF clause because i am filtering in the precondition…but ok… )
Even this way, i can see my device reaching my ACS server, but it is not sending the SPV to set the username and password i am inserting on my code…
log file: tail -f genieacs-cwmp-access.log
CPE side:
Am I doing something wrong in my provisioning file?
Why aren’t you configuring username/password on the CPE?
Thank you in advance!
Try doing a read of the value first. GenieACS does aggressive caching for performance reasons. So it will not do a SPV to a parameter that already matches the current value in the cache. This typically works really, really well. It falls down when it does a SPV on a param and the CPE returns that it has accepted the value, but the CPE doesn’t actually set the value internally. I’ve seen this a few times when the CPE goes dumb.
The solution is to refresh the params:
declare("Device.ManagementServer.ConnectionRequestUsername", {value: now});
declare("Device.ManagementServer.ConnectionRequestPassword", {value: now});
Are you sure your CPE is using TR181? Device.
is TR181, InternetGatewayDevice.
is TR069. If your CPE is using TR069 then change your parameter names to InternetGatewayDevice.ManagementServer.ConnectionRequestUsername
and InternetGatewayDevice.ManagementServer.ConnectionRequestPassword
.
where write this script ?
Hi Zaidka,
I want to ask you about CWMP port of GenieACS.
can you help me to show how to change the CWMP port (7547) to other port?
thank you in advance.
Best regards,
Deny Setiady
Please create your own thread instead of resurrecting a year old thread that is unrelated to your issue.
Maybe you should just read the documentation…