パソコン・インターネット

2024年2月12日 (月)

iOS 17.3、17.3.1でバッテリー消耗

iPhone を iOS17.3.1 にアップデートしたらバッテリーが異常に減り、筐体が熱を持ち、一時は操作に対する反応が十秒単位で遅れるなど、異常な状態になった。振り返ると iOS17.3 にアップデートした時にもすでにそんな傾向があったように思う。
今は原因が分かり、対策したので、他の人の参考になればと紹介する。
まずはバッテリーの状況を見る。(画像をクリックすると大きな絵が見られます)
Img_2968
上のスクリーンショットは、設定>バッテリー の画面をちょっと下にスクロールしたところである。「バッテリー残量」のところで急激な消耗が記録されており、「バッテリー」の設定を「低電力モード」(グラフで黄色くなった時間帯)にしても効果がない。
しかし、後述の設定変更をした以後は、バッテリーの消耗がなく、また「アクティビティ」(動いてるプロセスのこと?)もすっかりなくなっている。
「アプリ毎のバッテリー使用状況」を見ると「メール」のバックグラウンド処理が突出している。メールが異常のようだ。
メールのバックグラウンド処理といえば新着メールの確認だろう。メールサーバーへポーリングして新着がないかを確認するのだ。そこがなにかプロトコル上の不備でエラーリトライを繰り返してたらこんな感じになりそうだ。
こんなことを思いついて、とりあえずNiftyの使用を中断してみた。(私が現在使用しているメールアカウントのうちでNiftyが唯一のPOPプロトコル)
具体的には、設定 > メール> アカウント > プロバイダー名 のメニューを開くと下のような画面が出るので、アカウントのスイッチをOFFにする。(IMAPプロトコルのアカウントではスイッチがないので一時的な中断ができない)
Img_2969
この設定以後は、上の図のバッテリーの画面で示したように消耗が抑えられた。(ちなみに「アプリ毎のバッテリー使用状況」は直近24時間の平均なので、実際に消耗が抑えられてもすぐには数字に反映されない。)

(2024/03/13追記)
iOS 17.4にしたら直るかと期待していたが状況に変化はなかった。いつまでもNiftyのメールを止めておけないので、もう少し設定を追求して現在は以下のように使っている。

(1)設定>メール>アカウント> プロバイダー名 の変更
 前述の「アカウントのスイッチをOFF」にした設定を元に戻す。

(2)Niftyメールアカウントの設定
 以下URLの「手動による設定」タブの内容を実行。
  https://support.nifty.com/support/manual/mail/smp/ios16.htm
 ずっと前に設定したきりだったので、今までの設定から変更するところがあった。

(3) 設定>メール>アカウント>データの取得方法>Nifty Serve の変更
 今まで「フェッチ」だったのを「手動」に変更。

(4) 設定>メール>アカウント>データの取得方法>フェッチ の変更
 今まで「自動」だったのを「手動」に変更

最後の(3)と(4)はどちらか片方だけでも良さそうに思うが、今は両方変更してある。
上記の変更をしても、プロセスだかタスクだかスレッドだかが残って裏で電力を消費するので、iPhoneを再起動し、1日くらい様子を見たら、「メール」アプリが消費する電力が全体の1%くらいに減った。メール以外にも紛失防止タグとか活動量計の監視アプリとかが電力を食ってたが、それらも止めてみたら一晩ほっといてもバッテリー残量が98%くらい残るようになり、満足いくものとなった。
設定変更により Niftyアカウントのメール取得の頻度が減るが、メールアプリをフォアグラウンドに持ってきたタイミングでメールサーバーに見にいくようである。

2023年12月20日 (水)

楽ナビの登録地点を編集するツール

題記の件、インテルMacで動作するプログラム(群)を作りました。
残念ながら、ビッグエンディアンのCPUを積んだMacでは、プログラムの修正なしでは動きません。代わりに、インテル系CPUのUNIX系OSならばおそらく変更なしで使えると思います。(未確認)
あと、立派なGUIのツールを期待されると困るので先に言っておきますが、このツールでできるのは、楽ナビがSDカードに書き出した登録地点の情報をCSVファイルに変換して表計算ソフトで編集しやすくすることと、編集後のCSVファイルを逆変換して楽ナビで読めるファイルを吐き出すところまでです。
表計算ソフトで編集するには、各項目の説明も参照してください。

以下、アーカイブに含まれている説明書の内容を掲載します。

* * *

説明書
この説明書は、以下のプログラム群(C言語ソース、シェルスクリプト)の目的、使い方などを説明します。
・pointrec.h
・divide.c
・makecsv.c
・modrecord.c
・modheader.c
・d052csv
・csv2d05

◯このプログラム(群)の目的
パイオニアのカーナビ「楽ナビ AVIC-RZ711」の機能である「登録地点」をパソコンの表計算ソフトで編集できるように変換/逆変換します。
このプログラムが直接に担当するのは、楽ナビがSDカードに保存した登録地点の情報ファイル(POINTREC.D05)の内容をCSVファイルに書き出すことと、あなたが編集したCSVファイルから新しいPOINTREC.D05を作り出すことです。SDカードに登録地点を書き出し/読み込みするナビ上の操作や、CSVファイルを編集する表計算ソフトの使い方などは自分で調べてください。
なお、MS-Windows系のパソコンではパイオニアが用意している純正の編集ツール(Navi Studio)を使えば、SDカード上の登録地点を直接編集できます。

