Raspberry Pi (RASPBIAN JESSIE WITH PIXEL)

apt updateを実行したところplymouth (0.9.2-2) unstable・・・なんかメッセージが表示されました。

RASPBIAN DOUNLOADSにも新しいイメージがアップされています。

RASPBIAN JESSIE WITH PIXEL
Image with PIXEL desktop based on Debian Jessie

再起動すると起動時にスプラッシュスクリーンが表示されています。
pix

arch linuxの解説によるとplymouth自体はやはりこれだけのようです。
大幅なファイルの変更があったので起動、終了プロセスは安定化が図られたのかもしれません。

スプラッシュスクリーン自体はあってもなくてもどちらでもいい感じがしますがせっかくなので少し試してみました。

設定ファイルの場所はarchと違いますが手法はそのままいけました。
現在のテーマ

$ plymouth-set-default-theme
pix

インストールされているテーマを全てリストアップ

$ plymouth-set-default-theme -l
details
fade-in
glow
joy
lines
pix
script
solar
spacefun
spinfinity
spinner
text
tribar

テーマの変更

# plymouth-set-default-theme -R fade-in

Ctrl+Alt+F2でコンソール rootでログイン

# plymouthd
# plymouth --show-splash
プレビュー
# plymouth --quit

Ctrl+Alt+F7で戻り
再起動しないで確認できたテーマを少し
スクリーンショットはraspi2pngを使用
fade-in
fade-in

以下、効果は違うがdebianロゴのイメージ
script
spinfinity

solar
solar

spacefun
spacefun

やはりデフォルトのpixテーマがよさそう

見た目の変更は起動時のスプラッシュスクリーンだけと思ったらテーマにPIXが追加されていました。
pix01

Raspberry Pi オンラインストレージを利用する

Raspberry PiのMoOdeOS(MoOde Player)は音楽サーバーとして十分利用価値があるのですが当サイトとしては常時稼働しているので他にもいろいろと活用してみたいと思います。

今回は無料のオンラインストレージを利用してみました。

現在はmicroSDの価格も下がってあまりメリットは感じられなくなりましたがmicroSDの信頼性やスマホとのやり取りなどまだまだ活用できるところがあります。
Raspberry Piで利用できる方法としてはwebdavに対応したものとなります。

現在登録しているオンラインストレージはCMメールも少ないところだけです。
box 10GB 時々真面目なメールが来ます。
drivee 3GB エックスサーバーで運営しています
teracloud 10GB 記憶は心へ。記録はTeraCLOUDへ。
Yandex.Disk 10GB
CloudME 3GB
HiDrive 5GB
OpenDrive 5GB

上記のストレージはRaspberry Piからwebdavで問題なく接続できます。
上記の3ストレージ(box,drivee,teracloud)は日本に拠点のあるストレージなのでわかりやすく比較的安心と思います。今回はこの3ストレージで試してみます。
MoOdeOSは基本raspbian jessie(lite)なのでraspbianでも同じように動くと思います。

davfs2の設定
まずはdavfs2をインストール

# apt install davfs2

davfs2-00
一般ユーザーでもマウントできるようはいを選択しておきます

piユーザーでマウントするにはグループdavfsに追加
# gpasswd -a pi davfs2
設定ファイルやマウントポイントもpiユーザーのものが必要です

マウントポイントの作成

# mkdir -p /mnt/DAV/box
# mkdir -p /mnt/DAV/drivee
# mkdir -p /mnt/DAV/teracloud

/etc/davfs2/davfs2.confの編集
以下を変更

use_locks       0
if_match_bug    1

