Armadilloフォーラム

"hwclock"コマンドが使用できない

s.kurachi

2024年1月17日 17時53分

お世話になっております。

購入したArmadillo-IoT G4 LANモデル (型番: AGX4500-C00D0)にて、hwclockコマンドが使用できなかったので相談いたします。

購入してから初めて起動した状態で、"hwclock"コマンドを入力したところ以下のようなエラーとなってしまいました。

armadillo:~# hwclock
hwclock: ioctl(RTC_RD_TIME) to /dev/rtc0 to read the time failed: Invalid argument

init.dから手動でhwclockサービスを実行したところ、次のようになり起動しません。

armadillo:~# /etc/init.d/hwclock start
modules                  | * Loading modules ... [ ok ]
hwclock                  | * Setting system clock using the hardware clock [UTC] ...hwclock: ioctl(RTC_RD_TIME) to /dev/rtc0 to read the time failed: Invalid argument
hwclock                  | * Failed to set the system clock
hwclock                  | [ !! ]

また、"dmesg"コマンドで確認したところ、次のようなRTCに関するメッセージが出力されています。

[   22.988313] rtc-rv8803 1-0032: Voltage low, data is invalid.
[   22.988925] rtc-rv8803 1-0032: Voltage low, data is invalid.
[   65.777973] rtc-rv8803 1-0032: Voltage low, data is invalid.
[   65.778591] rtc-rv8803 1-0032: Voltage low, data is invalid.

CON13にコイン電池を入れて試してみましたが、同様でした。
コイン電池の電圧値が3.2V出力されていることは確認しています。

なお、今回AGX4500-C00D0を合計3つ購入したのですが、1台は初回起動時から、電池を入れなくてもhwclockコマンドが使用できていました。
残りの2台は上述のような状態でした。
試しに、hwclockが実行できるArmadilloからインストールディスクを作成し、他2台にイメージを書きこみましたが、変わらず上述のような状態でした。

本件の原因についてご教示いただけますでしょうか。

コメント

at_kojiro.yamada

2024年1月17日 20時17分

> [ 65.778591] rtc-rv8803 1-0032: Voltage low, data is invalid.
コイン電池をつけない状態で Armadillo-IoT G4 を使用している時に、電源を切断した後のちょうど良いタイミングで電源を入れると、その状態になる場合があります。

もし、RTCの異常でなければ、以下のいずれかを行うことで RTC から時刻を取得できるようになるはずです。
- コイン電池を取り外し、ACアダプタを抜いて長時間待った後、電源を入れる
- Armadilloをインターネットに接続してしばらく待つ(自動的に、インターネットから時刻が取得され設定されます)
- 手動でRTCに時刻を設定する

(RTCの異常ではない前提で説明しますが)この現象は、RTCの低電圧検出機能が誤作動してしまうことで発生します。
低電圧検出機能は、忘れたかもしれない時刻を使わないようにするためのものです。
Armadilloの電源を切断すると、コンデンサに貯まった電荷が徐々にRTCに供給され電圧が下がっていくので、それを「コイン電池が切れかけている」とRTCが誤解してしまうのです。
この状態ではRTCから時刻を取得することはできませんがRTCに時刻を設定することはでき、時刻の設定後は時刻を取得できるようになります。

> もし、RTCの異常でなければ、以下のいずれかを行うことで RTC から時刻を取得できるようになるはずです。
> - コイン電池を取り外し、ACアダプタを抜いて長時間待った後、電源を入れる
> - Armadilloをインターネットに接続してしばらく待つ(自動的に、インターネットから時刻が取得され設定されます)
> - 手動でRTCに時刻を設定する
おっしゃるように、電池を外し、電源を抜いた状態で数時間放置した後、電源を入れることでrtcを見ることができるようになりました。
ありがとうございました。