2017/11/14(火) [n年前の日記]
#1 [raspberrypi][lua][love2d] Raspberry Pi Zero W + love2dで音が鳴らせなくてハマっていたり
Raspberry Pi Zero W + love2d で音が鳴らせなくてハマっていたり。環境は、raspbian stretch。
公式リポジトリ版の SDL2 + love2d なら音が鳴るのかなと疑問が湧いたので試してみたのだけど、公式リポジトリ版も音は鳴らなかった。トホホ。
自分でSDL2をビルドする際に、--disable-pulseaudio をつけないでビルドしたら、pulseaudio が無効にならずに音が鳴ってくれるのでは、と期待して外してビルドしてみたけどこれまた変化なし。love2dのビルドまで含めて5時間ぐらいかかったのに…。トホホ。
公式リポジトリ版ですら音が鳴らないということは、どうも raspbian stretch上では love2d も SDL2 も音が鳴らない状態のまま放置されているのでは、という不安がムクムクと。色々ググってみても、どの情報も raspbian stretch の前の版、raspbian jesiie での話ばかりなわけで。
公式リポジトリ版の SDL2 + love2d なら音が鳴るのかなと疑問が湧いたので試してみたのだけど、公式リポジトリ版も音は鳴らなかった。トホホ。
自分でSDL2をビルドする際に、--disable-pulseaudio をつけないでビルドしたら、pulseaudio が無効にならずに音が鳴ってくれるのでは、と期待して外してビルドしてみたけどこれまた変化なし。love2dのビルドまで含めて5時間ぐらいかかったのに…。トホホ。
公式リポジトリ版ですら音が鳴らないということは、どうも raspbian stretch上では love2d も SDL2 も音が鳴らない状態のまま放置されているのでは、という不安がムクムクと。色々ググってみても、どの情報も raspbian stretch の前の版、raspbian jesiie での話ばかりなわけで。
◎ 公式リポジトリ版のSDL2とlove2dのインストール方法。 :
まずは自分でビルドした版をアンインストール。SDL2 や love2d をビルドしたディレクトリに入って。
全部終わったら、公式版をインストール。
公式版はOpenGLを使うことが前提のバイナリになってるので、Raspberry Pi Zero W上で GL driver を有効にして、OpenGLを使えるようにする。公式には、Pi Zero系でGL driverはサポートされてないし、使おうとすると動作が不安定になるけれど、有効にできないわけでもない。
Advanced Oprions -> GL Driver。以下の3つが出てくるので、G1 か G2 を選ぶ。今回、G1を選んだら、aplay hoge.wav ですら音が出なくなったので、G2を選んだ。
Finish を選ぶと「Reboot(再起動)するか?」と尋ねてくるけど「いいえ」を選んで、/boot/config.txt を編集。
以下のように、cma-128 を追加する。
sudo reboot で再起動。OpenGL が有効になった状態で起動してるか動作確認。
音が鳴るか確認。
_R-Pi Troubleshooting - eLinux.org
_とりあえずこれだけ知っておけばなんとかなるRaspberry Piのオーディオ設定 - mattintosh note
で。既に書いたけど、この状態でも love2dで音は鳴らなかった。残念。
sudo make uninstall
全部終わったら、公式版をインストール。
sudo aptitude install libsdl2-2.0-0 libsdl2-dev libsdl2-gfx-1.0-0 libsdl2-gfx-dev libsdl2-image-2.0-0 libsdl2-image-dev libsdl2-mixer-2.0-0 libsdl2-mixer-dev libsdl2-net-2.0-0 libsdl2-net-dev libsdl2-ttf-2.0-0 libsdl2-ttf-dev sudo aptitude install love
公式版はOpenGLを使うことが前提のバイナリになってるので、Raspberry Pi Zero W上で GL driver を有効にして、OpenGLを使えるようにする。公式には、Pi Zero系でGL driverはサポートされてないし、使おうとすると動作が不安定になるけれど、有効にできないわけでもない。
sudo raspi-config
Advanced Oprions -> GL Driver。以下の3つが出てくるので、G1 か G2 を選ぶ。今回、G1を選んだら、aplay hoge.wav ですら音が出なくなったので、G2を選んだ。
G1 GL (Full KMS) OpenGL desktop driver with full KMS G2 GL (Fake KMS) OpenGL desktop driver with fake KMS G3 Legacy Original non-GL desktop driver「 The xxxx KMS GL driver is enabled.」と表示される。
Finish を選ぶと「Reboot(再起動)するか?」と尋ねてくるけど「いいえ」を選んで、/boot/config.txt を編集。
sudo vi /boot/config.txt
以下のように、cma-128 を追加する。
dtoverlay=vc4-fkms-v3d ↓ dtoverlay=vc4-fkms-v3d,cma-128
dtoverlay=vc4-kms-v3d ↓ dtoverlay=vc4-kms-v3d,cma-128
sudo reboot で再起動。OpenGL が有効になった状態で起動してるか動作確認。
glxgearsギアが表示されて、正常な色と、それなりのフレームレートで動いてくれたら、上手く行ってる。
音が鳴るか確認。
aplay hoge.wav鳴らないなら、以下を参考にして設定を見直す。
_R-Pi Troubleshooting - eLinux.org
_とりあえずこれだけ知っておけばなんとかなるRaspberry Piのオーディオ設定 - mattintosh note
で。既に書いたけど、この状態でも love2dで音は鳴らなかった。残念。
◎ retropie-setupを利用しようとしたけれど。 :
_RetroPie/RetroPie-Setup
$ git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git $ cd RetroPie-Setup $ sudo ./retropie_setup.sh sdl2 Sorry - Raspbian/Debian Stretch (and newer) is not yet supported on the RPI Distributor ID: Raspbian Description: Raspbian GNU/Linux 9.1 (stretch) Release: 9.1 Codename: stretchraspbian stretch は対応してねえよと言われてしまった…。
[ ツッコむ ]
以上です。