min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

RaspberryPi cronが効かない → /etc/crontab のパーミッションと所有者を見直して解決

RaspberryPi 1 の調子が悪かったので Raspbian を再インストールした。各種設定ファイルをバックアップから復帰したものの、cronだけがなぜか実行されない。

このへんを参照して対応する。

tamulapin.hatenablog.com

ーーー

うまくいっている RaspberryPi 3 と設定を比較しながら進める。

Pi1 … cron が効かない。今回直したいやつ

Pi3 … cron が効いている。正常なやつ。

ーーー

まずはサービスの起動を確認。通常権限(ユーザ:pi)で ps aux を叩く。

$ ps aux | grep cron

Pi1もPi3も同様にサービスが起動していた。サービス自体は問題なさそう。

Pi1

f:id:min117:20170625102604p:plain

Pi3

f:id:min117:20170625102600p:plain

次に、/etc/crontabパーミッション・権限が正しいかを見てみる。

Pi1

f:id:min117:20170625102845p:plain

Pi3

f:id:min117:20170625102849p:plain

Pi1のほうの /etc/crontab のパーミッションが 744( -rwxr-xr-x )になってしまっている!原因はこれか。正しくは 644( -rw-r--r-- )になってなきゃいけない管理者権限に(sudo -sして)直す。

$ sudo -s

# chmod 644 /etc/crontab

ーーー

まだ改善しない。なぜだ?と思って pi3 と比較してみると、/etc/crontab の所有者が管理者 root であるべきところ、通常ユーザー pi になってしまっていた。これも直す。

# chown root:root /etc/crontab

f:id:min117:20170625103324p:plain

無事に動いた。まとめ。

cronが動かない時に試すコマンド3つ

sudo ps aux | grep cron

chmod 744 /etc/crontab

chown root:root /etc/crontab

 

 

RaspberryPi 3 起動時にラジオを再生する

 

RaspberryPi 起動時にラジオを再生する。「起動時に***する」という処理はこのへんによくまとまっていた。

hendigi.karaage.xyz

今回は /etc/rc.local に記述して起動時実行する。スクリプト「play_tachikawa.sh」というファイルを起動時に再生する。

$ sudo vim /etc/rc.local

f:id:min117:20170622212804p:plain

exit 0 より上起動時コマンドを書くだけ。

f:id:min117:20170622212818p:plain

 

RaspberryPi 3 コマンドで音量を上げる(ラジオをテレビで再生→音量不足→コマンドで音量UP)

 

RaspberryPi はラジオの再生と相性バツグン。

テレビのHDMIポート3つは全てRaspberryPi(Pi1 と ZERO w と Pi3)で埋まっていて、それぞれで違うサイマルラジオを再生させている。テレビ入力を変えるだけで全国のラジオを3つ切り替えられる。

(再生スクリプトファイル)

エフエム立川.sh

#!/bin/bash

mplayer -playlist http://www.simulradio.jp/asx/fm-tachikawa.asx

鹿角きりたんぽFM.sh

#!/bin/bash

mplayer -playlist http://www.simulradio.jp/asx/kiritampo.asx

(再生)

$ ./エフエム立川.sh

ーーー

テレビで再生させたはいいが、音量が足りない。テレビのリモコンでUPすればいいんだけど、めんどくさい。コマンドでRaspberryPiHDMI出力音量を上げるにはどうすればいいか調べた。amixer コマンドでできた。

まずはデバイスの名前を調べる。

$ sudo amixer -M

f:id:min117:20170622212415p:plain

この環境では「PCM」という名前らしい。音量を100% にしてみる。

$ sudo amixer sset PCM 100% 

このへん参照。

detail.chiebukuro.yahoo.co.jp

 

 

RaspberryPi 3 radiko Premium を録音する → ffmpegが必要 → リポジトリに無い → コンパイルしてインストールする

 

radiko Premium(ラジコプレミアム)を RaspberryPi で録音したい。このサイトと同じにやってみた。

kyoshiaki.hatenablog.com

この記述。

f:id:min117:20170618100342p:plain

http://kyoshiaki.sakura.ne.jp/osx/Sample/rec_radiko2_2.zip

RaspberryPi で落としてきて rec_radiko2.sh を実行したら、ffmpegがなくてエラーになった。apt-get でインストールしたいけど RaspberryPi は OSバージョンが「Jessie」になった以降は

