2026年2月7日土曜日

iPhoneのバッテリを純正互換バッテリに交換してみた。

 しばらく使っているiPhone 12 miniだけども、この前暑い地域に海外出張に行ってモバイルバッテリで充電していたりしたらバッテリの最大容量が79%を切ってしまった。暑いところで充電しながら使うともろにバッテリに悪いよねぇ…

最近はかなりバッテリが切れるのが早くなってしまったので、重い腰を上げて修理アシスタント対応のバッテリを購入してみた。修理アシスタント対応だと互換バッテリをつけたときに出る不明な部品のポップアップが出ないらしい。iOS18.1以降ならバッテリの最大容量もちゃんと表示できるらしいし。TI製のBMS搭載でも修理アシスタント対応とか診断対応ってなってるやつじゃないとだめらしい。アリエクとかだとJCIDからも出ていたりするけどお値段があまり変わらなかったのですぐに来るiFactory製の修理アシスタント対応バッテリにしてみた。

工具付きであんまり値段変わらなかったので工具付きにしてみた。

意外と分解が大変で、結構温めるのが重要かも。iFixitの手順を見てやったんだけど、コネクタ側温めて吸盤で引っ張ってもエッジがなかなか浮かなくて…

スクリーンオープナーも買っておけばよかったかな…手が痛い。

最終的には消毒用アルコールを買ってきて隙間から垂らしたら開けることができた。本当は無水エタノールとかのほうがいいかも。(結構水分が残ってしまう。)

バッテリの取り外しもアルコールを隙間から垂らしていたらバッテリの接着剤が柔らかくなって簡単に外れた。

バッテリ取り付けのときはコネクタとバッテリの位置関係に注意して貼り付け。コネクタが刺さる位置を確認しておかないと行けないかも。
バッテリ取り付け位置少しミスったかも。もう少し下だったかなぁ

バッテリの交換をすると修理アシスタントを走らせるように促される。これを走らせるとバッテリがちゃんと認識されて、Apple純正バッテリが取り付けられた認識になった。Appleでちゃんと交換したバッテリはシリアルが本体と紐づけされるらしいけど、本体と紐づけされていないバッテリが搭載されると中古表示になるのかな?

とりあえずこれでバッテリの容量が100%になったー。
そして不明な部品がついているというポップアップも出ない。ちなみにiOS26.2.1で確認。

ちなみに、純正バッテリからBMSを移植する方法も考えたんだけど結局一旦修理アシスタント対応バッテリを繋いで中古表示になってから、Lanrui V1とかで純正BMSをリセットしてから移植して戻さないといけないみたいなので、今回は修理アシスタント対応バッテリでいいやという結論に。中古表示が嫌な場合はLanrui V1で純正BMSをリセットしたあとにこのバッテリに付け替えればよいのだろうけども…

次回交換するときはこの純正BMSを取っておいて、Lanrui V1でリセットしてから戻してみようかな。

2025年12月29日月曜日

ESP32-P4を使ってみた。

 ESP32-P4っていうESP32シリーズでも高性能なやつを見つけたので試しにポチってみた。WiFiがついてないけど400MHzデュアルコアと高性能っぽい。MIPIポートが付いていてカメラとディスプレイが使えたりH.264エンコーダに対応していたりと色々できそう。

WiFiモジュールがついたり、LANポートが付いたりしたモデルが出ているけど今回はとりあえずネットワークなしのESP32-P4-Picoにしてみた。WiFi付きはESP32-C6-MINI-1が乗ってるっぽくて、ESP32-C6-MINI-1自体は技適取ってるっぽい?(007-AN0136)

性能的にはカメラとかディスプレイを使ったようなプロジェクトを使うのに良さそうな感じで、M5Stack Tab5とかESP32-P4-EYEみたいなディスプレイやカメラを使った開発ボードが出ているみたい。ESP32-CAMよりだいぶ性能が良さそうなのでリアルタイムストリーミングとかもでより高FPSでできそうな気がする。

USB Type Cで接続するとUSB-Enhanced-SERIAL CH343として認識した。ドライバはWindows 11では勝手にインストールされた。

とりあえずArduino IDEが対応していたので前にESP32-C6で動かしたCANのスケッチを動かしてみた。ターゲットをESP32-P4に変更するだけでそのまま使えてしまった。ArduinoだとClockは360MHzが最大っぽい?(ESP32 Arduino Core3.3.1使用)ESP32-P4はTWAIコントローラを3つ積んでいるらしいので3ポート同時にCAN通信ができそう。

LEDは電源LEDしかついていないみたい。スピーカー用にES8311コーデックICが付いてるし、マイクもオンボードでついているみたい。カメラのコネクタはラズパイカメラがそのまま繋がるっぽいし。USBホストとかスピーカーを使う場合は別途ケーブルが必要みたいなんだけど、今回は付属してないバージョンを購入してみたのでコネクタを探してみようかな。

2025年12月28日日曜日

Xiaomi Redmi Note 5にAndroid 15を入れてみた。

 しばらく放置していたXiaomi Redmi Note 5だけども、カスタムROMでまだアップデートが続いてるやつがあるっぽいのでインストールしてみることに。新しいOSを入れるのにRecoveryも新しいものを入れる必要があった。

