RG35XXのADB機能を有効化してUSBデバッグしてみた
RG35XXとPCをUSB接続してデータ転送したかった
最近お気に入りのRG35XXですが、前回導入したGarlicOSにはADB機能を有効化してUSBデバッグする方法が提供されているのです!
Expand
ADBとは正式名称「Android Debug Bridge」で、デバイスと通信する為の多用途のコマンドを提供するものです。
Androidはご存じの通りLinuxカーネルがベースとなっています。GarlicOSもLinuxカーネルがベースとなっていまして、Androidのソースをベースにしているのかどうかはわかりませんが何かしら共通する部分があるのだと思われます。違っていたらごめんなさい…。
さて、そんなADB機能が有効となっていると何ができるかというと、「RG35XXとPC(OSはWindows/macOS/Linuxすべてで理論的に可能)をUSB接続することで、PCからRG35XXを操作できる」のです!
普段RG35XXで遊んでいるゲームのセーブデータバックアップや、これから遊びたいゲームのデータをコピーする際にはmicroSDカードをPCにマウントする必要がありました。ということはRG35XXから毎回microSDカードを抜き差ししなければならず、microSDカードの表裏を間違えてイラッとしたりする経験を何度もしてきた訳です。
それが、ADB機能を有効化してPCとUSB接続するだけで、PCからmicroSDカードの中身を直接触ることができるのです!
それでは、ADB機能の有効化から始めていきましょう。
2023/05/25 : GarlicOS 1.4.7で本記事の内容を検証済みです。
Windows 11 Pro 22H2 (OSビルド 22621.1702) 64bit : 2023/05/25時点
ADB Explorer v0.8.23050 : 2023/05/25時点
今回合わせて紹介する「ADB Explorer」はWindows OSのアプリですが、ADBコマンド自体はmacOS/Linuxでもセットアップ可能です。
是非本記事を参考にして試してみてください!
それではGarlicOSのADB機能を有効化していきましょう。
ADB機能有効化のヒントは、前回解凍したファイルに含まれていた README.txt に記載されています。
. . Enabling ADB support: To enable ADB support, create a file named enableADB in the misc partition. Enabling ADB disables USB gamepad support but allows developers easy access to the device.
miscパーティションに enableADB という名前のファイルを作成すると、ADB機能が有効になるよ~と書いてありますね。
また、ADB機能を有効にするとUSBゲームパットは使用できなくなるよ~と合わせて書いてあります。USBゲームパッドを普段ご利用されている方はご注意くださいね。
(※最後まで読んでいただければ、RG35XX本体のみでGarlicOSのADB機能をON/OFFする方法をご説明しています!)
TF1/INTスロットに挿入しているSDカードをWindowsに接続してください。
GarlicOSをセットアップした際、 BIOS CFW Roms フォルダが存在した H: パーティションの他に、画像のように kernel.dtb や uImage ファイルが存在するパーティションが実はあったのですが、こちらがmiscパーティションです。
今回の場合はドライブレターが E: でした。
miscパーティションが何か解れば、後は enableADB という名前のファイルを作成すれば完了です。
ここで注意が必要なのは、拡張子無しのファイルでないといけないという点です。
エクスプローラの「ファイル名拡張子」を表示するように設定変更した上で…
E: パーティションの直下にテキストドキュメントを新規作成しましょう。
ファイル名拡張子が正しく表示されるようになっていれば、 E:\新規 テキスト ドキュメント.txt という名前のテキストファイルが作成されるはずなので、 E:\enableADB という名前に変更しましょう。
.txt を忘れずに取り除くこと、 enableADB は enable を半角小文字、 ADB を半角大文字とすることを必ず守ってください。
GarlicOSはLinuxカーネルがベースのOSですので、小文字と大文字を厳密に区別します。Windowsは小文字と大文字を区別しないので慣れないと混乱しますね。
尚、 .txt を取り除くと「拡張子を変更すると、ファイルが使えなくなる可能性があります。変更しますか?」と確認されます。気にせず[はい(Y)]ボタンを押下しましょう。
以上、SDカードをRG35XXの「TF1/INT」スロットに挿入して電源ONすればADB機能が有効化された状態でGarlicOSが起動します。
GarlicOSのADB機能が有効化されても、PCの準備が整わないとUSB接続しても何も起きません。
PCからADB機能が有効なGarlicOSを操作する為に、Android Debug Bridge(adb)コマンドをセットアップしましょう。
ADBコマンドは、Android StudioというAndroidアプリ開発用 統合開発環境をセットアップしてダウンロードする他に、Android SDK Platform Toolsパッケージを個別にセットアップすることでも利用可能になります。
日常的にAndroidアプリ開発を行っていない場合は、Android Studioをセットアップすると無駄にPCのディスク容量を圧迫してしまいますので、後者のAndroid SDK Platform Toolsパッケージを個別にセットアップする方法がおすすめです。
SDK Platform-Tools リリースノートより利用中のOSに適したSDK Platform Toolsをダウンロードします。
今回の手順ではWindows OSを使用しますので、SDK Platform-Tools for Windowsをダウンロードします。
利用規約に同意する必要があるので、規約をしっかり読んで「□上記の利用規約を読んだうえで利用規約に同意します。」にチェックを付けた上でダウンロード実行しましょう。
次に、ダウンロードした platform-tools_r##.#.#-windows.zip ファイル( ##.#.# の部分はダウンロードしたバージョンに依存)を解凍すると、 platform-tools フォルダの中に adb.exe 等のファイルが入っていることが確認できるかと思います。
この platform-tools フォルダ毎、任意の場所に移動します。例えば、 C:\Program Files フォルダ以下に移動しましょう。
C:\Program Files\platform-tools のようにフォルダが移動していれば成功です。
その後、システム環境変数の Path に C:\Program Files\platform-tools を追加します。
これで準備完了です!
PCからADBコマンドを使ってRG35XXを操作してみよう
それではRG35XXとPCをUSBケーブルで接続して、ADBコマンドを実際に使ってみましょう!
RG35XXは電源ON状態でUSB接続しても、OFF状態でUSB接続した後に電源ONしてもどちらでも大丈夫なようです。
USB接続できたら、コマンドプロンプトで下記を実行してみましょう。
REM ADBコマンドがちゃんとセットアップできているか確認します。 $ adb version Android Debug Bridge version #.#.## Version ##.#.#-####### Installed as C:\Program Files\platform-tools\adb.exe
上記のように Installed as ... 等と表示されていればセットアップ成功です。
もし上手く表示されないようであれば、システム環境変数の Path に正しく追加できているかどうか確認してみてください。
若しくは、 "C:\Program Files\platform-tools\adb.exe" version とフルパス指定で実行しても動作確認できますが、後述するADB Explorerは利用できないかと思います。
さて、引き続きコマンドプロンプトで下記を実行してみましょう。
REM 接続している端末を一覧表示します。 $ adb devices List of devices attached 0123456789ABCDEF device
(RG35XX以外に端末をUSB接続していない前提ですが、)上記のように出力された場合は
0123456789ABCDEF がシリアル番号で、 device がデバイスの接続状態(adbサーバに接続されている状態)です。
GarlicOSのADB機能が正しく有効化されていないと、そもそも何も一覧表示されません。その場合は enableADB ファイルに拡張子が残っていたり、大文字小文字や綴りを誤っていないか確認してください。
ちなみに、 0123456789ABCDEF というシリアル番号はGarlicOS上の /sys/class/android_usb/android0/iSerial ファイルに記述されている内容のようです。つまり、シリアル番号は皆様等しく 0123456789ABCDEF だと思われます。
ということは2台のRG35XXにGarlicOSをセットアップして同時にUSB接続するとシリアル番号が重複する…?
気になるのですが私の環境では検証しようが無いので、もし2台RG35XXをお持ちの方いらっしゃれば検証してみてください。
それでは、対話型シェルを起動してGarlicOSを操作してみましょう!
REM 対話型シェルを起動します。 $ adb -s 0123456789ABCDEF shell REM `root@xxxxxx:/ #` 等と表示されれば対話型シェル起動成功です! REM 試しに `ls` コマンドでディレクトリ内容を一覧表示してみます。 # ls bin boot cfw charger d data default.prop dev etc fstab.gs705a home init init.extra_modules.rc init.rc init.wifi.rc lib loadapp.sh misc mnt proc res root sbin sys system tmp ueventd.rc usbdbg.sh usbmond.sh usbtest.sh usr var REM 上記のような出力が確認できれば正しくGarlicOSを操作できています! REM 対話型シェルを終了する場合は `exit` コマンドを実行します。 # exit
GarlicOSのディレクトリ内容を一覧表示するだけの簡単な操作でしたが、念願だったRG35XXとPCをUSB接続して操作するという目的を達成しました!
ここまで確認できれば、例えばコマンドプロンプトで下記を実行すると「TF2/EXTスロットに挿入しているSDカード上のSavesフォルダをPCにコピーする」というバックアップ処理の第一歩を踏み出せます。
REM PC上の空のフォルダである `C:\Temp` にセーブデータをコピーしてみます。 $ cd C:\Temp REM 空のフォルダなので、 `dir /B` コマンドを実行しても空白行が出力されるだけです。 $ dir /B REM それでは、TF2/EXTスロットに挿入しているSDカード上のSavesフォルダをコピーしてみます。 $ adb pull /mnt/SDCARD/Saves . /mnt/SDCARD/Saves/: # files pulled, 0 skipped. #.# MB/s (###### bytes in #.###s) REM Savesフォルダがコピーされて、 `dir /B` コマンドの実行結果が変わりました! $ dir /B Saves
もし「TF1/INTスロットに挿入しているSDカード上のSavesフォルダ」をコピーする場合は adb pull /mnt/mmc/Saves . となります。
/mnt/mmc 以下がTF1/INTスロットに挿入しているSDカードの Roms フォルダ等が存在した場所、 mnt/SDCARD 以下がTF2/EXTスロットに挿入しているSDカードの Roms フォルダ等が存在した場所と対応しています。
GUIで簡単にデータ転送できる「ADB Explorer」
ということで、ADBコマンドを使用してRG35XXを操作することができるようになりました。が、普段からCUI操作に慣れていないと取っ付きにくい…ということで、GUIで簡単にデータ転送できる「ADB Explorer」を紹介します。このアプリはWindows OS専用ですので、その点ご了承ください。
ADB ExplorerはMicrosoft Storeからインストールすることが可能です。ソースコードも公開されていて、おそらく怪しくないアプリですが、ご心配な方は使用をお控えください。
ADB Explorerを起動すると、画面左端の「Devices」に「ToyCloud」という名称の端末が見つかると思います。これがRG35XXです。
「ToyCloud」をマウスでクリックし、表示される[Browse]ボタンを押下すると…
このようにGarlicOS上のディレクトリが参照できます。[Root]と表示されている箇所をマウスでダブルクリックすると、
エクスプローラのようなUIでファイルにアクセスすることができます!
例えば先ほどADBコマンドでTF2/EXTスロットに挿入しているSDカード上のSavesフォルダをコピーしましたが、ADB Explorerを使用して /mnt/SDCARD フォルダまで移動し、 Saves フォルダ上でマウスを右クリックして表示されるメニューより[Pull]を選択することでPC上の任意の場所にコピーすることができます。
ここまでは pull という操作でRG35XXからファイルをコピーする例のみ紹介していますが、RG35XXにファイルをコピーする push という操作も実行することが可能なので、例えば『テーマ画像をPC上で作成してコマンド操作 又は GUI操作でRG35XXに画像をコピー』みたいなことが気軽に実施できます!
ADB機能をON/OFFするスクリプトを書いてみよう
ADB機能は便利なのですが、あくまでも「デバッグ用途」であるという点と、ADB機能を有効にすると「USBゲームパットは使用できない」という点には注意が必要です。
特に後者のUSBゲームパットが使用できないという点については、多用される方にとっては致命的かと思います。
ということで、RG35XX本体のみでGarlicOSのADB機能をON/OFFするシェルスクリプトを作成してみましょう!
実はGarlicOSは ./Roms/APPS フォルダ以下にシェルスクリプトを配置すると、ゲーム一覧から任意のタイミングでスクリプトを実行することができるんです。
これは、 ./CFW/config/coremapping.json ファイルの中で "APPS": "/bin/sh" とデフォルトで紐付け設定されているので実現可能となっています。
例えば coremapping.json に "SCRIPTS": "/bin/sh" と紐付けを追加すれば、 ./Roms/SCRIPTS フォルダ以下にシェルスクリプトを配置することも可能かと思います。
今回作成するのはどのようなシェルスクリプトかというと、ADB機能を有効化する ./Roms/APPS/enable_adb.sh と、ADB機能を無効化する ./Roms/APPS/disable_adb.sh という2つのファイルを作成します。
この2つのファイルはPC上で作成して、先ほどのADBコマンドやADB Explorerで ./Roms/APPS フォルダ以下にコピーすると楽々です。
スクリプトファイルは文字コードをUTF-8、改行コードはLFとしてください。
まず、 ./Roms/APPS/enable_adb.sh の内容は以下の通りです。
#!/bin/sh mount -o rw,remount /misc touch /misc/enableADB mount -o ro,remount /misc sync
本記事冒頭では手動で enableADB ファイルを作成しましたが、スクリプトでは touch /misc/enableADB で空の enableADB ファイルを touch コマンドで作成しています。
ポイントは mount -o rw,remount /misc です。 /misc フォルダ以下はデフォルトで読み込み専用となっており、明示的に読み書きできるよう再マウントしなければなりません。
enableADB ファイルの作成後は、念の為 mount -o ro,remount /misc として改めて読み込み専用として再マウントします。
最後に、 sync コマンドにてキャッシュ上に存在する未処理データをSDカードに書き込み確定させます。
そして、 ./Roms/APPS/disable_adb.sh の内容は以下の通りです。
#!/bin/sh mount -o rw,remount /misc rm /misc/enableADB mount -o ro,remount /misc sync
変わった点は rm /misc/enableADB で、 enableADB ファイルを rm コマンドで削除しています。
これらのスクリプトファイルを ./Roms/APPS フォルダ以下にコピーしたら、ゲーム一覧から「enable_adb」又は「disable_adb」を実行し、画面暗転して元に戻った時点で本体右横のResetボタンを押下してGarlicOSを再起動してください。
GarlicOSの起動と同時にADB機能がON/OFFされるはずです。
以上でざっくりADB機能の解説でした。
海外の方のGitHubリポジトリを参照すると、ADB機能を使用してGarlicOSのアップデートを自動化する例もあるようです。
PCとUSB接続してバッチ処理を実行するだけでセーブデータバックアップ!みたいなことももちろん実現可能なので、興味がある方はadbのドキュメントに目を通してみてください!