たくさんの自由帳

arrows Alpha ドコモ版のブートローダーアンロックと Root 化

投稿日 : | 0 日前

文字数(だいたい) : 16506

どうもこんにちわ、今週ようやく涼しくなってきたか・・・

先駆者さん

先駆者さん以上のことは話してないのでそっち見てください!!
ブートローダーアンロックに関しては同じです!!

本題

arrows Alphaをドコモで購入しました。F-51F。Fで始まってFで終わる型番再来。
NMPすると安いみたいですが、 ドコモ版が欲し買ったため定価で買いました。 えっ。ドコモ版が欲しかった理由はただ一つ、転用5Gに接続するため・・・

docomo_arrows_alpha_rooted

arrows Alpha、なんかMediaTek搭載らしいし、5G+表記が気になるし、マイブーム?の10-bit HDR動画も行ける、ブートローダーアンロックができる予感がする(できた)、、、、で買いました。
レノボのおかげで?モトローラ兄弟関係になったみたいで、よく見るとモトローラ譲りのUIがあったりします?。(まーモトローラのスマホは電気屋で触ったくらいしかないんですが)
4636したときに5G/LTE Debugging Informationのメニューがあったり。

4636

ドコモ版でもブートローダーアンロックができる

なんとブートローダーアンロックが出来ます。
SIMフリー版は先駆者さんが試してくれています。

f51f_rooted

買う前に調べたら(ドコモ版に感じては見つからなかった)、基底の部分からモトローラ譲りになったからなのか、ブートローダーアンロックができるっぽい。
あとはキャリア版でもMediaTekarrowsは何故かブートローダーアンロックできるみたいで、、、、
わたし、モトローラ譲り+MediaTekの2つのソースからアンロックできる予感がします、。

そういえば、なんか似たような理由(ブートローダーアンロックができるから)で買ったMi 11 Lite 5Gは、今でもシーリングライトのリモコンとして活躍しています。
なお結局BLUせずに使ってます。今回はするんかいって。

さよなら保証・・・・って思ったけど白ロム購入だから無いか。

arrows Alpha 今のところの感想

ブートローダーアンロック可能とか関係なく、

  • (でかいスマホばっかり使ってたので)けっこう持ちやすい方だと思った
  • サクサク動きます、リフレッシュレートもいい感じ
  • MediaTek SoCなので楽しみ
  • ダブルタップでのスリープ解除できます
  • ATOKそんなに悪くないと思った
  • アプリ履歴画面にスクショのボタンがほしい
  • カメラ思ったより良い!!
  • ホームアプリはすいません、Lawnchairを自前でビルドして使ってます、、

もっとあると思います、ので、思い出したら別のところで書きます

モイモイがいない

この犬のキャラクター。壁紙だったり、マチキャラ(ひつじのしつじくんとか豆腐みたいなあれ)のキャラとして設定できたやつ。

moimoi

Fのケータイと言えばモイモイ!!!! だと思っていますが、もう搭載されてないみたいです。がっくし。
中の人へ、どうか・・モイモイの復活を・・・

今北産業

  • ドコモ版でもブートローダーアンロックできる。モトローラの手順で
  • ただ、Software Fixが対応していない(?)ので、Root 化のためのinit_boot.img取得のためにDSU Sideloaderを利用する
    • lineage-22.2-20250621-UNOFFICIAL-gsi_arm64_vN.img.gzROMで起動できます!!キミにありがとう
    • 壊れた時↑が使えないので、イメージをバックアップしたほうが良い
      • 初期ROM (Fastboot ROM ?)が欲しい場合はSIMフリーを買うと良いかも
  • Magiskですが記述時時点の最新版?はモトローラ譲りのせいかダメみたい、、なのでKernelSUを使っています

必要なもの

  • 本体
    • ドコモ版でもちゃんと出来ます
  • Motorola Account
  • Windows マシン
    • adbコマンドが利用できるようにする必要があります
      • 私はAndroid Studioを入れてるので省略します
      • ターミナルさんは好きなのを使ってください、コマンドプロンプトでもPowerShellでもGitBashでも
    • もしAndroidのイメージをバックアップするなら20GBくらいほしいかも

ブートローダーアンロックする

ここは先駆者さんと全く同じです、ありがとうございます

アカウントを作る

から作ってください。名前とメアドとパスワードです。パスワードは大文字と特殊文字(記号?)が必要でした。
reCAPTHAと確認用にメールが来ます。リンクを押して承認しましょう。

register

OEMロック解除を有効にする

