MoOde Audio スキャナ、プリンターを利用してみる

スキャナは時々利用する程度なので使いたいときに引っ張りだして使用しています。

ふと見るととても使いやすい位置にUSBポートがありますね〜

これは利用しない手はないと思い設定してみることにしました。


環境
スキャナ Canon N1240U フラットベッドスキャナ

サーバー Pi1B + MoOde Audio 3.1

クライアント Pi3 jessie

設定は以前jessieで設定した時と同様の手順でいけそうです。

インストール
スキャナだけであればsaneとsane-utilsをインストールすれば良さそうです。
今回はついでにプリンタの動作も確認したくてcupsをインストールしました。
cupsはsane関連のパッケージもインストールします。

# apt install cups

サーバー設定

/etc/default/saned
RUN=yes

/etc/sane.d/saned.conf
192.168.11.0/24 (環境に合わせて)

# systemctl enable saned.socket

# service saned start
# systemctl status saned.socket
 saned.socket - saned incoming socket
   Loaded: loaded (/lib/systemd/system/saned.socket; enabled)
   Active: active (listening) since 木 1970-01-01 09:00:17 JST; 47 years 0 months ago
   Listen: [::]:6566 (Stream)
 Accepted: 0; Connected: 0

 1月 01 09:00:17 moode systemd[1]: Starting saned incoming socket.
 1月 01 09:00:17 moode systemd[1]: Listening on saned incoming socket.

socketが時刻を取得していないですね。
但し通常の時計は正常に動いているし動作にも支障無いため気にしないことにします。

クライアント

# apt install xsane

/etc/sane.d/net.conf
192.168.11.111 (moodeのアドレス)

# reboot


スキャナを見つけてくれました。

いい感じで使えますね。

プリンタの確認
プリンターはUSBケーブルの取り回しの関係から通常はもう1台のPi1Bに接続しています。
moodeで常用する訳ではないのですがいざという時のバックアップ、動作確認のため今回試してみました。
こちらもjessie-lite同様の設定でいけますね。

グループ lpadmin に追加

# gpasswd -a pi lpadmin

/etc/cups/cupsd.conf (変更箇所)

# Only listen for connections from the local machine.
#Listen localhost:631
Port 631
# Default authentication type, when authentication is required...
DefaultAuthType Basic
DefaultEncryption IfRequested
# Restrict access to the server...
<Location />
  Order allow,deny
  Allow @Local
</Location>
# Restrict access to the admin pages...
<Location /admin>
  Order allow,deny
  Allow @Local
</Location>
# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
  Allow @Local
</Location>
# systemctl restart cups

# systemctl status cups
 cups.service - CUPS Printing Service
   Loaded: loaded (/lib/systemd/system/cups.service; enabled)
   Active: active (running) since 土 2017-01-28 06:25:13 JST; 12h ago
     Docs: man:cupsd(8)
           man:cupsd.conf(5)
 Main PID: 18713 (cupsd)
   CGroup: /system.slice/cups.service
           └─18713 /usr/sbin/cupsd -f

 1月 28 06:25:13 moode systemd[1]: Started CUPS Printing Service.

Serviceはちゃんと時刻を取得しています。

プリンタの電源を入れておきます。
クライアント(Pi3)からcupsサーバー(moode)に接続
http://moode:631/

ブラウザによっては日本語で表示しない場合もあるようです。

今回はMidoriを使用してみました。


管理をクリック

認証ダイアログにlpadminに追加したユーザーでログインします。

Midoriではダイアログが2重に出ますが最初のダイアログでOKほかはキャンセル


プリンターの追加をクリック

ローカルプリンターとしてCanon iP2700が現れています。

選択して続けるをクリック


適当にわかりやすい名前をつけておきます。

共有にチェックを入れます。(チェックが入っていないとほかのマシンから利用できない)


ドライバーの選択
メーカー Canon
モデル  Canon iP2700 series —-
を選択してプリンターの追加をクリック


このままデフォルトオプションの設定をクリック


プリンタが導入されました。

メンテナンスからテストページの印刷をして確認します。


