Pro1-X(QX1050) Ubutnu Touch導入メモ
せっかく変態端末を購入したのにただのAndroid端末として使っているだけでは勿体ない!
ということでUbutu Touchを入れます!
と思ったのだが、公式のインストーラーが前のバージョンのQX1000にしか対応していない…!
ということで、コミュニティの情報を漁って手順書を作りました。
1. 参考サイト
公式コミュニティのトピックから貼ってあるリポジトリを見ながらやっていきます。
見ながらやるだけなので、特に新しい何かは生み出していません。巨人の型に乗るぜイエーイ。
ちなみにPro1-XだとQX1000もあるっぽいので本記事ではQX1050で内容を統一しています。
まぁQX1000持ってないし(というかQX1000なら公式のツールで問題なくUbuntu Touch入れられるっぽいので)。
2. 作業環境
今回の開発環境は以下
項目 | 名称 | 備考 |
---|---|---|
CPU | Ryzen9 7900 | ワッパが良い |
Memory | DDR5 64GB | うち、32GBがWSL2に割り当てられる |
Host OS | Windows11 | WLS2を使用します。 |
Guest OS | Ubuntu20.40 | もちろん普通のLinuxマシンでもOK。 |
flash tool | fastboot 33.0.3 | Android 開発環境に付属しているので別途は入れてないです。 |
3. 作業手順
それでは実際に作業していきましょう。
大まかな流れは以下の通りです。
- 元のAndroidのデータの退避
- 開発環境の準備
- イメージのビルド
- bootloaderのunlock
- イメージの書き込み
3.1. 開発環境の準備
リポジトリのbuild.sh
はbashで、書き込みにはfastbootを使用するとの事なので、LinuxのAndroid開発環境があれば良いと思います。
このUbuntu Touchを初めとするAndroidがプリインストールされた環境に他のMobile OSを構築するのにHalium というプロジェクトの技術を使用しているようです。ここではHaliumの詳細は置いません(入ればええねん)。
3.2. 元のデータの退避
あんまりAndroidに戻したりする気はないのですが、最悪うまく行かなくて文鎮でも困るのでバックアップを取ります。
人類気が変わることもあるのでね…選択肢を残しておくのは大事。
デバイス固有のパーディションfsc fsg modemst1 modemst2 persist
を退避しておけばいいらしい。
コミュニティの先人の知恵を参照する。
3.2.1. EDLの導入
linux上でedl.pyを導入する必要があるとのこと。
今回はWSL2のUbuntu20.04を使用しているのでedl.pyを入れれば良いということになる。
という訳でEDLのリポジトリ
Ubuntuのところだけ抜いてきて、
既に入れてあるadbやfastbootと入っていなかったModemManager周りの削除を除くと以下のような手順でビルド&インストール。
sudo apt install python3-dev python3-pip liblzma-dev git sudo apt purge modemmanager git clone https://github.com/bkerler/edl.git cd edl git submodule update --init --recursive sudo cp Drivers/51-edl.rules /etc/udev/rules.d sudo cp Drivers/50-android.rules /etc/udev/rules.d python3 setup.py build sudo python3 setup.py install
3.2.2. 端末のroot可
EDLはroot化した上でadbを使用する。
QX1050のroot化にはドキュメントを参照したところ、root化にMagiskを用いるとのこと(Vendor Keyが無いので通常の方法ではroot化できない)。
3.2.2.1. boot.imgを端末へコピー
事前にhost PCにboot.imgをダウンロードし、端末に転送します。
boot.imgはこちらからとってきてください。
(ユーザーディレクトリ下にて作業、ダウンロードしているものとして)
ダウンロードしたboot.imgを書き込み可能領域に書き込みます。
例の通りWindows11側からusbipdで端末を繋ぎます。
usbipd list
で確認すると端末名は以下の様に表示されていた。
4-17 18d1:4ee7 BENGAL-IDP _SN:B4649074
という事で接続(Windowsの管理者権限cmdから)
usbipd bind -b4-17 usbipd wsl attach -b4-17
接続できたらUbuntu側で確認します。
先ずはlsusb
で先ほどの端末(BENGAL-IDP~)が見えていることを確認。
adbはroot権限で起動して下さい。していない場合は以下の様にします。
adb kill-server sudo adb start-server
adb devices
で端末が見えていればOK。
adb push boot.img /sdcard/
で編中元となるboot.imgを端末に送ります。
3.2.2.2. Magiskによるimageの作成
端末からリリースページにアクセスしてapkを落としてきて入れます。
Storeにも似たようなのがあるようなのですが、なんか入っていても怖いので上記の公式から入れましょう。
本稿執筆時(2023/03/05)の最新版はv25.2です。
以下、表示は日本語化しています。またスクリーンショットは横位置操作の物です。
また、スリープに入るとUSB接続が切断されて面倒なので開発者向けオプションから「スリープモードにしない」を設定しておくと作業しやすいと思います。
(1) Magiscの「Install」を押す
(2) 「パッチするファイルの選択」を押す
(3) ファイル選択ダイアログ左上隅のハンバーガーメニュー(三 ぽいとこ)を押す
(4) 左端のメニューを下にスクロールし「QX1050」を選択
(5) 元の画面に戻り、右上隅の「はじめる」を押す
(6) 完成
ここで出来たmagisk_patched~
のファイルを使用します。
3.2.2.3. Magiskで作成したイメージの書き込み
先ほど作成したパッチを当てたイメージをUbuntu側にダウンロードし、bootloaderを起動しbootを更新します。
(ファイル名は書く環境やバージョンで異なるかもしれません)。
adb pull /sdcard/Download/magisk_patched-25200_G3Cvh.img adb reboot bootloader sudo fastboot flash boot ./magisk_patched-25200_G3Cvh.img sudo fastboot reboot
adb reboot
時に接続が切れるので、usbipd
での再接続を忘れないように。
再起動後、Magiskのアプリを再度起動させ、Magiskがインストールされたことを確認します。
このとき、スーパーユーザーとモジュールのタブが無効になっていないことを確認してください。
3.2.3. EDLによるバックアップ
ここまでの準備が出来たら、EDLを使ってパーティションをバックアップします。
まずはQX1050をEDLモードにします。
adb reboot edl
画面は転倒しませんが、power LEDも点灯しない状態になります。
それでも、USBデバイスとしては接続されるので、usbipd
で再度接続します。
接続が完了したら以下でバックアップを行います。
sudo edl r persist persist_backup.img sudo edl r modemst2 modemst2_backup.img sudo edl r modemst1 modemst1_backup.img sudo edl r fsc fsc_backup.img sudo edl r fsg fsg_backup.img
完了したら電源ボタンを10秒ぐらい長押しすると再起動します。
3.3. Ubuntu Touchの取得
リポジトリからビルド済みのarchiveをダウンロードします。
展開するとout
という名前のディレクトリが出来ます。
ビルドも試してみたんですが、途中でなんか失敗していた。
ログをザーッと見た感じではCUDA7とか見えたので、WSL環境だと古いcuda入れるの無理なので多分ダメかなーということで今回は避けています。
3.4. Ubuntu Touchのインストール
3.4.1 bootloaderのunlock
QX1050は多分unlockされているので必要ないはず。
bootloader画面でunlockになっていなかったらunlockしてください。
sudo adb reboot bootloader sudo adb flashing unlock
3.4.2 インストールその1
bootloaderを立ち上げて - userdataのフォーマット - recovery.imgの書き込み
を行います。完了したらbootloaderを再起動してください。
adb reboot bootloader sudo fastboot format:ext4 userdata sudo fastboot --set-active=a sudo fastboot flash recovery out/recovery.img sudo fastboot reboot fastboot
reboot後、fastbootの画面が変わります。
3.4.3 インストールその2
system.img, boot.img, tdbo.imgを書き込みます。
sudo fastboot flash system_a out/system.img sudo fastboot flash boot_a out/boot.img sudo fastboot flash dtbo_a out/dtbo.img sudo fastboot reboot
「powerd by Android 」と表示されるので焦りましたが、Ubuntu Touchが起動します。
イエーイ。
4. インストール後
インストール後にいくつか挙動が変なところがあったので対応しました。
4.1. USBが認識しない
なんかちゃんと認識しない。
とりあえず、再起動して[デバイスマネージャー] > [ユニバーサルシリアルバスデバイス] > [ADB Interface]
のプロパティからドライバを更新したら認識するようになりました。
デバイス名は`usbipd
ではMTP, ADB Interfaceにlsusb`ではGoogle Inc. Genericに変わっていました。
接続時に(adbと通信するタイミングで)USBデバッグを許可するかどうかのポップアップが出るので、そこでAllowを押せばadbで通信できます。
WSLで上手くつながらない場合はsudo でadb サーバを再起動するとポップアップが出ます。
とりあえずそれで、最低限は出来そう。
5. まとめ
「変態端末 Pro1-X(QX1050), Ubuntu Touch 使えるよ!」って聞いて購入したのですが、メーカーが用意していたのがちょっと前のQX1000用のインストーラーだったときは、「オイ!」って思いましたが、コミュニティの書き込みを追うことで何とかインストールが出来ました。
ビルドはそのうち出来るようにしようかな...。
資料が結構色んなところに飛ぶので、本エントリーは上から順にやっていくことで比較的迷わずに実行できるのでは無いかとおもいます。
あと、環境がWSL2のUbuntu20.04でちょっと変かもしれないので、sudoのところは人によっては無くても良いのかもしれません。
さあ、ありがたがれ、未来の自分