mieki256's diary



2017/11/15(水) [n年前の日記]

#1 [raspberrypi][love2d] piloveを試用

Raspberry Pi上で love2d を動かすことに特化した、pilove というSDカードイメージがあるようで。

_PiLove - LOVE on RaspberryPI

もし、コレを使って音が鳴れば、少なくとも Raspberry Pi Zero W + love2d で音が鳴る状態にすることは不可能ではない、てなことぐらいは分かるかもしれないなと思えてきたので試用してみようかなと。

インストール方法。 :

公式サイト上には、pilove 0.3 のリンクしかないけれど、 _Index of /downloads には 0.4 が置いてあったので、pilove 0.4 (pilove-0.4.img.gz)をDL。変更履歴は、 _pilove/changelog.txt に書いてある。

解凍すると、中には .img ファイルが入ってた。

Windows10 x64 + _Win32 Disk Imager 1.0.0 を使って、.imgファイルを microSDに書き込む。今回は、Team製 8GB の microSDHC に書き込んでみた。

Raspberry Pi Zero W に microSDHC を差して起動。デフォルトユーザ名は sysop。パスワードは posys。

love2dの動作確認。 :

/usr/local/games/love-0.10.2/src/love を実行。

パーミッションが違うと怒られた。覗いてみたら、所有者について sysop と root が混在してる。とりあえず変更してみる。
cd /usr/local/games/love-0.10.2/src
sudo chown sysop:sysop *
sudo chown sysop:sysop ./.*

一々場所を指定して起動するのは面倒臭いので alias に登録。~/.bashrc に追記しておく。
nano ~/.bashrc
alias love='/usr/local/games/love-0.10.2/src/love'

あるいは、該当の場所まで PATH を通すとか。
export PATH=$PATH:/usr/local/games/love-0.10.2/src

一応、何も指定しないで love を実行したら、例の画面は表示された。

問題点。 :

現状では、Raspberry Pi Zero W の WiFi(無線LAN)が使えない。pilove は、raspbian jessie を元にして構築してあるらしいけど…。無線LAN関係は入ってないのか…。

LAN端子を備えた Raspberry Pi1 / Pi2 / Pi3 ならどうにかなるのかもしれないが、無線LANしかついてない Raspberry Pi Zero W では外部からアクセスしようがない。となると、love2d用のソースも、画像ファイルも、サウンドファイルも転送できない。これでは動作確認すら満足にできない…。結局音は鳴るのか、鳴らないのか。これでは分からん…。

#2 [raspberrypi] Raspberry Pi Zero Wにraspbian jessieをインストール

piloveをビルドできないか試したくなってきたので、raspbian jessie を Raspberry Pi Zero W上にインストール。ちなみに、raspbian の現行版は stretch。一つ前の版が jessie。

raspbian jessieを入手。 :

raspbian jessie を入手しようとしたものの、公式サイト上では見つからず。

_Raspberry Pi Downloads - Software for the Raspberry Pi

しかし、JAISTのサーバに raspbian jessie が残ってた。

_Index of /pub/raspberrypi/raspbian_lite/images/raspbian_lite-2017-07-05
_Index of /pub/raspberrypi/raspbian/images/raspbian-2017-07-05

2017-07-05-raspbian-jessie.zip をDLして解凍。中に入ってた .img を Win32 Disk Imager を使って microSDHC (Team製 8GB)に書き込み。Raspberry Pi Zero W に差し込んで起動。すんなり起動してくれた。

色々設定。 :

画面解像度、ホスト名、ロケール等を設定。piユーザのパスワードも変更。
sudo raspi-config

rootのパスワード変更 + ユーザを追加。以下を参考に作業。

_RaspberryPiをRaspbianで使う場合の初期設定メモ(ユーザ追加) - Qiita

sudo passwd root
sudo adduser 新規ユーザ名
sudo gpasswd -a 新規ユーザ名 sudo
sudo gpasswd -d pi sudo

sudo nano /etc/sudoers.d/010_pi-nopasswd
or
sudo nano /etc/sudoers
pi ALL=(ALL) NOPASSWD: ALL をコメントアウトして、piユーザが root になれないようにする。

usermod を使って、新規ユーザを各グループに登録
$ groups pi
pi : pi adm dialout cdrom audio video plugdev games users input netdev spi i2c gpio

$ sudo usermod -aG sudo,pi,adm,dialout,cdrom,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio 新規ユーザ名

$ groups 新規ユーザ名
新規ユーザ名 : 新規ユーザ名グループ adm dialout cdrom sudo audio video plugdev games users input netdev pi spi i2c gpio

リポジトリのURLを変更。 :

