• RPi4 Edition ベータテスト

    ericさん、パパリウスさん

    私はPuTTYでssh接続していますが、symphonic-mpdと出た後
    その先に進まず待ちの状態になりました。
    仕方ないので一度電源を落として再起動させると正常になりました。

    ericさんと同じ症状かはわかりませんが、参考までに投稿させていただきます。

  • ブルー様 ご指摘の通り電源を落として再起動させたところ問題なくSSHでの接続が出来ました。有難うございました。

  • パパリウス様 待ちの状態になっていたようです。ブルー様のご指摘通りに電源を落として再起動させたところ問題なくSSHに入ることが出来ました。
    しかしまたトラブルです。SSHで入って nano /etc/mpd.confを実行してDSD Modeを有効にしてSystemctl rebootを実行したところConnection refusedが繰り返し出て立ち上がらなくなりました。この失敗を何回となく経験して困っています。シャットダウンして最立ち上げをしても変わりません。

  • @eric さま
    Connection Refused がWebUIで計測されている際は
    ほぼ間違いなくmpdが起動出来ない状態です。
    mpd.confを手動で変更したようですのでその記述を確認して下さい。

    ログとしてはjournalctl, systemctl status mpd.service,cat /var/run/mpd/mpd.log
    のいずれかにエラーの原因が書かれているはずです。

  • @パパリウス さま

    ここ数日、自宅のネットワークトラブルでSMPDを起動できておりませんでしたが、かろうじて復旧したためβ7からβ9へとアップデートを行いました。
    アップデート画面の一瞬(10/10表示)で終わってしまったため、もう一度updateを押したところ、下記のように表示されアップデートが未完なのか完了しているのかわからない状態となってしまいました。

    your version is not supported.
    version check succeeded
    

    この後、以下のことを試しましたが状況変わらずです。
    ・Firefox と Edge にて確認
    ・Firefoxのプライベートウインドウにて確認
    ・ブラウザでF5、Ctrl+F5 にて更新
    ・SSHにて、 /usr/local/bin/inplace_update.sh
    ・sed -i s/ver="v0.9.x"/ver="v1.0.0b"/ /usr/local/bin/inplace_update.sh
    作業の都度、再起動はかけております。

    こちらの操作の問題で発生したトラブルではありますが、今後発生する方もいらっしゃるかもしれませんので、一応ご報告まで。

  • @KSK さま
    新しいインストールイメージとしてβ8が作成されたため、β7→β9のアップデートは出来なくなっているのではないのでしょうか?
    (私もβ7からアップデートしようとしましたが失敗したので、β8のイメージを焼き直ししてアップデートしました)

  • @sunatomo 様

    ご指摘ありがとうございます。
    SDイメージの更新というのを見過ごしておりました。
    お恥ずかしい。。。

    大変失礼いたしました。

  • ここに返信させてください。

    @sunatomo 様

    ご指摘ありがとうございます。
    SDイメージの更新というのを見過ごしておりました。
    お恥ずかしい。。。

    大変失礼いたしました。

    恥ずかしながら、私もSDイメージの更新を忘れてました。

  • @sunatomo 様

    先日の「Prev・Nextボタン動作確認について」ですが、
    理解できないままに試してみました。SMPDのバージョンはβ9へのアップデートに失敗したβ7です(笑)
    Nextボタンがどれかわからなかったため、そのまま貼り付けております。
    お役にたつかどうかわかりませんが、ご報告まで。
    ※Chrome 80.0.3987.149 での実行です。

    
    VM19 0:1 A preload for 'http://smpd.local/fonts/glyphicons-halflings-regular.woff2' is found, but is not used because the request credentials mode does not match. Consider taking a look at crossorigin attribute.
    VM19 0:1 A preload for 'http://smpd.local/fonts/material-icons.woff2' is found, but is not used because the request credentials mode does not match. Consider taking a look at crossorigin attribute.
    VM19 0:1 [DOM] Input elements should have autocomplete attributes (suggested: "current-password"): (More info: https://goo.gl/9p2vKq) 
    mpd.js:24 connected
    2
    mpd.js:30 execQueue #next show check1
    The resource http://smpd.local/fonts/material-icons.woff2 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.
    The resource http://smpd.local/fonts/glyphicons-halflings-regular.woff2 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.
    mpd.js:30 execQueue #next show check1
    5
    /#/browse/0/NAS/CD_Wave:1 Uncaught SyntaxError: Unexpected token  in JSON at position 23
        at JSON.parse (<anonymous>)
        at WebSocket.socket.onmessage (mpd.js:24)
    mpd.js:30 execQueue #next show check1
    mpd.js:30 execQueue #next.show check2
    4
    VM246:1 Uncaught SyntaxError: Unexpected token  in JSON at position 23
        at JSON.parse (<anonymous>)
        at WebSocket.socket.onmessage (mpd.js:24)
    mpd.js:30 execQueue #next show check1
    mpd.js:30 execQueue #next.show check2
    bundle.js:540 [Violation] 'click' handler took 268ms
    5
    [Violation] Forced reflow while executing JavaScript took <N>ms
    bundle.js:540 [Violation] 'mousemove' handler took 178ms
    bundle.js:540 [Violation] 'mouseover' handler took 182ms
    
    ​
    
  • β9以降のアップデートは、β8のSDイメージで新規インストールしていただく必要があります。
    お手数ですが、どうぞよろしくお願いいたします。


    @KSK さん

    アップデート画面が一瞬で10/10表示になる件は、β9で対策してみました。次回アップデートからは1/10から10/10まで表示が変わるようになっていると思います。
    (ympdからsystemd-runでinplace_update.shを実行するときに--no-blockオプションをつけるようにしてみました。)


    @ブルー さん

    sshログイン時に固まったときは、Ctrl+Cを押してみてください。
    ログイン時に温度を取得するためにvcgencmdを実行しているのですが、ここで無応答になることがあります。

    vcgencmdは、BCM2835 VCHIQというドライバーを使ってVideo Coreにアクセスしてラズパイの情報を取得しています。
    このドライバーはXenomaiには対応していないため、spin_lock時に問題が発生することがあります。
    気付いたところはちょこちょこと手直ししているのですが、まだ完璧ではありません。引き続きドライバの修正は続けていきます。


    @eric さん

    @sunatomo さんからもフォローがありましたとおり、mpd.confの編集ミスが原因でmpdが起動しなくなっているものと思います。
    サポートプラグインでログを取得してお送りいただけば、mpd.confの修正内容をこちらで確認させていただきます。

  • RPi4 Edition ベータテストで@パパリウスが発言 :

    sunatomo様
    有難うございました。私には手に負えないのでSDカードをフォーマットしてβ8からやり直しをしました。数多くのDSDファイルを何とか鳴らしたいのでmpc.confファイルを編集してしまい、その都度同様の失敗を繰り返しています。当分はPCMファイル利用で楽しみさせていただきます。

  • 自衛対策として完成SDカードのイメージ(v.1.0.0.β9)をハードディスクに保存しました。

  • v1.0.0 β10 配信

    オンラインアップデートでβ10を配信しました。

    :fa-exclamation-triangle: β7より古いバージョンからアップデートすることはできません。事前にβ8のSDイメージからインストールをお願いします。

    <変更点>

    • ラズパイ起動時 にSpotify または AirPlayの立ち上げに失敗するケースに対応しました。(起動失敗時に数回リトライします)
    • Web UIのブラウズ画面で親ディレクトリに戻った時に自動でスクロールするようにしました。
  • Web UIのNEXT/PREVボタンの動作は引き続き対策を進めますが、その他の不具合は一通り解消することができました。

    RPi4版を拙宅のメインシステムに組み込み、最適化の作業に着手しております。

    最初に着手するのは以下にリストアップしたソフトウェア・ライブラリの最適化です。

    # ライブラリ rngd journald networkd resolved
    aplay−rt
    AirPlay
    Spotify
    mpd
    glibc libc ● ● ● ● ● ● ● ●
    librt ● ● ● ● ● ● ● ●
    libpthread ● ● ● ● ● ● ● ●
    libdl ● ● ● ● ● ●
    libm ● ● ● ● ●
    gcc libgcc_s.so.1 ● ● ● ● ● ●
    libstdc++.so.6 ● ●
    systemd libsystemd-shared-244 ● ● ●
    acl libacl.so.1 ● ● ●
    Util-linux libblkid.so.1 ● ● ●
    libmount.so.1 ● ● ●
    kmod libkmod.so.2 ● ● ●
    attr libattr.so.1 ● ● ●
    xz liblzma.so.5 ● ● ● ●
    libcap libcap.so.2 ● ● ● ●
    zlib libz.so.1 ● ● ● ●
    openssl libcrypto.so.1.1 ● ● ● ●
    libssl.so.1.1 ● ● ● ●
    systemd libsystemd.so.0 ●
    expat libexpat.so.1 ●
    soxr libsoxr.so.0 ● ●
    libconfig libconfig.so.11 ●
    popt libpopt.so.0 ●
    xenomai libcobalt.so.2
    libmodechk.so.0
    alsa-lib libasound.so.2 ●
    dbus libdbus-1.so.3 ●
    cui libicui18n.so.65 ●
    libicuuc.so.65 ●
    libicudata.so.65 ●
    curl libcurl.so.4 ●
    ffmpeg libavformat.so.58 ●
    libavcodec.so.58 ●
    libavutil.so.58 ●
    id3tag libid3tag.so.0 ●
    flac libFLAC.so.8 ●
    audiofile libaudiofile.so.1 ●
    fdk-aac libfdk-aac.so.2 ●
  • 最適化の進め方は以下のようになります。


    第1段階 PGO

    使用頻度の低いものや、音楽再生に直接関係しないライブラリについては、PGO(Profile guided optimization) による最適化を試みます。

    プロファイルデータ出力を有効にしてビルドし、元のファイルと差し替えます。
    そのあと、実際に音楽を再生させてプロファイルデータを蓄積していきます。
    最後に、プロファイルデータを使って再ビルドします。

    PGOには、プロファイルデータの取り方によって最適化の結果が変化してしまう欠点があります。また、必ずしも狙い通りの最適化がかかるとは限りません。


    第2段階 GCOV

    gcovというカバレッジの測定を行うソフトを活用し、何度も繰り返し実行されているホットスポットをリストアップします。

    特定したホットスポットについては、以下の観点でパッチをあてていきます。

    1. 条件分岐ヒントの指定
    2. 関数呼び出しのインライン化
    3. セクション指定
    4. restrict キーワードの指定
    5. 不要コードの削除
    6. アルゴリズムの見直し
    7. インラインアセンブラによる高速化

    上記の1〜3はカバレッジデータから修正方針を判断することができ、機械的に作業を進めることができます。
    1箇所改善すれば、1CPUサイクルを稼ぐことができます。
    これを数百、数千と積み重ねていくことで、マイクロ秒オーダーの改善に繋げていきます。

    4〜7の作業を行うケースは稀ですが、性能上のボトルネックになっている箇所についてはここまでやることがあります。現状では、aplay-rt、rtalsaドライバ、xsinkドライバが該当します。

  • パパリウスさま

    精力的に作業を続けられていることに本当に感謝しております。これ以降の音質改善にとても期待しております。

    そのさなかに恐縮ですが、現在のb10について質問とお願いがあります。

    遅ればせながら、b8を新たに焼き、b10までupdateいたしました。
    きちんと再生されていますが、やはりplaying cue のnextが1500を超えると動作しません。
    さらに加えて、そういった場合でも操作可能な MPD clientも接続できなくなりました。

    システムは、いつものとおり、以下の2つです。
    RP4B/Inno-i2s>HDMI/D70
    RP4B/Sabreberry32pro

    mpd.confをのぞいてみると、

    "# port setting : /lib/systemd/system/mpd.socket"

    とありました。mpdサービスでなく、MPD client を受け付けない socket を起動しているということでしょうか。

    そしてこれ以降、MPD client は使用不可能になるということでしょうか。
    大量ソースをコントルールするときにはMPD clientが便利なこともあるので可能なら利用できる道を残していただけるとありがたいのですが、可能でしょうか?

    どうかよろしくお願い申し上げます。

  • @KSK さま
    レス遅れましたが、Consoleログ拝見しました。

    Uncaught SyntaxError: Unexpected token  in JSON at position 23
    

    というのが気になりますね。この状況、β7でDISK USAGEで個人的にハマっていた際に
    目にしていた記憶があります。
    このようなログ、β8以降のイメージでは計測されますでしょうか?

  • @パパリウス さん @sunatomoさん

    親ディレクトリに戻ったさい自動でスクロールする件、ありがとうございます。
    完璧に作動してます。

  • @mike さま
    大変恐れ入りますが、WebUIにてキューを大量に入れた際に、Developper モードのConsole、お送り頂けいると幸いです。
    @KSK さまのようにWebSocketで受信したパケットが正常に受けられていない可能性がありそうです。

    mpd.confの設定ですが、上記の通りで

    # for Any other mpd clients
    ListenStream=6600
    

    の通りコメントアウトを無効化して

    systemctl stop mpd.socket
    systemctl start mpd.service
    systemctl daemon-reload
    systemctl start mpd.socket
    

    とすれば、6600ポートの接続は復活します。

    @Cresson さま
    今回の戻る動作は私がタッチする前に パパリウス さまに対応頂いています(笑)

  • @mike さん

    これまではmpd.confでポートを設定していただいておりましたが、今後は
    /lib/systemd/system/mpd.socket
    というファイルを編集していただければと思います。

    # for Web UI
    ListenStream=%t/mpd/socket
    
    # for Any other mpd clients
    #ListenStream=6600
    

    6600の方のコメントを外して保存し、再起動してください。

    再起動の代わりに
    systemctl daemon-reload
    systemctl restart mpd.socket
    systemctl restart mpd
    でも大丈夫だと思います。