スマホをゲーム機っぽくするGameSir X3 Type-C接続版が届いた


aliexpressでGameSir X3が$187.49 なんて値段で売ってるのを発見

あれ?いつのまに発売されてたの?と調べて見ると、Indiegogoでクラウドファンディングをやっていた。

GameSir X3 Type-C-The Ultimate Mobile Controller

GameSir X2と比べて背面に冷却用ファンが追加された、という違いのようだ。

GameSir X2はタイミング逃して買わず、原神をプレイしだしてからGameSir T6miniをやってみたけど、こいつだけGameSirのマッピングアプリ非対応で使えないとか縁がなかったけど

$69 ならちょうどいいか?と1口購入

ちなみに5/12になったらaliexpressの販売ページは $99.97に値下がっていました。

驚いたのは「June 2022」という予定だったものが、 5/20に発送連絡が来たということ。

まあ、5/24に発送手法変更ということでトラッキング番号が再発行になりましたが、5/25に中国を出て5/29に到着という快速具合でした。

で・・・到着

中身

で・・・手持ちのスマホを入れてみる

Androidの「設定」画面で「その他の設定」などにある「OTG接続」を有効化しないと認識できないのですが、Qualcomm/スナップドラゴン SoCのスマホでは認識しましたが、MediaTek SoCのスマホでは認識できませんでした。

動作確認はGameSirアプリを使って行います。GameSirアプリは https://github.com/gamesir123/app/blob/master/readme_en.md から入手します。apkをインストールすると下記の様にGoogle Playが文句を言ってきます。

2022/06/07追記: Google Playストア配布版 でも動く、という話を聞いて試したところ、原神、PS Remote Playで使って見たところ特に問題なく動作しています。

これは「キー入力と画面操作を乗っ取るなんて悪いやつに違いない」ということで警告を出しているというわけです。どうにもならないのでコレは無視します。(Android の今後のバージョンでこういう機能が完全に使えなくされる可能性もあります)

GameSirアプリをインストールして、必要ないろいろな設定をしてから「Gamepas testing」にてボタンの反応を確認します。

動作に問題がなければゲームで遊んで見ます。


StreamLinkだとそのままコントローラとして認識してくれます。

「プレイ開始」を選んでパソコンと接続するとこんな感じ

この「BACKを長押ししてリモートセッションを制御します」というのは、左上の「G」ボタンを長押しする、という意味になります。

とりあえずライザのアトリエを起動してみたところ、まあ普通に動きました。


続いて今回のメイン目的の原神ですが、原神はコントローラに対応していないため、GameSirアプリを入れてマッピング機能を有効にしないと使えません。

また、OPPOスマホの場合、OSの省電力設定の影響で画面上にGameSirアプリのアイコン群は表示されるけど、キーマップ動作はしない、という面倒くさい状態になっていました。

これは原神などの重いソフトを動かすと、他のアプリを強制終了させる、という機能によるものでした。

これを解消するにはOS設定画面からアプリ情報の「GameSir」を選択し、「省エネ」から「バックグラウンド実行を許可する」を選択して、強制終了されないようにする必要がありました。

必要な設定を行ったあと、GameSirアプリを起動して、GameSirアプリ内のMy Gamesに「原神」「StreamLink」などGameSir X3を使って操作したいアプリを登録します。

この場合、「原神」をクリックすると原神用のマッピング設定で起動します。

「StreamLink」をクリックするとマッピング設定を無効化してからStreamLinkが起動します。マッピングをしないからといってStreamLinkを登録しないでいると、原神で遊んだあとStreamLinkを起動すると原神用のマッピング設定のまま動いてしまう形になるので注意が必要です。

マッピング設定を有効にする場合、GameSirアプリでの有効化の他に、GameSir X3側での操作が必要となります。

原神が起動したあと左上の「G」ボタンを、右下の「Home」ボタンを同時に押すと緑丸内の上側のLED1が緑色の点灯に変わり、マッピング機能が有効化されます。

押したあと、下記の様な「GameSirに Gamesir-X3 Type-Cへのアクセスを許可しますか?」というダイアログが表示された場合は「OK」を選択します。

これでアナログキーでの操作ができるようになります。