◯使用環境
このプログラム(群)は、インテルCPUを積んだMacで動作確認しています。
おそらく、インテルCPUを積んだUNIX系OSのマシンでは変更なしで使えるでしょう。
また、ビッグエンディアンのCPUを積んだパソコンでは、short型やint型のバイトオーダーを考慮してプログラムを書き直す必要があります。
また楽ナビの仕様で、CSVファイル内の漢字コードはShift-JISでなければならず、それらを編集したり変換できるテキストエディタや表計算ソフトが要ります。

◯使う前の準備
⚪︎コンパイル
簡単なのでMakefileは用意していません。
同梱のファイルを全て作業用ディレクトリに置いて、つぎのコマンドライン操作をしてください。
$> gcc divide.c -o divide
$> gcc makecsv.c -o makecsv
$> gcc modrecord.c -o modrecord
$> gcc modheader.c -o modheader

⚪︎登録地点の情報ファイルを用意
楽ナビに登録されている「登録地点」をSDカードに書き出して、作業用ディレクトリに持ってくる必要があります。SDカードへの書き出し操作は、お手持ちのナビの取扱説明書を調べてください。
いくつかのディレクトリ/ファイルがSDカードに書き込まれますが、必要なのはPOINTREC.D05だけなので、探し出して作業用ディレクトリに置いてください。
また、この後、改変したPOINTREC.D05を楽ナビに読み込ませた際に予想外の状態になる可能性もあるので、楽ナビから書き出したSDカードのバックアップをとっておくことをお勧めします。

◯使い方
(1) CSVファイルへ変換
上記で準備した作業用ディレクトリで、次のようにコマンドを打ってください。
$> source d052csv POINTREC.D05 work.csv
この操作で作業用ディレクトリにwork.csvファイルが作成されます。
また、 0000~nnnn の数字4桁の名前のファイルが多数作られますが、後で必要になるのでそのまま作業用ディレクトリに置いておいてください。逆に、同名のファイルが既にあった場合は作業の邪魔になるかもしれないので、(1)の操作の前に消しておいてください。

(2) CSVファイルの編集
上記で作られたwork.csvを表計算ソフトで編集して、結果をCSVファイルとして書き出してください。ここでは書き出したCSVファイルをwork2.csvとします。
表計算ソフトがShift-JISを受け付けないなどの不都合があるときは、CSVファイルをテキストエディタなどで編集/変換してください。
CSVファイル内の各項の意味や内容を知るには以下のURLを参照ください。
 http://akakabu.way-nifty.com/blog/2023/11/post-219848.html
その他、CSVファイルの編集で注意すべき点を列挙します。
・上記URLで説明がない”Origin”項は、CSVファイルからD05ファイルを生成する際の処理で利用する物なので、いじらないでおくのが吉です。
・表計算ソフト上で行を挿入したり削除して、登録地点を増やしたり減らしたりできます。行を増やした場合、空欄を残しておかないでください。”TEL"の項に入れるものがない場合は、"-"(ハイフン)を入れておくと良いでしょう。
・”Origin”項が空欄になった場合、前後の行からコピーしてきても良いです。ただし、登録地点の”自宅”とそれ以外の地点では互換がないので、相互にコピーしてくることはしないでください。
・表計算ソフト上で行を削除して登録地点を減らしても、ナビの中に残っていれば、この後、新しい登録地点を読み込ませてもナビの中の登録地点は消えません。ナビの読み込み動作は上書きではなく、マージだからです。登録地点を消したければ、ナビ上の操作で個別に削除するか、面倒なら全登録地点を削除しても良いです。全削除した後で登録地点を読み込ませれば、編集後の内容で登録されます。
・"CREATE","MODIFY","ACCESS"項はタイムスタンプであり、"YY/MM/DD HH:MM:SS”の形式でCSVファイルに書き出されます。表計算ソフトによってはこの形式では日付と認識しないかもしれないので、その場合は、makecsv.c ファイルの中を書き換えるのか、別の方法で形式を変換してください。
・表計算ソフトによってはCSVファイルを読込んだ時点で”CREATE", “MODIFY", “ACCESS" 項を日付ではなく単なる文字列として認識している場合があります。内容を編集しないならそのままでも構いませんが、日付と認識されれば場合によって便利なことがあります。(例えば、行ごとに日付をインクリメントする編集ができるとか) そうするための操作は表計算ソフト側の取説を探してください。
・”CREATE", "MODIFY", “ACCESS" 項は楽ナビの動作に影響を与えます。例えば、登録地点をリスト表示した時の表示順は“ACCESS" 項の新しい順であり、ナビの中の登録地点を編集後の情報で上書きしたければ、”MODIFY" 項をナビの中の登録地点よりも新しくしなければなりません。また、ナビの中の登録地点とSDカードの中の登録地点の同一性の判定には”CREATE"項の内容が一緒かどうかが関係しているようです。
・表計算ソフトによってはタイムスタンプを"YY/MM/DD HH:MM:SS”の形式で書き出せないかもしれません。その場合は modrecord.c の中を書き換えるか、別の方法で形式を変換してください。
・"YOMI"の項には半角カナまたは全角カナを使ってください。
・”RecordID”はCSVファイルの中で各行がユニークになるようにつけてください。
・CSVファイルの編集後、書き出すときは文字コードがShift JISになるようにしてください。

