※この記事は「四工大アドベントカレンダー 2023」の18日目の記事です。
こんにちは!最近何の人か分からなくなってきている DENDAI-JIN 3年目のかずえもんです。
18日目の今日はちょっとギークっぽい内容を持ってきたかったので、とある逸般人向けタブレットについて書きたいと思います。
まずは商品をご紹介
みなさんはこちらの箱をご覧になったことはありますか?
こちらは2023年2月頃に一般人は買ってはいけない「逸般人向け」タブレットとして話題になったタブレット「UATTAB01」です。
【一般人は買ってはいけない!】
— イオシス公式 (@iosys_official) 2023年2月28日
OEM Androidタブレット UATTAB01
未使用品 税込5,980円
ノーキッティングな業務用ドロタブを2700台(も)入荷!!
▼商品ページ▼https://t.co/k811f9TdA5
「えっちじゃん」と思った逸般人の皆様、自社キッティング可能な法人様、何卒よろしくお願いします。#イオシス pic.twitter.com/otaRVxznU8
何かしらのサービスで使われる予定で外装や起動時の画面までちゃんと作られたけど、実運用されずに市場放出された物だと推測されますが、なぜ「逸般人向け」なのかといいますと、なんせ GMS*1 が入っていない、ほぼ素の Android タブレット(キッティングされていない、と言うらしい)なんですね。
なので、Google 系のアプリはほとんど使えないし、Google Play ストアも使えないので、アプリを入れようと思ったら apk ファイルから直接インストールするか、「Amazon アプリストア」みたいなサードパーティーのアプリストアを使うしかアプリを入れる方法が無いので、Not for 一般人って訳なんです。
これを買った経緯
私が所属している放送委員会では、現在機材管理システムの開発を進めています。その一環として「感熱紙プリンターでピックアップ用コンテナのラベリングができたら便利じゃね?」という案が出て、早速試してみるかということで感熱紙プリンター「MP-B20」を購入しました。
このプリンターは専用のアプリを導入することで、独自にアプリなどを作らなくても Web 上から PDF ファイルの印刷ができるという、大変な便利なモノです。
となると、アプリを入れる Android か iOS の端末が必要になりますが、現時点で機材管理でしか使う予定が無かったのであまり予算もかけられないし、どうしよう…と思っていた矢先にこの商品を見かけました。
Google Play が使えなくても印刷アプリだけ別端末から apk で引っ張ってくれば問題ないし「さすがに印刷アプリが GMS に依存してないやろ」と思いつつ(盛大なフラグ)、
「電大生だし、最悪は魔改造すれば使えるやろ」
…というわけで購入したものがこちらです。当然 YouTube は入っていないのでデフォルトのブラウザから見ています。1080p の動画再生にはちょっと難ありだった気がします。
そして直面する想定外の事件
まずはプリンターとタブレットが Bluetooth で接続できることを確認。そして単体でテストできるサンプルアプリから印刷できることを確認。よしよし、順調です。
ほな、PDFファイルとかを直接印刷できるアプリを入れてっと…
ん、なんか出てきたな…
「Google Play 開発者サービスが必要です。」
エッ…マジカ…
(ばおつbot風)
(しかもスクショ撮り忘れた)
まさかとは思っていましたが GMS が必要でした。「さすがに印刷アプリが GMS 依存してないやろ」って言ってた時期の自分を殴りたい。
ちなみに記事執筆時点で手元の Pixel 6 にアプリを入れて、Google Play 開発者サービスを無効にしてからアプリを立ち上げた結果がこちら。
一番大事なところを思い込みで決めてしまうという大失態。別端末でちゃんと確かめてからやるべきでしたね。
というわけでタブレットは何もしてないのに文鎮扱いになりましたとさ。おしまい。
…ではなく、ここは電大生としてちゃんと使えるように大改造していきましょう。
インターネットのあらゆる文献を大活用
幸いなことに、このタブレットは数多くの逸般人が手にしているため、ネット上にいくつか改造ログが残っていました。ここではその記事を参考にしつつ、自分の手元で上手く動かなかった部分も含めて手順を整理していきたいと思います。
全体を通して参考にした文献を以下に載せておきます。本当にありがとうございます。
それでは参りましょう。悪魔の降臨です!(魔改造の夜風)
魔改造手順
<<ここで紹介する手順をご自身で試されたことにより損害が発生した場合でも、筆者は一切の責任を負いかねます。試される場合は自己責任でお願いいたします。>>
OS を丸ごと入れ替える
まずはいわゆる「ROM焼き」をやっていきます。
adb のインストール
まずは PC からタブレットをいじるために adb を使えるようにします。今回は「SDK Platform-Tools for Windows」で導入しました。
ドライバのインストール
以下サイトからタブレットと接続するためのドライバをインストールしていきます。サイトは前述の参考文献に記載されているものです。
イメージのダウンロード
私にはイメージ周りの知見が全くなかったため、今回は素直に記事通り「LineageOS 18.1」を導入していきます。記事にはイメージをどこからダウンロードしたかの記載がないのですが、恐らくこちらのページのイメージを使用しているものと思われます。今回は記事と同じ「lineage-18.1-20220715-UNOFFICIAL-a64_bgS.img」をダウンロードしました。
ブートローダーロックの解除
例によってタブレット側で開発者向けオプションを有効にし「USBデバッグ」をONに、「OEMロック解除」をONにしておきます。ギークの皆さんなら開発者向けオプションを有効化する方法は分かると思いますが、みなさん設定アプリのデバイス情報の一番下の方にある項目を何回かタップされていますね。
PC とタブレットを接続するとタブレット側にUSBデバッグの承認画面が出てくるはずですが、もし出てこない場合はドライバが紐づいていない可能性があるため、デバイスマネージャーから「SaloColle」のドライバとして先ほどインストールしたドライバ(C:\Program Files\MediaTek\SP Drive
配下にインストールされる模様?)を指定しましょう。
承認の後、コマンドラインに以下コマンドを入力して fastboot を起動します。
> adb reboot bootloader
無事に fastboot が起動すると、タブレットの画面下部に「=> FASTBOOT mode…」みたいな表示が出てくると思います。この状態でさらに以下コマンドを実行します。
> fastboot flashing unlock
するとタブレット画面上でブートローダーのロックを解除しますか?とメッセージが出てくるので、ボリュームの上を押して解除します。このタブレットは音量ボタンが電源ボタンの上にあるので押し間違いにご注意を。
もしエラーが出て解除できない場合は、開発者向けオプションの「OEMロック解除」を変更し忘れているかもしれません。私は忘れていてハマりました。
解除できたら、勝手に再起動されます。起動時に以下のような表示が出ていれば正常にロック解除できているようです。
fastbootd に入る
fastbootd というのはどうやら Android 10 以降に新しくできたもののようで、この影響でこの後行う ROM 焼きの作業は fastbootd からでないとできなくなった?みたいです。
ユーザー空間への fastboot の移行 | Android オープンソース プロジェクト | Android Open Source Project
ブートローダーのロック解除後、再起動されたら再度以下コマンドを入力してまずは fastboot に入ります。
> adb reboot bootloader
fastboot の画面が表示されたら、ここから以下コマンドを打って fastbootd に入ります。(打つと勝手に再起動がかかり、次の起動時に fastbootd で起動します。)
> fastboot reboot fastboot
なんか進次郎構文みを感じますね。正しく実行できると、赤文字で「fastbootd」と表示される画面に移ります。ここからさらにコマンドを入力していじっていくわけですが、デバイスマネージャーを見たところ「SaloColle」がドライバの適用されていない「?」表示になっていました。試しに以下コマンドを打って fastbootd モードになっているデバイスの接続状況を確認します。
> fastboot devices
何も表示されない、つまり認識されていません。どうやら fastbootd の時と、そうでないときで別のデバイス扱いになっている模様。
デバイスマネージャーで先ほどインストールしたドライバを選択してみましたが、適合していないと表示されエラーに。この状態でこれ以降のコマンドを実行しても < waiting for any device >
と表示されて何もできずじまいです。
色々試してみたところ、ADB をインストールしたときに一緒に入った「Android Bootloader Interface」ドライバを指定してあげれば再度デバイスが認識されるようになりました。手順は以下の通りです。
- デバイスマネージャーの「ほかのデバイス」から「SaloColle」を開く
- 「ドライバの更新(P)」を押す
- 「コンピューターを参照してドライバを検索(R)」を押す
- 「コンピューター上の利用可能なドライバーの一覧から選択します(L)」を押す
- 共通ハードウェアの種類から「Android Phone」を選択
- モデル一覧から「Android Bootloader Interface」を選択して「次へ」を押す
- 警告が表示されるが「はい(Y)」を押して次へ
これで先ほどのコマンドを実行すると、無事にデバイスが認識され、一覧に表示されました。よかった。
C:\Users\kazuemon> fastboot devices UAT(番号) fastboot
いざROM焼き!
それでは、ROM の中身を空っぽにして、新しい ROM を焼いていきます!
C:\Users\kazuemon> fastboot erase system Erasing 'system_a' OKAY [ 0.758s] Finished. Total time: 0.775s C:\Users\kazuemon> fastboot flash system "C:\Users\kazuemon\(.img ファイルのパス)" Resizing 'system_a' OKAY [ 0.010s] Sending sparse 'system_a' 1/7 (262140 KB) OKAY [ 7.128s] Writing 'system_a' OKAY [ 4.065s] Sending sparse 'system_a' 2/7 (262140 KB) OKAY [ 7.174s] Writing 'system_a' OKAY [ 3.110s] Sending sparse 'system_a' 3/7 (262140 KB) OKAY [ 7.105s] Writing 'system_a' OKAY [ 3.090s] Sending sparse 'system_a' 4/7 (262140 KB) OKAY [ 7.206s] Writing 'system_a' OKAY [ 2.989s] Sending sparse 'system_a' 5/7 (262140 KB) OKAY [ 7.168s] Writing 'system_a' OKAY [ 3.138s] Sending sparse 'system_a' 6/7 (262140 KB) OKAY [ 7.157s] Writing 'system_a' OKAY [ 3.128s] Sending sparse 'system_a' 7/7 (250596 KB) OKAY [ 6.875s] Writing 'system_a' OKAY [ 3.020s] Finished. Total time: 72.441s C:\Users\kazuemon> fastboot erase userdata Erasing 'userdata' OKAY [ 1.838s] Finished. Total time: 1.851s C:\Users\kazuemon> fastboot erase metadata Erasing 'metadata' OKAY [ 0.037s] Finished. Total time: 0.051s
全て完了したら、タブレット画面の「Reboot system now」を音量キーで選び、電源キーを押して再起動をかけます!
ドキドキしながら再起動を待つと…
Android を新しく入れたときに出てくる言語の設定画面が!(写真撮り忘れました)
無事文鎮になることなく、起動できました。本当に先人の文献が偉大過ぎる。
というわけでこれであとはアプリを入れて…と思いましたが、Google Play ストアでログインしようとすると「Play プロテクトの認定を受けていません」との表示が。あれ?
Google へのデバイスの登録
Google Play 入りのイメージを焼いただけでは Google Play 開発者サービスは利用できませんでした。
というのも「Google Play プロテクト」という機能があり、所定のテストに合格していないデバイスは Google 系のアプリを利用することができません。自分でイメージを ROM に焼いたデバイスは当然テストを受けていないのでこれに引っかかります。ちなみに認証しないまま放っておくと、1分おきぐらいに鬼の速度で「認証されていません」の通知が届きます。
なので、Google に申請してデバイスを例外として登録してもらう必要があります。
登録の手順は Google未認証のAndroid端末をホワイトリストに追加してもらう方法【端末の認証】 | TeraDas を参考にさせていただきました。
Google サービス フレームワーク Android ID を取得する
まずは何かしらの方法で「Google サービス フレームワーク Android ID(以下、Android ID)」というのを取得する必要があります。今回は「Device ID(com.redphx.deviceid)」というアプリを別端末にインストールした後、apk を引っ張ってきて adb 経由でタブレットにインストールして確認しました。
Device ID と表示されているものが Android ID です。何かしらの方法でメモっておきましょう。
フォームに入力する
https://www.google.com/android/uncertified/ にアクセスし、先ほど取得した Android ID をフォームに入力します。Google アカウントでのサインインが必須っぽいです。
なお、ここでは Android ID を10進数で入力する必要があり、先ほどのアプリ上での Android ID の表記は16進数となっていますが、そのまま入力すると勝手に変換されて登録されるので気にしなくて大丈夫です。
あと、このページには ADB 経由で Android ID を取得する方法が書かれていますが、Google Play 入りのイメージだからなのか「inaccessible or not found」と表示されて取得できませんでした。なので前述の方法が一番手っ取り早いかなと思います。
入力したら「登録」をポチっと!
申請通った!
記事によっては数時間かかる場合や登録されない場合もあると記載がありましたが、今回は10分もしないうちに登録され、何回か再起動しているうちに「認証されていません」の表示も出なくなりました。やったぜ。
ちなみに登録されると、先ほどのページ下部に Android ID が表示されるようです。さっき入力したのと違うように見えますが、ここでの Android ID 表記は10進数での表記なので正常です。
魔改造完了!
というわけで無事に魔改造が完了し、先ほどの印刷アプリをインストールして早速テスト!先ほど目の当たりにした「Google Play 開発者サービスが必要です。」の文字は表示されず、設定は無事に完了。そして…
動いたァァァ!!!!
本当に良かったです、動いてくれて。これで無事にこの冬休みから開発を進められそうです。めでたしめでたし。
ちなみに魔改造の代償としてインカメ、スピーカーが犠牲となりました。おそらく対応しているドライバが入っていなかったんだと思います。インカメが犠牲になったのはちょっと痛いですが、スピーカーは今回使う予定が無かったのでまあヨシ!
まとめ
かなーり長くなってしまいましたが、まとめると以下3つ!
ギークな逸般人は是非いじってみてね!と言いたいところなのですが、実はこのタブレット既に売り切れております。定期的にこういうタブレットは世に流れてるみたいなので、チャンスがあれば人柱になったつもりで試してみてください。
We're hiring…?
東京千住放送委員会では、委員会の内部システム構築や業務のDXに興味のある方を募集中です!
遅くなりましたが、旭祭お疲れ様でした!
— 東京千住放送委員会 (@TBC_1010) 2023年11月6日
これからも放送委員会をよろしくお願いします🙌#旭祭 #旭祭2023 pic.twitter.com/V64Yn4VaPe
…って、企業の記事かとツッコまれそうですが、実際システム面を触れる人が足らなくて困っております。実は随時入会できるらしいので、放送の機材に興味のある方はもちろん、システム周りに興味のある方も是非ご入会お待ちしております!ご連絡はDMまで!
(カジュアル面談しなくても入会できますのでご安心くださいまし。)
さいごに
最後までお読みいただきありがとうございました!
明日のアドベントカレンダーも引き続き私の記事「学生団体でも Slack が使いたい!」をお届けします。またもや放送委員会関連の記事で恐縮ですが、良ければご覧ください。アドベントカレンダーの他の記事も是非!