26 lines
548 B
Bash
26 lines
548 B
Bash
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
# Get time from ME via ipmb
|
|
# The last 4 bytes are the epoch time, e.g.
|
|
# (iyyyyay) 0 11 0 72 0 4 18 169 82 95
|
|
ret=$(busctl call xyz.openbmc_project.Ipmi.Channel.Ipmb "/xyz/openbmc_project/Ipmi/Channel/Ipmb" org.openbmc.Ipmb sendRequest yyyyay 0x01 0x0a 0x00 0x48 0)
|
|
|
|
IFS=' ' read -r -a a <<< "${ret}"
|
|
|
|
if [ "${a[1]}" -ne 0 ]
|
|
then
|
|
echo "Failed to get time from ME: ${ret}"
|
|
exit 1
|
|
fi
|
|
|
|
t0=$((a[7]))
|
|
t1=$((a[8]*256))
|
|
t2=$((a[9]*256*256))
|
|
t3=$((a[10]*256*256*256))
|
|
t=$((t0+t1+t2+t3))
|
|
echo "Setting date to ${t}"
|
|
|
|
date -s @${t}
|