Start ntp on network connection on nerves

Hello,

I need to set the time for the nerves device. I’ve found GitHub - evokly/nerves_ntp but it isn’t getting the time when using WiFi (I haven’t tried with a wired connection)

It looks like busybox contains the ntp package for synchronizing the datetime, is it possible to make it run on start?

Where should the configuration of the TimeZone live? in the config.ex file or maybe is possible to pass it as an option to the erlang VM?

Thanks!

check this blog post for a good description of NTP. https://dockyard.com/blog/2018/06/13/all-systems-go-creating-your-own-startup-checks-with-nerves

Linux stores time in utc, so you shouldn’t have to worry much about timezones i don’t think. Timex has support for Timezones also. There are some things to account for for Timex to work properly with Nerves though.

Hi @adrian, did you tried

{:nerves_ntp, github: "evokly/nerves_ntp", ref: "4b6f3e055d8f21c8821d6ecfaaafda77480fd2b9"}

? It works for me (without any additional configuration) via ethernet interface.

Does this imply that the hex releases are not functional?

Yes it was made a long time ago, and has since been abandoned. Ntp is so simple, I don’t think you need a extra library for it.

thanks @ConnorRigby it works! I was getting crazy with supervisors that didn’t work. I was about to fork it.

Do you recommend to set up ntp in a genserver instead of using this library? I don’t like the idea of having this dependency. How would you do it? same way as this library or maybe there is another approach?

Thanks!

That link I posted above actually uses code that I wrote for a project. If I remember correctly, most of that library borrow open source code I wrote also.