デフォルト設定だとアクセスが遅かったので、日本のミラーサーバのURLに変更。今回は JAIST を利用させてもらうことに。
sudo nano /etc/apt/sources.list

以下を追加して、元々のURLはコメントアウト。
deb http://ftp.jaist.ac.jp/raspbian/ jessie main contrib non-free rpi

apt-get でパッケージ等を更新。
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo rpi-update

フォントのインストール。 :

sudo aptitude install fonts-ipafont fonts-ipaexfont fonts-takao fonts-mplus fonts-migmix fonts-mmcedar fonts-umeplus fonts-motoya-l-maruberi fonts-motoya-l-cedar fonts-horai-umefont

sudo aptitude install xfonts-mplus ttf-kochi-gothic-naga10 ttf-kochi-mincho-naga10 xfonts-naga10 xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable xfonts-shinonome
xfonts-* は、今時は要らないかも。

日本語フォルダ名を英語フォルダ名に変更。 :

/home/pi/ 以下に日本語のフォルダ名がずらずら並んでるけど、CUIで作業する際に指定が面倒臭い。英語名にする。
sudo apt-get install xdg-user-dirs-gtk
LANG=en_GB.utf8 xdg-user-dirs-gtk-update
LANG=C ではなくて LANG=en_GB.utf8 であることに注意。

しかし、上手く行かない。以下ならなんとかなった。ただし、古い日本語フォルダ名が残ってしまって、それらは自分で削除しないといけなかった。
LANG=en_GB.utf8 xdg-user-dirs-update --force

_Ubuntu のデスクトップ環境のフォルダ名を日本語から英語にする - Qiita

自動ログイン設定の変更。 :

piユーザではなく、新規ユーザで自動ログインするようにしたい。
sudo vi /etc/lightdm/lightdm.conf
[SeatDefaults]
autologin-user=ユーザ名
autologin-user-timeout=0

_Debian Jessie Wheezy 自動ログイン lightdm系 ? Linux. リナックス. ヒト ノ タメ ノ.

IPv6無効化。 :

sudo nano /etc/sysctl.conf

以下を追加。
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

sudo sysctl -p を実行して反映。

_[Raspbian] IPv6を無効にする方法(Raspbian Jessie Lite) - Life with IT

sshの接続が切れないように設定。 :

/etc/ssh/sshd_config の ClientAliveInterval を設定。
sudo nano /etc/ssh/sshd_config
ClientAliveInterval 15

vim をインストール。 :

sudo aptitude install vim
sudo aptitude install vim-nox

vimの設定変更。せめてソースコードの色付けぐらいはする。
vi ~/.vimrc
syntax on

サウンド再生や変換用ツールをインストール。 :

sudo aptitude install mpg321 mpg123 vorbis-tools flac sox libsox-fmt-mp3 libsox-fmt-all

wav, mp3, ogg の再生は以下。
aplay hoge.wav
mpg123 hoge.mp3
ogg123 hoge.ogg

でも、sox に入ってる play を使えば大体のフォーマットは再生できる模様。mp3は再生できなかったが、libsox-fmt-mp3 をインストールしたら再生できるようになった。
play hoge.flac
play hoge.wav
play hoge.ogg
play hoge.mp3

_Debian User Forums - View topic - Can't play mp3 files with play (sox)
_SoX(Sound eXchange)でMP3を扱う

microSDHCの速度測定。 :

sudo aptitude install hdparm
sudo hdparm -t /dev/mmcblk0

piloveをビルドしようと試みたが失敗。 :

ここまでやっておいてアレだけど、raspbian jessie 上では、pilove をビルドできなかった。

_skarbat/pilove: Love2D on the Raspberry PI

「Intelベースシステム、QEmu, NBDドライバ、xsysrootツールが必要」と書いてある。Raspberry Pi 実機で作るわけではなかったのか…。しかも pipaOS がどうのこうのと書いてある。なんやねん。そのOS。

retropie-setupを利用してSDL2をインストールしようと試みたが失敗。 :

piloveがダメなら、retropie-setup はどうだろう。

_RetroPie/RetroPie-Setup: Shell script to set up a Raspberry Pi/Odroid/PC with RetroArch emulator and various cores

mkdir retropie-setup
cd retropie-setup
git clone https://github.com/RetroPie/RetroPie-Setup.git
cd /RetroPie-Setup
sudo ./retropie_setup.sh sdl2
なんだかよく分からないメニュー画面が出てきた。SDL2だけをビルドしてくれるわけではナサゲ。

#3 [raspberrypi][love2d] raspbian jessie上でSDL2とlove2dをビルド