(3) CSVファイルから変換
上記で作られたwork2.csv ファイルが作業用ディレクトリにあることを確認して、次のようにコマンドを打ってください。
 $> source csv2d05 work2.csv POINTREC2.D05
この操作で作業用ディレクトリにPOINTREC2.D05ファイルが作成されます。
また、 X0000~Xnnnn のX+数字4桁の名前のファイルが多数作られますが、これは作業用に作られたファイルであり、必要ないので削除してかまいません。逆に、同名のファイルが既にあった場合は作業の邪魔になるかもしれないので、(3)の操作の前に消しておいてください。

(4)SDカードへの書き込み
上記で作られたPOINTREC2.D05 を POINTREC.D05に改名し、楽ナビから書き出したSDカード内のPOINTREC.D05を上書きして、楽ナビに読み込ませます。

◯結び
上記により、「楽ナビ AVIC-RZ711」の登録地点をパソコン上の表計算ソフトで編集できました。

ダウンロード - edit_pointrec.zip

 

2023年11月30日 (木)

楽ナビの登録地点のフォーマット

下の記事に関連して「楽ナビの登録地点を編集するツール」をこちらに公開しました。

背景
パイオニアのカーナビには「登録地点」と言う機能があり、ユーザーが設定した任意の地点をカーナビに登録しておき、経路検索の際に目的地や経由地として簡単に参照できるようになっている。しかしこの「登録地点」を登録する際には、ユーザーがナビ画面上の地図で場所を探したり、名前をつけるならナビ画面上のキーボードで一文字ずつ入力したりと手間がかかる。パソコンやスマフォ、タブレットなどと違い、カーナビの動作はいちいち遅く、タッチパネルの反応も不安定であり、画面が車に固定されているので楽な姿勢で操作できないのも使い勝手を悪くしている。
こういった問題に対してパイオニアは、登録地点をパソコン上で編集するソフトを公開しているが、MS-Windows用しか用意しておらず、しかも最新版のWindowsでないと編集できるナビ側のバージョンが大幅に制限されるなど、「やってますよ」とアリバイを作る以上のことをしていない。(上記ソフトの出来も首を傾げる内容だし)
パイオニアが自分で開発できないなら技術的な情報を公開してユーザーに任せる道もあるだろうに、そういうこともしていない。
私としては、車の機能が統合されていなければこんなナビなど使わないのだが、車の一部機能との連携のためにしょうがなく選択せざるを得ない。

目的
文句を言っていてもしょうがないので、自分で登録地点を編集する方法を探ることにした。今回は登録地点のファイルフォーマットについてわかったことをメモしておく。

登録地点をどうやって編集するか
パイオニアのカーナビには登録地点をSDカードに書き出し/読み込みする機能がある。元々は、カーナビを機種変更した時に旧機種から新機種へユーザーの登録地点を引き継ぐための機能らしい。
このSDカード上のファイルを何らかの方法で書き換えれば、書き換え後の登録地点をナビに読み込ませることができる。この書き換えのために必要なファイルのフォーマットを以下で解説する。

前提条件
対象カーナビ : 楽ナビ AVIC-RZ711
おそらく、以下の機種でもファイルフォーマットは同じ。
AVIC-RQ911/RL911/RW911/RZ911/RL811-D/RW811-D/RZ811-D/RL711/RW711/RZ711/RQ911-E/RL711-E/RW711-E/RZ711-E
また、パイオニアの他の楽ナビ、サイバーナビでも、似たようなフォーマットをしているだろうから、以下の情報は参考になるだろう。

書き換え対象のファイル
登録地点データ書き込み後のSDカードにある次のファイル。
/NAVIDATA/POINT/POINTREC.D05

ファイルフォーマット
○全体構成



ファイルの先頭にはヘッダ(32バイト固定長)があり、その後に登録地点の数だけレコードが続く。レコードは一応可変長だが、888バイトであることが圧倒的に多い。

○ヘッダ内部の構成

オフセット 長さ 内容
0 2 0x0000固定
2 2 CRC
4 8 文字列”PNTR4.00”
0x0C 8 タイムスタンプ
0x14 8 不明
0x1C 4 ファイルに含まれるレコード数


上記表に出てくる数値(CRCやレコード数)のバイトオーダーはすべてリトルエンディアンである。
以下、各項目の詳細。
・CRC
CRCは、ファイル先頭オフセット4バイト目からファイル末尾までを計算して求める。
CRCの種類はCRC16/CCITT-X.25であり、パラメータで表すと次の通りである。
Poly=0x1021、Init=0xFFFF、RefIn=True、RefOut=True、XorOut=0xFFFF