端末の設定を開き、端末情報デバイス IDビルド番号を連打して開発者向けオプションを有効にします。
そしたらOEMロック解除を有効にします。

developer_setting

パソコンにドライバを入れる

ここから。手動でドライバを入れるとか数年ぶりじゃない。
ちなみに入れないとfastboot devicesコマンドが何も返ってこなかったです。

でも失敗してしまった。

error

まあなんかガチャガチャやってたら認識されるようになりました。(?!?!?)
一回消してみたり、別のボタンを押してみたりとか・・・

C:\Users\takusan23>fastboot devices
ZY22LQLH4D       fastboot

どれ?

アンロック用のコードを取得する

まず端末をfastbootモードで起動します。
電源を切った状態で、音量下げボタン電源ボタンを長押しすると、ドロイド君が仰向けになっている画面になると思います。

fastboot_screen

この状態でUSBで接続し、
コマンドプロンプトを開いて、以下の文字を入れて Enter します。(PowerShell でも好きなターミナルを開いてください)

fastboot devices

ここでシリアルナンバー??が返ってくれば成功です。

connected

何も返ってこない場合はドライバのインストールがミスってるとか、USBを別のところに指すとか、再起動するとかしてみてください。

そしたら、以下の文字を入れてもう一度Enterします
端末はそのままにしてください。

fastboot oem get_unlock_data

get_unlock_data

そしたら、なぞの文字が表示されると思います。以下は例です。

(bootloader) 0A40040192024205#4C4D3556313230
(bootloader) 30373731363031303332323239#BD00
(bootloader) 8A672BA4746C2CE02328A2AC0C39F95
(bootloader) 1A3E5#1F53280002000000000000000
(bootloader) 0000000

これを一旦メモ帳とかにコピーします。
コマンドプロンプトの場合は、テキストを選択して右クリックでコピーできます(Ctrl+Cはプロセスを56す操作のために予約されているため、コピーできません、いや出来るかも)
数字が書かれている行だけでいいです。(bootloader) Unlock data:のところや、OKAYは不要。

できたら、数字以外の文字を削除して、1行にします。メモ帳の設定によっては折り返し機能で複数行に見えてしまうかもしれません。
(bootloader) と改行と空白文字を消ししてつなげます。

以下例:

0A40040192024205#4C4D355631323030373731363031303332323239#BD008A672BA4746C2CE02328A2AC0C39F951A3E5#1F532800020000000000000000000000

notepad

ブートローダーアンロックの申請ページを開く

以下のサイトを開いて、テキストボックスに↑で作った1行を貼り付けます
https://en-us.support.motorola.com/app/standalone/bootloader/unlock-your-device-b

code

貼り付けたらCan my device be unlocked?ボタンを押します。

check_blu

ブートローダーアンロック可能な場合はその下に利用規約が表示されるようになります。
キャリア版(私が今やっている)も、SIMフリー版(オープンマーケット版)も解除できるので下に進めるはずです。

agree

利用規約に同意するのでYesのラジオボタンを選択して、Request Unlock Keyのボタンを押します、
最後に一度聞かれるので、OKを選ぶ

confirm

解除コードがメールで来る

part4

アカウント登録時に使ったメールアドレスにUnlocking Your Deviceってメールが来ているはずです。

from_motorola_to_me

Unlock Code:に表示されているコードをコピーします。

そしたらもう一度コマンドプロンプトを開き、以下のコマンドを入力してEnterします。
ここにメールできた解除コードには実際のコードを入れてください。

もし画面が消えちゃってたら、もう一回音量下げ+電源ボタンを押して仰向けになっている画面を出せばいいです。

fastboot oem unlock ここにメールできた解除コード

そしたら端末を確認します。
本当にブートローダーアンロックするか?的な画面になるので、音量ボタンを使ってUNLOCK THE BOOTLOADERを選んで、電源ボタンを押します。
これで終わり。解除に伴って端末が初期化されます。

comfirm_bootloader_unlock

なぜか元の画面に戻ってきたので、STARTを選んで起動します。
同様にSTARTじゃない場合は音量ボタンを使って選んで、電源ボタンで確定させます。

fastboot_screen

できた!

開発者向けオプションを開くとブートローダーはすでにアンロックされていますになっています。

already_unlocked_bootloader

Root を取る

MagiskRootを得るためにはinit_boot.imgってファイルをファクトリーイメージから取り出す必要があります。
モトローラやレノボのデバイスと同じ手順で取得することが出来る、、と思ってましたが、Software Fixが認識しません、、ドコモ版だとダメなのか・・?