pilove も retropie-setup も raspbian jessie 上で動かせなかったので、仕方なく以前と同様の手順でビルド。SDL2は OpenGL を無効にしてビルドすることで、Raspberry Pi の OpenGL ES を使って描画できるようにする。

SDL2のビルド。 :

_Golang と SDL2 でゲームを作る - KaoriYa
_SDL2-2.0.6 on Raspberry Pi - ChoccyHobNob

sudo aptitude install automake build-essential mercurial qt5-default libtool libasound2-dev libaudio-dev libesd0-dev libsndfile1-dev libmodplug-dev libopenal-dev libfontconfig1-dev libpango1.0-dev freeglut3-dev libfreeimage-dev libjpeg-dev libtiff5-dev libwebp-dev libxcursor-dev libxi-dev libxrandr-dev libxss-dev libudev-dev libsmpeg-dev libxinerama-dev
mkdir ~/sdl2
cd ~/sdl2
wget https://www.libsdl.org/release/SDL2-2.0.5.tar.gz
tar xzf SDL2-2.0.5.tar.gz
cd SD2-2.0.5
mkdir build && cd build

configure をする段階で、--host=arm-raspberry-linux-gnueabihf をつけたり外したりしてみた。
../configure --disable-pulseaudio --disable-esd --disable-video-mir --disable-video-wayland --disable-video-x11 --disable-video-opengl

SDL2 Configure Summary:
Building Shared Libraries
Building Static Libraries
Enabled modules : atomic audio video render events joystick haptic power filesystem threads timers file loadso cpuinfo assembly
Assembly Math   :
Audio drivers   : disk dummy oss alsa(dynamic) nas(dynamic)
Video drivers   : dummy opengl_es2
Input drivers   : linuxev linuxkd
Using libudev   : YES
Using dbus      : YES
Using ime       : YES
Using ibus      : NO
Using fcitx     : NO
../configure --host=arm-raspberry-linux-gnueabihf --disable-pulseaudio --disable-esd --disable-video-mir --disable-video-wayland --disable-video-x11 --disable-video-opengl

SDL2 Configure Summary:
Building Shared Libraries
Building Static Libraries
Enabled modules : atomic audio video render events joystick haptic power filesystem threads timers file loadso cpuinfo assembly
Assembly Math   :
Audio drivers   : disk dummy oss alsa(dynamic) nas(dynamic)
Video drivers   : rpi dummy opengl_es1 opengl_es2
Input drivers   : linuxev linuxkd
Using libudev   : YES
Using dbus      : YES
Using ime       : YES
Using ibus      : NO
Using fcitx     : NO

どうやら、--host=arm-raspberry-linux-gnueabihf をつけて configure しないと、Video driver に rpi が出てこない模様。このオプションは必須っぽいな…。

ちなみに、「--disable-video-mir --disable-video-wayland --disable-video-x11 --disable-video-opengl」の指定で、OpenGL を無効にしているらしい。

raspbian jessie ではなく、raspbian stretch + SDL2-2.0.5 で configure した場合の結果は以下。
../configure --host=arm-raspberry-linux-gnueabihf --disable-pulseaudio --disable-esd --disable-video-mir --disable-video-wayland --disable-video-x11 --disable-video-opengl

SDL2 Configure Summary:
Building Shared Libraries
Building Static Libraries
Enabled modules : atomic audio video render events joystick haptic power filesystem threads timers file loadso cpuinfo assembly
Assembly Math   :
Audio drivers   : disk dummy oss alsa(dynamic) nas(dynamic) sndio
Video drivers   : rpi dummy opengl_es1 opengl_es2
Input drivers   : linuxev linuxkd
Using libudev   : YES
Using dbus      : YES
Using ime       : YES
Using ibus      : YES
Using fcitx     : NO

raspbian jessie上で configure した時と違って、Audio に、sndio というのがついてる。libsndio-dev をアンインストールしたほうがいいのかな。
sudo aptitude remove libsndio-dev

libsndio-dev をアンインストールした状態で configure すると以下になった。
SDL2 Configure Summary:
Building Shared Libraries
Building Static Libraries
Enabled modules : atomic audio video render events joystick haptic power filesystem threads timers file loadso cpuinfo assembly
Assembly Math   :
Audio drivers   : disk dummy oss alsa(dynamic) nas(dynamic)
Video drivers   : rpi dummy opengl_es1 opengl_es2
Input drivers   : linuxev linuxkd
Using libudev   : YES
Using dbus      : YES
Using ime       : YES
Using ibus      : YES
Using fcitx     : NO

makeしてインストール。
make
sudo make install

love2dをビルド。 :

