月別アーカイブ: 2021年1月

Raspberry Pi の ntp 設定を変更する

小ネタです。調べ物をしてたら、 Raspberry Pi OS には標準で NTP サーバーの機能が埋め込まれており、 Debian の NTP サーバーにアクセスしているということでした。必ずしも変更する必要もないかもしれませんが、気になったので日本のサーバーに変更しました。

状態確認

● systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
  Drop-In: /usr/lib/systemd/system/systemd-timesyncd.service.d
           └─disable-with-time-daemon.conf
   Active: active (running) since Sun 2021-01-10 15:17:18 JST; 1 weeks 2 days ago
     Docs: man:systemd-timesyncd.service(8)
 Main PID: 309 (systemd-timesyn)
   Status: "Synchronized to time server for the first time [2001:19f0:200:144b::2000]:123 (2.debian.pool.ntp.org)."
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/systemd-timesyncd.service
           └─309 /lib/systemd/systemd-timesyncd

 1月 10 15:17:17 raspberrypi systemd[1]: Starting Network Time Synchronization...
 1月 10 15:17:18 raspberrypi systemd[1]: Started Network Time Synchronization.
 1月 10 15:18:07 raspberrypi systemd-timesyncd[309]: Synchronized to time server for the first time [2600:3c04::f03c:92ff:fe41:5a9c]:123 (2.deb
 1月 16 11:18:17 raspberrypi systemd-timesyncd[309]: Timed out waiting for reply from [2001:1620:2777:b::128]:123 (2.debian.pool.ntp.org).
 1月 16 11:18:18 raspberrypi systemd-timesyncd[309]: Synchronized to time server for the first time [2001:19f0:200:144b::2000]:123 (2.debian.po

これが、設定前の Network Time Synchronization System の設定です。 debian.pool.ntp.org に読みに行ってます。これを ntp.nict.jp に変えます。

設定変更

設定ファイルは /etc/systemd/timesyncd.conf です。任意のエディタで編集します。

#NTP=
 ↓
NTP=ntp.nict.jp

これで OK なんですが、これまで標準だった debian サーバーの設定が残ったままで、 nict.jp にアクセスするか不明なので、 Debian サーバーにアクセスしないようにします。といっても、コメントアウトされた 1 文から#を取り去るだけです。

#FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org
 ↓
FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org

これで設定はおしまいです。簡単ですなぁ。

再起動と確認

では、設定ファイルをセーブして、 Network Time Synchronization System を再起動します。そして、設定を確認します。

$ sudo systemctl restart systemd-timesyncd.service
$ sudo systemctl status systemd-timesyncd.service

2行目の status コマンドで、設定が上手くいっているか確認します。エラーが出ていなければ次のようなステータスが表示されると思います。

● systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
  Drop-In: /usr/lib/systemd/system/systemd-timesyncd.service.d
           └─disable-with-time-daemon.conf
   Active: active (running) since Tue 2021-01-19 20:42:16 JST; 18s ago
     Docs: man:systemd-timesyncd.service(8)
 Main PID: 30168 (systemd-timesyn)
   Status: "Synchronized to time server for the first time [2001:ce8:78::2]:123 (ntp.nict.jp)."
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/systemd-timesyncd.service
           └─30168 /lib/systemd/systemd-timesyncd

 1月 19 20:42:16 raspberrypi systemd[1]: Starting Network Time Synchronization...
 1月 19 20:42:16 raspberrypi systemd[1]: Started Network Time Synchronization.
 1月 19 20:42:16 raspberrypi systemd-timesyncd[30168]: Synchronized to time server for the first time [2001:ce8:78::2]:123 (ntp.nict.jp).

ちゃんと ntp.nict.jp から時間を読んでます。完成ですね。

まとめ

簡単な変更ですし、順番にやれば問題なるところはないはずです。 ntp サーバーの詳しいシステムに関してはよく分かってないのですが、遅延がなければより正しい時間を表示されるはずですよね。 Debian のサーバーがどこにあるのかわかりませんが、日本国内ではないと思います。多少の遅延が生じているのかもしれませんね。

絶対に直さなければならないと言うわけではありませんが、気になったので直してみました。

Wacthdog の設定

Raspberry Pi zero がハングアップしていました。何が原因かはっきりしませんが、ハングアップは困るので、対策をとってみます。

Raspberry Pi OS には、 Wacthdog Timer というのがあらかじめ仕込んであるそうです。ただ、通常はこの機能が OFF になっています。 Wacthdog というのは、システムが一定間隔で生存確認を行い、生存確認が取れなかった場合にリスタートしてくれるというものです。 Wacthdog のシステム自体がダウンしてしまったら、当然リスタートもされないと思うのですが、システムのコア部分に組み込まれているので、よほどのことがない限り大丈夫でしょう。では設定していきます。

ブート・コンフィグに追記

$ sudo nano /boot/config.txt

ブート・パーティションにあるということからもわかる通り、システムのコア部分で起動するものですね。慎重に作業しましょう。次の1文を追記します

dtparam=watchdog=on

蛇足ながら、 ON を OFF にすることで Wacthdog 機能が OFF になります。もちろん、最初にこの1文は入っていませんでしたから、 Wacthdog は OFF ですね。

初期設定する

カーネルモジュールの初期設定を行います。これもテキストの修正だけです。作業そのものは簡単ですが、スペルミスは Wacthdog の動作に影響しますので、慎重に行いましょう。

$ sudo nano /etc/modprobe.d/bcm2835-wdt.conf

このファイルは最初、存在していませんでした。新規作成ですね。もしあったら以前に Wacthdog を設定しているかもしれませんね。

options bcm2835_wdt heartbeat=14 nowayout=0

heartbeat=14 が設定時間になります。14秒ですね。ここは自分の設定時間でいいと思います。次の nowatout=0 は、 heartbeat (心拍)が止まったのを感知してからリスタートするまでの時間ですが、特別な理由がない限り0で良いですね。

Systemd の設定

次に、 systemd の設定です。これで最後になります。

$ sudo nano /etc/systemd/system.conf

この中にはすでに設定部分がコメントアウトされた形で書き込まれていますので、検索して見つけましょう。おそらく先頭に # が入った形でコメントアウトされていると思うので、 # を削除した上で上で設定した heartbeat (心拍)時間と一致させます。

#RuntimeWatchdogSec=0
            ↓
RuntimeWatchdogSec=14

動作確認

以上の設定が終わったら、 Raspberry Pi をリスタートさせます。再起動したら、次の1文を打ち込みます。

$ dmesg | grep bcm2835-wdt

私のシステムでは、

[    2.816764] bcm2835-wdt bcm2835-wdt: Broadcom BCM2835 watchdog timer

という応答が帰ってきました。先頭部分の数字は変わります。何も応答が帰ってこない場合は、 Wacthdog が起動していないことが考えられます。スペルミスなどがないか、チェックしてください。実際にシステムをハングさせて見れば確実ですが、私怖くて出来ませんでした。 Wacthdog を信じることにします。

まとめ

私は、再起動が完了したらメールを飛ばすように設定しました。常にメールをチェックできるわけではないのですが、メールが来た時間から逆算してシステムがどうしてハングアップしてしまったのか推測できますね。

あえてここには書きませんが、システムをハングさせる方法はいくつかありますので、検索してください。 Raspberry Pi は現在、5台稼働していますので、それぞれに同様の設定をします。想定外のシステムストップがなくなると良いなぁ。

AirPods Max 1週間使ってみて

絶賛した前回と打って変わって、ちょっとここはなぁという部分を書いてみますね。

有線での接続について

専用のコード「 Lightning – 3.5mm オーディオケーブル( 1.2m ) - ブラック - Apple (日本)」これ使わないと有線での接続が出来ないそうです。私、通常の lightning- オーディオケーブルが使えるんだと思って、注文してしまいました。 178 円でした。中国のバッタモンですけどね。

このコード、アップルストア直販価格で、 3,800 円ぐらいします。ちょっと高いですね。かすかな期待として、購入した(今輸送中)中国のバッタモンが使えたりしないかと思ってます。ダメでしょうね。 Apple の方針でしょうから致し方ないですけど、使えないのは不便ですね。

バッテリーについて

1 回の充電で使える時間は長いので困りません。むしろ、使わないときのことが問題です。今回の記事を書くきっかけはこのバッテリーの問題です。

電源スイッチを持たない AirPods Max は常に電源が ON になっています。そうすることで、 iMac や iPhone トのシームレスな接続が担保されるわけですね。これは相当便利です。ところが、いわゆる待機電力というか、使っていないときのバッテリー消費が想像以上に大きいです。使わないまま2日放置すると、満充電から30%以下まで落ち込みます。

それを防止するためには、いわゆるブラジャーケースに入れてやることが必要になります。これ、意外に面倒です。ケースそのものにも入れ方がありまして、右側に充電用の lightning ポートがあり、それ用に切れ込みが入っています。

ケースに入れてやると、ケースについている磁石に反応して、 AirPods Max がディープスリープに入ります。この状態だとバッテリーほとんど減りません。ケースへの入れ方を間違えても問題ないみたいですが、入れないとバッテリーが減ってしまうのは変わりません。

シームレスな接続をとるか、バッテリーの持続時間をとるか。難しい問題だったと思いますが、ちょっと減り方が早いですね。

持ち運びは不便

ケースに入れたまま持ち運ぶとなると、ハードケースが欲しいところ。すでに Amazon ではいくつかハードケースを紹介してくれますね。ただ、フィット感がどうなのか実際に使ってみないとなんとも言えません。

頭につけるものを首になんぞするなと言われそうですが、

無精ひげがみっともないですねぇ

この向きに曲げられないのも個人的には「えっ〜」ってところでした、逆向きには回るんですが、この向きには曲げることが出来ません。首にセットすることは出来ないと思った方がいいですね。

…とは言え

分解能は全くもって素晴らしいですし、これまで音源として mp3(320kbps) で十分だと思っていたにもかかわらず、 AirPods Max で FLAC 音源との聞き比べをして以来、 FLAC 音源を鳴らせるプレーヤーを探していたりします。正直、 mp3 と flac で音質がこんなに変わるなんて思っていませんでしたし、それを聞き分けることが出来るガジェットが手に入るとも思ってもみませんでした。

今まで、あまり分解能が高くない廉価版のヘッドフォンを使っていたのが、もったいなかったなぁなどと思っています。音質面では全くもって文句のつけようがありません。

長時間の視聴でも疲れることがなく、耳が痛くなることもありません。素晴らしいヘッドフォンです。6万なにがしの価値はあったと確信しています。

unattended-upgrades を動かす

表題の通りなんですが、私インストールすれば動くのかと思っていました。大きな間違いでしたね。道理で Update されてないわけだ。

内容に関しては、以下のブログを参照してください。何て不親切な私。

  1. 寝ている間に Raspberry Pi を全自動アップデート!~ unattended-upgrades を使おう - みかんのゆるふわ技術ブログ
  2. はなぴょんブログ [Ubuntu]メールサーバ構築 (Postfix)
  3. Raspberry Pi に Postfix を入れてコマンドラインから Gmail 経由でメールを送ろう - みかんのゆるふわ技術ブログ

メール送信まで出来ます。上記は Raspberry Pi で動かすための記事です。下2つはメール送信を行う時に参照しました。2だけで設定するとエラーが出てしまうので(もしかしたら私の環境だけかも)、3を参照しました。

さて、これを Raspberry Pi 5台+ FerenOS 1台に設定しました。設定ファイルは NAS に置いておいて参照するようにしたので、最初にやったヤツほど他のヤツには時間かかりませんでしたが、エラーが出る。 SYSLOG を見る。スペルミスや、設定のミスを見つけてやり直す。繰り返しましたね。 Linux のことを知るには良い素材でした。

最初に書くべきでしたが、 unattended-upgrades ってのは、 Linux の Update を自動で検知して、実行する。というプログラムです。 Update が終わるとメールを送ってくれます。便利ですね。 cron でも出来るんですが、メールを送るとなるとちょっと大変ですし、スマートじゃありません。設定さえ間違えなければ、簡単に目的が達成できますね。

この例では、 gmail を経由させてメールを送ります。メールの文面はカスタマイズできそうもないので、合計6台に同じメールをセットしてあってちょっと不便です。文面をカスタマイズ出来ないなら、メールアドレスの方を細工しようと思っています。 gmail はご存じの方も多いと思いますが、アドレス中にピリオドを入れてメールアドレスを分けたり、プラス記号を入れて違うアドレスのようにしたり出来ます。これを使って、どこから来たメールなのかを判断しようと言うことですね。

今日は、設定しただけでおしまいで、メール・エイリアスを使った処理は明日にしようと思ってます。うまくいくかな。

AirPods Max これいいわ!

高級ブラジャーヘッドフォンである AirPods Max を発売日の2日後に予約したんですね。ところが、納期予想が3月! その後、2月になったよ。というメールが来たんですが、大晦日に Apple から出荷案内が来ました。そして、本日(令和 3 年 1 月 1 日)届きました。 AirPods Max です。お年玉ですね。

使い勝手 ( ペアリング )

まずは、ペアリングから。手順を説明すると、

  • iPhone で Bluetooth を ON にする。 
  • AirPods Max に iPhone を近づける。

以上。さすがですね。これでペアリングが完了します。 iMac とのペアリングも自動で行われます。この辺は iCloud を使っているものと思いますので、何でもかんでもペアリングするわけではありません。しかし、ブラジャーケースから取り出して iPhone を近づけるだけで、 iPhone に接続するけどいいかい? という案内が出るのは快感です。素晴らしいです。

装着感

私、眼鏡を常用しています。ヘッドフォンをすると眼鏡のツルの部分が押しつけられて痛くなります。こればっかりは AirPods Max でも変わらないだろうな。と思っていますが、1時間ほど装着した感想でしかありませんが、非常によく出来ていますね。外部の音をシャットアウトする為に、堅くも柔らかくもないクッションに覆われたイヤーカップはいい感じです。他のヘッドフォンほど痛くならないと思います。

耳全体を覆う形のイヤーカップになっていますので、これも長時間装着したときの違和感は最小限になっていますね。

若干残念だったところも書いておきますね。私、頭がでかいです。普通に売っているキャップは入りません。ヘッドフォンに関しても同じで、今まで使っていたヘッドフォンも目一杯広げて使います。 AirPods Max に関しても、最大限広げて使っています。私でギリギリかなぁ。もう数ミリ広がって欲しいなぁ。 Max なんだからもうちょい大きくしてもよかったのに。とはいえ、後で述べますが、外部の音をシャットアウトする機能に問題はないですね。よほどのことがない限りこの点が問題になることはないと思います。

操作感

AirPods Max には操作するためのボタンが一つと、 Apple Watch などにも採用されているダイヤル式のリューズが一つ。デジタル・クラウンというんですよね。確かに、 UP/DOWN のボタン式の音量調節に比べると、格段に操作感はいいです。このデジタル・クラウンを長押しすると Siri が起動します。

  • オーディオコンテンツを再生/一時停止するには、 Digital Crown を 1 回押します。再生を再開するには、もう一度押します。
  • 早送りするには、 Digital Crown を 2 回押します。
  • 巻き戻すには、 Digital Crown を 3 回押します。

この操作もスムーズです。 Mac だと Music アプリに対応していますし、 iPhone も純正 Music アプリが対応してますね。私、自作の音楽再生ソフトを使っていますので、この操作には対応していないんですよ。残念だなぁ。

圧倒的に使い勝手いいのは、頭から AirPods Max を外すと自動的に停止。再びかけると再生するギミック。これいいですね。なれてしまうと他に移れない。

(肝心な)音について

今まで私が使っていたヘッドフォンがチープだったためでしょうね。 AirPods Max の音は格段にいいです。私自身の性能があまりよくないにもかかわらず、音の分解能っていうんでしょうか。小さい音もはっきりわかりますし、低音もただ、ドンドン言ってるだけではないというか。うまく表現できませんが、さすがに6万円(消費税も入って7万円弱)の値付けをするだけのことはあると思います。

外部音声取り込みモードと遮断モードって言うのかな。これも非常に有効です。遮断モードにするには、右側のイヤーカップの前側についているボタンを押すと有効になります(当然、もう一度押すと外部音声取り込みモードになります)。遮断モードになってると本当に外の音が聞こえません。逆に取り込みモードだと、適当に外の音が聞こえるので、よく出来ているなぁと感心することしきりです。

試しに、同じ音楽を FLAC 音源と MP3 音源で比較してみました。これまで使っていたヘッドフォンだと、その差は大してわかりませんでした。しかし、 AirPods Max で聞き比べてみると、違うんですね。さっき、分解能がいいって話をしましたが、 FLAC 音源だと、楽器の一つ一つがはっきり聞こえる気がします。私自身の性能が低いのでオーバースペックのような気がしてきたぞ。ヤバいな。

まとめ

値段が値段なので、全ての人にお勧めできる商品ではないですが、音を商売にしている人、商売でなくとも趣味にしている人にはお勧めできますね。非常にいい。

難点を上げれば、やっぱりあのブラジャーケースですね。ケース自体の性能に文句はないんですが、デザインがなぁ〜。ハードケースで、ディープスリープ機能がついているものがあるなら欲しいなぁ。ちなみに、あのケースには磁石が仕込まれていて、一定の場所にその磁力が及ぶとディープスリープ機能が ON になるんだそうです。だったら、ハードケースも出来そうですよね。どっかのホームページで見たような気がするんですけど、海外だったなぁ。

さっきからずっと装着して使っていますが、問題になるようなことはありませんね。 AirPods Max を外して首に引っかけて歩く。多分そう言うことは想定していないんだろうな。それが残念かな。