・タイムスタンプ
8バイトのBCD表記で、例えば次の例は2022/05/16 14:29:07 を表している。
0x1605 2220 FF07 2914
ここで0xFFは埋め草であり、0x00の場合もある。
また2022年が0x2220になっているのは、パイオニアのカーナビがリトルエンディアンだからだ。

○レコード内部の構成

オフセット 長さ 内容
0 2 レコードの長さ
0x1C 0x100 地点名の読み(カナ)
0x11C 0x108 地点名(漢字混じり)
0x224 4 東経
0x228 4 北緯
0x22C 0x1C 電話番号
0x250 4 不明(固定値?)
0x254 4 レコードID
0x258 4 グループID
0x25C 4 アイコンID
0x260 4 不明(固定値?)
0x264 8 作成タイムスタンプ
0x26C 8 更新タイムスタンプ
0x274 8 参照タイムスタンプ
0x27C 4 バージョン番号
0x280   以下、不明


上記表に出てくる数字(レコード長や統計、北緯など)のバイトオーダーはすべてリトルエンディアンである。
レコードの内部は不明な部分が多く、上記表では不明な部分を飛ばしている。編集するときはその部分をいじらないのがよさそうだ。特に、登録地点のうち「自宅」は他の登録地点と違う特別な地点だが、レコードのどこで表現しているか分からないので、目的外のところは触らない方が良い。
以下、各項目の詳細。

・レコードの長さ
0x378(=0d888)バイト長であることが圧倒的に多いが、たまに違うことがあるので決めうちにしないこと。

・地点名
Shift-JISコードで書かれた文字列。

・地点名の読み
半角カナまたは、Shift-JISの全角カナである。レコードごとに半角、全角が違っていても動作に問題はないようである。

・東経、北緯
レコード中の上記4バイトをリトルエンディアン32bit整数として読み込んで、(読み込んだ整数/3600/256) した値が日本測地系Bessel座標を表している。例えばレコード中で0x00 B0 A2 07であったなら0x07A2B000=128102400であり、128102400/256/3600=139.00度 を表している。
座標は日本測地系なので、GoogleマップやAppleマップなどの表示する世界測地系座標とは同じ値でも数百mのずれがある。日本測地系と世界測地系の間での座標変換は、国土地理院やMapFanのWebサイトでできる。

・電話番号
目的地の店舗などの連絡先を記録しておくもので、レコード中ではASCIIコードで表された数字文字列である。

・レコードID
ファイルの中でレコードごとにユニークな値を持っているのでレコードの識別子と思われるが、ナビに読み込むと付け替えられることも多いので、ほぼ意味はない。同一地点か別地点かの区別には、後述の「作成タイムスタンプ」の方が支配的な影響力を持っているようだ。

・グループID
ナビの持つ登録地点のグループ化機能で、レコードの地点がどのグループに属するかを示している。

・アイコンID
登録地点をナビの地図上に表示するときに使うアイコンの種別を示している。

・作成タイムスタンプ、更新タイムスタンプ、参照タイムスタンプ
それぞれのタイムスタンプは、地点をナビに登録した時、登録済み地点の内容を編集した時、登録地点を経路検索などで利用した時、を表している。形式はヘッダのところで説明したものと同じ。
これらのタイムスタンプはナビの動作に大きく影響し、例えば参照タイムスタンプが新しいものは登録地点のリスト表示で上位に表示されるし、SDカードでナビに登録地点を読み込ませる時、ナビの中に同一地点が残っていれば2つのうち、更新タイムスタンプが新しい方で上書きされる。
また、SDカードの中の地点とナビの中の地点が同一か別かの判断は、地点名や座標ではなく、作成タイムスタンプで行なっているようである。そのおかげで地点名や座標を編集しても同一地点と判断されて、似たような地点がいくつも登録されることを防げる。

・バージョン番号
登録地点を(ナビ上で)編集するたびにインクリメントされるのでその地点の登録内容のバージョンを表すと思われるが、SDカードでの読み込時に新旧の判断をする基準は前述の通り更新タイムスタンプなので、ナビの動作にどういう意味を持つのか不明。

以上、ファイルのフォーマットは上記の通りである。
登録地点の内容を書き換えたければ、(1)ナビからSDカードへ一旦書き出し、(2)バイナリエディタなどで必要な箇所を編集し、(3)編集したレコードの更新タイムスタンプも新しくし、(4)ヘッダのCRCを計算して更新し、(5)SDカードからナビに読み込ませる、という手順を踏む。(3)のタイムスタンプの更新をしないと、ナビは新しいデータと思わずに書き換えてくれない。ここで作成タイムスタンプを更新すると、新規の地点として登録されるし、参照タイムスタンプを更新したらリスト表示した時に最上位に表示される。
なお、上記動作はナビの機種によって違う可能性もある。

2023年7月14日 (金)

無停電電源にパルス充電

前振り
近頃はリチウム電池のポータブル電源にも「無停電電源機能」なるものがついてきているので、旧来の無停電電源を持っていて今回の話が有効な人は少ないかもしれないが、それでも書き留めておくことにしよう。