LED1が緑にならなかったりした場合は、もう1回 G+Homeボタンを押して様子を見てください。

さて、原神の操作をしてみたところ標準で設定されているマッピングはPS4ユーザにとってちょっと使いにくいので、変更しようと思ったのですが、どこで設定変更できるかがよく分かりませんでした。

あ・・・ローディング画面で何かが見える・・・

ということで、下記の赤丸の部分がGameSirアプリのマッピング設定を変更するためのアイコンでした。

ここをタップして設定変更を行います。

割り当てるキーがタップするあたりを設定していきます。

設定完了したら×ボタンタップのあと「Save to accessory」で保存します。

こんなあたりで大丈夫かと思います。


PS4 Proを遊ぶのにSONY純正PS Remote Playというのがありますが、これはコントローラ非対応なので、GameSirアプリでマッピングして遊べます。

スクリーンショットはPS Remote Playアプリ側の制限で撮れませんでした・・・


で・・・GameSir X3ですが、でかいファンがついているのですが、これ、ファン専用Type-Cコネクタにケーブルを繋いで電源供給しない限りファンがまわらないので、かなり面倒くさいんですよね・・・

ファン専用バッテリーとか内蔵してくれればよかったかも?という感じがしなくもないです。

CHUWEI HiPad Proを買ったらがっかりペンタブレットだった件


スナドラ662で、メモリ8GB、ストレージ128GBというスペックにひかれてCHUWEI HiPad Proをペン付きで購入してみました。

8月5日に発送連絡があって、到着したのが8月17日でした。

追加送料払ってなかったのでもっと時間がかかるのかと思っていたら2週間かからないという予想外の到着でした。

ペン付きで買ったので2つ届きました。

裏面は綺麗な感じですね

添付のペンはHiPen H6とありました。

起動後の初期設定は普通のAndroidなので飛ばして、firmware updateを行います。

ここ、メッセージを読み飛ばしていたのですが、アップデート後の再起動でかならず下記の画面でブート失敗します。

画像

ボリュームの下ボタンを押して「Factory data Reset」を実行して初期化をする必要がある、ということです。

なので、ファームウェアアップデートが完了するまでGoogleアカウントの登録などの詳しい設定を行ってはいけない、ということですね。

さて、とりあえず原神を起動して様子見・・・

うーん・・・いまいち

次・・・ペンの動作がどうか確認。

手持ちにWacom Bamboo Inkペンがあったので、今回買ったHiPen H6を並べて見る。

だいたい同じサイズ。

画像

ペン先のサイズがちょっと違うっぽい(なお、Bamboo Inkのが斜めにみえるのは、曲げてしまってしまったため)

HiPad ProはMPP(Microsoft Pen Protocol)採用という話なので、Bamboo InkをMPPモードで電源を入れると使える様になる。

Bamboo Inkで書いた時と

HiPen H6で書いた時と比べると結構筆圧動作が違ってて興味深かったです。

・・・ここまではそんなに問題なさそうに見えますよね

ところが・・・

見ての通りに

ペンの動きに対して、描画が遅すぎる

この動作、CLIP STUDIOだけでなくKritaでも、筆圧検知自体は出来ているけど、遅延が酷い状態でした。

画像

よって、絵描き用途としてまったく向かない感じでした。

このCHUWEI HiPad Proですが、事前にAmazon PrimeがHDで見れる、というのもあったのですが、ChinaR「【CHUWI HiPad Proレビュー】WideVine L1認証済みのCHUWI HiPad ProはAmazonプライムビデオのHD再生に非対応(CHUWI HiPad Pro Don’t Support HD On Amazon Prime Video, Although Got WideVIne L1)」にあるように対応できてない、とかいう問題もあります。

とりあえず、うちのHiPad Proは2万円分のネタになってもらえるように、他の人に貸し出して楽しんでもらうつもりです

ASUS VivoBook E203NAにWindows10とChromeOSを入れた


秋葉原のMLcomputerにいったら整理中の箱の中にASUSの薄いノートが入っていた。

電源ボタンおしてみたけど、電源は入らない、という状態だったけど、「これいくら?」と聞いて見た。