Pi3にはsystem-config-printerがインストールされています。
メニューから印刷設定を起動するとmoodeに設定したiP2700が現れています。
これはおそらくPi3にsamba(cupsも導入している)をインストールしているため自動でブラウズされるものと思います。
Pi3ではsambaもcupsも設定はデフォルトのままです。


Pi3から確認
プロパティからテストページの印刷をします。
OKですね。

MoOde Audio 3.1 更新

昨年11月に3.0さらに12月に3.1とリリースされています。

少々間があきましたが3.1に更新してみました。

moode-about
OS versionが2系の1.0から1.1に上がっていますね。

Raspbianの仕様によるものと思います。

カードの作成
作業はいつものとおりPi3デスクトップで行います。

wget http://moodeaudio.org/downloads/moode-sdimg-r31.zip
unzip moode-sdimg-r31.zip
dd if=moode-sdimg-r31.img of=/dev/sda bs=1M

カードができました。
最新のRaspbianはデフォルトでSSHが無効になりました。
/bootにsshという空ファイルを作って有効にするようです。
moodeではSSHは従来通りデフォルトで有効になっています。

通常はここでPiにセットしてMoOde Playerの設定を行うだけでいいのですが当サイトのPiはローカルのファイルサーバーとして稼働しているのでできるだけスムーズに移行するため予備のPi2で個人の環境設定や初期設定をしてからPi1Bにセットしたいと思います。

Pi2にセットする前にホストネームの変更や固定IPを割り当てておきます。(環境に合わせて)

/etc/hostname
moode3

/etc/hosts
127.0.1.1  moode3

/etc/dhcpcd.conf
interface eth0
static ip_address=192.168.11.112/24
static routers=192.168.11.1
static domain_name_servers=192.168.11.1

上記の設定を書き込んだらPi2にセットしてSSHでログイン

ssh pi@moode3 or (pi@192.168.11.111)

raspi-configを実行
localeとtimezoneを設定して再ログイン

# apt update
# apt upgrade
# rpi-update

結構なアップデートファイルがあります。
moode3-1_up
upgradeの途中でこんなメッセージが出ます。

現在のローカルバージョンを保持で継続

その他必要であればユーザーの作成や個人の設定をしておきます。

NFSの設定

# apt install nfs-kernel-server

現稼働中のPi1Bを参照して/etc/fstabと/etc/exportsを編集しておきます。

Pi2での作業の最後にホストネームを戻します。

/etc/hostname
moode

/etc/hosts
127.0.1.1  moode

/etc/dhcpcd.conf
Pi1Bのアドレス

Pi1Bの起動
カードを差し替えてPi1Bで起動します。

ssh pi@moode

moodeは特にknown_hostsを削除しなくてもそのまま受け付けてくれますね。

Pi1Bを起動してPi3からNFSマウントすると失敗してしまいます。
Pi1Bで $ showmount -e
clnt_create: RPC: Program not registered
こんなメッセージが出ています。
nfs-kernel-serverをrestartすると正常にマウントします。
どうもrpcbindとnfs-kernel-serverの起動順位の違いによってNFSマウントに失敗しているようです。
暫定的ですが/etc/rc.localに以下を追記しました。

sleep 1
systemctl restart nfs-kernel-server
exit 0

MoOde Playerの起動
NFSサーバーも立ち上がったのでNAS SourceからNFSを選択してデータベースを構築します。
IPアドレスは自IP(192.168.xx.xxx)でも良さそうです。(exportsの設定)
データベースの構築は随分はやくなった感じがします。
しかし構築されたライブラリを見ると曲を2重に取得しています。!!!
moode3_00

これでは少々使い勝手が悪いのでいろいろ調べてみると
moode3-1_02
NASとそれからUSB経由でも取得しているようです。

当サイトの環境ではNASを設定しないとライブラリも全く取得しないことからUSBを削除しました。

Browseに現れるファイルの実態は/var/lib/mpd/musicにあります。

lrwxrwxrwx 1 root root     8  4月  9  2016 NAS -> /mnt/NAS/
drwxrwxrwx 2 root root 12288 10月 26 03:27 RADIO/
lrwxrwxrwx 1 root root    11  4月  9  2016 SDCARD -> /mnt/SDCARD/
lrwxrwxrwx 1 root root     6  4月  9  2016 USB -> /media/
lrwxrwxrwx 1 root root    18  4月  9  2016 music -> /var/lib/mpd/music/