背景
最近暑くなってきたせいか、無停電電源が時々警告音を出すようになった。バッテリーが劣化してきたから交換しろ、ということだ。昔ながらの無停電電源は鉛バッテリーに電気を蓄えていて、こいつは数年で寿命が来るのだが、交換すると数万円かかる。
この鉛バッテリー、実は自動車用のものにそっくりであり、鉛バッテリーを復活できるとうわさの自動車用のパルス充電器で延命できないか、とやってみた。

使用機材
パルス充電器 : メルテック MP-220
対象無停電電源 : APC SmartUPS 1500

手順/経緯
手順というほどではないが、取説に従ってSmartUPS 1500 を開けると中から黒くて大きな塊が出てくる。
Img_2652
「おかしいな。もっと自動車のバッテリーそのもののような形をしてたはずだが。他の無停電電源のことだったか」と思いながら、電圧を確認すると20V。
「おかしいな。12Vまたは24Vでないとは、これは特別仕様のバッテリーなのか?」と思ったが、すぐに思い当たった。定格24Vなのが劣化して20Vになってるのだ。しかし、定格24Vのバッテリーではうちのパルス充電器では充電できない。12V専用なのだ。
しかしバッテリーをよく観察していたら、なんだかバッテリーの真ん中に切れ目が入ってる。
わざとらしくついてるカバーを外したら端子が出てきた。
Img_2651
よくみると、12Vのバッテリーが2つ直列につながってるだけなのだ。それなら、ひとつずつパルス充電器にかけられる。

さて、充電器の取説に従ってパルス充電をしてみると、取説の通り1時間経ってパルス充電が終了した。続いて、自動的に通常充電が始まったが、こちらは1分程度で終了した。少し変だとは思ったが、電圧は(パルス充電前)9.95V → (1分の通常充電終了後)13.4V になってる。充電器を外して1時間経っても13.1V程度あったので、どうも本当に充電できたようだ。
バッテリーを2個とも充電終了後、無停電電源に戻して1週間ほど使ってみているが、以前は毎日数回出ていた警告がもう出なくなった。効果はあったようである。

2022年3月 2日 (水)

AirTagを落とした

AirTag を落としてしまいました。ネタじゃありません。マジです。
家の鍵などと一緒に鍵束に付けていたのに、気がつくと鍵束に AirTag のホルダーだけ残って、ホルダーの中が空になっていました。ネタじゃありません。マジです。
この AirTagホルダーが悪いんです。
Badholder
ダイソーで2個百円でした。
早速、iPhone の「探す」アプリで AirTag の位置を確認すると、昨日バイクで通った道に落ちてるようです。最後に確認された時刻が今日の朝だったので、おそらくこの「確認」は自分のiPhone がしたのではなくて、通りがかりの誰かの iPhone によって位置が確認されたようです。これで落としたことは確定です。
すぐに確認された位置にいって AirTag を探しましたが、範囲が広い! Bluetooth だと数十m電波が届くので、そのくらいの範囲で道路の上の小さい AirTag を探さないとなりません。UWB付きの上位グレード iPhone ならもっと狭い範囲に絞ることも技術的には可能ですが、うちの iPhone は SE です。ちなみに後でわかりますが、UWBが付いていても今回の場合には役に立たなかったでしょう。
iPhone の「探す」アプリで「サウンドを再生」を操作すると、AirTag から音を出させて探す助けになるのですが、周囲が交通量の多い道路ではうるさくて頼りになりません。それに iPhone と AirTag が Bluetooth で接続しないとこの操作はできませんが、歩き回って何度操作しても接続できません。同じ理由で「探す」アプリの「検出したら知らせる」も役に立たないでしょう。大体、接続できるなら、自分の iPhone が近くに来たのだから、「探す」アプリ上の現在位置が更新されても良さそうですが、今朝の時刻から全く更新されていません。
しょうがないので地道に路側の草むらとか側溝とか見てまわり、それでも見つからずに諦めかけたころ、交差点の真ん中に白いものがあるのに気が付きました。信号が変わるのを待って近づくと、それが変わり果てた姿の AirTag でした。
Brokenairtag
多分、自動車に踏まれているうちに蓋が開いて電池が飛び出したのでしょう。これではBluetooth で接続できないはずです。本体、電池、蓋が近いところにあったので、バラけてからまだ時間は経ってないようです。
回収した後、まだ動くか確かめようとしましたが、何処か変形してしまったのか、蓋が閉まりません。また、AirTag は電池を入れたときに(蓋を閉めてなくても)確認音が鳴るはずですが、それがありません。やはり壊れたのでしょうね。

以上が AirTag を落とした顛末です。今回を教訓にして、AirTag のホルダーはもうちょっとしっかりしたものを選ぶようにします。

2021年11月 9日 (火)

AirTagは自動車の盗難防止に使える?

Appleの紛失防止タグAirTagが発売されて数ヶ月経つが、どう使って良いのかちょっと迷う。鍵束につけるのはまあ良いが、財布に入れるには分厚すぎる。また、自動車や自転車の盗難防止に使いたい人が多くいるが、その用途にはAirTagの仕様は問題が多い。
今回は、特に自動車や自転車の盗難防止に絞って、どういう問題があるか机上検討してみた。