# sudo -y install ffmpeg

ができないらしい。リポジトリに無いっぽい。

参考サイト

Raspberry Pi 3 Model Bで動画処理アプリ FFmpegをコンパイルする方法 (ラズパイ3で FFmpegをセルフコンパイルしてインストールする方法)

http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_3_compile_ffmpeg/

f:id:min117:20170617093828p:plain

なので、自前でコンパイルしてインストールする。上記参考サイトのとおりに進める。

sudo apt-get update

sudo apt-get install autoconf automake build-essential libass-dev libfreetype6-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev -y

# mkdir ~/ffmpeg_sources

sudo apt-get -y install yasm

sudo apt-get -y install libx264-dev

ここまでは完了。

上記サイトでは「x265はインストールできなかった」とあるが、念のため試してみる。

# sudo apt-get -y install cmake mercurial

# hg clone https://bitbucket.org/multicoreware/x265

f:id:min117:20170617094602p:plain

# cd ~/ffmpeg_sources/x265/build/linux

# ./make-Makefiles.bash

f:id:min117:20170617095537p:plain

ccmake なるものが必要らしい。このサイトを元にインストールしてみる。

d.hatena.ne.jp

$ sudo apt-get install cmake-curses-gui

f:id:min117:20170617100201p:plain

これで cmake はインストールされたらしい。再度 ffmpeg のインストールしてみる。

# ./make-Makefiles.bash

f:id:min117:20170617100451p:plain

Enter を押してみたが、同じ画面に戻る。h を押してヘルプを出してみる。

f:id:min117:20170617100812p:plain

t を押して toggle advanced mode に入ってみる。

f:id:min117:20170617101457p:plain

よくわからない。x265 は諦めて、ffmpeg のインストールを続ける。

libfdk-aac

# cd ~/ffmpeg_sources

# wget -O fdk-aac.tar.gz https://github.com/mstorsjo/fdk-aac/tarball/master

# tar xzvf fdk-aac.tar.gz

# mstorsjo-fdk-aac*

# autoreconf -fiv

# ./configure --prefix="$HOME/ffmpeg_build" --disable-shared

# make && make install && make distclean

f:id:min117:20170617102153p:plain

libmp3lame

sudo apt-get -y install libmp3lame-dev

libopus

# sudo apt-get -y install libopus-dev

libovpx

# cd ~/ffmpeg_sources

wget http://storage.googleapis.com/downloads.webmproject.org/releases/webm/libvpx-1.5.0.tar.bz2

# tar xjvf libvpx-1.5.0.tar.bz2

# cd libvpx-1.5.0

# PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests

# PATH="$HOME/bin:$PATH"

# make

# make install

# make clean

f:id:min117:20170617104352p:plain

ffmpeg

なぜか libvpx でエラーになる。バージョンは 1.5.0 を入れたのに。やむを得ないので、--enable-libvpx を外してインストールを続ける。

f:id:min117:20170617110106p:plain

configure できた。make する。

# sudo make install

# sudo make distclean

# hash -r

f:id:min117:20170617110817p:plain

インストール完了。バージョンは

# ffmpeg

で確認できる。

ーーー

rec_radiko2.sh を実行。

# ./rec_radiko2.sh チャンネル名 録画時間(分) PremiumのID パスワード

# ./rec_radiko2.sh SBS 1 radiko@gmail.com mypassword

まだエラーが出る。「swfextract なんてコマンドはない」と出た。

f:id:min117:20170618100604p:plain

swftools をインストールする。

# sudo apt-get install rtmpdump swftools libxml2-utils 

f:id:min117:20170618100834p:plain

 

 

RaspberryPi 3 cvlc でハードウェア支援を使って動画再生

 

RaspberryPi 3 のVLCは、ハードウェア動画再生支援で爆速にできるらしい。

signal-flag-z.blogspot.jp

前提としてRaspberryPi は MPEG ライセンスを購入しないとts動画が再生できないので、購入しておく。といっても、300円くらいだし、ネットでポチッ支払うだけ。詳しい手順は以下。

min117.hatenablog.com

ハードウェア動画再生支援を受けられるVLCは、通常のインストールのしかた(apt-get -y install vlc)ではダメ手動で make が必要なようだ。進め方はこのチュートリアルサイト参照。