unsupported_docomo_variant

Software Fix でダウンロードできない

頼りにするはずでしたが、先述の通り対応していません。
これだと何が困るのかというと、init_boot.imgが取得できないのでRootが取れないのと、ぶっ壊したときに戻せない

というわけで、別の方法でinit_boot.imgとそれ以外も全部取り出し、Rootと万一に備えようと思います。

KernelSU を使った Root 手順

ちなみに利用できるならこれが一番早いと思います。

ちなみにブートローダーアンロックされていれば、KernelSUを使ってRoot 化する方法もあるみたいですが、
できる限りクリーンな状態のシステムのバックアップを取りたいので、王道?なDSUの方法で行きます。

手順

というわけで、DSU Sideloaderを使いAndroid Root 済み OSを疑似デュアルブートします。
rootが使えるとシステムのinit_boot.imgとかが入手できるので。

  • ブートローダーアンロックする(すでにやった)
  • DSU SideloaderカスタムROMを用意する
  • パソコンでコマンドを叩く
  • ルート化でinit_boot.imgを使うのでパソコンにコピ-(もしくは全部のイメージバックアップ)
    • ドコモ版 arrows AlphaSoftware Fixが使えないっぽいので全部バックアップしてみます
      • SIMフリー版はそもそもSoftware Fixからinit_boot.imgが取り出せる(らしい)ので・・・
  • 再起動して戻す

パソコンが必要です。

システムに必要なファイルを全部バックアップする技

イメージバックアップってなんだって感じだったけどこの辺です!

RakutenMini戻すときにひたすらfastboot flashしていたけど、この元で使うファイルのこと・・?
(あんまりわかってない、なら辞めとけよ)

ABパーティションでどっちを使っているかを確認

fastbootモードで(ドロイド君が仰向けになっている画面)起動して、端末をパソコンに接続し、コマンドプロンプトでfastboot getvar current-slotを入力しエンターします。

C:\Users\takusan23>fastboot getvar current-slot
current-slot: a
Finished. Total time: 0.003s

current-slot: の後のアルファベットを確認します。この場合はaですね。
後で使うので覚えておいてください。

終わったらAndroidを起動してください、

DSU Sideloader とカスタム ROM のダウンロード

メモ lineageos 22 版 GSI はすでにルート済み?

LineageOS 22を使わせていただきます、ビルドしてくれたキミにありがとう。

が、arm64_bvSって感じに、最後にSがついてないとrootがないと思っていましたが、
以下の通りLineageOSにははじめからルートがついている?っぽいのでNの方で行けるっぽいです

DSU Sideloader で起動

両方ダウンロードできたら、DSU Sideloaderをインストールし起動します。
新しいフォルダを作るように言われるので、作ります。Androidファイル読み書き APIが使いにくいのでこんなところにも影響が・・・

storage_access_framework_1

storage_access_framework_2

ブートローダーアンロック済みであることを確認しろよ的なメッセージが出ます。

blu_confirm

これでボタンを押すとカスタムROMとストレージの設定画面に入ります。
テキストボックスをおして、ダウンロードしたカスタムROMを、容量の欄は32GBにしました。←!?

後述しますが、全部バックアップする場合は20GB超えのファイルになるので、多めに取っておく必要があります。
逆にinit_boot.imgだけ取る場合は8GBくらいでいいっぽい?初期ROMが欲しいかどうかで決めると良さそう。

set_rom_and_storage

出来たらインストール。

dsu_install

そしたら、ADBコマンドを入力するように言われるので、パソコンと接続して、以下のコマンドをコマンドプロンプト等で入力してエンターします。
多分同じコマンドだと思います。

adb shell sh "/storage/emulated/0/Android/data/vegabobo.dsusideloader/files/install"

dsu_adb

コマンドを入力したあとは、通知領域を見てしばらく待ちます。完了すると動的システムの~って通知があるので、再起動を押します。

complete_notification

LineageOS の設定

再起動で成功するとLineageOSの初期設定画面が出てるはずです。わーカスタムROMだ

lineageos

初期設定は適当に進めます。インターネットや画面ロックはスキップしてください。
終わったら設定を開き、いつもの手順で開発者向けオプションを有効にし、
USB デバッグルート状態のデバッグを有効にします。

開発者向けオプション

そしたらパソコンと接続して次のステップへ

メモ adb shell su で superuser になれない

adb rootコマンドがadb shell+su相当になる。
adb rootした後にadb shellするとルートユーザーとしてターミナルに入れます。whoamiしたらちゃんとルートユーザーですね。