すると、「ASUS E203MA(あとで調べたらCPUがN4000とちょっとスペックが上)でキーボードが使えないジャンク品を3千円としている」ということだったので、3千円で購入した。

裏面みるとネジが1つなく、1つがセロテープで無理矢理とめられていた。

んー、と思いつつ電源ON

F2キーでBIOS/UEFI画面に入ることができた。

スペックを確認するとASUS VivoBook E203NA の下位モデルでCPU N3350、RAM 2GB、eMMC 32GBというものだった。

メインストレージが64GB未満なのは現状Windows10で使うにはキツイものでした。

Windows 10 21H1をインストールして一通りWindows Updateをかけるとデバイスは全て正常に認識しましたが、問題が・・・

そう、OSだけでほぼ全て使ってしまうのです。

あと、注意点として、Windows 10インストール直後のQualcomm Atheros QCA9377ドライバだとバッファローWSR-1800AX4の802.11ax Wi-Fi EasyMesh対応版に接続出来ないという不具合が・・・

Windows Updateを行って下記のv12.0.0.919にアップデートすると接続出来るようになります。

このほかWebブラウザでサイトを見たりしていたら空き容量が2GBを切っているという・・・

裏面のネジがおかしいのもあるので中を確認

増設の余地は全くない構造でした。

基板がどうなっているかは下記の動画をみてもらうと良さそうです。

なお、ネジがちゃんとついていなかったのは、ネジの長さが2種類あって、2本だけ長いものがあるんですが、その2本の使いどころを誤っていたせいでした。

正しくは下記の画像の赤丸の2箇所なんですが、分解した人は下側左右両サイドに使っていました。

さて、ストレージ増設なんてことはできそうにないので、ChromeOS+brunchで起動してみます。

まずはBIOSでSecurebootをdisableにかえてから、Boot ManagerからUSBメモリを選択して起動します。(電源ON後にいきなりBoot Managerを出す手法は分からなかった)

ChromeOSリカバリイメージはrammus、grubで設定するoptionsは「options=enable_updates,pwa」だけでいけるというなかなか素直な状態でした。

Ctrl+Alt+Tからshellを開いて「sudo chromeos-install -dst /dev/mmcblk0」で内蔵ストレージにChromeOSを書き込んで、本体のみでのChromeOS起動を確認しました。

興味深かったのは、いままでbrunchでrammusイメージを元にしてChrome OSで起動したノートパソコンでGoogleアカウントログインを行うと「お使いの Chome OSで~」というメールが来てたのですが、ASUS VivoBook E203NAにChromeOSを入れたやつでは「お使いの ASUS Chromebook Flip C434で~」と、機種名が書かれたメールになっていた。

ベースとしているrammusは「ASUS Chromebook C425, ASUS Chromebook Flip C433, ASUS Chromebook Flip C434」向けイメージなので、わからなくもないんですが

ASUS Chromebook Flip C434 はCore m3-8100Y/RAM 4GB/ストレージ 32GB/14.0インチ1920*1080/タッチパネルあり、とだいぶスペックが違うのになぁ・・・といった感じです。


2022/05/06追記

Google純正となった「Chrome OS Flex」をASUS VivoBook E203NA上で試したところ、特に問題なく動作しました。


2022/07/20追記

ChromeOS Flexの正式版を入れてみましたが、引き続き特に問題無く動作しました。

入れ替え前は5月にインストールしたベータ版時代のものでしたが、そのときは「104.0.5087.0 (Official Build) dev (64ビット)」という状態で、チャンネルが固定となっており、devからstableへの移行ができませんでした。

正式版に入れ直したところ103.0.5060.114 とdev無しのバージョンとなりました。

ChromeOSリカバリイメージを流用して汎用ChromeOSを作り出すBrunch


公式のChromeOSリカバリイメージを利用して、汎用のChromeOSイメージを作り出すBrunchというものを発見。

権利的にはかなり微妙なもの。

とりあえず試してみた。

使用できる条件

UEFIブート可能

Intel CPUの場合、第1世代Intel Coreプロセッサー(Nehalem)以降

AMD CPUの場合、Stoney Ridge世代のみ(E2-90??, A4-91??, A6-92??, A9-94??, Pro A4-4350B, Pro A6-7350B)
Ryzenは非サポート