/etc/davfs2/secretsの編集
登録した”user_id”と”password”を末尾に追記(driveeのhttps://”user_id”も書き換えること)

# box
https://dav.box.com/dav       "user_id"   "password"
# drivee
https://"user_id".drivee.jp   "user_id"   "password"
# teracloud
https://ise.teracloud.jp/dav  "user_id"   "password"

/etc/fstabの編集(driveeのhttps://”user_id”も書き換えること)

# box
https://dav.box.com/dav /mnt/DAV/box davfs rw,user,noauto 0 0
# drivee
https:/"user_id".drivee.jp /mnt/DAV/drivee  davfs rw,user,noauto 0 0
# teracloud
https://ise.teracloud.jp/dav /mnt/DAV/teracloud davfs rw,user,noauto 0 0

マウントしてみる

# mount -a
# mount /mnt/DAV/box
# mount /mnt/DAV/drivee
# mount /mnt/DAV/teracloud

# df
https://dav.box.com/dav         10G  4.0G  6.1G  40% /mnt/DAV/box
https://"user_id".drivee.jp    1.3T  763G  509G  61% /mnt/DAV/drivee
https://ise.teracloud.jp/dav   1.3T  763G  509G  61% /mnt/DAV/teracloud

アンマウント

# umount /mnt/DAV/teracloud
/sbin/umount.davfs: waiting while mount.davfs (pid 12124) synchronizes the cache .. OK

MoOdeOSはデフォルトでsambaサーバーが動いているのでsambaで共有します。
MoOdeOSの設定ファイルはわかりやすくできているので参考になります。
moode smb.conf
セキュリティは適宜追加書き換えます。
/etc/samba/smb.confの編集 末尾に追記

[BOX]
    comment = Box
    path = /mnt/DAV/box
    read only = No
    guest ok = Yes

[DRIVEE]
    comment = Drivee
    path = /mnt/DAV/drivee
    read only = No
    guest ok = Yes

[TERACLOUD]
    comment = Teracloud
    path = /mnt/DAV/teracloud
    read only = No
    guest ok = Yes

sambaリスタート

# systemctl restart smb
# systemctl restart nmb

sambaはwindows共有というサーバーなのでこれでwindowsからは見えているはずです。(実は確認していない)
ということでディスクトップのRaspberry Pi3(raspbian jessie)で確認します。
davfs2-02
pcmanfmのロケーションバーにsmb://moode/driveeと入力することによりマウントされました

#名前解決が必要です。
ホスト、クライアントとも/etc/hostsに双方のアドレス、ホストネームを書いておけばよいでしょう

でもこれではいちいち入力する必要があります。
もう少しスマートにするためにクライアントにもsambaをインストールします。

# apt install samba

クライアント側は特に設定の必要はありません。
pcmanfmの編集-設定-配置からネットワークをクリックして場所に表示させます。
davfs2-03
ネットワークをクリックするとmoodeのコンピュータアイコンが出現、クリックするとmoodeで許可した共有が一覧で取得できます。
これで自由にマウント、アンマウントできます。
但しMoOdeOS側はマウントされていなければいけません。

MoOdeOS側Piでは手動でマウント、アンマウントするかfstabのnoautoを外して起動時に常時接続にするという方法もありますがそれほど使うわけでもないので常時接続にするのも不安です。

MoOdeOS側でクライアントから要求があった時にマウントを開始するようにautofsを導入しました。

autofsのインストールと設定

# apt install autofs

インストールすると/etc以下に4個の設定ファイルができます。
auto.master
auto.misc
auto.net
auto.smb
新たにauto.davというファイル名で作成します。
/etc/auto.dav

/mnt/DAV/box        -fstype=davfs,rw,user https://dav.box.com/dav
/mnt/DAV/drivee     -fstype=davfs,rw,user https://"user_id".drivee.jp
/mnt/DAV/teracloud  -fstype=davfs,rw,user https://ise.teracloud.jp/dav

/etc/auto.masterの編集
+auto.masterの前に追記
オプションはクライアント側でアンマウントしたら1分後にMoOdeOS側でアンマウント

/-  /etc/auto.dav --timeout=60
+auto.master

autofsリスタート

# systemctl restart autofs

手動でマウントしてあったらアンマウントしておきます。
これでクライアントのpcmanfmから同様に確認してみます。
マウントが確認できて三角のアンマウントボタンをクリック、1分後にターミナルからdfしてみるとMoOde側でもアンマウントが確認できるはずです。

autofsが正常に動作しているならば/etc/fstabのdavfsの設定は基本使用しません。
但し手動でマウントしてターミナルから自マシンのファイルをコピーしたりユーザー権限で新たにマウントポイントを作成することもあることから残しておいても特に問題ないと思います。(noautoで)
davfs2-05
ほかのストレージも設定してみました
マウントに少し時間のかかるところもありますが正常にマウントできました
アンマウントもクリックした順にそれぞれ1分後にアンマウントしています

# cloudme
https://webdav.cloudme.com/"user_id"
# hidrive
https://webdav.hidrive.strato.com
# opendrive
https://webdav.opendrive.com
# yandex
https://webdav.yandex.com

#本来は音楽ソースのストレージの一つとして試したのですがシンボリックリンクを貼ってBrowse画面にも登録できますが肝心の再生とライブラリのデータベース作成が非常に不安定でMoOde Playerから音楽ソースとしての使用は断念しました。

Raspberry Pi MoOde Radiko Playerの設定

1枚のカードでMoOde PlayerとRadiko Playerを切り替えながら使っているとMoOde Playerで再生しているにも拘らずRadiko Playerのボタンを押してしまうことがあります。

MoOde Playerは再生を続けているのですが音量がぐっと下がるので音が出なくなったと勘違いしてしまいます。

そこでRadiko PlayerのPlayボタンを押した時はMoOde Playerを停止、またMoOde(MAX)ボタンを押した時はMoOde Playerを再生するようにしてみました。

MoOde PlayerはMPCをコントロールしているので停止(stop)またはポーズ(pause)を、再生の時は(play)与えてやります。
MPCのコマンドは $ mpc help で確認できます。

case "play":
    exec("nohup killall mplayer > /dev/null &");
    exec("nohup mpc stop > /dev/null &");
    // exec("nohup /bin/bash radiko.sh -p FMJ > /dev/null &");
    $_SESSION['broad']="Radiko Player";
break;

case "max":
    exec("nohup killall mplayer > /dev/null &");
    exec("nohup sleep 1 > /dev/null 2>&1");
    exec("nohup amixer -c 1 set PCM 100% > /dev/null 2>&1");
    exec("nohup mpc play > /dev/null 2>&1");
    $_SESSION['broad']="MoOde Music Player";
break;

ラジオの場合は停止もポーズも一緒ですがアルバム再生中の場合は
停止〜再開は曲の最初から
ポーズ〜再開は曲の停止位置から
の違いがあります。

radiko-p
Playボタンを押した時はRadiko Playerと表示して改めて選局するようにしましたがよく聞く局が決まっている場合はこれまでどおり指定してもいいと思います。

# radiko.shとrajiru.shに追加してみました。

amixer -c 1 set PCM 30%
mpc stop

SHOUTcastやサイマルラジオも各ステーションごとに追記しておけばMoOde Player再生時もシームレスにRadiko Playerを再生できます。

#これまで大分弄り回したので今回改めてクリーンインストールしたのですがシェルスクリプトのradiko.shは”-t”でタイマーが使えるようになっています。
しかし最初は”-p”の指定だけでは1分で停止してしまいます。
何度か停止、再生をすると連続で再生できるようになるのですがroot:rootで置いたスクリプトはrootで実行する必要があるようです。
rootからコマンドラインで連続再生を確認するか未確認ですがスクリプトのオーナーをpiまたはwww-dataにすると良いかもしれません。

Raspberry Pi SHOUTcastとサイマルラジオを再生する

当サイトのMoOde Radiko Playerも順調に24時間稼働に入ってきました。

MoOde Music Playerのタイマーで朝から目覚まし代わりに音楽が鳴ってくれます。

そこで今回はSHOUTcastとサイマルラジオを登録してみました。

radiko11

SHOUTcastとサイマルラジオを右側に配置して3カラムにしました。
index-php-sample

SHOUTcastの登録

SHOUTcastのホームページから気に入ったサイトのダウンロードボタンを押してWinamp(.pls)ファイルを選択、保存します。ファイル名のデフォルトはtunein-station.pls(テキスト形式)
shoutcastplaylist
numberofentries=2
File1=http://185.33.22.15:11230
Title1=1.FM – Bay Smooth Jazz Radio
Length1=-1
File2=http://185.33.22.15:11229
Title2=1.FM – Bay Smooth Jazz Radio
Length2=-1
Version=2

サイトによって地域制限やmplayerで再生できない可能性もあるので試してみます。

$ mplayer -ao alsa:device=plughw=1.0 -playlist tunein-station.pls

うまく再生できたらindex.phpに書き加えます。
mplayerからは直接urlも指定できますがplsのほうが管理しやすいためディレクトリ(/var/www/html/cast)を作成して保存するようにしました。
ファイル名は識別できる程度にrenameして空白を入れないようにします。

MoOde Playerを併用しているなど音量制限が必要な場合は必ずここに設定を入れます。

case "1fm":
            exec("nohup killall mplayer > /dev/null &");
            exec("nohup amixer -c 1 set PCM 30% > /dev/null 2>&1");
            exec("nohup mplayer -ao alsa:device=plughw=1.0 -playlist /var/www/html/cast/1FMsmoothjazz.pls > /dev/null &");
            $_SESSION['broad']="1.FM - Bay Smooth Jazz Radio";
            break;

サイマルラジオの登録

サイマルラジオに新しいサイト(CSRA.fm)ができています。
csra
放送を聞くをクリックするとasxファイルがダウンロードできます。

こちらもmplayerで試してみますが大半のラジオサイトでエラーを吐いてしまいます。

csra02
エラーの内容を見てみると No such file or directory ???

そこで正常に起動するフォーマットにラジオ局サイト情報を書き直して起動すると正常に動きます。

さらにdiffをしてみるとわかりました。

末尾の’</Asx>‘とすべきところが’</Ask>‘になっています。

再度良く見ると最初に At line 10 : EOB reached while parsing Asx element bodyAt line 10 : Syntax error 出ていますね。

修正することにより無事起動することが確認できました。
いや〜なかなか気がつきませんでした。

windowsはこれでも動くのでいいのでしょうね。

Pi使いにとっては困るので投稿(Ask)しておくことにします。
いずれ直るかもしれません。
大分寄り道をしてしまいました。

サイマルラジオもSHOUTcast同様に設定、登録をしていきます。
ローカル色の強いサイマルラジオのゆるいトークもいいもんです。
またあってほしくは無いですが災害時のためにも登録しておくといいですね。

これでラジオプレーヤーとして格段に選局の幅が増えました。
index.phpの編集が手間ですが画面の構成は自由にできるので使いやすいプレーヤーにできると思います。
またwebサーバーのlighttpdもcssフレームワークも軽量なのでページを増やしてもPi1Bでもサクサク動きます。

Restart MENU
moodeOSはplayerからreboot,shutdownができます。
これはwebサーバーのwww-dataがsudo権限を持っています。
raspbianで実行させるにはvisudoで設定します。

# visudo
www-data ALL=(ALL) NOPASSWD: ALL

webサーバーのあるraspberry piはブラウザから特殊な権限を除いていろいろコントロールできます。このradiko playerからいろんな機器をコントロールできたらおもしろいかもしれません。
せっかく環境ができたのでphpの勉強でもしようと思います。

Moode Audio Player Access Point (AP) を使ってみる

Moode Audio Player Release: 2.7 2016-08-28

Moode Audio Playerは標準でAP(アクセスポイント)モードが使えるようになっています。

Raspberry Pi + Moode Audio Playerの使用している環境でwifiルータの電波が届きにくいといった場合は重宝するかもしれません。

では早速使ってみましょう。

使用環境
Raspberry Pi 1B eth0 有線接続

wifiドングル 中華無印
RTL8188CUS
このドングルは2個で1000円もしない安物ですがダメバッファローの某製品よりははるかに安定しています。(当方もバッファローには騙されました!)

$ lsusb
Bus 001 Device 005: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter

チップはパワーマネジメントが有効になっていますがmoodeOSは解除するための設定ファイルも用意されています。
/etc/modprobe.d/8192cu.conf
# disable power management
options 8192cu rtw_power_mgnt=0 rtw_enusbss=0

チップはAPモードをサポートしていないと使えません。
おそらく大半のチップはAPモードをサポートしていると思われますが一部使えないものもあるようです。

$ iw list | more
Wiphy phy0
Supported interface modes:
                 * IBSS
                 * managed
                 * AP
                 * monitor
                 * P2P-client
                 * P2P-GO

wifiドングルを挿してRaspberry Piを再起動するだけでアクセスポイントとして利用できるようになります。
Configure Network
moode-wifi
WiFi(wlan0) DHCP 172.24.1.1 が設定されます。
ここでSTATICを選択してSSIDなどを適切に設定すれば有線の代わりにWiFiでmoodeを動かすことができます。
DHCPで設定した内容は/etc/dhcpcd.confに記載されますがSTATICの設定は/etc/network/interfacesに記載されます。以降デフォルトのAPモードに戻すにはDHCPにして入力したところは一旦空白にする必要があります。
wifiドングルの2個挿しはOS上ではそれぞれIPアドレスを取得可能ですが当方で試した限りに於いてはmoode playerのメニューにwlan1が出現しないのでそれ以上は試していません。

タブレットのwifi設定でSSID(Moode)とpassword(modeaudio)を登録して接続してみましょう。

http:172.24.1.1

moode-wifi02
アクセスするのに172.24.1.1ではわかりにくいので名前解決をしましょう。

ログインして(root)
/etc/hostsに書き加えます。

/etx/hosts
127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters
127.0.1.1       moode
172.24.1.1      moode

dnsmasqを再起動

# systemctl restart dnsmasq

以降からはmoodeでアクセスできます。

moode playerにはアクセスできたがインターネットにでれない!!!

moodeOSはアクセスポイント化に必要なhostapd,dnsmasqなど必要なパッケージ、設定はできていますがインターネットに出るためのルーティング設定だけは自前で設定する必要があります。
/etc/sysctl.conf編集

# vi /etc/sysctl.conf
net.ipv4.ip_forward=1 <----コメント外す

/proc/sys/net/ipv4/ip_forward 0から1に変更

# echo 1 > /proc/sys/net/ipv4/ip_forward

iptables設定 ユーザーPiで実行(rootではダメ)

$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$ sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

ルーティングテーブルのセーブ ユーザーrootで実行(sudoではダメ)

$ sudo su
# iptables-save > /etc/iptables.ipv4.nat

起動時に読み込み /etc/network/interfacesに追記

# vi /etc/network/interfaces
pre-up iptables-restore < /etc/iptables.ipv4.nat

再起動

# reboot

ここらはssh接続とユーザーによる権限の関係が複雑に絡み合うのでわかりにくいですが再起動後はインターネットに接続できるはずです。

moode playerでネットワーク設定を行った場合/etc/network/interfaces以下の設定を書き換えてしまうことがあるのでinterfaces以下を確認して無ければ再度設定して再起動します。

iptablesの設定は以下のコマンドで確認できます。
何らかの関係でデフォルトに戻った場合は再度上記のiptablesの設定が必要です。

デフォルト設定

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
       
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
         
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

ルーティング設定

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

参考 Raspberry Piのアクセスポイント化 & ルータ化がうまくいかない時はこの通りにやればおk

Top