色々調べてみるとProject MatrixxというカスタムROMだとAndroid 15とAndroid 16のROMがwhyred用に公開されている模様。他にも何種類かあったんだけどまずは試しにMatrixxのAndroid 15を試してみることに。

RecoveryはTWRP 3.5.2_9-0が入っていたんだけども、そのまま新しいROMを焼こうとしても"this recovery does not support retrofit dynamic partitions"というエラーがでて書き込めなかった。whyredはA-onlyのようで、A/Bシステムアップデート対応のように使えるようなRetrofit Dynamic Partitionsに対応したRecoveryが必要っぽい。

whyredに対応したRetrofit Dynamic Partitions対応のRecoveryは何種類か存在しているようだったけど、今回はPitchBlack Recovery ProjectのRetrofit Dynamic Partitionsに対応した非公式ビルドをダウンロードして使ってみた。

PBRP-whyred-4.0-20250601-2009-UNOFFICIAL-Erofs.zipをダウンロードしてきて、TWRPのMTPか、microSD経由でTWRPからzipをインストール。再起動してもう一回リカバリに入るとPitchBlack Recovery Projectが起動する。TWRPでUser[0]のパスワードを入れるように入れるように言われたけどとりあえず無視して書き込んだ(どうせOSを消すので…

あとはWipeのformatでyesと入力して実行するとすべてのOSデータがまっさらの状態に。

暗号化された状態になっていたので、再起動してもう一度PitchBlack Recovery Projectに入り直す。

MTPでMatrixx-v11.9.0-Official-whyred-Vanilla-202510191031.zipを転送してInstallしてみた。Installが終わったら再起動せずに戻って、NikGapps-core-arm64-15-20250716-signed.zipを追加でインストール。再起動してしまったらMatrixxのインストールからやり直さないと…(一回ミスった

ベースがVanillaだからかすごくサクサク動くー

これならまだ使えそうな気がするぞ。

2025年12月27日土曜日

AirPods Proの充電ケースのカバーが取れたので接着してみた。

 知り合いのAirPods Pro(第1世代)の充電ケースの蓋の接着が外れてしまったということで修理してみた。

こんな感じでバラバラになってしまったらしい…
6年ぐらい使ったらしいので接着剤が劣化してしまったのかな。

とりあえず接着してみることに。

接着剤はセメダインのスーパーXにしてみた。ケースの材質がわからないけどポリカーボネートっぽいなと言うことで。今回黒を持っていたので黒を使ったけど透明のほうが良いかも?ミスって余計なところについても目立たないし。

接着する順番も重要そうで、まずはケースのトップカバーから貼り付けることに。薄い磁力遮断プレートがインナーカバーのマグネットに張り付いてしまうので、これもちゃんとトップカバー側に接着しておく。

元あった接着剤は少し厚みがあって、これを剥がしてしまうと位置がズレたりしたら嫌なのでそのまま上から塗ってみた。コの字になるように塗られていた。
この接着剤は固まる前に位置の調整ができるのでこうやって蓋を閉じてズレがないか確認しておく。真ん中になるように接着すれば大丈夫そう。クランプするために養生テープを張っておいた。
最後に位置がずれないように慎重に開いてクランプで止めて1日放置。あまり強いクランプを使うと変形してしまうかもしれないので程よいやつがいいかも。
完全硬化したらお次はインナーカバーの方にも同じように元あったところに接着剤を塗って固定。こちらは位置決めが簡単そうなので一旦古い接着剤を剥がしてしまって同じところに塗ってみた。
クランプでいろいろ試してみたんだけど押しすぎたりと難しかったので結局タイラップで固定した。これでまた1日放置。

これでしばらく持つといいなぁ。あとから気がついたけど充電ケースって互換品も売ってるんだね。

2025年12月21日日曜日

Arduino IDEのDEADLINE_EXCEEDEDエラー対策

 Arduino IDE 2.3.7を入れた状態で、ESP32 Arduino Core 3.3.4をボードマネージャーからインストールしようとしたらDEADLINE_EXCEEDEDエラーが出てインストールできなくなってしまっていた。

Error: 4 DEADLINE_EXCEEDED: net/http: request canceled (Client.Timeout or context cancellation while reading body)
他のボードはインストールできるのになぜかESP32 Arduino Coreだけインストールできない。
DEADLINE_EXCEEDEDはどうやらタイムアウトっぽいので、Arduino IDEからみてインストールに時間がかかりすぎていて止まってるように見えてしまっているのかな?

ということでタイムアウトを伸ばせないか調べてみた。

調べてみるとどうやらarduino-cliのnetwork設定っぽくて、Linuxの設定方法ばっかり出てきたんだけど、ライブラリの方で問題が起きている人がいたっぽくてそこの設定がそのまま使えそうなのでやってみた。

C:\Users\<username>\.arduinoIDE\arduino-cli.yamlの中に設定が入っているようで、(<username>は自分がログオンしているWindowsのユーザー名)このファイルを編集していく。普通にCドライブから開いていっても隠しファイルとかじゃないので表示できる。

Arduino IDEを全部閉じた状態で、上のarduino-cli.yamlをメモ帳とかで開いて一番下の方に

network:
  connection_timeout: 300s

と入れて保存。

あとはArduino IDEをもう一度開いてインストールしてみると…

普通にインストールできるようになっていた。Windows 11でArduino IDEでDEADLINE_EXCEEDEDエラーが出ている人は試してみると良いかも。