legion y700 2023 15.0.774版を何とかしてグローバルROM化した話

# はじめに
- legion y700 2023を昨年aliexpressで買って日本語化して使ってたけど、今年の前半についうっかりアップデートしたら、ver15.0.774になってしまい、一気に使いづらくなってしまったので放置してた。
- 今回、放置してたこのタブレットにグローバルROMを書き込むことに成功したので、手順を紹介したい。
- ちなみに、使用したPCはintel入ってるwindows11ノートパソコン(fmv zero)です。
- また、この手順でグローバルROMを書き込んだy700ではwidevine L1対応の表示はされても、ネトフリは起動しなかったよ。アンロック状態のままだからみたい。でも、アマプラやyoutube、AbemaTVは見れたから個人的には実害なくて一安心。
    - あと、若干いじったグローバルROMを書き込んだせいかわからないけど、起動時にbootloaderの画面（「お前のdeviceに対応してないから、このOSは使えねえよ！[g.co/ABH](https://g.co/ABH)を見ろ！」と言ってるみたい。）が一瞬だけ出るようになったよ。まぁ、0.5秒に満たないような短時間なので、なんの不便もないけどね。

# 大まかな流れ
- 大きく区分して下記の３段階にわかれます。
1. バージョンを下げる
    1. QPST(Qualcomm社のソフト)をインストールする
    1. 書き込むROMを用意する
    1. y700をEDLモードで接続する
    1. ROMを書き込む
1. boot-unlockする
    1. adbを使えるようにする
    1. sn.imgを用意する
    1. y700をfastbootモードで接続する
    1. アンロックする
1. グローバルROMを書き込む
    1. RSA(Lenovo社のソフト)をインストールする
    1. RSAでグローバルROMをダウンロードする
    1. ダウンロードしたファイルの一部を書き換える
    1. y700をEDLモードで接続する
    1. RSAでグローバルROMを書き込む

# バージョンを下げる
- 下記の方法でバージョンを下げると、通常起動もしなくなっちゃったけど、気にしない気にしない。
- 最終的にグローバルROMを書き込むからね。boot-unlockする準備として、バージョンを下げただけ。

https://smartasw.com/archives/15575

- まぁ、上記では、バージョンを下げたあと起動しているけど、15.0.774からだと起動しなかったよ。
    - 実際に起動はさせてないから、バージョン下げに成功したかどうかはわからんけど、boot-unlockができたから、うまくいったのでは？つか、15.0.774でのboot-unlock不能を回避したかっただけなので、どうでもよいかな。
- まずは、下記リンクから、最新版のQPSTをダウンロードして、インストール。

https://mirrors.lolinet.com/software/windows/Qualcomm/QPST/

- 下記リンクから、初期ROMをダウンロードして、解凍しておく。

https://drive.google.com/file/d/1w2Lv8LeArVkUkBbowCAUig7OghjHf3HP/view

- インストールしたQPSTの中から、QFILを立ち上げる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/280e34e4-3242-2c8c-c97f-6ff1eefb9b3f.png)

- Configuration->FIrehouse Configuration から、下記を開き、DeviceType「ufs」を選択し、「Reset After Download」をチェックして、元の画面に戻る。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/a6633d2f-519a-4503-c5d2-e8a6d41d9090.png)
- 元の画面で、「LoadContent」ボタンを押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/20c7df17-5c1f-b0af-3baf-459f112c4437.png)
- 解凍した初期ROMフォルダの中にある、content.xmlを選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/3957e170-6415-3329-aaed-95bcc52c9122.png)
- y700をEDLモードで接続する。
    - y700の電源を落としたあと、音量upボタンを押しながら、長辺側のusb-cに接続する。y700がブルっとなって起動するまで、音量upボタンを押しっぱなしにしておくこと。
    - EDLモードで接続した場合、下記のようにQDLoader9008が表示される。なお、一度接続すると、接続を切っても薄く表示されるので、濃く表示されているかどうかを確認すること。下記は接続を切った状態なので、薄く表示されている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/5b81f1f8-a6e2-5645-e0b9-eee0fb065d22.png)
