Unihertz Atom L への LineageOS のインストール
Unihertz Atom L に LineageOS を入れてみました。
私の場合、最初は、フラッシュした Lineage リカバリがうまく起動しませんでした(画面上部に緑色の線が表示されて、Atom L がフリーズしました)。試しに、Atom L の Stock Rom を初期のものにダウングレードしてから Lineage リカバリをフラッシュしたら、Lineage リカバリがうまく動作しました。XDA の投稿をみると、緑線フリーズが発生する場合と発生しない場合とがあるようです。初期の Stock Rom をフラッシュしなくても、設定の工夫によって、Lineage リカバリが動作するのかもしれません。
また、自分で LineageOS をビルドしてみました。ビルドした LineageOS を Atom L に入れたら、うまく動作しました。
本記事は、これらの作業のメモです。
Stock Rom のフラッシュ
Stock Rom の URL を、Unihertz の公式ウェブサイトのフォーラムの投稿の中に見つけました。
https://www.unihertz.com/unihertz-form.html/rom--development/firmware-for-atom
この投稿の「unihertz's google drive」のリンク先から、Stock Romをダウンロードできました。
(このURLが公式なのか否かは未確認なので、ご利用は自己責任で・・・)
私は、Software_firmware/Atom_L/None_EEAから、最も古いと思われる "2020052615_g63v71c2k_dfl_tee.zip" をダウンロードしました。そして、SP Flash Tool を使って Atom L に Stock Rom をフラッシュしました。
SP Flash Tool を、XDA の記事等々を参考にして、入手しました。
https://forum.xda-developers.com/t/tut-mtk-android-sp-flash-tool-tutorial.1982587/
このツールはMediatek社の公式ツールではなさそうなので、普段使いの PC 上ではなく、仮想マシン(VirtualBox の Ubuntu)で SP Flash Tool を動かしました。
LineageOSのビルド
参考にした記事
以下の3つの記事を参考にしました。
・PeterCxy氏の記事(Atom L 用のデバイスツリーを公開しています)
https://forum.xda-developers.com/t/rom-unofficial-lineageos-17-1-for-unihertz-atom-l-20200828.4139423/
・a-dead-trousers氏の記事(Atom XL 用のデバイスツリーとビルドの手順などをまとめています)
https://forum.xda-developers.com/t/rom-10-0-unofficial-lineageos-17-1-for-unihertz-atom-xl-alpha-2021-01-24.4171407/
・dirtylimerick0氏のリポジトリ(Atom L 用のデバイスツリーとビルドの手順などをまとめています)
https://github.com/dirtylimerick0/Atom_L
私は、LineageOS 17.1のリポジトリにdirtylimerick0氏のデバイスツリーを追加してLineageOSをビルドしました。
lineageOSリポジトリの初期化
mkdir -p ~/android/lineage_atoml cd ~/android/lineage_atoml repo init -u https://github.com/LineageOS/android.git -b lineage-17.1
local_manifestsの作成
dirtylimerick0氏のデバイスツリーを用いるためのmanifestを作成します。
mkdir -p .repo/local_manifests vi .repo/local_manifests/unihertzatoml.xml
ファイル名は、任意です。内容を、以下のように書いてみました。
<?xml version="1.0" encoding="UTF-8"?> <manifest> <project name="dirtylimerick0/Atom_L" path="device/Unihertz/Atom_L" remote="github" revision="master" /> </manifest>
blobの準備
私は、現時点で最新と思われる Stock Rom のzipデータ "2020110318_g63v71c2k_dfl_tee.zip"から blob を抽出しました。
まず、このzipファイルから「super.img」を取り出します(例えば、~/blobにコピーします)。
super.imgからイメージデータを抽出します。抽出方法については、 a-dead-trousers氏の以下の記事が参考になります。
https://github.com/ADeadTrousers/android_device_Unihertz_Atom_XL/blob/master/docs/HOW-TO-EXTRACT_FILES.md
ツール「imjtool」を用いて product.img、system.img、vendor.img を抽出します。
cd ~/blob imjtool super.img extract (image.imgが抽出され、ディレクトリextractedの下の保存されます) imjtool extracted/image.img extract (product.img、system.img、vendor.imgが抽出され、ディレクトリextractedの下の保存されます)
抽出したイメージをマウントします。
mkdir system sudo mount extracted/system.img system/ sudo mount extracted/vendor.img system/vendor/ sudo mount extracted/product.img system/product/
Atom L のデバイスツリー(ここでは、device/Unihertz/Atom_L)に移動して、blob 抽出コマンドを実行します。
./extract-files.sh ~/blob
blob の抽出が終了したら、img ファイルをアンマウントします。
sudo umount -R ~/blob/system/
以上で、blob の抽出作業は終了です。
ビルド
ビルドの準備の行います。
cd ~/android/lineage_atoml source build/envsetup.sh breakfast Atom_L
準備が整ったら、ビルドを開始します。
croot brunch Atom_L > brunch.log 2>&1 &
ビルドに成功した場合、出力用のディレクトリ(~/android/lineage_atoml/out/target/product/Atom_L/)に、インストールパッケージファイル等が生成されます。
lineage-17.1-2021XXXX-UNOFFICIAL-Atom_L.zip recovery.img vbmeta.img
LineageOSのインストール
以下の順に作業を進めます。
・ブートローダのアンロック
・AVB (Android Verified Boot)の無効化
・Lineage recovery のインストール
・LineageOS のインストール
以下の記事を参考にしました。
・PeterCxy氏の記事
https://forum.xda-developers.com/t/rom-unofficial-lineageos-17-1-for-unihertz-atom-l-20200828.4139423/
・a-dead-trousers氏の記事
https://github.com/ADeadTrousers/android_device_Unihertz_Atom_XL/blob/master/docs/HOW-TO-INSTALL.md
a-dead-trousers氏の記事は Atom XL 用のものですが、インストールの手順は、Atom L でも同様です。
ブートローダのアンロック
自分がどのようにアンロックしたのか忘れましたが、PeterCxy氏の記事によると、アンロックの手順は以下の通りです。なお、アンロックを行うと、メーカー保証を受けられない可能性があります。試したい人は、自己責任で・・・
・Settings(設定)->About phone(端末情報)->Build number(ビルド番号)を複数回タップして、Developer options(開発者向けオプション)を有効化します。 ・Settings(設定)->System(システム)->Developer options(開発者向けオプション)->OEM unlocking(OEM ロック解除)を有効化します。 ・Atom L を PC に繋ぎ、PC 上で adb reboot bootloader を実行して、bootloader を起動します。 「Volume down を押しながら電源をオン」を行っても、bootloader は起動しません(代わりに、テストモードが起動します) ・PC 上で、fastboot flashing unlock を実行します。
AVB (Android Verified Boot)の無効化
bootloader を起動し、vbmetaのイメージをフラッシュします。
fastboot flash --disable-verification --disable-verity vbmeta vbmeta.img fastboot flash --disable-verification --disable-verity vbmeta_system vbmeta_system.img fastboot flash --disable-verification --disable-verity vbmeta_vendor vbmeta_vendor.img
私は、最初、PeterCxy氏の記事の vbmeta.img、vbmeta_system.img、vbmeta_vendor.img を用いました。その後、LineageOS のビルドで生成された vbmeta.img を3つの領域にフラッシュしてみました。この後も、 LineageOS と Lineage リカバリは、うまく動作しました。
Lineage recovery のインストール
vbmetaのイメージのフラッシュに続いて、Lineage recovery をフラッシュします。
fastboot flash recovery recovery.img
私は、最初、PeterCxy氏の記事の recovery.img を用いました。その後、LineageOS のビルドで生成された recovery.img をフラッシュしてみましたが、このリカバリもうまく動作しました。
LineageOS のインストール
リカバリを起動して、LineageOS を sideload します。
リカバリを起動すると、ボリュームボタンにより選択肢を変更でき、電源ボタンにより選択(確定)できます。
なお、メニューの一番上の「戻る」の選択肢が表示されませんが、見えないだけで選択可能です。
・Atom L を PC に繋き、リカバリを起動します。PC 上で「adb reboot recovery」を実行してもよく、Volume Up を押しながら電源ONでもよいです。 ・初めて LineageOS をインストールする場合、データを消去するとよいと思います (Factory reset, Format data/factory reset) ・「Apply update」を選択し、「Apply from ADB」を選択します。 ・PC 上で「adb sideload lineage-17.1-2021XXXX-UNOFFICIAL-Atom_L.zip」を実行します。
sideload が完了したら、リブートします (Reboot system now)。これで、LineageOS が起動しました。
Hotspot & tethering の設定メニューについて
上記のデバイスツリーを利用する場合、「Setting(設定)」の「Network & internet」のメニューに「Hotspot & tethering」が表示されません。
a-dead-trousers氏は、Atom XL 用に、この設定メニューのためのコードを書いてます。
https://github.com/ADeadTrousers/android_device_Unihertz_Atom_XL/commit/24ad9ff230a7a50213128b589405a421a663c65d
私はコードに詳しくありませんが、「 overlay/frameworks/base/core/res/res/values/config.xml」の修正部分と、「 sepolicy/private/hal_graphics_allocator.te」とを、デバイスツリーに適用してみました。すると、「Hotspot & tethering」 の設定メニューが表示されました。
なお、「 app/Intercom/Android.mk」は、トランシーバのためのコードと思われるので省略しました。