* * *

AirTagは、持ち主から8〜24時間離れていると、ランダムな周期で音を出す。
「離れる」と言うのはBluetoothの電波が届く範囲から出ることでおおよそ60mと言われているが、間に壁などがあれば距離はもっと短くなるだろう。ということで、車にAirTagを付けると、駐車場に置いてる間に鳴り出してしまう。通りがかりの人は不審に思うだろう。
しかしこれは、AirTagのふたを開けてスピーカーに繋がってる線を切る改造をすれば、音は鳴らなくなるだろうから致命的な問題ではない。

しかしこれと別に、車の窃盗防止には都合の悪い問題がある。
窃盗犯がiPhoneを持っている場合といない場合で状況が違うので、2通りの場合を考える。

・窃盗犯がiPhoneを持っている場合
窃盗犯が車のそばにしばらく(8時間よりは十分短い時間)いると、窃盗犯のiPhoneに(ストーカー防止機能によって)警告が出て、AirTagの存在がばれる。窃盗犯はAirTagを探して取り外すだろう。
持ち主が、上記の時間になるより前に盗難に気付いて「紛失モード」を宣言すれば、(窃盗犯のiPhoneを通して)盗まれた車の位置がわかるが、宣言が遅れると道端に落ちてるAirTagだけを見つけて車は戻らない。(紛失モードを宣言しなくても、他人のiPhone経由で得たAirTagの位置が「探す」アプリに表示されます。)

・窃盗犯がiPhoneを持っていない場合
車にAirTagが付いていても窃盗犯は気が付かないので、持ち主が「紛失モード」を宣言して以降、盗まれた車のそばを誰かiPhoneを持った人が通り過ぎた時点で車の位置がわかる。
ただし、窃盗犯が人里離れたヤードに車を持ち込むと、誰も通り掛からないので車の位置はわからない可能性大。

以上から、AirTagを自動車や自転車の盗難防止に使うのはいささか頼りない。特にストーカー防止機能、これが無ければもう少し使えるのだけれど。
他社の紛失防止タグにはこう言った機能がないもの(MAMORIOやTile)があるので、こちらを使うのも手だが、AirTag/iPhoneに比べればユーザー数がずっと少ないので遠く離れた時に他人(のiPhone)が見つけてくれる可能性はずっと少なくなる。
先日、AppleはiOSの一部APIを他社に開放して「探す」アプリで他社タグも表示されるようになったそうだが、見つける方もできるようにならないものか。

2021年8月 1日 (日)

Yubikeyが壊れちゃった

Yubikeyが壊れた。
と言っても、動作は問題なく、外装が割れたのである。
Yubikey1
動作に問題なくても、防塵防水性は無くなった。
Yubico社の売り文句では機械的にも頑丈なはずなのに、どうしたのだろう。乱暴に扱った覚えはない。他のリアル鍵と一緒にキーチェーンに付けているが、もちろん投げたりなんかしないし、机に置くときだって5cmより高いところから落としたことはない。バイクで走ってる間の振動がまずいのか?ジョギングで揺れるのがまずいのか?
Yubikeyの予想外の脆さに驚いている。

さて、壊れたままにして置けないので修理することにした。
問題は防塵防水性だけなので、それが取り戻せれば良い。
はじめに、外装が割れたYubikeyにプラモデル用のパテを盛ることを考えたが、密着性がいまいちな気がする。パテが固まる時に収縮すればYubikeyとの間に隙間ができて水が入るかもしれないし、パテがぽろりと落ちるかもしれない。
そこで、紫外線硬化レジンを使うことにした。レジンなら接着剤代わりに使われるくらい密着性が良いので、ぽろりと落ちることはないだろう。
ということでやってみた。
Yubikey2
透明なレジンなので違いが分かりにくいかもしれないが、露出していた基板の上にこんもりと盛った。
しばらくこれで使ってみよう。

2021年7月 1日 (木)

IPv6を遮断

家の携帯電話網(IPv6)の通信を減らすために、IPv6を使わないように設定をした。

背景、目的
うちの家は光回線でつながってないので、そのままでは家庭内LANでIPv6の通信ができない。そこで、家庭内LANにモバイルルーター(携帯電話網につながる中継機)を追加した。(通常、モバイルルーターはWi-Fiであるが、今回は有線で家庭内LANに接続。ここら辺の経緯はこちらを参照。)
結果として、うちの家庭内LANはIPv4をADSL固定回線(使い放題)で、IPv6を携帯電話網(容量上限あり、超えたら従量制)でインターネットに繋がるようにしている。
当初はIPv6の通信量も少なく、携帯電話網の通信料金も大したことはなかった。しかし、GoogleやAppleのサービスがどんどんIPv6に対応し、iPhoneやiPadがIPv6を優先して通信するようになったため、通信料金が無視できないようになってきた。
ただ、GoogleやAppleがIPv6を優先していると言っても、IPv4経由でのサービスを止めたわけではない。サイト(サービス)はIPv4とIPv6の2つのアドレスを持っているのに、iOSがIPv6を優先して使っているだけなのだ。(なお、うちの場合、Macなどの有線LANにつながった固定機器にIPv6が必要なアプリがあるが、そちらの通信量は問題にならない。)
そこで、通信料金低減のために、iPhoneやiPadにIPv6を使わせない方法を以下に検討する。