- EDLモードで接続されれば、自動的に「Qualcomm HS-USB QDLoader 9008(COM3)」と画面に表示される。もし、正しく接続してるのに表示されないようであれば、「SelectPort」ボタンを押してこのポートを選択する。
![https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_2733720_101b33f0-826a-6563-17f1-8db71a186f7c.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/750dbaad-791d-ff2d-fd93-3eee8ff0136f.jpeg)

- その後、「Download Content」ボタンを押せば、10分程度で終了。
- なお、起動しないよ。15.0.774にしたからだと思うけど、初期ROMで起動しないよ。
- ここまでやってしまったら、最後までやりきるしかないよ。フフフ

# boot-unlockする
- まずは、adbを使えるようにしないと駄目よね。まぁ、海外からy700を買っちゃうような人は、流石にadbを使えるようにする方法は知ってるよね？だから、細かいことは言わないけど、最小限のことは書くね。
- 下記HPから、platform-toolsをダウンロードして、解凍します。

https://developer.android.com/tools/releases/platform-tools?hl=ja
- 解凍したら、そのフォルダにパスを通します。本来、フォルダ名称は「platform-tools」だけど、僕は、フォルダ名にandroid-を頭につけて、ドキュメントフォルダに格納したから下記みたいな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/c189186f-0698-daca-1316-286aa68181a7.png)
- boot-unlockに必要なファイル「sn.img」を下記HPからゲットします。
- このとき、lenovo idが必要になります。また、lenovo idは後述する「rsa」を使用するときも必要になるから、取得しておこうね。もし、取得の仕方がわからない場合は、rsaからも取得できるから、先にrsaのインストールから始めたほうがいいかもね。

https://www.zui.com/iunlock

- 上記HPに申請してもゲットできんよ！という方は、下記のHPから入手することもできるよ。こういう方がいるのはありがたいね。下記のHPでは、y700(gen3)の話がされているけど、ここでゲットしたsn.imgはy700(2023)でも使えたよ。言うまでもないけど、ちゃんとシリアル番号の書換えはしてね。

https://note.com/forsaken_love02/n/n088953566fb2

- y700をfastbootモードで立ち上げます。
    - y700の電源をオフにしたあと、ケーブルを繋いでない状態で、音量upボタンを押しながら電源ボタン長押しで立ち上がります。
    - まぁ、前記の通りバージョンを下げたら、fastbootモードで立ち上がってるんじゃないかと思うけどね。通常起動しなくなっちゃってるからね。
- fastbootで立ち上がってるy700の長辺側のusb-cにケーブルを繋いでpcと接続して、powershellをたちあげます。
    - fastbootで接続されているかどうかを確認するには、コマンド:`fastboot getvar all`を打ち込んで、情報が表示されるかどうかで分かるよ。
- つながっていることが確認できたら、下記のように、入手したsn.imgをつかってunlockします。`fastboot flash unlock "(格納フォルダへのパス)\sn.img"`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/a90ca548-1f95-6dc9-6c1a-8dd409cefad4.png)
- これが成功したら、次のコードを打ち込みます。
    - `fastboot oem unlock-go`
    - `fastboot set_active a`
- y700のfastboot画面で、「DEVICE STATE」がunlockedになってれば完了です。ちなみに、本来は下記画面上でPRODUCT_NAMEやSERIAL NUMBERも記載されているけど、windows11に標準搭載されているpaintアプリでAIを使って消したら、最初から存在しないように消されているね。
![タイトルなし.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/c3bd8f6d-a476-3319-4bf3-f0db0e8d7a3a.jpeg)

# グローバルROMを書き込む
- 下記リンクから、RSA（Software Fix (Rescue and Smart Assistant)）をダウンロードしてインストール

https://support.lenovo.com/jp/ja/downloads/ds101291-rescue-and-smart-assistant-lmsa

