nexus7(2013)でsuperdisplay
が使えなくなっていたので使えるようにした。
問題
以前は3日のトライアル期間内で接続できるか試して、素晴らしいレスポンス・使い勝手を味わったのだが、久しぶりにnexus7を引っ張り出してsuperdisplay
を1000円ほどでFULLバージョンアドオンを購入して使ってみると、接続した瞬間にアプリが落ちるようになってしまっていた。USB接続でもWifi接続でも落ちてしまう。
これではアドオンを購入した意味がなくなってしまうので、androidタブレットを新調するのは最後の手段として、何とかしてみようと思った。
結果としてはnexus7だけで何とかなったのでその経緯を残しておきたい。
四苦八苦
四苦八苦した記録。手軽なトライと、端末の初期化以上のものが必要な重いトライを行った。手軽なトライでは直らなかったが、記録はしておく。重いトライでは最終的にはうまくいったが、結構面倒でnexus7の初期化とPCの作業が必須。
直らなかった手軽なトライ
まずは、superdisplay
の設定でQuality
を下げた状態(40くらい)でのUSB接続でもWifi接続でも落ちてしまうことを確認した。
次に、nexus7の設定からアプリのキャッシュやデータを削除してリトライしても落ちた。
そして、superdisplay
を再インストールして試してみても、落ちた。
nexus7を再起動しても落ちた。
USBデバッグモードはずっとONだった。Wifiでも落ちるから無関係だとは思う。
この時点で考えた原因はおそらく関係性は薄いだろうが2つほどある:
- superdisplayを使い始める前に不要なアプリを削除していた。
- superdiaplayのアドオン購入判定処理がnexus7のスペック不足のためうまくいかない?
前者は関係のないだろう。後者だとしたら手軽な手段ではどうしようもないという考えに至った。
直ったが重いトライ
nexus7はこれにしか使わないので初期化を含む処置をしてもいいかと思い、思い切ってandroidのバージョンを上げてみることにした。
正確にはandroid12ベースのカスタムロムのlineageOS 19.1
を導入してみることにした。
カスタムロムの導入はやったことがなかったが、割とすんなりとできた。その記録を残しておく。
環境は、android 6.0.1
で、macosのターミナルからbashで操作を行った。windowsであっても.exe
などのソフトの用意は不要だ。コマンドプロンプトかpowershellでなんとかなる。.exe
を使うようなWeb上の記述は全て無視していい。
準備
必要なファイルは、以下の4つ。自分のはWifi版なので、deb
でなくてflo
の接尾辞のものを使う。
- androidのplatform-tools
- twrp-3.7.0_9-0-flo.img
- lineage-19.1-20221012-UNOFFICIAL-flo.zip
- sysrepart_1380_20.zip
- BiTGApps-arm-12.1.0-v1.6_signed.zip
androidのplatform-tools
はandroidのアプリを作成するときに入るやつ。ターミナルでadb
コマンドなどが使えるようになる。nexus7はこれを使ってbootloaderをunlockできる。
PATH
は通しても通さなくてもいい。自分は通しておいた。通さないなら読み替えるか、adbがある場所にcdする。
Android Studio
がインストール済みだとPCのどこかにすでにあるが、探すのが面倒もしくは未インストールならばOSごとにこちらからダウンロードできる:
twrp-3.7.0_9-0-flo.img
は、androidのリカバリモードを拡張するというか高機能のリカバリモードそのもの。androidのbootloaderをunlockしたあとに導入する。ダウンロードはこちらのXDAのポストの下部、Downloads:
の部分のGoogleDriveのリンクから:
lineage-19.1-20221012-UNOFFICIAL-flo.zip
は、導入するカスタムロム。日付が割と最近で安心する。sysrepart_1380_20.zip
は、カスタムロムを導入にはストレージ内のシステムのパーティションが足りないので、パーティションを切り直すためのスクリプトのようだ。中身は見てない。
両方とも先ほどのTWRP
と同じリンクから用意できる。GoogleDrive内にもあるし、同じポストの違うところにもリンクがある。サイズが足りないようならもう少し拡張できるスクリプトも同じポスト内にある。
BiTGapps
はGooglePlayを入れるためのもの。先ほどのXDAのGoogleDrive内にもOpenGapps
があるが、種類がいろいろあり、
どれが最適か調べるのが面倒で、しかもバージョンが11
で少し不安だったので、自分はこちらのリンクからダウンロードしておいた。これは最小限のパッケージであり、バージョンは12
のものを使う。13
ではAndroid SDK version
が異なるというエラーが出る:
カスタムロムの導入作業
ブートローダーのアンロック
まずは、nexus7のブートローダーのアンロックから。非常に簡単。端末の設定で開発者向けオプションからUSBデバッグをONにする。PCへのドライバの導入についてはなぜか不要だったので割愛。以前に入れたのかもしれない。
そして、nexus7とPCをUSBで接続。認識したら、adb reboot bootloader
でドロイド君の開かれた画面(ファストブートモード)へ。
無事にドロイド君画面へいけたら、fastboot oem unlock
でunlockするかの確認画面が表示されるので、同意できるなら実行する。ファクトリーリセット相当のデータの削除・初期化が行われる。
起動画面で鍵が外れてるようなアイコンが表示されればOK。アンロック完了。
おそらく通常起動するのでUSBデバッグモードを有効にしておく。
TWRPの導入
これはファストブートモードから入れる。なのでまずは、adb reboot bootloader
でドロイド君画面へ。
そして、fastboot flash recovery <filepath of twrp-3.7.0_9-0-flo.img>
でリカバリ領域のパーティションにTWRP
をフラッシュする。コマンドが普通に終了すれば完了。
nexus7で音量ボタンでRecovery mode
を選択して、今までと違うTWRPっぽい画面になればOK。タッチ操作ができて操作もしやすい。
パーティションの拡張
TWRP
画面で行う。まずは、systemパーティションをマウントする。TWRP
のメニューのMount
からSystem
をチェックしてマウントする。そしてホームボタンか戻るボタンで戻ればいい。
sysrepart_1380_20.zip
をnexus7へpushする。adb push <filepath_of_sysrepart_1380_20.zip> /sdcard/
で行う。
adb shell df -h
でsystemのパーティションサイズが確認できる。
スクリプトの実行はTWRP
のメニューにあるInstall
から行う。pushしたzipファイルを選択して、Swipe to confirm flash
からスワイプして実行。
無事に終わったら再起動する。確か普通に起動して(結構起動に時間がかかって)androidの初期設定になるが適当に終わらせた記憶がある。またUSBデバッグモードだけONにして、adb reboot bootloader
してからのリカバリーモード選択でTWRP
に戻ってこれる。
lineageOSの導入
これが導入の最後の作業。
最初に、systemパーティションをWipeする。TWRP
のメニューのWipe
からFormat Data
を押して実行する。yes
を入力して実行する。
これが終わったらTWRP
のホームに戻り、導入作業に入っていく。
lineageOS
と同時にBitGApps
も導入しておく。まずはスクリプトと同じようにファイルをnexus7へ転送する。adb push <filepath_of_lineage-19.1-20221012-UNOFFICIAL-flo.zip> /sdcard/
と、adb push <filepath_of_BiTGApps-arm-12.1.0-v1.6_signed.zip> /sdcard/
を実行。
(自動でマウントされるかもしれないが)一応systemパーティションがマウントされているか確認して、再びTWRP
のメニューのInstall
から行う。
1つずつ複数選択できるので先ほどpushしたlineage-19.1-20221012-UNOFFICIAL-flo.zip
とBiTGApps-arm-12.1.0-v1.6_signed.zip
を選択して、Swipe to confirm flash
からスワイプして実行する。
エラー時は一応ログが表示されているので原因をチェックはできると思う。BitGApps
の時はそうだった。
実行が完了したら、Wipe Cache/Dalvik
を実行してから、rebootボタンから再起動すればlineageOSの導入は終了。
superdisplayのテスト
lineageOSの初期設定が済んだら、先程BitGApps
を入れているなら普通にGooglePlayがあるので、普通に探してインストールすれば良い。言うまでも無いが、同一アカウントでないとFullバージョンアドオンの再購入が必要になる。
あとは普通に起動して変える必要があれば設定を変更してから接続すればよい。
ところが今度は接続は落ちなくなったが、画面が真っ黒で、マウスポインタだけは表示されるし、きちんとマウスの動きに合わせて動くという状況になってしまった。しかし、これはWindowsのディスプレイ設定で対象の解像度を1680x1050に下げたら直った。これで問題なく使えている。これより上の解像度だと真っ暗になってしまう。
結局
最後にWindows側で解像度をあげてなんとかしたが、もしかしたらこれがandroid 6.0.1
で落ちていた原因ではないかとも思う。なので、未接続の状態でWindows側のこの解像度設定を変える方法があれば、OSのアップデート(カスタムロムの導入)も不要だったのではないか。しかし、その方法はあるのかわからない。
以前の解像度設定を覚えてないので、関係がない可能性もある。
また、USB接続だと充電されつつ使えるが、充電は追いついていないようで、5~10分ごとに1%ずつくらいの具合で減っていく。コンセント充電からのWifi接続なら減りはしないでかなり緩やかに充電される。このくらいは許容範囲なのでよし。
ともあれ、当初のnexus7でsuperdisplayを再び使えるようにするという目標は達成できたのでよかったよかった。
カスタムロムの導入がメインな感じになってしまったが勉強にはなった。Windowsの設定の弄りづらさを克服したいと思う。
参考
以下、参考にしたページ群。先人たちに感謝します。
nexus7(2013)のブートローダーのアンロック:
nexus7(2013)のTWRPの導入:
adb, android platform toolsのインストール:
lineageOS 19.0をnexus7(2013)にインストール:
以上です。