第1案 iOSにIPv6を使用禁止にする設定はないか?
結論を言うとそう言う設定はない。
Macだったら、システム環境設定>ネットワーク>(家のネットワーク名)>詳細>TCP/IPで「IPV6の設定:リンクローカルのみ」にすれば良いのだが。

第2案 Wi-FiアクセスポイントにIPv6を通過させない設定はないか?
IPv6を使わせたくない対象がiPhoneやiPadなので、Wi-FiアクセスポイントがIPv6を通さなければ通信できない。
しかし、Wi-Fiアクセスポイントをルーターモードにした場合、Wi-Fiと有線はサブネットが別になり、iPhoneから家庭内の固定機器を検索できなくなるなど、使い勝手が悪くなる。
また、Wi-Fiアクセスポイントをブリッジモードにした場合、IPv4/IPv6を選別するようなフィルタ的機能がない(少なくともうちのWi-Fiアクセスポイントには無かった)。いや、世の中にはフィルタ機能を持ったブリッジもあると思うが、多分、個人で使うような機器ではないだろう。

第3案 DNSのAAAAレコードクエリー(問い合わせ)を遮断できないか?
結果としてこの案を採用してうまく行ったが、これには説明が要るだろう。
DNSとは、URL(例えば akakabu.way-nifty.com)からIPアドレスを求めるプロトコルで、目的のURLのIPv4アドレスを問い合わせるのがAレコードクエリー、IPv6アドレスを問い合わせるのがAAAAレコードクエリーである。インターネットを使うほとんどのアプリは、通信先のIPアドレスをじかに保持しているわけではなくて、テキストデータとしてURLを保持していて、通信する際にDNSサーバーに問い合わせてIPアドレスを取得する。よって、その問い合わせを遮断すれば相手のIPアドレスが分からず、ほとんどのアプリは通信できなくなる。
しかし、Aレコードクエリーまで遮断したらIPv4の通信もできなくなってしまうので、AAAAレコードクエリーのみ選択的に遮断する必要がある。ついでに言うと、全ての機器からのAAAAレコードクエリーを遮断したら、固定機器までIPv6で通信できなくなってしまう。
なかなか条件が細かいが、うちのYAMAHA製ルーター(RTX1200)では幸いにも目的のことができた。以下にその具体的設定を解説する。設定対象はYAMAHAのルーターと、iPhoneやiPad(IPv6通信をさせたくない対象の機器)の2箇所にある。

設定
◯YAMAHAルーターの設定
以下の設定をtelnetを使ってコマンドラインに入力する。

# DNSサーバー機能を有効にする。
dns service recursive
# DNSのリカーシブコールで問い合わせるサーバーのアドレス指定
dns server 1.1.1.1 2606:4700:4700::1111
# AAAAレコードクエリーを遮断する指定
dns server select 1 reject aaaa . 192.168.100.10
dns server select 2 reject aaaa . 192.168.100.11
# DNSを自動で設定する機器に、DNSの情報を提供
dns notice order dhcp me server
dns notice order msext me server

上記で”1.1.1.1 …”などとしている、リカーシブコールで問い合わせるDNSサーバーのアドレスは、通常はプロバイダの指定したものを使うのが良いだろう。
また上記の例で192.168.100.10と192.168.100.11としているのは、IPv6を使わせたくない機器のIPアドレスである。対象機器はIPアドレスで指定するので、DHCPを使うなり、手入力するなりして、毎回同じアドレスになるようにしておかなければならない。この設定で指定アドレスからのAAAAレコードクエリーが遮断される。
最後の ”dns notice order dhcp/msext me server” は、ネットワークに接続してくる機器(iPhoneやiPadやその他)にDNSサーバーの情報を提供する設定で、上記では、me 、server の順で使うように指定している。me はYAMAHAのルーターのことであり、server は ”dns server 1.1.1.1 …” で指定したサーバーである。これで、ネットワークに接続した機器はDNSの問い合わせをするときに、まずYAMAHAのルーターに問い合わせ、そこで答えが得られなかったら指定された次のDNSサーバー(上記では1.1.1.1 )に問い合わせ、それもだめならその次のDNSサーバーを試す。

◯対象機器側設定
上記の設定では、IPv6を使わせたくない機器がYAMAHAのルーターにDNSの問い合わせをすると、ルーターはAAAAレコードクエリーを遮断するので、機器にIPv6アドレスを返さない。(AレコードクエリーならIPv4アドレスを返す。)
最初の問い合わせが失敗すると、機器は次のDNSサーバーに問い合わせ、こちらはルーターによって遮断できないので、機器はIPv6アドレスを取得できて通信ができてしまう。
そこで、IPv6を使わせたくない機器については、ルーター以外にDNSの問い合わせをしないようにしかけをする。iOSの場合は次のようにする。
まず、次のようにiPhone/iPadのメニューを下っていく。
 設定>Wi-Fi>(家庭内LANのネットワーク名)>DNSを構成

