エアコンのオン/オフスイッチが1697ドルになった事情
(blog.hopefullyuseful.com)- 2019年に設置した Advantage Air e-zone ダクト式エアコン制御システムは、壁面の Android タブレット1台が故障したことで暖房をオン/オフできない状態になった
- 故障箇所は Daikin のエアコン本体や屋根裏の制御ボックスではなく、POE 給電の Android タブレットで、ユーザーの立場では実質的にオン/オフスイッチが壊れたのと同じだった
- Advantage Air は保証終了後、タブレット単体を販売せず、当初は $1245 の制御システム交換を案内し、公式見積もりは無線温度センサー込みで $1697 まで増えた
- ユーザーは既存タブレットを分解して隠れた USB と POE コネクタの配線を確認したうえで、Samsung Galaxy Tab 4 にコネクタを取り付け、アプリのデバイスモデル検査をパッチして e-Zone アプリを実行した
- 調査の結果、最新タブレットが古い制御システムで動作できない主な障壁はハードウェアではなくソフトウェア上の制限に見え、その後、ハードウェア・プロトコル・API のドキュメント化リポジトリも作られた
壊れたのはエアコンではなく壁面タブレット
- 家族は2019年に新居を建てる際、大型のダクト式 reverse cycle、つまりヒートポンプエアコンシステムを設置した
- 建築パッケージ全体に含まれていたため正確な価格は分からないが、同規模の住宅見積もりを基準に $10k-$12k 程度と推定している
- システムは2つの部分に分かれる
- 実際の冷暖房機器は Daikin のエアコン
- 屋根裏には各ゾーンの通風口を開閉する Advantage Air 制御ボックスがある
- リビングの壁にある POE 給電の Android タブレットが Advantage Air e-zone インターフェースの役割を担っていた
- e-zone で複数ゾーンの温度、通風口の開度、ファン速度を調整でき、スマートフォンアプリによるリモート制御も可能だった
保証終了6か月後に停止した制御タブレット
- 2024年8月18日の日曜日、タブレットに「Sorry Google services has stopped」というメッセージが表示された
- その後 e-zone アプリがクラッシュして起動しなくなり、再起動後は終わらない ANDROID ローディング画面に留まった
- リカバリーモードで設定やパーティションを消去するなど、さまざまな方法を試したが復旧できなかった
- 端末には見える USB インターフェースがなく、コンピューターに直接接続できず、「system integrity check」は複数のエラーを返した
公式サポートはタブレットではなくシステム全体の交換を要求
- Advantage Air のサポートチームは保証期間が過ぎていることを確認したうえで、タブレットが死んだなら $1245 の新しい制御システムが必要だと案内した
- 安価なタブレットだけ交換すればよいはずだという抗議に対しても、サポートチームは技術は進化し続けておりシステムに互換性がない、という趣旨で回答した
- 当時、正常に動作していた構成要素はそのまま残っていた
- エアコン本体
- 制御ボックス
- 故障したのは Android タブレットだけ
- その後の公式見積もりにはタブレットと制御システムだけでなく無線温度センサーの交換まで含まれ、総額は $1697 になった
- ユーザーは古いシステムで最新タブレットモデルを使っている事例を見て、タブレットだけでも解決できると判断した
既存タブレットの分解と POE コネクタの追跡
- 壁からタブレットを外して分解してみると、POE 接続は標準的には見えず、中央のピンで 12V と 2V を送っていた
- 内部には隠れた USB ポートがあったが、最初は fastboot、recovery、adb sideload のどのモードでもコンピューターが認識しなかった
- メインボードを外して POE コネクタの追加配線をたどると、USB の 5V とデータラインにつながる3本の線を見つけた
- データラインを切断した後、
fastboot devicesでタブレットが見えるようになった - その後
mtktoolでブートローダーのアンロックを試みたがstage2で失敗し、既存タブレット自体を復活させるのに時間をかけすぎたと判断した
核心は専用ハードウェアより POE アダプターとアプリの検査
- 既存タブレットでハードウェア的に特別だった部分は POE アダプターだった
- バッテリーを置き換えて常時電源を供給する
- USB デバイスとしても機能する
- POE コネクタを USB-A プラグに接続してコンピューターから検出しようとしたが失敗した
- このデバイスはホストのように動作し、タブレットやスマートフォンにしか接続できないのではないかと考え、Android 端末を探し始めた
- 2015年にもらった Samsung Galaxy Tab 4 を見つけて充電し、自分で半田付けしたコネクタを接続すると、動作の可能性が見え始めた
Android アプリのパッチでデバイス制限を回避
- 元の e-zone タブレットは Android 6.0 を実行しており、Samsung Galaxy Tab 4 は Android 5.0 だった
- Advantage Air のウェブサイトと apkpure から必要なアプリを入手してインストールした
- AAService アプリ
- Ezone インターフェースアプリ
- 最初は「Not on AA Hardware」のようなエラーが出たため、Android アプリのパッチが必要だと判断した
- Android アプリのリバースエンジニアリング記事を参考に、
apktoolで APK をディスアセンブルして再ビルドした - JAXE ウェブデコンパイラで APK を Java に近い形で確認した後、実際の修正は smali コードで行った
モデル名検査の変更だけでアプリが起動
- AAService アプリの
onResume()には端末が Advantage Air ハードウェアかどうかを検査する条件があり、失敗すると「Not on AA Hardware」を表示して終了する - 検査ロジックは
Build.MODELを複数のモデル名と比較する方式だった- 例:
"eZone","e-zone","PIC7KS-EZ","PIC7KS6","PIC7KS6-EZ"
- 例:
- 既存タブレットのケース内側のステッカーでモデル名を確認した結果、コード上は
-EZ識別子が付いたPIC7KS6-EZが必要に見えた - smali コードで元の
Build.MODEL値を返していた部分を、"PIC7KS6-EZ"文字列を返すように変更した apktool bで再ビルドした後、署名されていない APK をkeytoolとjarsignerで署名した
サービスアプリと UI アプリを同じ方法で修正
- 初回インストール時に
INSTALL_FAILED_DUPLICATE_PERMISSIONエラーが発生した- AAService アプリと eZone アプリが同じ権限を要求していたが、互いに異なるキーで署名されていたため
- 作業を進めるため eZone アプリを削除した
- パッチした AAService アプリは起動し、「System connected」通知が表示された
- その後 eZone UI アプリでも同じデバイス検査コードを見つけ、同様に修正した
smali/com/air/advantage/w1/k.smaliを修正して再ビルド・インストールした後、Samsung Galaxy Tab 4 で e-Zone が正常に起動した- 元のタブレットの復旧を諦めてから新しいタブレットで動作させるまで数時間かかった
コストと互換性について残った結論
- エアコン設置業者は翌日、バンの後ろで見つけた古いタブレットを $400 で買えると連絡してきた
- この価格も高いが、Advantage Air が最初からその選択肢を提示していたら受け入れていた可能性が高いと見ている
- この修理は元の POE コネクタがあってこそ可能であり、Advantage Air のハードウェアを持っていない人には役に立たない
- 同じタブレット故障がよくある問題なら、多少の半田付けと新しいタブレットだけで解決できる
- 最新タブレットが古い制御システムで動作できないようにしている障壁は、ハードウェアではなくソフトウェア上の選択に見える
HN 後に集まった追加情報
- Hacker News の議論で、同じ都市に住む gstar が同じ問題に取り組んでおり、システムが RS422 を使っていると書き残した
- gstar は、タブレットを root 化して
build.MODELを"MyAir5"に変更すれば、サードパーティ製タブレットでも動作すると付け加えた - HN 参加者の一部は、ハードウェア、プロトコル、API に関する情報を文書化するためにリソースを集め始めた
- 関連リポジトリ: aa_interop
1件のコメント
Hacker News のコメント
なんてことだ。Perth にいるのだが、同じシステム、同じ問題に遭遇し、ほぼ同じ方法で解決して、記事にまとめているところだった
このシステムは RS422 を使っていて、
aaserviceバイナリの中に base64 エンコードされた AES キーが入っているESP32 ベースのオープンソースなコントローラー実装を作ろうかと考えていたところで、本当に妙な偶然だ
build.MODELをMyAir5に変えるだけで サードパーティ製タブレット でもすべて動く基本的には Android タブレットの API に話しかけて動かす方式なので、タブレットが死んだら助けにはならないが、ゾーンの平均温度に応じて全体の装置をオン/オフしたり、部屋の主のデバイスがオンラインかどうかと周辺ゾーンの温度に応じてベントを開閉したり、ゾーン温度を influxdb に送ったりすることはできる
考えられる意図は相互運用をより難しくすることだけで、セキュリティを望んでいたならハードコードされた AES キーなど使わなかったはずだ
まだ故障してはいないが、その可能性が気になって通信プロトコルを文書化し、メイン制御ボードと通信する Pi HAT の設計まで始めた
これもいつか記事にまとめないといけない
毎日似たような数のログを安価なフラッシュに書き込み続け、限界に達するという具合かもしれない
このメーカーは恥を知るべきだ
10年間放置していたブログを、この記事一本を書くために復活させたのがいい
怒りと恨み は強力な動機だ
全部アップグレードしなければならず、昔のサイトには SSL すらなかった
でもあまりに腹が立ったので、他の人にも直し方を知ってほしかった
すでに強いソーシャルメディア上の影響力があるか、そういう人を個人的に知らないと難しいし、HN でも運よく適切な時間に投稿したうえで、通報する集団に引っかからないことを祈る必要がある
去年、家にエアコンを設置した
独自仕様のスマート機能が付いた製品ではなく、IR リモコン で制御される機種をあえて選び、スマート機能は AliExpress の安価な IR ブラスターを Home Assistant につないで解決した
部屋のダッシュボードには安価な Lenovo タブレットを壁に取り付け、スマホなしで照明とエアコンを制御できるようにしたのだが、こういう恐ろしい話を聞くと自分の判断にますます確信が持てる
フィードバック機構がない場合、機器の状態と Home Assistant の状態がずれたときにどう解決するのか気になる
Wi-Fi モジュールは追加費用がかかるが、アプリのレビューを読んだところ、全体として「ある程度は動くがほとんど役に立たない」という雰囲気だった
ESP32 IR 送信機を作って Tasmota IR を入れたところ、Daikin 対応がとてもよく、受信はできないが 100% 安定しているので不要に見える
Lennox もこうした独自仕様のシステムを使っているが、制御ボードに昔ながらの制御端子が見えたし、新しい床の施工中に設置業者が古い線を切ってしまう事故のおかげで、本来の4芯ではなく 5芯のサーモスタット線 が入っていた
50ドルのサーモスタットをつないだところ電源とファンは入ったが、A/C コンデンサーは反応せず、純正の交換品は700ドル超、アップグレードは800ドルだった
OfferUp でアップグレードモデルを400ドルで売っている人を見つけ、最初は「盗品だからあまり聞くな」みたいな雰囲気だったが、結局買った
家に戻って接続したらファンは回るがエアコンは動かず、念のため外の熱交換器の電源を確認してみると、安全のために抜いておいて再度挿したものの、きちんとはまっていなかった
もう一度しっかり挿すと火花が散って復活し、50ドルのものでも十分だったのかもしれないが、すでにお金を使ってしまったので全体を配線し直す理由はなかった
このシステムがまた死んだら、ダクトレスのミニスプリットにするつもりだ
あえて スマートでない機器 だけを買い、自分のやり方でスマートにする
「スマートエアコン」業界全体は、大きめの小惑星にぶつかって消え去る必要がある。
現代的な可変速機器への実需が明らかにあるのに、メーカー各社が独自プロトコルで自社エコシステムに囲い込んで台無しにしている。
米国のTRANEも似たようなもので、可変速ポンプは短周期運転や過大容量システムの問題を解決してくれるだけに、なおさら腹立たしい。
そうすれば、断続的な再生可能エネルギー発電の状況に合わせてシステムを変えるようなことも可能になる。
こういう重い部品に追加の制御部が付くと、故障したときに非常に高くつく。私の場合、制御部は無事でファンモーターだけが死んでいた。
モーター単体では売らず、組み合わせ部品だけを900ドルで売ると言われ、しかも自分で取り付けると保証も無効になると言われた。
Traneだったら、その組み合わせ部品すら売れないと言われただろうし、私の機器はGoodmanだった。
完全なぼったくりだ。
単純な機器なら、どの部品業者も安い交換部品を在庫していて、修理も簡単だ。
逆に、LennoxやTraneが自分の機器が壊れた瞬間に生産終了したレアな可変速モーターや制御基板を探す羽目になるなら、幸運を祈るしかない。
ある機器は温度センサーを2個欲しがり、別の機器は3個欲しがる。センサー特性や位置を物理モデルとして使い、精密に制御するシステムもあるため、一般的なシステムでもデータポイントが5〜15個ほど入ることがある。
プロトコルを文書化するのはよいことだが、実際に使う人はごく少ないだろうし、標準として機能させるには、BluetoothのようにHFP、A2DP、SPPといったシナリオベースのプロファイルと、任意のGATT式汎用属性を持たせる方式が必要になるだろう。
しかしBluetooth LEで見られるように、皆がGATTの上に独自実装を載せるなら、結局同じ問題に戻ってしまう。
一部のシステムは「スマート」に動作しようとしつつ、24V C/W/Y1/Y2のようなプロトコルを標準準拠の代替経路として使っている。完全にすべての知能を失うわけではないが、機器側が物理的な推定で情報を把握しなければならない。
たとえばオン/オフ式のサーモスタットだけを使うと、設定温度との差を直接知ることができないため、複数サイクルの観察から推定する必要がある。
現実的な解決策は、古い24Vインターフェースを拡張することかもしれない。
たとえば実際の制御方針をサーモスタットに渡し、5Vはオフ、0Vは最大冷房、10Vは最大暖房という0〜10V信号を使うような形だ。
そうすれば温度センサー構成は自由に選べるが、複数ゾーンや複数のサーモスタットが必要な設置は複雑になる。
業界がこうした解決策で合意するのは非常に難しいだろう。
Qualcomm Quick Charge 2.0はこれに似た非常に単純なプロトコルで、実質的に自己記述的だったためバージョン管理もあまり必要なかったが、要求が変わるにつれて3.0と4.0を経て、USB-CとUSB PDに至ってはOSI階層をすべて備えたデータプロトコルAPIやメーカー別拡張まで生まれた。
標準ではないにせよ、システムAPIを公開する複雑なプロトコルを定義することもできるが、メーカー側にそうする動機はなく、Control4、Lutron、Crestronのような大手が連携製品を作ることはできる。
しかしそうなると顧客はサーモスタットを自由に選べず、N社のメーカーとN社のサーモスタットメーカーすべてに対応しなければならないため、スケールせず依存関係地獄に陥る。
より大きな建物では、BACnetが標準に最も近い解決策に見える。
Bluetooth式のシナリオベースのプロファイルモデルを使っているようだが、必要な場所にデータを送るにはある程度の手動設定が必要という大きな欠点があり、家庭規模で施工業者がこれを扱う準備ができているとは考えにくい。
現代的な意味での「サーモスタット」は、ほとんど痕跡器官に近く、実質的にはユーザーインターフェースと温度計にすぎない。
オープンソースのアプリ制御といった願望を別にしても、サーモスタットが何をし、システムが何をするのか、壁に付いた機器を本当に交換可能な「サーモスタット」と呼べるのかを定義するのは難しい。
住宅オートメーション統合をしている友人によると、多くの顧客は標準のサーモスタットが見た目として気に入らないという。
こういう場合にカスタマイズの必要性は理解できるが、実際の実装は難しそうだ。
「理由はともあれ、みんなのタブレットが似た時期に死ぬ」というのは、実に面白い偶然だ。
その時期が保証期間外だというのも、完全に偶然なんだろうね?
おそらくeMMCベースで、ログファイルを書き続けているのだろう。
根拠は、私の手元でまさにこの方式で死んだAndroid機器がこれで4台目だということだ。
集団訴訟か、その国で同等の手続きが出てくるまで、多くの人をそのままひどい目に遭わせ、保証請求を守らなかった代償として手首を軽く叩かれるだけで終わる可能性が高い。
2021年4月のセールで買ったPhilips 4K LEDテレビがあったのだが、細かな異常症状はあったものの致命的ではなかった。
ところが今年1月の第2週に突然、画面が縦縞だらけになり、ある瞬間までは正常で次の瞬間には壊れていた。
幸いノルウェーでは一般に5年保証期間があり、テレビは少なくとも5年は持つべきものと見なされている。
店に持っていくと同じモデルのテレビがさらに2台あり、貼られたメモを見るとどちらも私のものと同じ症状で故障しており、購入日も2021年3〜4月ごろだった。
何らかの共通部品の故障と見るしかない。
残念ながら、メーカーの誰かがこれを知ったときに最初に考えるのは「顧客がもっと簡単に使えるようにするには?」ではないはず
おそらく「この回避策をどう塞ぐか?」になるだろうし、結局はより制限的で奇妙なハードウェアとソフトウェアに向かう可能性が高い
顧客のうち、こういう「ハック」ができる人はたぶん1%だけだし、タブレット交換が他社の新しいエアコンを買うより安い限り、メーカーとしては問題ない
ほとんどすべてがこういう方向に進んでいる
昔のiPhone脱獄時代と、Appleとのいたちごっこを今でも覚えている
.soの中に入れて、Android JNIを使う必要があるだろう複雑にして、タブレットのモデル文字列をコードのあちこちに隠しておけば、
.soファイルをデコンパイルする人を十分にいら立たせる程度には防げる一般的なAndroidタブレットで動くアプリが not on AA hardware エラーを出すのは犯罪であるべき
この場合、明確な失敗モードがあるのは理にかなっている
新しいタブレットをつなぐためにはんだごてまで取り出す人なら、この程度は十分回避できる
スマートが愚かになる瞬間だ
Nestやほかのスマート機器でもこれが少し心配だが、普通のエアコンでもごく単純な問題いくつかで数百ドル飛ぶことがある
数週間前、エアコンのブロワーファンが止まり、コンプレッサーは回っていた
上がって見てみるとコンデンサーの故障だったので写真を撮って交換品を買い、交換には15分ほどかかり、少なくとも400ドルは節約できたと思う
砂漠でエアコン故障は緊急事態なので、それ相応に請求してくるはずだから
家電修理はかなり楽しくもある
自分の家で何ができて何ができないかについて、かなり壊れた保護主義的な規則がある
実際には常に監視されているわけではないのでたいてい問題ないが、蛇口や既存の照明器具を交換することすら違法というレベルで馬鹿げている
州政府がたまに規則を見直すと、職能団体が押し寄せて、無資格の「便利屋」にだまされるのを防ぐための規則で、あなたを守るためのものだと主張する
こうした規制の虜のせいで、法的にはプラグ1個を交換するにも4年の見習いを終える必要があり、基本的な水道配管をするにも別の見習いが必要になる
このブログの作業も厳密には違法の可能性がある
たとえばデータケーブルは、データ専門資格を持つ電気工事士でなければ設置できない
Ethernetケーブルをコンピューターに挿すのは自分でできるが、壁に貼るプラスチックモールを買ってその中にケーブルを通すと違反で、数千ドルまで罰金を科される可能性がある
自分の家の壁にプラスチックチューブを貼ったという理由で
単純な制御だけでなく、内部センサーやコードまですべて公開されるのが良い
本当に必要なのは、修理する権利の法律でこうした制御標準の公開を義務づけることだ
誰もリバースエンジニアリングをする必要があってはならず、製品を市場に出すなら、ソフトウェアインターフェースとデータの完全な仕様を提供すべきだ
そうすれば数年以内に、すべての新しい家電が共通のシリアルポート標準をサポートし、説明書にコード表を載せるようになると思う
皮肉なことに、Tuyaのスマート製品の普及がほぼその状況に近づけたが、彼らはWi-Fiマイコンを触らせないようにするため、とんでもない労力を注いでいる
[1] https://github.com/absalom-muc/MHI-AC-Ctrl
どれも20ドル未満だ
自分でやってみたが15分もかからず、失敗するのはほぼ不可能
誰かを呼んで数百ドル払っても構わないとしても、少なくとも数時間はエアコンなしで過ごす必要があり、季節によってはかなりつらいことがある
80年代半ばの製品で古いが素晴らしく、サイズが大きいので布団3枚ほどを1時間以内に乾かせた
熱が出ないので見てみると、天然ガスの流れを制御するソレノイドが問題だった
製品が修理しやすく作られていた時代なので素早く分解でき、Amazonで買った8ドルのソレノイド2個を交換したら復活した
Capressoのバーグラインダー内側の小さなプラスチック製つまみが折れたが、10セントのワッシャーと接着剤で直し、何年も問題なく動作し、外からはまったく分からなかった
無駄がひどい
この会社が数年ごとに完全に問題のないハードウェアを大量廃棄して金を稼いでいるなら、環境にも実に「素晴らしい」ことだ
記事自体は面白いし、こうやって一泡吹かせるのを見るのは気持ちいいが、こういうやり方には本当に腹が立つ
元のezoneタブレットはAndroid 6.0で、このSamsungは5.0だったが、問題ないだろうと思っていて、足りなかったのは必要なアプリだった
ezoneアプリはAdvantage AirのWebサイトとapkpureサイトの両方にあり、apkpureはAAの技術サポート担当者が案内したという投稿を見て知った
顧客を正体のよく分からないサードパーティAPK再配布サイトに送るなんて、現実が風刺を超えている
Apkpureで署名が一致しなかったという報告は見たことがないが、もちろん可能性はある
より重要なのは、実際の脅威経路が何かということ
個人のスマホでもないのだから、タブレットをWi-Fiに接続しなければいい
こっそり温度を1度上げるとでも?
自社の整備士に無視させるつもりなら、なぜそんな警告を入れるのか分からない
帯域幅コストを避ける賢い方法だ
兄弟コメントが言っているように、ファイルは署名されている