• RPi4 Edition ベータテスト

    @パパリウス さん、こんばんは。
    拙宅ではmpdでしか聴いていないので、これまで不具合などは全くないようです。
    あと、パワーアンプのメーターの振れが鋭くなったように見えます。いつも目に入るので、気のせいではないと思います。

    ただ、心地よすぎて、ずっと音楽を聴き続けているので寝不足気味です(^^♪

  • @パパリウス さま
    業務連絡です。
    ファイルアップロードの件ですが、
    HTTP POSTでのファイル処理後にRaspberry側がレスポンスを正常に返せず、
    2分間当該のコネクションがペンディング状態であったことが判明しました。

    本日アップしたソースコードでは処理完了後即座にレスポンスを返し、
    WebUI側でその返事を受け取って通知がされるように改良しています。

    併せて、楽曲情報スクロールのJavaScriptでエラーが計測されましたので
    これを消すように修正いたしました。

  • @ゴンザエモンさん

    ご連絡ありがとうございます。
    こちらも同じような状況です。自前であれこれやってみていますが、うまく動いてくれません。そもそもlinuxのスキルがないのでかなりハードルが高いです。。。

  • @ゴンザエモン さま、 @Pass さま
    なかなかうまく行ってないようですね。ちょっと見てみましたsetupスクリプト
    少なくとも44行の

        if [ -d "/usr/lib/systemd/system" ]; then
    

    と202行の

        INITFILE="/usr/lib/systemd/system/minim${ws}.service"
    

    を"/lib/systemd/system"に直さないと/lib/systemd/systemにminimserver.serviceは生成されませんね。
    (symphonic-mpdでのsystemdのスクリプト保存先はこちらのため)

    という訳でこちらで修正したものをお送りしますので差し替えしてみてください。
    (systemdでの起動は確認していませんが、指定の場所にsystemdのサービスファイルは生成されたことは確認しました)。
    setup.zip

  • sunatomoさん         CC.Passさん、パパリウスさん

    おはようございます。お手を煩わせてしまい申し訳ありません。アドバイスに基づき早速下記の手順にてやってみました。sysytemdへの登録はうまくいくのですが、systemctlでの起動が出来ず結果自動起動がまだできていません。(通常の起動は問題なし)

    手動起動ではstartdのスクリプト125行目(下記記載)で「JAVA : command not found」で叱られています、、、通常起動とsysytemctl起動の動きが若干違うのかな、、、

    (添付、長くてすみません)

    1.為念バックアップを取得

    root [ ~ ]# mkdir /home/pi/backup
    root [ ~ ]# cp /home/pi/minimserver/bin/setup /home/pi/backup
    root [ ~ ]# ls /home/pi/backup
    setup

    2.setupを編集して起動 (44行目と202行目を ctl+jキーで探すと早い)

    root [ ~ ]# nano /home/pi/minimserver/bin/setup
    root [ ~ ]# /home/pi/minimserver/bin/setup

    (以下setupの応答、正しい処理がスタート)

    MinimServer desktop integration is not available
    MinimServer automatic startup is disabled

    Do you want to change these settings (y/n)?
    y
    Enable automatic startup for MinimServer (y/n)?
    y
    Created symlink /etc/systemd/system/multi-user.target.wants/minimserver.service → /lib/systemd/system/minimserver.service.
    MinimServer automatic startup has been enabled

    3.minimserverのステータスを見てみる。が、systemctlでは起動できない。(これが問題?)

    root [ ~ ]# systemctl status minimserver.service
    ● minimserver.service - MinimServer
    Loaded: loaded (/lib/systemd/system/minimserver.service; enabled; vendor preset: enabled)
    Active: inactive (dead)

    root [ ~ ]# systemctl start minimserver.service
    Job for minimserver.service failed because the control process exited with error code.
    See "systemctl status minimserver.service" and "journalctl -xe" for details.

    4.minimserverの手動起動(問題無し)

    root [ ~ ]# /home/pi/minimserver/bin/startd
    /home/pi/minimserver/bin/startd: line 144: warning: command substitution: ignored null byte in input

    5.systemdに登録された内容

    root [ ~ ]# nano /lib/systemd/system/minimserver.service
    [Unit]
    Description=MinimServer
    After=multi-user.target

    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/home/pi/minimserver/bin/startd init
    ExecStop=/home/pi/minimserver/bin/stopall

    [Install]
    WantedBy=multi-user.target

    6.rebootするも起動されない。(systemctl startでエラーになっているため?)

    root [ ~ ]# systemctl status minimserver.service
    ● minimserver.service - MinimServer
    Loaded: loaded (/lib/systemd/system/minimserver.service; enabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Sun 2020-04-26 08:38:18 JST; 1min 59s ago
    Process: 243 ExecStart=/home/pi/minimserver/bin/startd init (code=exited, status=1/FAILURE)
    Main PID: 243 (code=exited, status=1/FAILURE)
    CPU: 137ms

    Apr 26 08:38:18 smpd startd[276]: /home/pi/minimserver/bin/startd: line 125: java: command not found
    Apr 26 08:38:18 smpd systemd[1]: minimserver.service: Main process exited, code=exited, status=1/FAILURE
    Apr 26 08:38:18 smpd systemd[1]: minimserver.service: Failed with result 'exit-code'.
    Apr 26 08:38:18 smpd systemd[1]: Failed to start MinimServer.

    (startd の125行目がエラー、二段になっているが、一行)

          LD_LIBRARY_PATH="${MINIMDIR}/libsys" MINIM_LANG="${MINIM_LANG}" "${JAVAX}" ${JAVAOPTS} -jar "${MINIMDIR}/lib/m${ws}.jar" --launchrc --set watch.view=log --nohup ${MINIMOPTS} "$@" >"${OUTFILE}" 2>&1 &
    

    (以下のように手動起動するとちゃんと動く)

    root [ ~ ]# /home/pi/minimserver/bin/startd init

    (ただし、systemctlでの停止は出来ない、startでのエラー状態のままだから?)

    root [ ~ ]# systemctl stop minimserver.service
    root [ ~ ]# systemctl status minimserver.service
    ● minimserver.service - MinimServer
    Loaded: loaded (/lib/systemd/system/minimserver.service; enabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Sun 2020-04-26 08:38:18 JST; 17min ago
    Process: 243 ExecStart=/home/pi/minimserver/bin/startd init (code=exited, status=1/FAILURE)
    Main PID: 243 (code=exited, status=1/FAILURE)
    CPU: 137ms

    Apr 26 08:38:18 smpd startd[276]: /home/pi/minimserver/bin/startd: line 125: java: command not found
    Apr 26 08:38:18 smpd systemd[1]: minimserver.service: Main process exited, code=exited, status=1/FAILURE
    Apr 26 08:38:18 smpd systemd[1]: minimserver.service: Failed with result 'exit-code'.
    Apr 26 08:38:18 smpd systemd[1]: Failed to start MinimServer.

    (手動での停止はできる)

    root [ ~ ]# /home/pi/minimserver/bin/stopall
    Stopping MinimServer process 342

    7.journalctl -xeの中身(一部抜粋、125行目がエラーなのは同じ)

    A start job for unit minimserver.service has finished with a failure.
    The job identifier is 80 and the job result is failed.
    Apr 26 09:02:49 smpd startd[457]: /home/pi/minimserver/bin/startd: line 125: java: command not found
    Apr 26 09:02:49 smpd systemd[1]: minimserver.service: Main process exited, code=exited, status=1/FAILURE
    Subject: Unit process exited
    Defined-By: systemd
    Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel

    An ExecStart= process belonging to unit minimserver.service has exited.

    The process' exit code is 'exited' and its exit status is 1.
    Apr 26 09:02:49 smpd systemd[1]: minimserver.service: Failed with result 'exit-code'.
    Subject: Unit failed
    Defined-By: systemd
    Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel

    The unit minimserver.service has entered the 'failed' state with result 'exit-code'.
    Apr 26 09:02:49 smpd systemd[1]: Failed to start MinimServer.
    Subject: A start job for unit minimserver.service has failed
    Defined-By: systemd
    Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel

    A start job for unit minimserver.service has finished with a failure.

  • sunatomo さん ゴンザエモン さん 
    ccパパリウス さん

    sunatomoさん
    修正ファイルまで作って頂きありがとうございます。
    お手数をかけしてしまい申し訳ありません。

    ゴンザエモンさん
    こちらの状況も全く同じです。
    systemctl status minimserver.serviceで「java: command not found」「code=exited, status=1/FAILURE」と言われているので、起動タイミングが早すぎるのかと思い、いろいろと試しているところですが、どこをどういじればよいのやら。。。

    root [ ~ ]# systemctl list-dependencies
    default.target
    ● ├─dbus.service
    ● ├─dsctl.service
    ● ├─minimserver.service
    ● ├─mpd.service
    ● ├─rc-local.service
    ● ├─shairport-sync.service
    ● ├─sshd.service
    ● ├─systemd-ask-password-wall.path
    ● ├─systemd-logind.service
    ● ├─systemd-networkd.service
    ● ├─systemd-resolved.service
    ● ├─systemd-update-utmp-runlevel.service
    ● ├─upmpdcli.service
    ● ├─basic.target
    ● │ ├─-.mount
    ● │ ├─tmp.mount
    ● │ ├─paths.target
    ● │ ├─slices.target
    ● │ │ ├─-.slice
    ● │ │ └─system.slice
    ● │ ├─sockets.target
    ● │ │ ├─dbus.socket
    ● │ │ ├─mpd.socket
    ● │ │ ├─systemd-coredump.socket
    ● │ │ ├─systemd-initctl.socket
    ● │ │ ├─systemd-journald-audit.socket
    ● │ │ ├─systemd-journald-dev-log.socket
    ● │ │ ├─systemd-journald.socket
    ● │ │ ├─systemd-networkd.socket
    ● │ │ ├─systemd-udevd-control.socket
    ● │ │ ├─systemd-udevd-kernel.socket
    ● │ │ └─ympd.socket
    ● │ ├─sysinit.target
    ● │ │ ├─dev-hugepages.mount
    ● │ │ ├─dev-mqueue.mount
    ● │ │ ├─fake-hwclock.service
    ● │ │ ├─kmod-static-nodes.service
    ● │ │ ├─proc-sys-fs-binfmt_misc.automount
    lines 1-39...skipping...
    
    
  • 皆様、マロンです。SMPDの音の素晴らしさに感激しています。開発には大変なご苦労がありますので、頑張ってくださいとしか言えませんが、正式版ラズパイ4が出ることに期待しております。
    以前は再生システムの問題で、ラズパイ3最新版のSMPD V9.6は、解像度やクリアさがあるのですが音が細くて、前のバージョンに戻して聞いていましたが、システムを良くすると、実は最新版がやはり最高だということに気づきました。
    私は色々実験した中でRAMに音源を入れ再生させてからLANケーブルを抜いて再生する方法が、どれよりも飛びぬけて音が良いという結果が出ましたので、いつもその方法で再生しています。問題点は操作性の悪さで、途中で再生を止めて次の再生をするとかはできず、そうする時はLANケーブルを再度繫いで操作しなければなりませんが、再生される音は素晴らしいのです。他の場合との差が大きいのです。2つのラズパイを使えば少し近づくのですが、未だ差があります。まぁ、アナログレコードを再生しているのと手間は変わらないのですが・・・・
    それとこのような再生をしていますとRAM領域が小さいので、アルバム1枚が限度で、ハイレゾやDSDだと1曲しか再生できません。パパリウスさま正式版ラズパイ4でRAM領域をもう少し拡大できないでしょうか?

    現在の再生システム 
    ラズパイ3→KALIリクロッカーI2S→逢瀬インテグレート250DAC部→逢瀬Ncore500モノアンプ→自作SP

    以上よろしくお願いいたします。

  • @ゴンザエモン さま、 @Pass さま
    startdの中身を見てみました。
    125行の書込ですが、$JAVAXという環境変数でJavaを実行しているということになります。
    デーモンの場合は基本的にはrootで実行しているため、現状のJavaのパスが見つかっていないので実行出来ていないという状況です。

    118行目の

                JAVAX=java
    

    を

                JAVAX=/opt/jdk/bin/java
    
    

    して動作いたしますか?

  • @sunatomoさん

    ありがとうございます。動きました!!

  • 神様、仏様、sunatomo様       CC.Passさん、皆様

    sysytemctlでのstart、enableによる自動起動もOKとなりました。ありがとうございました!

    sunatomoさんのようなプロが見れば一発なのですね、、、スキル不足を恥じる次第です。もっと勉強せねば。

    皆様:
    またまたのたくさんの板汚し、すみませんでした!

    (参考)
    /home/pi/minimserver/bin/startdの編集を行う際はchmodで書き込み権限を与えてください。

  • ゴンザエモンさんの環境でも無事起動したようですね。
    これでsmpdの可能性が広がり、楽しみ方もいろいろですね。

    sunatomoさん、ゴンザエモンさん
    この度はいろいろとお世話になり、本当にありがとうございました。

  • @ゴンザエモン さま、 @Pass さま
    お役に立てたようで何よりです。
    今回はシェルスクリプトでしたので、中身が見えたというのが大きいですね。

    Windowsなどと違い色々イジれるところがUnix系OSの面白みかつ面倒くさいところですが、
    上手く付き合っていきましょう。

    @マロン さま
    レスを書くために裏で見ていてレスが遅れましたが、
    現状のβでは/var/lib/mpd/music/RAMはRaspberryPiのSDカードに直接アクセスしているように見えますが如何でしょうか?
    (逆にRAMディスクだと思っていたのですが、頻繁に書込をするとSDカードがどこかで壊れそうでWebUIの方でもちょっと練り直しが必要かもしれません。)

  • sunatomoさん
    マロンです。お返事ありがとうございます。
    私は、未だラズパイ4を使っていません。ラズパイ3ですので、ベータ版は試していません。過去の経験では、暫くの間arthphile というソフトを使っていて、その実験ではRAMとSDカードに保存されている音源の再生では、余り差がなかったのですが、SMPDでSDカード内音源の再生とRAMにコピーしたものの再生には、大きな差がありました。私の環境では、arthphile では、RAM(LAN抜き)=SDカード保存(LAN抜き)>USB=NAS
    SMPDでは、RAM(LAN抜き)>SDカード保存(LAN抜き)>USB>NASでした。
    NASは、Soundgenic HDL-RA2HF(クロック交換、トランス電源に変更済み)なので、役不足なのかもしれません。以上、よろしくお願いいたします。

  • @ゴンザエモン さん @Passさん @sunatomoさん

    すでに解決してましたか、出遅れました。
    一応、スクリプトの改変なしでの解決方法として書いときます。

    ~ ]# ln -s /opt/jdk/bin/java /usr/local/bin/java
    ~ ]# mkdir /usr/lib/systemd/system
    

    これでインストール出来ると思います。

    ~ ]# systemctl start minimserver
    ~ ]# systemctl enable minimserver
    

    #.serviceは省略出来る。
    エラーなければ、起動時デーモンとして働いてくれます。

  • @マロン さま
    /etc/fstabの

    tmpfs           /var/lib/mpd/music/RAM  tmpfs defaults,size=650m,noatime,mode=0777      0       0
    

    ここでsize=650mと書いてある場所を増やせば当該RAMディスク宛の容量を変更できます。
    ただし、RaspberryPi3Bの場合は合計1GBしか無いため、あまり大量には割当しないほうが良いと思います。
    (特にMPDでNAS側に大量のライブラリがある場合などはfreeコマンド等でメモリの空きを見ながら慎重に見極めが必要でしょうね)

    @Cresson さま
    ご提示の方法でも動作しますね。
    特にstartdの場合はjavaのシンボリックリンクと直接パス指定のどちらが良いかなぁと私も考えていました。

  • RPi4 Edition ベータテストで@マロンが発言 :

    sunatomoさん
    マロンです。お返事ありがとうございます。

    sunatomoさん
    マロンです。お返事ありがとうございます。
    RaspberryPi3BのRAMディスク宛の容量を増量させてみます。
    RaspberryPi4のRAMディスク宛の容量は最大どのくらいまでなのでしょうか?

    よろしくお願いいたします。

  • @マロン さん @sunatomo さん

    すみません。
    /var/lib/mpd/music/RAMをRAMディスクに設定するのを忘れていました。
    正式版では対応しておきたいと思います。

    v0.9系では650M固定でしたが、RPi4版はメモリ容量の半分とします。
    例えば、2GBモデルなら上限1GB、4GBモデルなら上限2GBとなります。

  • Cressonさん        CC.sunatomoさん、Passさん

    アドバイスいただいた方法で最初からやり直してみました。
    この方法であればスクリプトの編集が不要でコマンド投入だけで良いのでよりスマートで楽ですね!
    手順はこちらに沿って改訂しておきます。ありがとうございました!

    一点だけ、systemdの定義が/usr/lib/systemd/systemの方に書かれてしまうので、
    #cp /usr/lib/systemd/system/minimserver.service /lib/systemd/system
    を行いました。

  • @ゴンザエモン さん

    コピーしないと動かなかったですか?
    /usr/lib/systemd/systemに書かれたユニットは自動で
    /etc/systemd/system/multi-user.target.wants/にリンクが貼られ
    そのまま動くと思うのですが?

    ~ ]# ls -l /etc/systemd/system/multi-user.target.wants/minimserver.service
    

    存在しませんか?

    ps.
    存在しませんか?は間違いですね。
    コピーする前には存在しませんでしたか?

  • @Cresson さん

    アドバイスありがとうございます。そんな簡単な方法もあるんですね。

    コピーする前には存在しませんでしたか?

    setupを行う前はminimserver.serviceは存在していないはずです。
    あまりよく分かっていないので見当違いならスミマセン。