- インストールしたら、下記の「SoftwareFix」を立ち上げる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/b740edd7-6708-ea9c-3b69-00d6da453aac.png)
- 「持続する」とか、怪しい日本語だけど、気にせずポチっとな。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/e0dc30c4-6de8-3d39-013b-9d56044bb46f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/8e3abf10-29c6-a74a-e39d-e79aba37f0f2.png)
- ログインすると、下記画面になるから、「救助」のまま、「タブレット」を選択して、次の画面で、「シリアル番号を入力」を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/a7e52d8b-43f2-843e-f425-fa0ec98f4d7a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/d4d1ba26-016c-6960-5332-2d031ae76a90.png)
- 次の画面で、「S/Nを見つける方法は？」を選択して、次の画面で「手動選択」を選ぶ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/6f58cd75-6f52-3bf0-fa77-4e950695bfd0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/e18d25de-ba02-068c-bc40-8c9a805ad4de.png)
- 次の画面で、TB320(y700 2023の型番)を選ぶと、直近版のROMが表示されるので、「確認ボタン」を押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/fed952cb-180d-5abf-41ee-00ff7e29ba01.png)
- ダウンロードが終了して下記の画面になったら、ROMの中身を書き換える。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/18a2c7b0-4282-8d50-0f94-43c9bd45827f.png)
- ダウンロードしたファイルは、解凍されていて、下記フォルダに存在する。
    - "C:\ProgramData\RSA\Download\RomFiles\TB320FC_ROW_OPEN_USER_Q00031.0_U_ZUI_16.0.475_ST_241122"
    - このフォルダ内の、vender_boot.imgファイルが書き換え対象となる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/b348be58-b35e-98a1-48fa-7063bfae759b.png)
- このフォルダからvender_boot.imgファイルをデスクトップにコピーして、同じくデスクトップに下記コードを書き込んだ「macro.py(ファイル名は何でも良いけど、拡張子は.pyにして)」を用意して、「vender_boot.img」をmacro.pyの上に置くと、vendor_boot_prc.imgが出来上がるので、これをリネームして、先程のフォルダ内のvender_boot.imgと入れ替える。これで準備OK!
- あ！macro.pyを動作させるため、先にpythonを下記からダウンロードしてインストールしておいてね。

https://www.python.org/downloads/windows/

```py
import os,sys
os.chdir(os.getcwd())

args = sys.argv

with open(f'{args[1]}','rb') as f:
    w_f=f.read()
    w_row=b"\x49\x52\x4F\x57"
    w_prc=b"\x49\x50\x52\x43"

    w_kekka=w_f.find(w_row)
    if w_kekka!=-1:
        print('change row -> prc')
        out=w_f.replace(w_row,w_prc)
        out_name='vendor_boot_prc.img'
    else:
        w_kekka=w_f.find(w_prc)
        if w_kekka!=-1:
            out=w_f.replace(w_prc,w_row)
            print('change prc -> row')
            out_name='vendor_boot_row.img'
        else:
            print('Neither "ROW" nor "PRC" found')
            exit()


with open(f'{out_name}','wb') as f:
    f.write(out)
```
- y700をEDLモードでPCと接続して、RSAの「救助」ボタンを押すと、10分くらいで、書き換え終了。
- グローバルROM版y700(2023)の出来上がり！！！

![タイトルなし.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/96966a63-f3e1-9b4e-0684-575c3d53cb26.jpeg)

# さいごに
- 今日、午前１０時から開始して、午後１時過ぎくらいにグローバルROMへの書き換えが終了して、投稿の記事を書き終わったのが１６時半…
- お昼も食べずに作業し続けたから、へとへとです。
- 僕と同じように774版で苦労している人の役に立てば嬉しい。

(おまけ)今更ながら思ったんだけど、QFIL使えばboot-unlockしないで書き込めるなら、3-1,2,3で作ったグロROMを1-2のROMに入れ替えて1の作業を行えば2の作業を省略できるのかも...unlock無しでイケるかどうか不明だから、オススメはしないけどね