Nvidia GPUは非サポート

手順0: Ubuntuパッケージの追加

Brunshのshell scriptで「cgpt」と「pv」を使用するため、この2つのパッケージをインストールする

osakanataro@ubuntuserver:~/cros$ sudo apt install cgpt pv
<略>
osakanataro@ubuntuserver:~/cros$

手順1: ChromeOSリカバリイメージを入手

ChromeOSリカバリイメージをGoogleのページからダウンロードする。

ただし、Google公式では一覧ページ的なものは用意されていないので、 https://cros-updates-serving.appspot.com/https://cros.tech/ でURLを調べてダウンロードする。

前者の https://cros-updates-serving.appspot.com/ の方が一覧になっていて分かりやすい。

Brunshで利用できるリカバリイメージは下記の3種類で、ハードウェアによって選択する

「rammus」

ASUS Chromebook C425, ASUS Chromebook Flip C433, ASUS Chromebook Flip C434用リカバリイメージ
 → 第4世代Intel Coreプロセッサー(Haswell)以降の機種向け

「samus」

Google Chromebook Pixel (2015) 用リカバリイメージ
 → 第3世代Intel Coreプロセッサー(Ivy Bridge)以前の機種向け

「grunt」

Acer Chromebook 315 (CB315-2H), HP Chromebook 11A G6 EE / HP Chromebook 11A G8 EE, HP Chromebook 14 db0000-db0999 / HP Chromebook 14A G5, Acer Chromebook 311 (C721), Acer Chromebook Spin 311 (R721T), Lenovo 14e Chromebook, Lenovo Chromebook S345-14, NEC Chromebook Y1 Gen2A, 100e 2nd Gen AMD, 300e 2nd Gen AMD用リカバリイメージ
 → AMD プロセッサー機種向け

ちなみに、プロダクトコードネームからだと具体的にCPUを採用しているかわかりませんが、ChromeOSハードウェア向けにカスタマイズしたcorebootを提供している「MrChromebox.tech」のSupported Devicesを見るとCPU毎に分類されていて参考になります。

さて、ダウンロードしたファイルは、zip形式なので展開します。

osakanataro@ubuntuserver:~/cros$ wget https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin.zip
`chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin.zip' に保存中

chromeos_13421.99.0_samus_recove 100%[=========================================================>]   1.08G  9.04MB/s    時間 1m 51s

2020-12-07 00:24:12 (9.90 MB/s) - `chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin.zip' へ保存完了 [1154643907/1154643907]

osakanataro@ubuntuserver:~/cros$ unzip chromeos_13421.99.0_samus_recovery_stable
-channel_mp-v3.bin.zip
Archive:  chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin.zip
  inflating: chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin
osakanataro@ubuntuserver:~/cros$
osakanataro@ubuntuserver:~/cros$ ls -l
-rw-r--r-- 1 osakanataro osakanataro 2320468480 11月 11 23:54 chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin
-rw-rw-r-- 1 osakanataro osakanataro 1154643907 12月  2 01:55 chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin.zip
osakanataro@ubuntuserver:~/cros$

手順2: Brunshファイルを入手

BrunshのReleaseにアクセスして最新版のBrunshファイルを入手。「brunch_r86_k5.4_stable_20201201.tar.gz」というような感じになっている。

これをダウンロードして、展開する。

osakanataro@ubuntuserver:~/cros$ wget https://github.com/sebanc/brunch/releases/
download/r86-k5.4-stable-20201201/brunch_r86_k5.4_stable_20201201.tar.gz
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 356198827 (340M) [application/octet-stream]
`brunch_r86_k5.4_stable_20201201.tar.gz' に保存中

brunch_r86_k5.4_sta 100%[===================>] 339.70M  8.50MB/s    時間 58s

2020-12-07 09:32:44 (5.85 MB/s) - `brunch_r86_k5.4_stable_20201201.tar.gz' へ保 存完了 [356198827/356198827]