C:\Users\takusan23>adb root
adbd is already running as root

C:\Users\takusan23>adb shell
lineage_gsi_arm64:/ #
lineage_gsi_arm64:/ # whoami
root
lineage_gsi_arm64:/ #

データをパソコンに逃がす

ここで、イメージをすべてバックアップするか、init_boot.imgだけ取得するかで変わってきます。

イメージをバックアップする

まじでそのままパクってるだけです、、

まず以下2つ

adb root
adb shell

次も2つ、cd /dev/block/by-name/MediaTekSoCだけっぽいので、Snapdragonの場合は別みたい。

cd /dev/block/by-name/
mkdir /sdcard/backup_img

次に以下をすべて選択した状態で(複数行でも構わずに)貼り付ける。
1行ずつ貼り付けてはいけません、3行まとめて貼り付けるんです、しばらく掛かると思います。Windows Terminalだと複数行貼り付け時に警告が出るかもだけどとにかく実行。

for file in *; do
    if [[ "${file}" = cache* || "${file}" = userdata* || "${file}" = sd[a-z] ]]; then continue ; else dd if="${file}" of=/sdcard/backup_img/"${file}".img ; fi
done

backup

最後に成功しているかを確認します。これも複数行をまとめて貼り付けます。

echo "" > /sdcard/backup_img/md5.txt
for file in *; do
    if [[ "${file}" = cache* || "${file}" = userdata* || "${file}" = sda || "${file}" = sdb || "${file}" = sdc ]]; then continue ; else
    if cmp -s "${file}" /sdcard/backup_img/"${file}".img; then
        echo "${file} - OK" >> /sdcard/backup_img/md5.txt
    else
        echo "${file} - NG, you have to backup again!" >> /sdcard/backup_img/md5.txt
    fi
    fi
done

しばらくまちます。。。シェルスクリプト芸人って毎回すげーとおもうわ。GitHub Actionsとかもそれだけど。。
/sdcard/backup_img/md5.txtへ、成功しているかのログがテキストファイルになっているので、catコマンドで見ます。全部OKになっていると成功。

cat /sdcard/backup_img/md5.txt

check1

check2

あとあんまり良くわかってないですが、もし起動しなくなったらこれを元ある場所に戻せば良いんですかね・・?
わかんないなら辞めとけよ(再掲)

パソコンに転送

usb_mode

母艦となるパソコンに転送します。USB 接続設定からファイル転送を選べばWindowsのエクスプローラーから見れるのでこれで良いでしょう。
backup_imgフォルダです。ちなみに容量は21GB!!??

backup_transfer

Root を取るために必要なファイルを見つけておく

最初にA/Bのどっちを使っているかを知っているので、↑のフォルダからaならinit_boot_a.imgを、bの場合はinit_boot_b.imgを探しておきましょう。
これをMagiskKernelSUでパッチします。

init_boot.img のみバックアップする場合

同様にA/Bのどっちかを復習しておく必要があります。今回はaですね。
次に以下のコマンドを叩きます。途中までは同じなので。同様にSnapdragonの場合は/dev/block/by-name/が違うはず

adb root
adb shell
cd /dev/block/by-name/
mkdir /sdcard/backup_img

そしたら分岐です。aだった場合は

dd if=init_boot_a of=/sdcard/backup_img/init_boot_a.img

bだった場合は

dd if=init_boot_b of=/sdcard/backup_img/init_boot_b.img

あとは同様にUSB 接続設定をデータ転送にすれば、Windowsのエクスプローラーから見ることが出来ます。同様にパソコンにバックアップしておいてください。

init_boot.img にパッチを当てる

もうLineageOSは不要なので、再起動します。普通に再起動すると元々のOSが起動します。
起動したら、パソコンにあるinit_boot.imgをスマホに戻します。A/Bは先述の手順で選別したはずですから。

メモ Magisk だと動かなかった

モトローラだからなのかよくわかりませんが、どうやってもエラーになってしまいました。
もしかするとバージョンを下げると導入できるみたいなのですが、KernelSUの方は使ったことないな・・・と思ったので今回はそっちにします。

PS C:\Users\takusan23\Downloads> fastboot flash init_boot_a C:\Users\takusan23\Downloads\magisk_patched-30200_TMHEq.img
Sending 'init_boot_a' (8192 KB)                    OKAY [  0.181s]
Writing 'init_boot_a'                              (bootloader) Preflash validation failed
FAILED (remote: '')
fastboot: error: Command failed

