How to use push file feature of GenieACS to push a Firmware file to the Router

I want to push the Firmware Image from Genie ACS using “push file” feature.I am able to upload the bin file in the files tab of Genie ACS.
Next if I click on push file button, it will ask me to upload the file. But the drop down doesnt show any option. The screenshot is attached herewith.

Any suggestions as to how to do this experiment ?

You need to include screenshots of the Admin → Files tab.

Need to upload files first via Admin->Files, and THEN they can be selected from this drop-down menu.

Mind to include correct parameter values for Type, OUI and Product Class when uploading firmware file. Genie filters entries in “Push” drop-down by those parameters.

Hi @git-neo-si @akcoder thank you for your inputs. I am able to push the file (.bin). Problem was I was not giving proper OUI and product class values. The next point where I am getting stuck is, GenieACS is able to commit the firmware upgrade task, but the download is failing . Any pointers on this ? Here is my log

Thu May 11 12:29:47 2023 daemon.notice easycwmpd: receive InformResponse from the ACS
Thu May 11 12:29:47 2023 daemon.notice easycwmpd: send empty message to the ACS
Thu May 11 12:29:47 2023 daemon.notice easycwmpd: received Download method from the ACS
Thu May 11 12:29:47 2023 daemon.notice easycwmpd: add download: delay = 0 sec, url = http://139.59.62.27:7567/openwrt-ramips-mt76x8-Silbo_RF44-squashfs-sysupgrade.bin, FileType = ‘1 Firmware Upgrade Image’, CommandKey = ‘188099bd3200000’
Thu May 11 12:29:47 2023 daemon.notice easycwmpd: send DownloadResponse to the ACS
Thu May 11 12:29:47 2023 daemon.notice easycwmpd: receive empty message from the ACS
Thu May 11 12:29:47 2023 daemon.notice easycwmpd: external: execute apply service
Thu May 11 12:29:47 2023 daemon.notice easycwmpd: external script exit
Thu May 11 12:29:47 2023 daemon.notice easycwmpd: end session success
Thu May 11 12:29:47 2023 daemon.notice easycwmpd: start download url = http://139.59.62.27:7567/openwrt-ramips-mt76x8-Silbo_RF44-squashfs-sysupgrade.bin, FileType = ‘1 Firmware Upgrade Image’, CommandKey = ‘188099bd3200000’
Thu May 11 12:29:47 2023 daemon.notice easycwmpd: external script init
Thu May 11 12:29:48 2023 daemon.notice easycwmpd: external: execute download http://139.59.62.27:7567/openwrt-ramips-mt76x8-Silbo_RF44-squashfs-sysupgrade.bin
Thu May 11 12:29:49 2023 daemon.notice easycwmpd: add event ‘7 TRANSFER COMPLETE’
Thu May 11 12:29:49 2023 daemon.notice easycwmpd: add event ‘M Download’
Thu May 11 12:29:49 2023 daemon.notice easycwmpd: download error: ‘Download failure’
Thu May 11 12:29:49 2023 daemon.notice easycwmpd: external script exit
Thu May 11 12:29:49 2023 daemon.notice easycwmpd: start session
Thu May 11 12:29:49 2023 daemon.notice easycwmpd: configured acs url http://139.59.62.27:7547/
Thu May 11 12:29:49 2023 daemon.notice easycwmpd: external script init
Thu May 11 12:29:51 2023 daemon.notice easycwmpd: external: execute inform parameter
Thu May 11 12:29:53 2023 daemon.notice easycwmpd: send Inform
Thu May 11 12:29:53 2023 daemon.notice easycwmpd: receive InformResponse from the ACS
Thu May 11 12:29:53 2023 daemon.notice easycwmpd: send RPC ACS TransferComplete
Thu May 11 12:29:53 2023 daemon.notice easycwmpd: receive TransferCompleteResponse from the ACS
Thu May 11 12:29:53 2023 daemon.notice easycwmpd: send empty message to the ACS
Thu May 11 12:29:53 2023 daemon.notice easycwmpd: receive empty message from the ACS
Thu May 11 12:29:53 2023 daemon.notice easycwmpd: external: execute apply service
Thu May 11 12:29:53 2023 daemon.notice easycwmpd: external script exit
Thu May 11 12:29:53 2023 daemon.notice easycwmpd: end session success

I would check if file is downloaded “untouched” - download it manually (you have the URL CPE is using), and compare it to original size (and content).

Sorry I dint not get you.

I have uploaded the firmware update file in the admin’s–>Files tab. Do I have to configure anything other than this on the GenieACS dashboard ?

(you have the URL CPE is using), and compare it to original size (and content). → Where exactly do we have it ?

No, the log you sent shows that CPE received request to download a firmware and it also shows that a download event was actually started. All you need to do is now verify if the downloaded file is in “intact” form (content).