osakanataro@ubuntuserver:~/cros$
osakanataro@ubuntuserver:~/cros$ ls -l
合計 4855664
-rw-rw-r-- 1 osakanataro osakanataro  356198827 12月  3 04:27 brunch_r86_k5.4_stable_20201201.tar.gz
-rwxr-xr-x 1 osakanataro osakanataro      13521 12月  2 05:17 chromeos-install.sh
-rw-r--r-- 1 osakanataro osakanataro 2320468480 11月 11 23:54 chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin
-rw-rw-r-- 1 osakanataro osakanataro 1154643907 12月  2 01:55 chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin.zip
-rw-r--r-- 1 osakanataro osakanataro   33554432 12月  2 05:32 efi_legacy.img
-rw-r--r-- 1 osakanataro osakanataro   33554432 12月  2 05:32 efi_secure.img
-rw-r--r-- 1 osakanataro osakanataro 1073741824 12月  2 05:32 rootc.img
osakanataro@ubuntuserver:~/cros$

手順3: USBメモリへ書き込み

LinuxにUSBメモリを差し込んでからコマンドを実行。

直接USBメモリに書き込む以外にも「-dst ファイル名」と指定することでイメージファイルを作成することもできる。

osakanataro@ubuntuserver:~/cros$ sudo bash chromeos-install.sh -src chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin -dst chromeos.img
Creating image file
0+0 レコード入力
0+0 レコード出力
0 bytes copied, 0.000438446 s, 0.0 kB/s
WARNING: Primary GPT header is invalid
WARNING: Secondary GPT header is invalid
DE9B9ECE-0883-AA43-A8C1-CAEAEAB0E243
       start        size    part  contents
           0           1          PMBR (Boot GUID: DE9B9ECE-0883-AA43-A8C1-CAEAEAB0E243)
           1           1          Pri GPT header
           2          32          Pri GPT table
    19255304    10104776       1  Label: "STATE"
                                  Type: Linux data
                                  UUID: 0E6FAFDE-D6D7-184A-A64D-CD63CF869244
     2117638       65536       2  Label: "KERN-A"
                                  Type: ChromeOS kernel
                                  UUID: 3A09DFE5-08AB-2948-975D-24C1D96A136A
                                  Attr: priority=15 tries=15 successful=0
    10866696     8388608       3  Label: "ROOT-A"
                                  Type: ChromeOS rootfs
                                  UUID: DEC257F3-CB10-5F47-8D04-22E777B01FE7
     2183174       65536       4  Label: "KERN-B"
                                  Type: ChromeOS kernel
                                  UUID: 131595A8-5812-1749-B2C3-D3EFE1B20D9E
                                  Attr: priority=0 tries=15 successful=0
     2478088     8388608       5  Label: "ROOT-B"
                                  Type: ChromeOS rootfs
                                  UUID: D47CACE8-6505-5C49-8DDC-3967F2367108
       16448           1       6  Label: "KERN-C"
                                  Type: ChromeOS kernel
                                  UUID: E8025D6B-7477-2E48-8655-69E8FEF91887
                                  Attr: priority=0 tries=15 successful=0
       16456     2097152       7  Label: "ROOT-C"
                                  Type: ChromeOS rootfs
                                  UUID: C1E18F01-4178-4E4E-9726-B4E212EBF270
     2248712       32768       8  Label: "OEM"
                                  Type: Linux data
                                  UUID: 87C5B1DE-66D1-2645-84BD-1E8B0A6EB040
     2113608           1       9  Label: "reserved"
                                  Type: ChromeOS reserved
                                  UUID: C1D004AE-CD97-124E-864A-BFF3A72A3D6E
     2113609           1      10  Label: "reserved"
                                  Type: ChromeOS reserved
                                  UUID: 1EE850E8-22AC-4E45-A88A-F29C9AC25A93
          64       16384      11  Label: "RWFW"
                                  Type: ChromeOS firmware
                                  UUID: CEAA44C9-C738-7A4A-A372-B043109C1419
     2412552       65536      12  Label: "EFI-SYSTEM"
                                  Type: EFI System Partition
                                  UUID: DE9B9ECE-0883-AA43-A8C1-CAEAEAB0E243
    29360095          32          Sec GPT table
    29360127           1          Sec GPT header