Raspberry Pi • View topic - Tutorial: Compile VLC with HW acceleration - Jessie, RPi 2/3

まずは、すでに入っているvlcをアンインストールする。

$ sudo apt-get -y purge vlc

f:id:min117:20170610224724p:plain

ダウンロードするファイルをブラウザから確認しておく。

http://download.videolan.org/vlc/

Index of /vlc/

f:id:min117:20170610224832p:plain

最新は 2.2.6 のようだ。拡張子が xz のがダウンロード対象。

f:id:min117:20170610225452p:plain

$ wget http://download.videolan.org/vlc/2.2.6/vlc-2.2.6.tar.xz

f:id:min117:20170610225507p:plain

ダウンロード開始。

f:id:min117:20170610225518p:plain

解凍する。

$ tar Jxfv vlc-2.2.6.tar.xz

f:id:min117:20170610225529p:plain

冒頭のチュートリアルサイトのとおり、インストール前に update を走らせる。

$ sudo apt-get -y update

f:id:min117:20170610225540p:plain

$ cd vlc-2.2.6/

$ ./bootstrap

f:id:min117:20170610231002p:plain

$ make -j3

f:id:min117:20170610231021p:plain

あれ?エラーになる。

f:id:min117:20170610231154p:plain

冒頭チュートリアルサイトには configure が無いから、そのせいか?

$ ./configure

f:id:min117:20170610231231p:plain

f:id:min117:20170610231247p:plain

./configure は終わったので、再度 make してみる。

$ make -j3

f:id:min117:20170610231021p:plain

やはりエラーになる。

f:id:min117:20170610231154p:plain

冒頭チュートリアルサイトをよく見直すと以下のコマンドあり。実行を忘れていた。字が薄くて気づかなかった。

sudo apt-get install autopoint gettext liba52-0.7.4-dev libaa1-dev libasound2-dev libass-dev libavahi-client-dev libavc1394-dev libavcodec-dev libavformat-dev libbluray-dev libcaca-dev libcddb2-dev libcdio-dev libchromaprint-dev libdbus-1-dev libdc1394-22-dev libdca-dev libdirectfb-dev libdvbpsi-dev libdvdnav-dev libdvdread-dev libegl1-mesa-dev libfaad-dev libflac-dev libfluidsynth-dev libfreerdp-dev libfreetype6-dev libfribidi-dev libgl1-mesa-dev libgles1-mesa-dev libgles2-mesa-dev libgnutls28-dev libgtk2.0-dev libidn11-dev libiso9660-dev libjack-jackd2-dev libkate-dev liblircclient-dev liblivemedia-dev liblua5.2-dev libmad0-dev libmatroska-dev libmodplug-dev libmpcdec-dev libmpeg2-4-dev libmtp-dev libncursesw5-dev libnotify-dev libogg-dev libomxil-bellagio-dev libopus-dev libpng12-dev libpulse-dev libqt4-dev libraw1394-dev libresid-builder-dev librsvg2-dev libsamplerate0-dev libschroedinger-dev libsdl-image1.2-dev libsdl1.2-dev libshine-dev libshout3-dev libsidplay2-dev libsmbclient-dev libspeex-dev libspeexdsp-dev libssh2-1-dev libswscale-dev libtag1-dev libtheora-dev libtwolame-dev libudev-dev libupnp-dev libv4l-dev libva-dev libvcdinfo-dev libvdpau-dev libvncserver-dev libvorbis-dev libx11-dev libx264-dev libxcb-composite0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shm0-dev libxcb-xv0-dev libxcb1-dev libxext-dev libxinerama-dev libxml2-dev libxpm-dev libzvbi-dev lua5.2 oss4-dev pkg-config zlib1g-dev libtool build-essential autoconf

コピペして一気に実行する。

f:id:min117:20170610233658p:plain

インストール完了。

f:id:min117:20170610233704p:plain

もう一度 make してみる。

f:id:min117:20170610233708p:plain

やはりエラー。

f:id:min117:20170610231154p:plain

./bootstrap をもう一度やればいいのだろうか?

$ ./bootstrap

f:id:min117:20170610233713p:plain

./bootstrap はうまくいった。

f:id:min117:20170610233726p:plain

make する。

$ make -j3

f:id:min117:20170610233734p:plain

 

またしてもエラー。

