Battery on J45 and software for RTC

Based on following threads we’re considering adding a coin cell battery holder and battery (CR1225) to our Nanos to maintain the real-time clock.

https://devtalk.nvidia.com/default/topic/1052454/jetson-nano/sch-for-j45-information/
https://devtalk.nvidia.com/default/topic/1051941/jetson-nano/how-to-add-a-correct-battery-for-rtc-on-jetson-nano/

Apparently the J45 can be configured to charge (in case of rechargeable battery or supercap) by software.
Since these lithium cells are not rechargeable we want to make sure no charging takes place.

Where can this be managed in “the software”?

Where can this be managed in "the software"?

Any news regarding this question ?

+1 also interested in the topic.

No news from our side unfortunately. This has less priority for us currently since our use case has less requirement for keeping RTC. However, we’d still like to know how to get this done.

+1 to getting more info on the software side.

Can someone also guide on installing the cell holder onto the board itself? Would appreciate any help.

OK, looking at the nano, they didn’t go with the fake-hwclock; instead they just masked the hwclock service.
So, assuming you have the right modules installed for your RTC clock in /etc/modules or similar (and built for the kernel) you should be able to just enable the hwclock.service in systemd, and it “should just work.”

So, approximately:

  1. Verify that the module for your clock chip is built and available, for example, using “sudo modprobe ds1307” or whatever, and “lsmod” to see that it’s loaded and there. You may need to add some module parameters to make sure it loads on the right i2C bus interface.
  2. Add the module name to /etc/modules, or /etc/modules-load.d/* and config options to /etc/modprobe.d/*
  3. sudo systemctl enable hwclock.service
  4. reboot and see if it worked

This is assuming you’re using an I2C clock separately hooked up to the I2C bus on the GPIO header.
For the clock that might be on the Nano module, I don’t know what the module name would be, but the process should be similar.

Alas, it didn’tjust work :-(

sudo systemctl unmask hwclock

executes with no reported error but then

sudo systemctl enable hwclock

or

sudo systemctl enable hwclock.service

yield

Failed to enable unit: Unit file /lib/systemd/system/hwclock.service is masked

Curious

OK, well, this is confounding!

Even on totally normal systems, /lib/systemd/system/hwclock.service is a link to /dev/null
This means it can’t be unmasked, because only /dev/null links in /etc/systemd/system are affected by systemctl unmask.

Also, systemd doesn’t use NTPD, because it re-implements that itself (it reimplements the world, in general; one of my many complaints about systemd …)

Apparently, you’re supposed to use systemd-timedated these days. Which is already enabled on the jetson.
It may be that all you need to do is to add the right RTC clock module name to /etc/modules-load.d
Try it and see how it goes!

Picking this up. we added a battery to the jetson nano dev kit, but it is not clear how to enable it so it actually keeps time across power-offs.
Any concrete information on how to get this working (not just “some module”) would be appreciated.

You shouldn’t have to do anything. I just soldered the holder on, inserted the battery and it started keeping the correct time across power-cycles. Have you verified that the hwclock showed the correct time before power-cycling? Also check how many /dev/rtc* nodes you have and to which the /dev/rtc symlink points.

gtj,
Appreciate if you could provide links to the specific battery and holder you used, and how you soldered it? (I’m not a hardware guy). Thanks!

The battery I used is a standard CR1220 3V cell because I had a bunch of them and their holders. You can get them almost anywhere.

The holder I use is https://www.digikey.com/product-detail/en/mpd-memory-protection-devices/BK-885-TR/BK-885-CT-ND/755448

You can also use a CR1225 cell with the appropriate holder.

The mounting location is on the underside of the SOC module so you’ll have to remove it. You’ll need a good soldering iron, solder (or solder paste), flux, and alcohol for cleaning everything. I hesitate to give soldering instructions because a lot depends on skils but basically, you clean everything thoroughly, apply flux to the 2 mounting pads on the board and create a puddle of solder on each. Then you put some flux on the bottom of the holder mounting tabs, hold the holder in place, and use the soldering iron to press lightly down on the top of the tabs until the tab sinks into the molten puddle underneath. Let the tab cool before allowing anything to move. Clean everything again after it cools. Better to search for a youtube video if you haven’t done this before. :)

Cool, will certainly give it a try. Thanks!