The mentoned URL is on the log you sent:
Thu May 11 12:29:47 2023 daemon.notice easycwmpd: start download url = http://139.59.62.27:7567/openwrt-ramips-mt76x8-Silbo_RF44-squashfs-sysupgrade.bin, FileType = ‘1 Firmware Upgrade Image’, CommandKey = ‘188099bd3200000’

Download the file via URL http://139.59.62.27:7567/openwrt-ramips-mt76x8-Silbo_RF44-squashfs-sysupgrade.bin

If it is identical to your original file, then… maybe CPE does not have access to GenieACS file service on port 7567?

Although, the log file does not show this…

Also check GenieACS database (db genieacs, table fs.files) if all firmware data is as expected.

Oh got you . http://139.59.62.27:7567/openwrt-ramips-mt76x8-Silbo_RF44-squashfs-sysupgrade.bin ,if I click on this URL, the downloading of file should take place right ? The files isnt getting downloaded.

Also check GenieACS database (db genieacs, table fs.files) if all firmware data is as expected. → I amnot quiet sure how to check this. Because I set up my own server using the below document. If you can give me some sort of hint, it will be useful.

If file does not get downloaded, I guess you have the reason why it is not working for you. :slight_smile:

To check the database:
$ mongo

use genieacs
db.fs.files.find()
quit()

displays ALL files (firmware, vendor config, …) that were uploaded into GenieACS. MD5 hash and size (length) should be the same for “original” file and this info here.

The reason file downloads aren’t working is you don’t have the fs process running. This is evidenced by the fact that I can connect to your acs on port 7547, but not on port 7567 (the fs port).

You need to enable https, you do not want data flowing over the internet in the clear. You need to firewall off your ACS to just your network. You need to enable (and use) both ACS → CPE Authentication and CPE → ACS Authentication

Jup, probably true. Did not check ALL service ports (just FS service) to see that CWMP and NB-API are actually accessible.

Bring up firewall for services exposed to public internet! :slight_smile:

@akcoder @git-neo-si Thank you for the valuable inputs. Now the Download error is gone. I am getting all the events as successfully completed. I am getting following logs