f:id:min117:20170610231154p:plain

もう一度 ./configure したらどうか。

$ ./configure

f:id:min117:20170610233739p:plain

./configure はうまくいった。makeする。

$ make -j3

f:id:min117:20170610233734p:plain

またしてもエラー。もう何回目か。

f:id:min117:20170610231154p:plain

冒頭チュートリアルサイトを再度見直す。以下のコマンドを忘れていた。ここも字が薄くて見落としてた。

CFLAGS="-I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I/opt/vc/include/interface/mmal -I/opt/vc/include/interface/vchiq_arm -I/opt/vc/include/IL -I/opt/vc/include/GLES2 -mfloat-abi=hard -mcpu=cortex-a7 -mfpu=neon-vfpv4" CXXFLAGS="-I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I/opt/vc/include/interface/mmal -I/opt/vc/include/interface/vchiq_arm -I/opt/vc/include/IL -mfloat-abi=hard -I/opt/vc/include/GLES2 -mcpu=cortex-a7 -mfpu=neon-vfpv4" LDFLAGS="-L/opt/vc/lib" ./configure --prefix=/usr --enable-omxil --enable-omxil-vout --enable-rpi-omxil --disable-mmal-codec --disable-mmal-vout --enable-gles2 

コマンドは正常終了。make する。

$ make -j3

f:id:min117:20170611062304p:plain

やっとうまく make が走った。RaspberryPi 3 はスペックが上がっているが、それでもmakeには一晩かかる。走らせたまま寝る。

ーーー

夜が明けて、make が終わっていた。make install する。

$ sudo make install

f:id:min117:20170611062344p:plain

正常に進む。

f:id:min117:20170611062355p:plain

インストール完了。

f:id:min117:20170611062410p:plain

バージョンを確認したいので、ヘルプから確認方法を調べる。

$ vlc -h | grep version

引数 --version を付けて実行すればいいらしい。

f:id:min117:20170611062421p:plain

$ vlc --version

f:id:min117:20170611062432p:plain

たしかに、バージョン 2.2.6 がインストールされたのを確認。念のため再起動しておく。

$ sudo reboot

f:id:min117:20170611062443p:plain

再起動後、テレビにRaspberryPi 3 を繋いで、vlcでハイビジョンを受信してみる。やりかたはこのへん参照。

min117.hatenablog.com

動画再生支援が働いていれば、ハイビジョン映像くらいは余裕で見られるはずだ。実行してみる。

$ DISPLAY=:0.0 && cvlc -f http://PT3配信サーバアドレス:ポート/チャンネル

f:id:min117:20170611064244j:plain

ダメだった…音は聞こえるけど、映像が来ない。osmcだと受信してテレビが見れるのに…

min117.hatenablog.com

Raspbianでも見れておかしくないはず。もっと調べる。

ーーー

追記

cvlc ではなく、omxplayer でどうか試したが、やはり再生できなかった。

$ omxplayer http://PT3配信サーバアドレス:ポート/チャンネル

 

仮想化 Xen Citrix StudioがMMCエラーで起動エラー

 

 

XenDesktopのテスト環境を作って Citrix Studio を起動しようとうするも、MMCのウィンドウが「展開」のまま全く進まない。

以下の記事を参照に、MMCクラッシュの対応をしてみる。

support.citrix.com

この記事どおりやってみる。

f:id:min117:20170610201909p:plain

コマンドプロンプトを右クリックして「管理者で実行」

cmd> cd C:¥WindowsMicrosoft.NET¥Framework64¥v4.0.30319¥

cmd> ngen update /force

かなり時間がかかる。

f:id:min117:20170610201824p:plain

RaspberryPi 無線LANが繋がらないときは/etc/network/interfaces の dns-nameservers の記述を確認する

 

RaspberryPi の無線LAN の接続設定がプチプチ切れるときは、DNSの設定が悪いのかも。

$ sudo vim /etc/network/interfaces

f:id:min117:20170604174037p:plain

ifaceの記述毎に(SSIDに)「dns-nameservers DNSIPアドレス」の記述を入れていく。

f:id:min117:20170604174234p:plain

これで、「繋がらないのは名前解決が原因だった!」なんてことが無くなる。

参照サイト

qiita.com

RaspberryPiの無線LAN構築についてはこちらも参照。

min117.hatenablog.com