この画面にある「手動」 をチェックする。
続いて、その下にある「DNSサーバ」で、YAMAHAのルーターのIPアドレスを残して、他を全て削除する。
これにより、iPhone、iPadではルーター以外のDNSサーバーに問い合わせをしない。

効果
まず、上記の設定をしても、iPhone、iPadは問題なく動作する。Webブラウジングも、ダウンロードも今まで通りで、なにも違いは感じられない。
一方でIPv6の通信量は激減した。携帯電話会社のサイトで使用量を確認すると、ほぼゼロである。(iPhone、iPad以外にIPv6を使っている機器があるので、ゼロにはならない)今までならYoutube(Googleがサービスしている)を見たりすると何百MBにもなったが、今はいくら見ても通信量は増えない。Apple Storeからアップデートを落としても同様。全てIPv4経由で通信しているようである。

2020年6月25日 (木)

忘れ物防止タグ

忘れ物防止タグを使ってみた。

◯まず忘れ物防止タグとは
スマフォと連携するタグを鍵束とか財布につけておいて、鍵束や財布をどこかに忘れてきたときに見つけるのを手助けするもので、具体的には次のようなことができる。(ただし、以下の機能をどの製品でも全てできるわけではないことに注意)
・タグとスマフォが離れるとプッシュ通知
・スマフォから操作してタグのブザーを鳴らす。
・タグを操作してスマフォを鳴らす。
・最後にタグと通信のあったところをスマフォが覚えている。
・タグの付いたものをどこかに置き忘れても、同メーカーのタグのユーザーが近くを通ると、自分のスマフォで場所がわかる。

また先日、アップルが「探す」アプリのインターフェースを公開したので、タグメーカーの側が対応すればもっといろいろできるようになるだろう。

◯代表的製品と一言コメント
・Tile
  一部機能が有料サービス
・MAMORIO
  ブザーがついてなくて音が出せない
・Mikke
  事業の継続性が心配
・Qrio Smart Tag
  ソニー関連会社だから継続性は安心か
・アップル AirTag
  正式発表されていない。発売時期未定。
  10cm程度の精度で位置が分かるらしい。

◯使用感(Qrio Smart Tagの例)
ということで、Qrio Smart Tagを買ってきた。以下の使用感はひとつの製品の例であり、忘れ物防止タグを選ぶときはこんなところに注意しよう、というもの。
・家の端から端(距離約10m、途中壁あり)に離れても接続していた。
・逆に1mも離れていないのに「近くにありません」と言ってくることもあった。
・スマフォからタグを鳴らした音量は、静かな家の中なら十分だが、雑踏で落とした時に聞き取るのは難しそう。
・タグからスマフォを鳴らしても、次の時は聞こえない。(当たり前)
  スマフォの音量を最低にしてる時。
  イヤホンをつないでいる時(有線、無線とも)。
・タグからスマフォを鳴らした時、止めるにはアプリを立ち上げてダイアログの「止める」ボタンをタップする必要がある。ロック画面、待ち受け画面では止められない。(つまり認証の通らない人には止められない)
・防塵、防水性はないので、バイクのキーと一緒にしている人は突然の雨に注意。
・ストラップ(ひも)の部分は交換できる。
・ほっといても時々LEDが点灯していて、消費電力(電池の寿命)が心配

2020年6月20日 (土)

油没HDDに挑戦(2)

油没HDDに再挑戦した。(前回の経緯はこちら)

前回の失敗を踏まえ、今回は確実に油漏れを防ぐためにHDD全体をビニール袋に入れた。その他、油漏れを防ぐために取った対策を以下に示す。
・ビニール袋は2重
・使用するビニール袋は事前に水を入れて放置して、漏れが無いことを確認した。
・HDDの角と辺にセロテープを貼って保護
・HDDのプリント基板面に厚手ビニールを貼った。
 (100円均一で売っている、シリコン製の「繰り返し使えるラップ」が良さそう)
Hdd2_1
最初、これらの対策をせずに、ビニール袋一枚にHDDを入れて実験した所、袋に穴があって油が侵入して、HDDを1台失った。穴の開いた所に対応するHDDの箇所には特段とがった物は見当たらず、どうして穴が開いたのかは不明。

こうした対策を施したHDDを、前回同様に油槽に入れてパソコンに接続して使用した。
Hdd2_2
袋の口を閉じず、油の中に没していないので、正確には油没ではなくて油浴であるが、ファンなしでHDDが冷やせるなら大した違いではない。

さてこの条件でHDD内の動画を自動で繰り返し再生させて放置した所、1週間問題なく動作した。動作中に測った温度の一例を示す。
 室温 : 28.4度
 油温 : 33.7度
 HDD筐体の温度 : 37.6度
今回のHDDはS.M.A.R.T対応ではないので、HDD筐体の温度は上から温度計を差し込んで筐体(天板と側面)をじかに測った温度である。

油がHDDに直接触れず、間にビニール2枚と若干の空気層があるため、冷却効果に懸念を持っていたが、温度差は10度以内に収まっている。HDDの動作保証温度は50度程度と聞いているので、気温40度までならこの方法が使えそうである。

より以前の記事一覧