KernelSU を導入

インストールします。ファイルの末尾がrelease.apkとなっているものを探してください。他のgzとかは、KernelSU経由でRoot (Magisk)を入れるためのものっぽい?

Releases · tiann/KernelSU

A Kernel based root solution for Android. Contribute to tiann/KernelSU development by creating an account on GitHub.

https://github.com/tiann/KernelSU/releases

kernelsu_download

できたら、起動して、スクショを 取り忘れて事後報告になるのですが未インストール と書かれている箇所を押します。
以下のスクショではもう導入済みなので 動作中<LKM> と表示されてますが、インストールしていない場合はここが未インストールになります。

kernelsu_install_1

そしたら、ファイルを選択してくださいを押します。スクショでは相変わらず事後報告なので他のメニューが見えているのですが、インストールしてない場合は一つだけなのでそれを押します。
おすとinit_boot.imgファイルを選択する画面に移動するので、パソコンから転送しておいたinit_boot_a.imgもしくはinit_boot_b.imgを選びます。どっちを利用するかは前述しましたよ!!!

kernelsu_install_select_init_boot

できたら次にを押します。あとはMagiskみたいにinit_boot.imgへパッチされてますよ~画面に遷移するので、終わるのを見届けて、
終わったら、ダウンロードフォルダにkernelsu_patched_から始まるファイルが出来ているので、これをパソコンに転送します。

kernelsu_install_patching

kernelsu_install_transfer_patching

あとはパソコンと接続し、まずはドロイド君が仰向けになっている画面を出します。シャットダウンして、電源ボタンと音量下げボタンのやつ。
そしたら、パソコンに転送したファイルを使ってコマンドを叩きます。

fastboot flash init_boot {ここにパソコンに転送した kernelsu_patched_ のファイルパス}

以下は例です。

init_boot_a_suucessful

PS C:\Users\takusan23\Downloads> fastboot flash init_boot C:\Users\takusan23\Downloads\kernelsu_patched_20250919_144334.img
Sending 'init_boot_a' (8192 KB)                    OKAY [  0.182s]
Writing 'init_boot_a'                              OKAY [  0.029s]
Finished. Total time: 0.223s

完了したら、ドロイド君が仰向けになっている画面で、すでにSTARTが選ばれていればそのまま電源ボタンを押して確定。
それ以外になっていれば音量ボタンをSTARTが出るまで押して、でたら電源ボタンを押します。

docomo_arrows_alpha_rooted

これでKernelSU導入済みのarrows Alpha ドコモ版が完成。おつかれさまでした。

おわりに

ドコモのキャリア絵文字ですが、今年の夏発売した機種を皮切りに廃止されたそうです。Xperia 1 VIIが最後の可能性がある。
まあダークモード環境で最悪だったし、Slackも端末に入っている絵文字を使っているので意図がうまく汲み取れないしだったのでようやくですね。。

おわりに2

なぜかn1表示になります。私のプログラムの考慮ミスのようです。。。MediaTekでは動いてなかった可能性があります。

mediatek

arrows Alphaを買った理由はMediaTekだからってのもあって、このSoC電波APIを拝見したかったってのもあります。手持ちでないので。
うーーーん、どのベンダーもやっぱり謎の挙動がありますね(n1・・?)

ちなみにQualcommの場合はCellInfo#getCellConnectionStatusを実装してない、5GのときのServiceState#getBandwidthsも実装していない、
4636の物理チャンネル構成で使われているPhysicalChannelConfig5Gのキャリアアグリゲーションは実装してない。
Google Tensorは電波の掴みがいまいちで・・(API関係ないわ)

おわりに3

冒頭の通り、ドコモ版を買った理由は、転用 5Gに接続したかったからです。ドコモの転用5GIMEIでドコモ端末かチェックを入れているみたいなので。

おわりに4

RootがあるとShizukuのセットアップが超簡単。
ワイヤレスデバッグ出来ない環境でもrootを使ってセットアップできるので、今でもrootを取る価値はあるんだなって思った。

おわりに5

launchair_docomo_no_touhu

LawnchairAPKあるのに何故自分でビルドしてるんですかって話ですが、開発者としての境地・・・とかの思いは特に無く、(向上心のない者はなんとか・・・)
Google Discover (Google Feed)が動かないので調べてたら、ナイトリービルドもしくはデバッグビルドであれば、追加でインストール必要なく動くって書いたあったからです。
まあ、ナイトリービルドを入れればいいので、自分でビルドする必要なんて無いんですが・・・