# Real Time Clock (RTC)

Helios64 has an on-board RTC clock which is provided by the Power Management IC (PMIC) RK808-D. The RTC functions provided by the PMIC include second/minute/hour/day/month/year information, alarm wake up as well as time calibration.

![RTC](/helios64/img/rtc/rtc_diagram.jpg)

The SoC receive clock signal from the PMIC RTC and in the meantime access the PMIC RTC functions over I2C bus.

## RTC Battery

To save time information and allow the RTC to keep running while system is powered off, the PMIC RTC relies on a dedicated coin battery located at BAT1. The battery holder (BAT1) accepts CR1225 battery model.

![RTC Battery](/helios64/img/rtc/rtc_battery.jpg)

!!! Note
    The polarity of the battery holder is indicated on the PCB with **'+'** signs.


## Scheduled Power On using RTC

User can set up a scheduled power on using RTC alarm.

### Use SYSFS

Run following command to check whether there is any alarm set,

```bash
cat /sys/class/rtc/rtc0/wakealarm
```
If nothing return, it means no alarm set.
To reset/disable the alarm, run

```bash
echo 0 | sudo tee /sys/class/rtc/rtc0/wakealarm
```

The alarm only accept Unix epoch time. We can use *[date](https://linux.die.net/man/1/date)* utility as helper to get epoch time of our calendar.

To set alarm from absolute calendar time, run

```bash
echo `date '+%s' -d '20 December 2020 02:14:10 PM'` | sudo tee /sys/class/rtc/rtc0/wakealarm
```
You can also set alarm from relative time using this command,

```bash
echo `date '+%s' -d '+ 1 hour 2 minutes 10 seconds'` | sudo tee /sys/class/rtc/rtc0/wakealarm
```

After alarm set, you can power off the system and keep the power plugged in. Helios64 should automatically power on at the scheduled time.

### Use rtcwake

Run following command to check whether there is any alarm set,

```bash
sudo rtcwake -m show
```

To reset/disable the alarm, run

```bash
sudo rtcwake -m disable
```

To set alarm from absolute calendar time, run

```bash
sudo rtcwake -m off --date '2020-12-20 14:14:10'
```

You can also set alarm from relative time using this command,

```bash
sudo rtcwake -m off --date '+ 1 hour 2 minutes 10 seconds'
```

After the command successfully executed, system will shutdown. Keep the power plugged in and Helios64 should autommatically power on at the scheduled time.

## References

[date- Linux manual page](https://linux.die.net/man/1/date)

[rtcwake - Linux manual page](https://linux.die.net/man/8/rtcwake)