USBを削除

# rm /var/lib/mpd/music/USB
linkを再度有効にするには
# ln -s /var/lib/mpd/music/USB /media

これで今までどおりの動作となりました。
このへんの設定は2系も全く一緒なのですがUSB-HDDからも取得できるよう仕様が変更になったものと思います。

Radikoプレーヤー
以前の設定ファイルをコピーできるようmoode2.7のカードをUSBアダプタにセットします。

# df
/dev/sdb1                              60M   21M   40M   35% /media/MOODE
/dev/sdb2                             7.2G  2.4G  4.5G   35% /media/eda95d8a-9cdd-4224-96d0-890b4791600c

カード/dev/sdb2はuuidでマウントされます。作業がしにくいので再マウント

# mkdir /mnt/sd
# mount /dev/sdb2 /mnt/sd
# df
/dev/sdb1                              60M   21M   40M   35% /media/MOODE
/dev/sdb2                             7.2G  2.4G  4.5G   35% /mnt/sd

アンマウントは umount /mnt/sd
アンマウントするとまたuuidでオートマウントされます。

以前のとおり必要なパッケージをインストール、設定をします。
lighttpd

# apt install lighttpd php5-cgi
# lighty-enable-mod cgi
# lighty-enable-mod userdir
# gpasswd -a www-data audio

confファイルをコピーまたは手作業で編集
mplayer

# apt install mplayer swftools libxml2-utils libav-tools rtmpdump

/var/www/htmlのコピー

# mv /var/www/html /var/www/html.def
# cp -Rp /mnt/sd/var/www/html /var/www

Radikoが動かない
必要な設定を済ませて起動するとRadikoが再生できませんね〜。
らじるは動きます。
ググってみるとRadikoに仕様変更があったみたいです。
radikoの仕様変更で録音ができなくなる問題を修正
そんな訳で当サイトで使っているスクリプトも変更してみました。
radiko.sh(変更箇所のみ記載)

playerurl=http://radiko.jp/apps/js/flash/myplayer-release.swf

if [ ! -f ${keyfile} ]; then
    swfextract -b 12 ${playerfile} -o ${keyfile}

wget -q \
    --header="X-Radiko-App: pc_ts" \
    --header="X-Radiko-App-Version: 4.0.0" \

/var/tmp/player.swfを削除

# rm /var/tmp/player.swf

これで無事再生出来ました。
moode2.7のカードでは今でも動くのでplayer.swfが生きていれば古いスクリプトでもOKのようです。

再生はやはり最初1分で再生を停止してしまいます。
ターミナルからradiko.sh -t 120 -p FMTとかしてやると次回から特にオプションを指定しなくても連続再生してくれるようです。

MoOde Audio 3.1
Playerについては大きな変更は見当たらないようです。
SMBブラウズは確実に早くなっています。
また起動、終了、ファイルの読み書きなどずいぶん改善されていると思います。
rasbianベースによるところが大きいのでしょう。

Pi1B+MoOde Audio メインシステムへ移行
MoOde Playerの使い勝手がいいので当サイトのメインシステムとして移行することにしました。
moode3-1_03
PAM AMPもそのまま使用します。
8Ω負荷では2W程度しか出ないことになりますがスピーカーの能率の良さもあってむしろ大きい音量で鳴ります。
低域から高域まで素直な音がしています。

pi1b-01
PAMには特にローパスフィルタを入れてはいませんがとしのせいかヒューマンフィルタが働いて不要な高域はハイカットされているのかもしれません。
なにより5V単一電源ということもあって気軽に普段使いできるところがいいですね。

スピーカーシステムはNS1000ベースのウーハー、スコーカー別体のYAMAHA製スペシャルBOXです。
ジャンクものばかりの当サイトでは珍しくまともな一品です。
sp01

PAM8403 Mini-AMPを組む

前回作成したPAM8403アンプですが電源オフ時ポップノイズが取りきれない場合があるということでその後いろいろ使用して検討したところ当方で採用したプッシュスイッチに問題がありそうだいうことになりました。
(気にするなと思うと余計気になりますね)