Writing partition 1
8.95MiB 0:00:00 [ 119MiB/s] [<=>                                               ]
Writing partition 2
16.0MiB 0:00:00 [74.7MiB/s] [<=>                                               ]
Writing partition 3
2.00GiB 0:00:47 [43.2MiB/s] [                                            <=>   ]
Writing partition 4
16.0MiB 0:00:00 [57.2MiB/s] [<=>                                               ]
Writing partition 5
2.00GiB 0:00:49 [41.1MiB/s] [                                             <=>  ]
Writing partition 6
 512 B 0:00:00 [3.37KiB/s] [<=>                                                ]
Writing partition 7
1.00GiB 0:00:21 [47.8MiB/s] [                   <=>                            ]
Writing partition 8
16.0MiB 0:00:03 [4.38MiB/s] [  <=>                                             ]
Writing partition 9
 512 B 0:00:00 [10.5KiB/s] [<=>                                                ]
Writing partition 10
 512 B 0:00:00 [26.1KiB/s] [<=>                                                ]
Writing partition 11
8.00MiB 0:00:00 [69.4MiB/s] [<=>                                               ]
Writing partition 12
32.0MiB 0:00:00 [89.6MiB/s] [<=>                                               ]
ChromeOS disk image created.
To boot directly from this image file, add the lines between stars to either:
- A brunch usb flashdrive grub config file (then boot from usb and choose boot from disk image in the menu),
- Or your hard disk grub install if you have one (refer to you distro's online resources).
********************************************************************************
menuentry "ChromeOS (boot from disk image)" {
        rmmod tpm
        img_part=/dev/mapper/ubuntu--vg-root
        img_path=/home/osakanataro/cros/chromeos.img
        search --no-floppy --set=root --file $img_path
        loopback loop $img_path
        linux (loop,7)/kernel boot=local noresume noswap loglevel=7 disablevmx=off \
                cros_secure cros_debug loop.max_part=16 img_part=$img_part img_path=$img_path \
                console= vt.global_cursor_default=0 brunch_bootsplash=default
        initrd (loop,7)/lib/firmware/amd-ucode.img (loop,7)/lib/firmware/intel-ucode.img (loop,7)/initramfs.img
}
********************************************************************************
osakanataro@ubuntuserver:~/cros$

できたchormeos.imgをUSBメモリに書き込んで完成

ノートパソコンで起動

先日手に入れたCore i5-5200Uのノートパソコンで起動してみる。

画像

このBrunch Frameworkの画面がそこそこ時間がかかる。

待つと普通のChromeBookの初期画面になった。

画像

Androidアプリも普通に動くやつになっていた。

画像
画像

上記はsamusイメージをベースにしてたけど、rammusベースにしてみたところ、起動時のgrubでkernel行に「options=alt_touchpad_config」を追加して起動しないとキーボード/タッチパッドが使用できない状態だったが、LTEも使える形になった。

おまけの記録:コマンドが足りなくて失敗した場合のログ

Ubuntu 20.04だとパッケージ「pv」と「cgpt」を追加する必要があった。

osakanataro@ubuntuserver:~/cros$ sudo bash chromeos-install.sh -src chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin -dst chromeos.img
[sudo] osakanataro のパスワード:
cgpt needs to be installed first
osakanataro@ubuntuserver:~/cros$ apt search cgpt
ソート中... 完了
全文検索... 完了
cgpt/bionic 0~R63-10032.B-3 amd64
  GPT manipulation tool with support for Chromium OS extensions

vboot-utils/bionic 0~R63-10032.B-3 amd64
  Chrome OS verified u-boot utilities

osakanataro@ubuntuserver:~/cros$ sudo apt install cgpt
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  linux-hwe-5.4-headers-5.4.0-42 linux-hwe-5.4-headers-5.4.0-45
  linux-hwe-5.4-headers-5.4.0-47 linux-hwe-5.4-headers-5.4.0-51
  linux-hwe-5.4-headers-5.4.0-52
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージが新たにインストールされます:
  cgpt
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
30.7 kB のアーカイブを取得する必要があります。
この操作後に追加で 77.8 kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 cgpt amd64 0~R63-10032.B-3 [30.7 kB]
30.7 kB を 0秒 で取得しました (359 kB/s)
以前に未選択のパッケージ cgpt を選択しています。
(データベースを読み込んでいます ... 現在 350304 個のファイルとディレクトリがインストールされています。)
.../cgpt_0~R63-10032.B-3_amd64.deb を展開する準備をしています ...
cgpt (0~R63-10032.B-3) を展開しています...
cgpt (0~R63-10032.B-3) を設定しています ...
man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ...
osakanataro@ubuntuserver:~/cros$
osakanataro@ubuntuserver:~/cros$ sudo bash chromeos-install.sh -src chromeos_13421.99.0_samus_recovery_stable-channel_mp-v3.bin -dst chromeos.img
pv needs to be installed first
osakanataro@ubuntuserver:~/cros$
osakanataro@ubuntuserver:~/cros$ sudo apt install pv
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  linux-hwe-5.4-headers-5.4.0-42 linux-hwe-5.4-headers-5.4.0-45
  linux-hwe-5.4-headers-5.4.0-47 linux-hwe-5.4-headers-5.4.0-51
  linux-hwe-5.4-headers-5.4.0-52
これを削除するには 'sudo apt autoremove' を利用してください。
提案パッケージ:
  doc-base
以下のパッケージが新たにインストールされます:
  pv
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
48.3 kB のアーカイブを取得する必要があります。
この操作後に追加で 123 kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu bionic/main amd64 pv amd64 1.6.6-1 [48.3 kB]
48.3 kB を 0秒 で取得しました (621 kB/s)
以前に未選択のパッケージ pv を選択しています。
(データベースを読み込んでいます ... 現在 350309 個のファイルとディレクトリがインストールされています。)
.../archives/pv_1.6.6-1_amd64.deb を展開する準備をしています ...
pv (1.6.6-1) を展開しています...
pv (1.6.6-1) を設定しています ...
man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ...
osakanataro@ubuntuserver:~/cros$

GloDroidがninjaのエラーでビルドできない


PinePhoneやOrange Pi OneなどのAllwinner SoCで動くAOSPベースのandroidであるGloDroidというのがある。

これはGoogle Play StoreなどのGoogle関連(GMS)が入っていないので使いづらい。OpenGappsでも入れられないかなぁ?とパッケージをみてみたけど、こちらはTWRP用にカスタマイズされていてよく分からない・・・

GloDroidのgithubを見るとprebuilt_appsなんてレポジトリがありfdroidとkodiのインストールについての定義がある。ここらを応用すれば何かできないかなぁ、と思ってGloDroidを自分でビルドしてみることにした。

最初Ubuntu 18.04環境で作ってみたけど、うまくいかないのでGoogleのドキュメント上では推奨されているUbuntu 14.04環境作ってみたりしたけど、うまくいかなかった。

エラーの状況

Ubuntu 18.04でもUbuntu 14.04でもほぼ同じで下記のようなエラーが出力されます。

============================================
[100% 451/451] out/soong/.bootstrap/bin/soong_build out/soong/build.ninja
FAILED: out/soong/build.ninja
out/soong/.bootstrap/bin/soong_build -t -l out/.module_paths/Android.bp.list -b out/soong -n out -d out/soong/build.ninja.d -globFile out/soong/.bootstrap/build-globs.ninja -o out/soong/build.ninja Android.bp
Killed
10:47:31 soong bootstrap failed with: exit status 1
ninja: build stopped: subcommand failed.build/make/core/main.mk:21: recipe for target 'run_soong_ui' failed
make: *** [run_soong_ui] Error 1
osakanataro@ubuntuserver:~/GloDroid$

out/soong.log の最後は下記のようなエラーです。

2020/06/12 10:47:31.168342 build/soong/ui/build/exec.go:95: soong bootstrap failed with: exit status 1

Ubuntu 14.04の場合

Javaのバージョンが古いので新しいOpenJDKを使える様にする。

$ sudo add-apt-repository ppa:openjdk-r/ppa
$ sudo apt install openjdk-13-jdk

Googleのドキュメント(Establishing a Build Environment)記載のパッケージをインストール。

$ sudo apt install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

また、上記のNoteに記載されている「python-networkx」と「libnss-sss:i386」も必要で、これが無いことでninjaのエラーがでていました。

$ sudo apt install python-networkx libnss-sss:i386

Repoのインストールを「Downloading the Source」記載の手順で行います。

$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
 gpg --recv-key 8BB9AD793E8E6153AF0F9A4416530D5E920F5C65
$ curl https://storage.googleapis.com/git-repo-downloads/repo.asc | gpg --verify - ~/bin/repo

repo内部ではgitコマンドを使用するためgitの初期設定も行います。

$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"

次にGloDroidで要求されているパッケージをインストール。(記述にはrepoが含まれてますがパッケージじゃないので抜く)

$ sudo apt install swig  python-dev python3-dev libssl-dev flex bison device-tree-compiler

で・・・この後、試行錯誤した結果、さらに以下のパッケージも必要でした。

$ sudo apt install python-pip gettext gdisk

Ubuntu 18.04の場合

Ubuntu 14.04の場合とだいたい一緒でした。

いまコンパイルして実証中です・・・(まだ結果が出ていない

2020/06/13 22:39 うーん・・・エラーだ

[100% 8/8] out/soong/.bootstrap/bin/soong_build out/soong/build.ninja
FAILED: out/soong/build.ninja
out/soong/.bootstrap/bin/soong_build -t -l out/.module_paths/Android.bp.list -b out/soong -n out -d out/soong/build.ninja.d -globFile out/soong/.bootstrap/build-globs.ninja -o out/soong/build.ninja Android.bp
Killed
22:37:24 soong bootstrap failed with: exit status 1
ninja: build stopped: subcommand failed.
#### failed to build some targets (02:38:03 (hh:mm:ss)) ####

out/soong.log の最後のあたりはこんな感じ

2020/06/13 19:59:25.251629 build/soong/ui/build/dumpvars.go:109: PRODUCT_SOONG_NAMESPACES
2020/06/13 19:59:25.252084 build/soong/ui/build/exec.go:57: prebuilts/build-tools/linux-x86/bin/nsjail [-x build/blueprint/bootstrap.bash -H android-build --cwd /home/osakanataro/GloDroid -t 0 -e --proc_rw -u nobody -g nogroup --rlimit_as soft --rlimit_core soft --rlimit_cpu soft --rlimit_fsize soft --rlimit_nofile soft -B / --disable_clone_newcgroup -q -- -t]
2020/06/13 19:59:25.326955 build/soong/ui/build/exec.go:57: prebuilts/build-tools/linux-x86/bin/nsjail [-x out/soong/.bootstrap/bin/soong_env -H android-build --cwd /home/osakanataro/GloDroid -t 0 -e --proc_rw -u nobody -g nogroup --rlimit_as soft --rlimit_core soft --rlimit_cpu soft --rlimit_fsize soft --rlimit_nofile soft -B / --disable_clone_newcgroup -q -- out/soong/.soong.environment]
2020/06/13 19:59:25.761444 build/soong/ui/build/exec.go:57: prebuilts/build-tools/linux-x86/bin/nsjail [-x prebuilts/build-tools/linux-x86/bin/ninja -H android-build --cwd /home/osakanataro/GloDroid -t 0 -e --proc_rw -u nobody -g nogroup --rlimit_as soft --rlimit_core soft --rlimit_cpu soft --rlimit_fsize soft --rlimit_nofile soft -B / --disable_clone_newcgroup -q -- -d keepdepfile -w dupbuild=err -j 2 --frontend_file out/.ninja_fifo -f out/soong/.minibootstrap/build.ninja]
2020/06/13 19:59:27.066701 build/soong/ui/build/exec.go:57: prebuilts/build-tools/linux-x86/bin/nsjail [-x prebuilts/build-tools/linux-x86/bin/ninja -H android-build --cwd /home/osakanataro/GloDroid -t 0 -e --proc_rw -u nobody -g nogroup --rlimit_as soft --rlimit_core soft --rlimit_cpu soft --rlimit_fsize soft --rlimit_nofile soft -B / --disable_clone_newcgroup -q -- -d keepdepfile -w dupbuild=err -j 2 --frontend_file out/.ninja_fifo -f out/soong/.bootstrap/build.ninja]
2020/06/13 22:37:24.168572 build/soong/ui/build/exec.go:95: soong bootstrap failed with: exit status 1