2017/11/19(日) [n年前の日記]
#1 [raspberrypi][love2d] raspbian stretch は Raspberry Pi Zero W に対応してないのかもしれない
Raspberry Pi Zero W に raspbian stretch をクリーンインストールして、love2d (love) を動かしてみたのだけど。
結局、love2d で音は鳴らなかった。鳴らそうとすると、Illegal instruction と表示されてしまう。
クリーンインストールした直後の raspbian stretch で音が鳴らないのだから、公式リポジトリ版のパッケージを使うと音が鳴らない、という状態は間違いないのではないかなと。
ということで、状況としては、以下のような状態で。
推測だけど、raspbian stretch は一見すると Raspberry Pi Zero W上でも動くように見えてるけど、実はいくつかのパッケージは Pi2 / Pi3用 = ARMv7を前提としてビルドされていて、Pi1 / Zero系 = ARMv6が載ってる Raspberry Pi上では動かないのではないだろうか。
描画関係のパッケージは見た目ですぐに動かないことが分かるから、そのあたりの作業ミスはしてないのだろうけど、音関係はチェック作業が十分にできていない可能性がありそう。プログラマーという人種は音関係を軽視する人が結構多いので、チェック漏れがあっても、まあ仕方ないのかもしれない。
もちろん、自分が音関係で必要な作業を忘れていて音が鳴らない可能性もあるけれど。でも、pulseaudio 関係はアンインストールしてみたり、そもそもインストールされてなかったりもするし…。
大体にして、raspbian jessie 上では、巷の解説ページ通りに作業すると、すんなり動くし音が鳴るわけで。であれば、どう考えても raspbian stretch がおかしいだろうと。
sudo aptitude install love sudo raspi-config -> GL driver enable sudo reboot
結局、love2d で音は鳴らなかった。鳴らそうとすると、Illegal instruction と表示されてしまう。
クリーンインストールした直後の raspbian stretch で音が鳴らないのだから、公式リポジトリ版のパッケージを使うと音が鳴らない、という状態は間違いないのではないかなと。
ということで、状況としては、以下のような状態で。
Hardware | OS | GL driver | love2d sound play |
---|---|---|---|
Raspberry Pi3 | raspbian stretch | enable | success |
Raspberry Pi Zero W | raspbian jessie | disable | success |
Raspberry Pi Zero W | raspbian stretch | enable | failure |
Raspberry Pi Zero W | raspbian stretch | disable | failure |
推測だけど、raspbian stretch は一見すると Raspberry Pi Zero W上でも動くように見えてるけど、実はいくつかのパッケージは Pi2 / Pi3用 = ARMv7を前提としてビルドされていて、Pi1 / Zero系 = ARMv6が載ってる Raspberry Pi上では動かないのではないだろうか。
描画関係のパッケージは見た目ですぐに動かないことが分かるから、そのあたりの作業ミスはしてないのだろうけど、音関係はチェック作業が十分にできていない可能性がありそう。プログラマーという人種は音関係を軽視する人が結構多いので、チェック漏れがあっても、まあ仕方ないのかもしれない。
もちろん、自分が音関係で必要な作業を忘れていて音が鳴らない可能性もあるけれど。でも、pulseaudio 関係はアンインストールしてみたり、そもそもインストールされてなかったりもするし…。
大体にして、raspbian jessie 上では、巷の解説ページ通りに作業すると、すんなり動くし音が鳴るわけで。であれば、どう考えても raspbian stretch がおかしいだろうと。
◎ 解決策。 :
ということで、Raspberry Pi上で love2d を動かしてみたい、という場合は、以下の選択肢になるのだろうなと。
ちなみに、raspbian jessie のイメージは以下で入手可能。
_Index of /pub/raspberrypi/raspbian/images/raspbian-2017-07-05
_Index of /pub/raspberrypi/raspbian_lite/images/raspbian_lite-2017-07-05
- A. Raspberry Pi2 / Pi3 を入手して使う。
- B. Raspberry Pi Zero系で動かしたいなら、raspbian jessie をインストールして、その上で love2d を使う。
ちなみに、raspbian jessie のイメージは以下で入手可能。
_Index of /pub/raspberrypi/raspbian/images/raspbian-2017-07-05
_Index of /pub/raspberrypi/raspbian_lite/images/raspbian_lite-2017-07-05
◎ pilove は Raspberry Pi Zero W に対応してないらしい。 :
解決策の選択肢として、
ちなみに、pilove は以下から入手できる。
_PiLove - LOVE on RaspberryPI
_Index of /downloads
pilove の /etc/network/interfaces の中には、無線LANの ssid や pskのパスワードを設定できそうな感じの記述があったので、そこを書き換えれば無線LANが使えるかなと期待したのだけど。試しに修正してみても再起動すると何故か元に書き戻されてしまって首を捻ったり。
ググってみたら、以下のやり取りが。
_Pi Zero W - Issue #1 - pipaos/pipaos
_wifi on Pi Zero W - Issue #3 - skarbat/pilove
「sudo rpi-update をしたら状況が変わるかも」等が書いてあるけど。無線LANが繋がらないのだから sudo rpi-update はできないわけで。「Pi3に microSD を差して sudo rpi-update してどうにかなった」てな事例も書かれてるようだけど、ソレって Zero W しか持ってなかったら手詰まりだよなと。
そんな状態なので、pilove は、Pi1 / Pi2 / Pi3 / Pi Zero を持ってる人なら利用できるかもしれないけれど Zero W は未対応、という状況っぽい。
Zero W も有線LANが使える状態にしてあれば利用できる可能性があるかもしれないけど、USB接続の有線LANアダプタを新規購入する等の追加投資が必要になるわけで。ちと厳しい。
- C. microSD を買ってきて pilove のイメージをインストールしてソレを使ってどうにか頑張る。
ちなみに、pilove は以下から入手できる。
_PiLove - LOVE on RaspberryPI
_Index of /downloads
pilove の /etc/network/interfaces の中には、無線LANの ssid や pskのパスワードを設定できそうな感じの記述があったので、そこを書き換えれば無線LANが使えるかなと期待したのだけど。試しに修正してみても再起動すると何故か元に書き戻されてしまって首を捻ったり。
ググってみたら、以下のやり取りが。
_Pi Zero W - Issue #1 - pipaos/pipaos
_wifi on Pi Zero W - Issue #3 - skarbat/pilove
「sudo rpi-update をしたら状況が変わるかも」等が書いてあるけど。無線LANが繋がらないのだから sudo rpi-update はできないわけで。「Pi3に microSD を差して sudo rpi-update してどうにかなった」てな事例も書かれてるようだけど、ソレって Zero W しか持ってなかったら手詰まりだよなと。
そんな状態なので、pilove は、Pi1 / Pi2 / Pi3 / Pi Zero を持ってる人なら利用できるかもしれないけれど Zero W は未対応、という状況っぽい。
Zero W も有線LANが使える状態にしてあれば利用できる可能性があるかもしれないけど、USB接続の有線LANアダプタを新規購入する等の追加投資が必要になるわけで。ちと厳しい。
◎ 余談。 :
raspbina stretch上でも、問題が起きてるパッケージをどうにか見つけて自分でビルド、という解決策があるのかもしれないけど…。
と言っても、誰かがそのあたりの作業をしないとずっとこのまま放置状態になるのでマズいのだけど…。しかしそもそも Raspberry Pi1 / Zero系上で love2d を動かしたい人が世の中に一体どれだけ居るんだよ、という気もするわけで。
ということで、Raspberry Pi1 / Zero上でも60FPSで動かせる2Dゲーム制作用の何かがあればヨサゲかもと期待して色々やってたけど、ちと残念な結果に。音が鳴らないのではゲームっぽくならないよな…。雰囲気出ないよな…。
まあ、前述のとおり、Zero系でも raspbian jessie を使えばなんとかなるけど。しかし、今現在NOOBSを使ってインストールされる raspbian stretch で鳴らないってのが困るなと。
Zero系で GL driver を有効にして love2d を動かすと、30FPSぐらいまで遅くなるのも気になる。OpenGL ESで描画すると60FPSが出るし、Pi3上で GL driver を使っても60FPS出るんだけどな…。GL driver を使うと Raspberry Piの実力が発揮できない、ということかもしれない。
- どのパッケージが間違ってビルドされているのか、見つけ出せる気がしない。たくさんあるし、何をどうやって動作確認すればいいのやら。
- 実機上でのビルドは時間がかかるから、一つ一つビルドし直してるうちに辟易して投げ出しそう。
- Intel CPUが載ったPC上で Raspberry Pi用バイナリをビルドすることも可能らしいけど、環境整備の仕方が分からなかった。
と言っても、誰かがそのあたりの作業をしないとずっとこのまま放置状態になるのでマズいのだけど…。しかしそもそも Raspberry Pi1 / Zero系上で love2d を動かしたい人が世の中に一体どれだけ居るんだよ、という気もするわけで。
- Pi3を買えば、何の苦労もなく、しかもそれなりの速度で動かせるし。
- どうせ Zero系を使う場面って、GPIOで何か制御するのがメインじゃないのかと。とにかく遅いし。
- 学校でZero系導入してプログラミング教育に使うと言っても、どうせ Scratch 1.x を触らせて終わりだろう。Zero系は Scratch 2.0 すら動かないし。
- mp3 や ogg を鳴らすだけなら、mpg123、mpg321、vorbis-tools を入れれば一応鳴るわけで。love2d で鳴らそうとすると困るって話なだけで。
ということで、Raspberry Pi1 / Zero上でも60FPSで動かせる2Dゲーム制作用の何かがあればヨサゲかもと期待して色々やってたけど、ちと残念な結果に。音が鳴らないのではゲームっぽくならないよな…。雰囲気出ないよな…。
まあ、前述のとおり、Zero系でも raspbian jessie を使えばなんとかなるけど。しかし、今現在NOOBSを使ってインストールされる raspbian stretch で鳴らないってのが困るなと。
Zero系で GL driver を有効にして love2d を動かすと、30FPSぐらいまで遅くなるのも気になる。OpenGL ESで描画すると60FPSが出るし、Pi3上で GL driver を使っても60FPS出るんだけどな…。GL driver を使うと Raspberry Piの実力が発揮できない、ということかもしれない。
[ ツッコむ ]
以上です。