各ページを眺めながら、必要になりそうなパッケージを列挙してインストール。

_Building LOVE (日本語) - LOVE
sudo aptitude install build-essential pkg-config libfreetype6-dev libopenal-dev libvorbis-dev libtheora-dev libmpg123-dev libluajit-5.1-dev libphysfs-dev libmodplug-dev

sudo aptitude install autotools-dev automake libtool libdevil-dev libogg-dev libflac-dev libflac++-dev libmng-dev

# raspbian jessie
sudo aptitude install libturbojpeg1-dev

# raspbian stretch
sudo aptitude install libturbojpeg0-dev

_pilove/build-love2d.sh at master - skarbat/pilove
sudo aptitude install build-essential pkg-config libfreetype6-dev libopenal-dev libvorbis-dev libtheora-dev libmpg123-dev libluajit-5.1-dev libphysfs-dev libmodplug-dev

sudo aptitude install devscripts git-core debhelper dh-autoreconf libasound2-dev libudev0 libudev-dev libdbus-1-dev libx11-dev libxcursor-dev libxext-dev libxi-dev libxinerama-dev libxrandr-dev libxss-dev libxt-dev libxxf86vm-dev libgl1-mesa-dev libpulse-dev libibus-1.0-dev pulseaudio libraspberrypi-dev

love2d 0.10.2 の Linux用ソースをDLしてビルドする。
mkdir ~/love2d
cd ~/love2d
wget https://bitbucket.org/rude/love/downloads/love-0.10.2-linux-src.tar.gz
tar zxf love-0.10.2-linux-src.tar.gz
cd love-0.10.2
./configure
make
sudo make install

動作確認の結果。 :

love で実行。例の画面が出た。

サウンドを鳴らすソースを与えて動作確認してみた。以下のような警告が表示されたものの、音が鳴った。…やった! 鳴ったぞ! ようやく音が聞こえたわ…。
AL lib: (WW) alc_initconfig: Failed to initialize backend "pulse"

つまり、raspbian jessie上で SDL2 や love2d をビルドする分には、ちゃんと音が鳴ることが分かった。Raspberry Pi + love2d は音が鳴らない、というわけではないらしい。

しかし、raspbian stretch でやると音が鳴らないわけで…。SDL2、もしくはlove2dは、raspbian stretch に未対応ということだろうか? love2d を使いたいなら、raspbian jessie を使うしかない?

それとも pulseaudio が絡んでたりするのだろうか。例えば pilove の公式サイト上に書いてあるとおりに、
pulseaudio --start
とやってから love2d を動かすと、音が鳴らなくなるし…。
pulseaudio --kill
とやってから再度試したら音が鳴ったし…。

pulseaudio ってそもそも何なのでしょうか。ググって各説明ページを眺めてみてもピンとこない。Linuxのサウンドシステム関係はよく分からんなあ…。いや、Windowsのサウンド関係もちゃんと分かってるわけでもないけれど。

raspbianはバージョンによってpulseaudioの扱いが違う。 :

raspbian関係の記事をググってたら気になる話が。raspbian jessie までは、Bluetooth から音を鳴らすために標準で pulseaudio がインストールされていたけど、raspbian stretch では別の何かを使って Bluetooth から音を鳴らせるようになったので pulseaudio は標準でインストールされていないらしい。

_Raspbian StretchではPulseaudioを使わなくなったのでxrdpのサウンドをどうするか思案中
_Raspbian Stretch has arrived for Raspberry Pi - Raspberry Pi

そのあたりが関係してるのかな…。

#4 [raspberrypi] microSDを抜き差ししやすいaspberry Pi Zero W用のケースが欲しい

今現在、Raspberry Pi Zero W のケースとして、 _公式の白と赤の例のケース を使ってるけど。microSDを差し替えるのが面倒臭い。
  1. 一旦ケースの蓋を外して
  2. ケースから基板を取り出して
  3. microSDを差し替えて
  4. またケースに基板をはめ込んで
  5. 蓋をして…。
面倒臭い。特に、ケースにハメ込んである基板をグリグリ引っ張り出すのが面倒臭い。

基板をケースに入れたまま microSD を差し替えられるケースって無いのかな…。

ググった感じでは、種類は少ないけど一応ありそうな気配も。でも、見た目は差し替え可能なように見えつつも、実際には差し替えが容易ではない、的な罠がありそうな気配も。そもそも入手性もアレだし。

まあ、最悪、スペーサーだけを基板につけて、基板をむき出しにしておけば目的が果たせそうな気もするけど。それもそれでなんだかアレだなと。

以上、1 日分です。

過去ログ表示

Prev - 2017/11 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project