Device is Offline

Good morning friends, or afternoon depends on where you read me, it is my second question in this forum and it can be very silly, I have already read several topics and I cannot find one related to the subject, add two devices, one is vzol and the other is tplink. They connect to the server and appear online but when I send it an instruction I get an error that the device is offline, do you know what problem I’m facing? I have mikrotik and huawei devices and they work correctly without problems, thanks for your help
image

It means the ‘Connection Request’ is failing. This can happen when the device is behind NAT for example. Find the value of the parameter InternetGatewayDevice.ManagementServer.ConnectionRequestURL and use curl to make a GET request to that URL from the server. If that doesn’t work then you know it’s a network or firewall issue.

Thank you very much for your comments, you are a master, how many NATs do you think are correct for 1 or 2 to work? I know that none is recommended, but there are no ipv4 resources and everything is about NAT right now, so maybe we can remove some

HI @zaidka
i get this error when trying curl InternetGatewayDevice.ManagementServer.ConnectionRequestURL:

curl -i http://43.225.162.17:7547/tr069 -x GET
curl: (5) Could not resolve proxy: GET

Hi, -x is the option for specifying a proxy for the request. In order to specify the HTTP method, it’s -X (uppercase) … but GET’s the default method , so this should work:

curl -i http://43.225.162.17:7547/tr069

i tried also. but getting this

Last login: Wed Jun 9 07:37:15 2021 from 8.28.82.7
airnet@airnet:~$ sudo -i
[sudo] password for airnet:
root@airnet:~#
root@airnet:~#
root@airnet:~# curl -i http://43.225.162.17:7547/tr069
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest realm=“realtek.com.tw”, qop=“auth”, nonce=“60c0a1e9ca6e423f6a80”, opaque=“f6b2ad7f”
Server: gSOAP/2.7
Content-Type: text/xml; charset=utf-8
Content-Length: 463
Connection: keep-alive

<SOAP-ENV:Envelope xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/” xmlns:SOAP-ENC=“http://schemas.xmlsoap.org/soap/encoding/” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=“XML Schema” xmlns:cwmp=“urn:dslforum-org:cwmp-1-0”>SOAP-ENV:BodySOAP-ENV:FaultSOAP-ENV:Client
HTTP Error: 401 Unauthorized
</SOAP-ENV:Fault>

yes, that’s correct if the values for ConnectionRequestUsername and ConnectionRequestPassword are not null. See what these values are and change the command accordingly:

curl -i http://43.225.162.17:7547/tr069 --user "user:password"

both are null for this device… in other device it is showing string in respective parameter field

this means they are actually set on the device but not via genieacs. Don’t you have a provision to set these? if not, make one to refresh& set these values and reboot your device in order to run it.

provision script or manual add in cpe device?

provision script as you want this automated, but there is one that does just this in the default config. You removed it ?

// Device ID as user name
const username = declare(“DeviceID.ID”, {value: 1}).value[0]

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

const informInterval = 300;

// Refresh values daily
const daily = Date.now(86400000);

// Unique inform offset per device for better load distribution
const informTime = daily % 86400000;

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});

declare(“Device.ManagementServer.ConnectionRequestUsername”, {value: daily}, {value: username});
declare(“Device.ManagementServer.ConnectionRequestPassword”, {value: daily}, {value: password});
declare(“Device.ManagementServer.PeriodicInformEnable”, {value: daily}, {value: true});
declare(“Device.ManagementServer.PeriodicInformInterval”, {value: daily}, {value: informInterval});
declare(“Device.ManagementServer.PeriodicInformTime”, {value: daily}, {value: informTime});

i changed name to inform