今回新たにスイッチを購入して前回の半分の大きさの基板にminiサイズとして組んでみました。

pam-mini11

スイッチはマルツで購入。ついでにミニジャックも(40円)
sw01
小型の基板用トグルスイッチ
容量はDC20V0.4Aですが今回のPAM基板では問題ないでしょう

お値段が120円と今回の部品の中で一番高価となってしまいました。

pam-mini12
PAM基板は前回の要領でパターンをカットリード線を設けておきます

基板は秋月のDタイプ(47x36mm)があったので使用(30円)

マイクロBコネクタ基板は便利ですね(28円)
Amazonで購入できます
https://www.amazon.co.jp/gp/product/B0183KF7TM/ref=oh_aui_detailpage_o04_s00?ie=UTF8&psc=1

pam-mini13
抵抗はジャンク基板から取ったチップ抵抗を使用
通常の1/4W抵抗でも縦にしたり横にしたりすれば少々配線は混み合いますがPAM基板の下に収まると思います。

pam-mini14
台はSDカードケースがピッタリです
2.5mmの穴を開けて3mmボルトをねじ込んでスペーサーを入れてやるとうまく固定できます

やっぱりPAMアンプはこのサイズが似合いますね

さてできたので繋ぎ込んでスイッチを入れてみます。
今度はきれいにパワーオフ時もポップ音が消えています。

回路
回路内の電解コンデンサは無くても正常にshutdown動作するようになったので省略しています。
ミュート回路のコンデンサを小型化するため定数を変更しました。
pam-mini15

チェック
PAM基板を外してミュート出力端子(画像白リード側)にテスターで電圧を測るとスイッチオン数秒で0〜5Vに変化します。
シャットダウン端子(画像赤リード側)はスイッチオン5V、オフで0Vに変化します。
あとはPAM基板の端子に合わせて入出力、及び電源を配線してあれば音が出ます。

シャットダウン動作は電源スイッチオフ時Q1のベース電圧をコントロールしてスピーカー端子に電圧の変動が現れる前にシャットダウン端子をローにしてシャットダウンを有効にします。
このためにはパワースイッチの2つの接点がほぼ同時にオフになる必要がありますが前回使用したプッシュスイッチは遊びが大きいためおそらくはシャットダウン側がごく僅かに遅れてオフになるためポップノイズが取りきれなかった場合があったものと思います。

入力をオープンにして電源をオンするとミュート解除した瞬間にプッと僅かな音がしますがこれは仕様と思います。

pam-mini16
今の季節はやはりこれでしょうか

牛丼1杯分いやコーヒー1杯分のPAM-AMPで聞く枯葉も粋なものです。

MoOde Audio ES9023P+UAC3552Aを切り替える(セレクター)

I2S接続のES9023Pを搭載していましたが切り替えが面倒でついUSB-DACを使う機会が多かったのですが当サイトのMoOde Audio(Pi1B)もやっと仕様が固まってきたので残っていた課題に取り組んでみました。

電源ユニットはUSB-HDD,CD/DVDプレーヤーが増えたため専用電源の意味がなくなったため新たにジャンクのATX電源を投入してベース基板も作り直しました。

ATX電源

atx
W80 H120 D100の小型のATX電源 5V 9A
ファンは抵抗で印加電圧を落としてぎりぎり起動するくらいのそよ風仕様です
ファンの音はほとんど気にならない程度まで落としました
通常稼働時は1Aも消費しないので発熱も無く特に問題ないと思います
電圧は禁断の5.3Vに設定
これでもUSB側からの供給だけではCDドライブは正常に読み取りできません
P5コネクタ経由からも供給して初めて読み取りできるようになります

なお後述するように12V電圧が必要になったのでUSBの1ポートだけ空き端子を利用して+12Vを供給しました(通常は絶対にしてはいけないですね。反省しています)
当サイトでは常時稼動しているのでほかに誤って接続するリスクも少ないのでまあよしとしておきます(自己責任でね)
base01
1段目のベース基板
マイクロB端子で電源を入力、隣がリセットスイッチ
出力ジャックは1段目に設けました
今回はGPIOの17〜26番ピンをコネクタで接続しています