Mon May 15 17:30:17 2023 daemon.notice easycwmpd: ACS initiated connection
Mon May 15 17:30:17 2023 daemon.notice easycwmpd: add event ‘6 CONNECTION REQUEST’
Mon May 15 17:30:17 2023 daemon.info logread[1248]: failed to send log data to 10.1.1.132:52333 via udp
Mon May 15 17:30:17 2023 daemon.notice easycwmpd: start session
Mon May 15 17:30:17 2023 daemon.notice easycwmpd: configured acs url http://139.59.62.27:7547/
Mon May 15 17:30:17 2023 daemon.notice easycwmpd: external script init
Mon May 15 17:30:17 2023 daemon.notice easycwmpd: external: execute inform parameter
Mon May 15 17:30:18 2023 daemon.info logread[1248]: Logread connected to 10.1.1.132:52333
Mon May 15 17:30:19 2023 daemon.notice easycwmpd: send Inform
Mon May 15 17:30:19 2023 daemon.info logread[1248]: failed to send log data to 10.1.1.132:52333 via udp
Mon May 15 17:30:19 2023 daemon.notice easycwmpd: receive InformResponse from the ACS
Mon May 15 17:30:19 2023 daemon.notice easycwmpd: send empty message to the ACS
Mon May 15 17:30:19 2023 daemon.notice easycwmpd: received Download method from the ACS
Mon May 15 17:30:19 2023 daemon.notice easycwmpd: add download: delay = 0 sec, url = http://139.59.62.27:7567/openwrt-ramips-mt76x8-Silbo_RF44-squashfs-sysupgrade.bin, FileType = ‘1 Firmware Upgrade Image’, CommandKey = ‘1881f486af40000’
Mon May 15 17:30:19 2023 daemon.notice easycwmpd: send DownloadResponse to the ACS
Mon May 15 17:30:19 2023 daemon.notice easycwmpd: received SetParameterValues method from the ACS
Mon May 15 17:30:19 2023 daemon.notice easycwmpd: external: execute set value Device.ManagementServer.PeriodicInformInterval 60
Mon May 15 17:30:19 2023 daemon.notice easycwmpd: external: execute apply value
Mon May 15 17:30:20 2023 daemon.notice easycwmpd: send SetParameterValuesResponse to the ACS
Mon May 15 17:30:20 2023 daemon.notice easycwmpd: receive empty message from the ACS
Mon May 15 17:30:20 2023 daemon.notice easycwmpd: external: execute apply service
Mon May 15 17:30:20 2023 daemon.notice easycwmpd: end session: configuration reload
Mon May 15 17:30:20 2023 daemon.notice easycwmpd: init periodic inform: reference time = n/a, interval = 60
Mon May 15 17:30:20 2023 daemon.notice easycwmpd: external: execute update_value_change
Mon May 15 17:30:20 2023 daemon.info logread[1248]: Logread connected to 10.1.1.132:52333
Mon May 15 17:30:21 2023 daemon.notice netifd: Network device ‘ra0’ link is down
Mon May 15 17:30:21 2023 daemon.notice netifd: Interface ‘ra0’ has link connectivity loss
Mon May 15 17:30:21 2023 daemon.info logread[1248]: failed to send log data to 10.1.1.132:52333 via udp
Mon May 15 17:30:22 2023 kern.warn kernel: [ 1227.215542] efuse_probe: efuse = 10000002
Mon May 15 17:30:22 2023 kern.warn kernel: [ 1227.393949] tssi_1_target_pwr_g_band = 39
Mon May 15 17:30:22 2023 kern.warn kernel: [ 1227.441489] <==== rt28xx_init, Status=0
Mon May 15 17:30:22 2023 kern.info kernel: [ 1227.445800] IPv6: ADDRCONF(NETDEV_UP): ra0: link is not ready
Mon May 15 17:30:22 2023 daemon.notice netifd: Network device ‘ra0’ link is up
Mon May 15 17:30:22 2023 daemon.notice netifd: Interface ‘ra0’ has link connectivity
Mon May 15 17:30:22 2023 daemon.notice netifd: ra0 (16815): Interface doesn’t accept private ioctl…
Mon May 15 17:30:22 2023 daemon.notice netifd: ra0 (16815): set (8BE2): Invalid argument
Mon May 15 17:30:22 2023 daemon.info logread[1248]: Logread connected to 10.1.1.132:52333
Mon May 15 17:30:22 2023 kern.info kernel: [ 1227.600199] IPv6: ADDRCONF(NETDEV_CHANGE): ra0: link becomes ready
Mon May 15 17:30:22 2023 daemon.info logread[1248]: failed to send log data to 10.1.1.132:52333 via udp
Mon May 15 17:30:23 2023 daemon.info logread[1248]: Logread connected to 10.1.1.132:52333
Mon May 15 17:30:28 2023 daemon.notice easycwmpd: external script exit
Mon May 15 17:30:28 2023 daemon.info logread[1248]: failed to send log data to 10.1.1.132:52333 via udp
Mon May 15 17:30:28 2023 daemon.notice easycwmpd: end session success
Mon May 15 17:30:28 2023 daemon.notice easycwmpd: start download url = http://139.59.62.27:7567/openwrt-ramips-mt76x8-Silbo_RF44-squashfs-sysupgrade.bin, FileType = ‘1 Firmware Upgrade Image’, CommandKey = ‘1881f486af40000’
Mon May 15 17:30:28 2023 daemon.notice easycwmpd: external script init
Mon May 15 17:30:29 2023 daemon.notice easycwmpd: external: execute download http://139.59.62.27:7567/openwrt-ramips-mt76x8-Silbo_RF44-squashfs-sysupgrade.bin
Mon May 15 17:30:29 2023 daemon.info logread[1248]: Logread connected to 10.1.1.132:52333
Mon May 15 17:30:33 2023 daemon.notice easycwmpd: add event ‘7 TRANSFER COMPLETE’
Mon May 15 17:30:33 2023 daemon.notice easycwmpd: add event ‘M Download’
Mon May 15 17:30:33 2023 daemon.notice easycwmpd: external: execute apply download 1 Firmware Upgrade Image
Mon May 15 17:30:34 2023 daemon.info logread[1248]: Logread connected to 10.1.1.132:52333
Connection to 10.1.1.110 closed by remote host.
Connection to 10.1.1.110 closed.
The download is getting completed.
The router reboots.

Any idea as to where is the default location of the image download onto the board ? And also the image flash has to happen after the reboot right ?

Asking for the CPE or GenieACS locations?
Firmware on a CPE is usually (always?) flashed before reboot.

And, IF device would support multiple firmwares in its flash (like switches and routers usually do), it then also sets the newly downloaded firmware as “primary firmware” so that after reboot, this new firmware is used. Usually - but ALL THIS info you should get from your CPE vendor. Not us. :slight_smile:

Yes. :innocent: Thank you .

Hi @akcoder @git-neo-si . Thank you . Pushing of the file to the device is completed.
Just one more query.
Even if I stop the easycwmpd daemon and stops informing the genieacs server, The genieacs still shows that the device is “online now” and with a green led symbol. This goes into not connected state after 5min. Where is the setting in the GenieACS side to say that the device has stopped informin and has gone offline ?

You are talking about CWMP client service on your CPE? Why would you stop it? Ever?

No, you don’t see INSTANT feedback, if CPE stops responding - usual “production environment” notification timers (like INFORM/PERIODIC) are longer, 20 min and more, 1h, 2h, 12h.

TR-069 protocol is a CONFIGURATION protocol, not MONITORING protocol. Instant notification of an outage is out of scope of TR-069.

That’s a common misunderstanding. Just because the CPE reported to the ACS a few minutes ago it means nothing about it’s “online” status. I think a more appropriate description would be “Just reported” or something like that. If a CPE (literally) crash and burn there no way for the ACS to know that in real time.

look in Admin → Config → Edit charts. But IMHO it’s a waste of time.