base02
2段目のベース基板
こっちにもマイクロB端子がありますがあ試験的に取り付けたものでDAC専用に電源を供給できますがあまり使うことは無さそうです
ES9023P-DACとUAC3552A-DACの出力は一旦この基板の入力ジャックに入ります
2個のLED 右のオレンジはMoOde Player 左グリーンはradiko player切替時点灯

base03
行き場のなくなった3個目のリレーはロングのピンヘッダでまた上に乗っかりました

base04
現在接続しているものは
USB-HDD(1TB)
CD/DVDプレーヤー
wifiドングル
USBメモリ
あとはUSB-DACを接続、電源とアンプに接続でとりあえず周辺機器はこのくらいです。

回路

Pi1台に2個のボードを搭載すると各出力のグランド側に電位差が生じてグランドを共通にしただけでノイズとなって現れてしまいます。(これは簡単に解消できないと思います)
そのため通常のグランド共通のセレクタなどは使用できません。

したがって切り替える際にはグランド端子も含めて切り替える必要があります。
また切替時にも電位差によるノイズが発生してしまいます。
当初はリレー2個で済まそうといろいろ検討したのですがー電源も必要そうだし回路も複雑になるということで何ともしがたくリレーを1個増やすことにしました。
手持ちの小型の5Vリレーは2個しか無く、12Vのリレーで代用することにしました。
結果としてできた回路は至極単純、明快なものとなりました。少々難儀しましたが!
select01
2個のリレーでLR,GNDを切り替えます。もう1個のリレーで出力端子を一瞬ショートしてノイズを抑えます。
R3,R4の値に関しては保護としては大きい方がいいのですが作業中誤ってショートしても壊れないことからこれくらいでいいかなという感じです。(音質的にはない方がいい)
イメージとしてはアンプのボリュームを絞って入力ジャックを入れ替えまたボリュームを戻すといっただけの回路です。
LEDは状態表示用でデフォルトD1(INPUT1)オレンジ点灯、radiko D2(INPUT2)グリーン点灯。
制御はPiのGPIOを使用します。

MoOde Playerの設定

設定からI2S audio deviceを有効にします。
moode01
SETを押すとrebootしろよと言ってくるのでreboot

起動後オレンジのLEDが点灯します

moode02
Audio deviceからI2S audio deviceを選択してAPPLYを押してMPDをRESTART

ノイズもなく音が出ることを確認します

moodeにログインして

$ alsamixer -c1

alsa01
USB-DACも正常に認識されています

シェルスクリプトの作成

/var/www/htmlに2つのファイルを作成します。
/var/www/html/sel_moode.sh

#!/bin/bash
# CARD 0 moode audio
# CARD 1 radiko
nohup killall mplayer > /dev/null 2>&1
CARD=$(gpio -g read 11)
gpio -g mode 9 out
gpio -g mode 11 out
if [ $CARD -eq 1 ]; then
  gpio -g write 9 1
  gpio -g write 11 0
  sleepenh 0.1
  gpio -g write 9 0
fi
mpc play

/var/www/html/sel_radiko.sh

#!/bin/bash
# CARD0 moode audio
# CARD1 radiko
nohup killall mplayer > /dev/null 2>&1
CARD=$(gpio -g read 11)
gpio -g mode  9 out
gpio -g mode 11 out
mpc stop
if [ $CARD -eq 0 ]; then
  gpio -g write  9 1
  gpio -g write 11 1
  sleepenh 0.1
  gpio -g write  9 0
fi

実行権限を与えます。

# chmod 755 sel_moode.sh
# chmod 755 sel_radiko.sh

1秒以下のsleepを利用するためsleepenhをインストールします。

# apt install sleepenh

制御

ブラウザから制御するためにGPIOを利用しています。
jessieからはデフォルトでGPIOが使用できます。当然moodeOSも使用可能です。

$ gpio readall

gpio00
OS起動後
21 IN 0 BCM(GPIO 9)
23 IN 0 BCM(GPIO 11)

条件
OS起動時各リレーはOFF
インプットジャック1 ES9023P-DAC (デフォルト)
インプットジャック2 UAC3552A-DAC

スクリプトはGPIO 11の値を読み取って変数(CARD)に格納して判定しています。

sel_radiko.sh
GPIO 11 0の時 if〜fi 実行
21 OUT 0
23 OUT 1

sel_moode.sh
GPIO 11 1の時 if〜fi 実行
21 OUT 0
23 OUT 0

RL3は切替時のみ一瞬動作(出力ショート)するのでリレーによっては若干の調整が必要かもしれません。
ノイズが取りきれない時
gpio -g write 9 1
sleepenh 0.xx(適当な値)追加

Radiko Playerの編集

radiko01
PlayボタンをMoOdeに変更しました
Radiko再生中からMoOdeボタンを押すことでRadikoを停止、MoOde Playerの再生を開始します

今回より音量差を気にする必要がなくなるのでかなり楽になりました

/var/www/html/index.php
htmlのidとボタンネーム変更

<a class="btn btn-empty btn-lg btn-success" href="index.php?id=moode">MoOde</a>

phpのcase “play”を変更
ここで作成したsel_moode.shを呼び出します。

case "moode":
    exec("nohup sel_moode.sh > /dev/null 2>&1");
    $_SESSION['broad']="MoOde Audio Player";
break;

STOPを押した時MoOde Playerも停止

case "stop":
    exec("nohup killall mplayer > /dev/null 2>&1");
    exec("nohup mpc stop > /dev/null 2>&1");
    $_SESSION['broad']="STOP";
break;

phpの各放送局を変更
ここで作成したsel_radiko.shを呼び出します。

case "fmt":
    exec("nohup sel_radiko.sh > /dev/null 2>&1");
    exec("nohup /bin/bash radiko.sh -p FMT > /dev/null &");
    $_SESSION['broad']="TOKYO FM";
break;

編集が終わったらブラウザをリロードしておきます。

Radikoを再生してみよう

radiko
Listから適当な局を選んでクリック
カチカチっとリレー特有の音がしますがノイズの発生も無く再生されました。
別の局をクリックするとリレーが動作することも無く今までどおり再生されます。
MoOdeボタンを押すとやはりリレーの音がしてMoOde Audioに制御を渡します。
MoOdeからRadiko、RadikoからMoOdeに切り替わる際のみリレーが動作します。

MoOde Playerで再生してみよう

moode03
やはりI2S接続のES9023PはUAC3552Aと比べると音がグットクリアになります。

バックから聞こえる女性の唸っている声(?)もよくとおります。

moode04
少々問題もありますが初期の目標はほぼ達成できました。

Raspberry Pi EasyTAG(タグ編集)

昨日(10/12)は午後9時頃から3時間近く画面が真っ白になっていました。
fastcgi関連のエラーで原因はwordfence securityでした。wordfence securityのディレクトリをリネームしてみるとプラグインアップデートの通知が現れました。
wordfence security自体をアップデートしたわけではないのですが通知の段階で真っ白になるのは困ったものです。
という訳で削除しました。

さて本題ですがMoOde Audio + abcde(CDリッピング)も快調でついライブラリを増やしたくなってしまいます。そんな訳で昔買えなかったアルバムをTUTAYAの1枚100円(10枚)でお世話になっています。

その中で文字化けしてしまうものがありました。
eagytag01
ケルン (ドイツ語: Köln)この文字が化けてしまいます。

Raspberry Pi(Linux)で使えるタグ編集ソフトとなると実用上はEasyTAGになると思います。
でインストール

# apt install easytag

easytag02
この中で文字化けしている部分をちまちま修正していきます

またジャンルも入ってなかったりするものもあります

アルバムアート
MoOde Audioは右側のロゴをクリックすると取得した曲情報を基にGoogle検索に飛んでいきます。
その中から適当なアルバムアートをダウンロードして曲のディレクトリに放り込むとそのアートを表示してくれるのですがどうしても表示しないものがあります。
例えばこれ
easytag03
abcdeはアーティスト+タイトルでディレクトリを作成します
Art_Blakey-[The_Jazz_Messengers]_Moanin
ディレクトリ名に角括弧[ ]が含まれているとその中のアルバムアートを読み込みしないようです。
丸括弧に変更するとかすると正常に表示できます
(タグはそのままでOK)

やはりMoOde Audioは楽しいPlayerです。

Top