• RPi4版 v1.0系のサポートはこちら

    RPi4版 v1.0系に関するご質問はこちらにどうぞ。
    可能な範囲でサポートさせていただきます。

  • オンラインアップデートでv1.0.1を配信しました。


    主な変更点

    • ファームウェアをβ16時点のものに差し戻しました。(start4cd.elf, fixup4cd.dat)
    • Web UIを更新しました。(安定性向上)
    • UPLOADプラグインを更新しました。(安定性向上)
    • SEARCHプラグインを更新しました。(安定性向上)

    ファームウェアの切り戻しについて

    core_freqが指定通りに設定されない問題について、直近にリリースされたファームウェアを順に遡って検証してみました。

    結論としては2019/11/15版までは正常で、2019/11/19版のファームウェアから発生している問題であることを突き止めました。

    v1.0.0のSDイメージには、問題の発生しない版の中で最新にあたる2019/11/15版のファームウェアを同梱しましたが、β16との音質の違いを感じましたので、より注意深い検証が必要と判断し、v1.0.1でいったんβ16のファームウェアに切り戻しています。

    ファームウェア・カーネルにおけるRPi4サポートは現在進行形で進んでおり、特にここ半年ほどは目まぐるしいほどのペースで修正が加えられています。

    新しいファームウェアは安定性の向上や新機能への対応などのメリットをもたらすものだと考えられますが、バイナリのみで提供されているため、内部にどのような変更が加えられたか知ることは容易ではありません。
    動作の安定性と音質の両面を天秤にかけ、採用の可否を判断していくことになりそうです。

  • @パパリウス さん

    最近のファームウェアでは core_freq の値を
    PLLから計算式で求めているようです。
    以下の設定で、core_freq を 594 に設定することができました。
    ※最新のファームウェアで確認しました。

    【変更内容】
    ①dt-blob.bin の PLLC の freq を 1782000000 へ変更。
     1188の場合に、396 (1/3)となっていたため、594 * 3 を設定。
    ②config.txt の gpu_freq, gpu_freq_min を 1 へ変更。
     62 のままだと、v3d が 0 になりませんでした。

    参考にしたURLとは計算式が異なるのですが、上記変更で
    core, h264, isp, v3d の freq が期待通りとなりました。

  • @donuts-shop73 さん

    助言いただきありがとうございます。
    dt-blobを使って調整可能となれば、最新ファームウェアを採用する道が開けますね。
    こちらでも検証してみたいと思います。

    もしよろしければ、参照されたサイトをご紹介いただけませんでしょうか。
    このようなファームウェアの仕様変更に至った経緯について何か分かることがあれば大変参考になります。

  • @パパリウス さん

    読み返してみたら、情報が相当古かったです。
    2012年、初代の頃の話でした。
    どうりで計算が合わないわけです。
    ここからここへ飛びました。

  • @donuts-shop73 さん

    情報提供ありがとうございます。
    こちらでもファームウェア(ブートローダ)のコミットログを追いかけてみました。

    この問題は、11/18版でサポートされたDynamic voltage and frequency scaling (DVFS)によるものだそうです。

    RPi4のファームウェアは、低消費電力・低発熱を最優先に改良が続けられているようで、DVFSの実装もその一環です。

    11/18版のファームウェアを境にCOREやGPUのクロック指定が従来通りには動かなくなってしまい、オーバークロックを常用するユーザ(例えばゲームエミュレータ関連のコミュニティなど)で大きな混乱が生じ、消費電力/熱対策を優先する開発方針に反発する動きもあったようです。


    11/18
    firmware: Reduce voltage as part of DVFS
    firmware: arm-loader: Inherit 2711 mac-address from the bootloader
    See: http://git/vc4/vc4/merge_requests/687

    11/14
    firmware: Fixup chosing of bit depth in legacy graphics
    See: https://github.com/raspberrypi/linux/issues/3331
    firmware: vec: Setup WideScreen Signalling outside of copy protection
    See: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=256489
    firmware: Add global reset mailbox
    firmware: 2711: De-couple start.elf clock setup from the bootloader
    firmware: scaler: Correct defines for SCALER_POS0_START_Y_[MASK|SHIFT] (HVS4)
    firmware: platform: Fix missing HDMI PHY power down bit

    11/8
    firmware: platform: Differentiate between boostable and turbo clocks
    firmware: arm_dt: Set WL_ON and BT_ON from .dtb

    11/6
    firmware: tv_server: Also initialise ts queue on composite
    See: https://forum.kodi.tv/showthread.php?tid=348205
    firmware: Loop to init hotplug

    11/1
    firmware: Update display_power gencmd with optional display id
    firmware: sysman: Fix unsafe check for h264 being enabled
    See: https://github.com/popcornmix/omxplayer/issues/749
    firmware: platform: Reduce absolute microvolts threshold to 500000

    10/28
    firmware: arm_loader: Fix explicit kernel name handling
    See: https://github.com/raspberrypi/firmware/issues/1277
    firmware: Added a new display power mailbox call
    firmware: Update display_power gencmd with optional display id
    See: https://github.com/raspberrypi/linux/issues/3050
    firmware: Remove legacy pkgconfig to avoid Mesa conflicts
    See: https://github.com/raspberrypi/userland/pull/585

    10/21
    firmware: arm_loader: Add os_prefix option
    See: https://github.com/raspberrypi/linux/issues/3237
    firmware: Add support for arbitrary memory specification
    10/11
    firmware: uart1: Revert to the old core-frequency-locking method
    See: https://github.com/raspberrypi/firmware/issues/1267
    firmware: arm_loader: Provide a sensible device_tree_end default
    See: https://github.com/raspberrypi/firmware/issues/1259
    firmware: mmal_ril: Fix size reported on ENOSPC error
    See: https://github.com/raspberrypi/firmware/issues/1269
    firmware: hvs: Trigger the EOLn timer at the field rate when interlaced
    See: https://github.com/raspberrypi/firmware/issues/1227
    firmware: bootloader_state: Add support for a custom TFTP prefix parameter
    firmware: arm_loader: GIC stub => 2711 stu
    See: https://github.com/raspberrypi/firmware/issues/1255

    10/7
    firmware: Unicam: Request frequency of 250MHz when running camera use cases
    firmware: arm_loader: Fix UART unmapping

    9/30
    firmware: bfs: Verify that eth FS has not been closed before using

    9/24
    firmware: platform: Switch to divide by one when arm_freq exceeds 2GHz
    firmware: Add EMMC support to 2711 Arasan EMMC driver
    firmware: arm_loader: Use /memory@0 if found
    See: https://github.com/raspberrypi/linux/pull/3244
    firmware: bootloader_state: Fix length for bootloader_config
    firmware: arasan_emmc: Fix STB_GPIOOVERRIDE for MMC1 in network boot

    9/20
    firmware: ldconfig: Support [edid=*] to mean any HDMI monitor
    See: https://github.com/raspberrypi/firmware/issues/1136
    firmware: image_fx: Remove restriction that output stride must match input stride
    firmware: image_fx: Remove spamming log line

    9/17
    firmware: arm_loader: Fix initial_turbo getting stuck

    9/17
    firmware: Round up HDMI0 minimum core clock
    firmware: board_info: Support bcm2710- and bcm2837- Pi 2 DTBs
    See: https://github.com/raspberrypi/linux/issues/3234
    firmware: power: bcm2711: Rescale the GPIO pad power
    firmware: brfs: Add GENET driver for 2711
    firmware: bootloader_state: Add network state and bootmode configuration
    firmware: bootloader_state: Fix mask for EEPROM header magic

    9/13 1a244df8143cd07a7417d212f59ac9f3a037f9b1
    firmware: Fixups for composite output mode
    See: https://github.com/raspberrypi/firmware/issues/1223
    ★ firmware: platform: Allow display_power to be queried from gencmd
    See: https://github.com/raspberrypi/firmware/issues/1224
    firmware: arm_loader: Fix no-DT and upstream handling
    See: https://github.com/raspberrypi/firmware/issues/1250

    9/9
    firmware: platform: Set up emmc clock earlier
    firmware: hdmi: Implement platform_display_power on 2711
    See: https://github.com/raspberrypi/firmware/issues/1224
    firmware: arm_loader: Pass overscan settings to the kernel
    firmware: arm_loader: Add option disable_fw_kms_setup to stop FKMS setup by FW
    firmware: hdmi: Use pixel clock multiplier to determine the core clock

    9/4
    firmware: Port file loading revamp to master

    9/4
    firmware: Avoid defaulting to 64-bit kernel on older Pi

    9/4
    firmware: Revamp file loading logic
    firmware: power: Allow reading uncached voltage
    firmware: arm_loader: Request KMS to use CVT timings
    firmware: vc_image: Default YUVUV to non-tall mode, with flag if required
    firmware: ldconfig: Implement [pi2/pi3/pi3+] using board types
    See: https://github.com/raspberrypi/firmware/issues/1242

    8/30
    ★ firmware: platform: Remove 10mV of margin

    8/30
    firmware: power: Add 2711-specific PMIC compensation values

    8/30
    firmware: sdhost_arasan: Disable busy wait on EMMC_STATUS_NEW_CARD_DATA_SET

    8/28
    firmware: AWB: Fix for manual WB settings in capture
    See: https://github.com/raspberrypi/firmware/issues/1215

    8/21
    firmware: arm_loader: Fix initial_turbo getting stuck
    See: https://github.com/raspberrypi/firmware/issues/1005
    firmware: clock_2711: don't set reserved values for KA in PLL KAIP registers

    8/9
    firmware: AWB: Allow user to set manual gains for the RPi algorithm
    firmware: arm_loader: Fix disabling of audio before reboot
    firmware: fixed up the custom CVT values to use correct group
    firmware: hdmi: Add independent table entries for hdmi_timings on each display
    See: https://github.com/raspberrypi/firmware/issues/1218

    8/6
    firmware: Fix to allow HDMI audio port route setting
    See: https://github.com/raspberrypi/linux/pull/3100


    ※β12・β16・v1.0.1で採用しているファームウェアは8/1版です。

    ここにリストアップしたのは8月から11月にかけての変更内容のみですが、今月に入ってもバージョンアップの頻度は衰えていません。

    毎週のようにファームウェアの機能改善が行われているのはすごいことですね。

    それだけ関心が高くホットな領域ということでもありますし、仕様が安定してくるのはもうしばらく先ということになりそうです。

  • RPi4で「ファームウェア」というと、下記4種のいずれかを指します。どれを指すかは文脈で判断することになります。

    1. Raspberry Pi ブートローダ EEPROM
    2. VL805 USB EEPROM
    3. GPU ブートローダ (start*.elf, fixup*.dat)
    4. デバイスドライバ(kernel8.img, 各種カーネルモジュール)

    config.txtからcore_freqを読み取って初期化する処理は3)のGPUブートローダが関わっています。

    β16で採用していた8/1版ファームウェアとv1.0.0で採用した11/14版で音質の違いを感じたため、8月〜11月のファームウェアをいくつかピックアップして比較してみました。

    その結果見えてきたのは、coreの電圧と音質にハッキリとした相関が感じられるということです。

    RPi4では低消費電力・低発熱を目指してファームウェアの改善が続けられており、バージョンアップ時に電圧が引き下げられているケースがあります。

    音質 core volt GPUブートローダ
    グループA 0.8525V 8/1版〜8/6版
    グループB 0.8507V 8/9版〜8/30(2)版
    グループC 0.8455V 8/30(3)版〜

    8月にリリースされたバージョンだけでもこれだけの差が見られます。

    低消費電力化は好ましい変更だと思っていましたが、、、GPIOやI2Sなどの周辺機能にとっては安定動作のマージンが切り詰められているということなのかもしれません。

    今回の音質評価結果を踏まえまして、当面はv1.0.1で採用している『8/1版』を継続して利用していきたいと思います。

  • オンラインアップデートでv1.0.2を配信しました。

    カーネルの更新が含まれるため、アップデートに時間がかかります。(数十秒から1分程度)


    主な変更点

    • カーネルを更新しました。ビルド番号は#102となります。
      Linux 4.19.86-v8 #102 SMP PREEMPT Sun May 24 22:26:18 JST 2020
    • rpi-dacドライバで32bitをサポートしました。
    • config.txtのgpu_freq, gpu_freq_minの初期値を変更しました。(gpu_freq=8, gpu_freq_min=1)
    • Spotifyのキャッシュ設定をオフにしました。(RAMディスク/runをキャッシュで埋め尽くしてしまうため)
    • Web UIの《SOUND CARD》で選択項目の修正をおこないました。(i-sabre-k2mをi-sabre-q2mに変更)
    • Web UIの《UPDATE LIBRARY》に、tag_cache/playlistsのバックアップ・リストア機能を追加しました。

    B8454312-52F8-418B-B9C0-D3DC8FC59316.png

    BACKUPボタンで、NASの直下にtag_cacheとプレイリスト(/var/lib/mpd/music/playlists)をバックアップします。
    RERSTOREボタンで、リストアします。

  • パパリウスさま

    ver 1.02にupdateしました。

    IAN FifoPi2 で、rpi-dac 32bitで再生するのを確認いたしました。
    spotify も短時間ですがきちんとデバイス表示され再生できることを確認いたしました。

    しかしながら、update library で tag_cache backupのスクリプトが表示されません。
    firefox、google chrome、anchia chrome で確認しました。キャッシュをクリアしてもだめです。

    以上ご報告まで。

  • @mike さん

    ご確認ありがとうございます。
    バックアップ・リストア機能は、こちらの準備ミスでアップデートから漏れてしまったようです。
    明日にでも追加のアップデートを配信したいと思います。

  • オンラインアップデートでv1.0.3を配信しました。


    変更点

    • Web UIの《UPDATE LIBRARY》に、tag_cache/playlistsのバックアップ・リストア機能を追加しました。
  • パパリウスさま

    IAN FiFopi2 を ver 1.0.3 へupdateし、tag_cache/playlists バックアップ機能があることを確認し、きちんとNAS内にセーブされていることを確認いたしました。

    NASからの再生、Spotifyからの再生も問題ありません。

    また、Sabreberry32pro でも同様に、NASから再生、Spotifyの再生、tag_cache等のバックアップ機能が正常に動作することを確認いたしました。

    修正ありがとうございました。

  • @mike さん

    先日に続き、ご確認ありがとうございます。
    ところで、v1.0.3の音質、、、どうですか?

  • パパリウス様 v.1.0.3を試させていただきました。 NASのmpdディレクトリーにtag_cache.0.19.21が保存されてました。
    音は聴いて大変驚きました。特に重低音の再生レベルが凄いことになってました。少しレベルを上げたら隣の部屋から妻が飛んできました。低音好きの私には最も好ましく感じております。

  • @パパリウス さん

    v1.0.2より良くなりました?
    変更点はWebUIの機能追加だけなのに?

  • @Pass さん

    v1.0.2の音質、いかがでしょうか
    (v1.0.3は同じ音質です)

  • @パパリウス さん

    (v1.0.3は同じ音質です)

    ですよねぇ。

    ずいぶんよくなりましたね。v1.0.2はsmpdらしい安定感のある音だと思います。

    今日はrpi4の2GB版を入手してsmpdは2GBに変更しました。従来の4GB版はminimserverやLMSでサーバーをやらせて、smpdはUpnp化して聴いています。

  • パパリウスさん、皆様

    こんばんは。V1.0.1からV1.0.3にしました。

    あらら、あらら、、、、(笑い)

    これは絶対にバックアップを取っておかねば!

  • パパリウスさま

    Ver1.03 は Ver1.01 からはっきり音が変わったように感じました。
    みなさまは ver1.01 よりずっとずっと高く評価されているようですね。

    私は最初はほんとに美しいよく響いてきれいだ、と思ったのですが、ver1.01 でのあのフォルテのクリアな強さは見当たりません。
    しばらく聴き進んでいくと、音が少し派手目に感じ始め、時として豊かな響きがまとわりつくようにも思い始めました。

    実は、ver1.01のときにIAN FiFoPi2 のXOを CCHD-957 に換装しました。ハンダに失敗し汚い仕上がりなので実装に自信ありません。
    つまり、SMPD ver1.03 で変わったのか、XOで変わったのか自信はありません。

    そこで、ver 1.01に戻して確認してみました。

    Ver 1.01 はやはりとても強靭な音です。フォルテはピュアに伸びていきスリリングです。ピアニッシモの消えていく音もとても自然で美しいです。
    そういえば、rpi-dac はいつも24bit出力だったのに、ver 1.03 ではテストを兼ねて32bitに上げたことを思い出し、24bitに戻してみましたが結果は変わりませんでした。

    もちろん、我が家のシステムの条件下ではありますが、みなさまとは異なり、好みとしては ver1.01のピュアな強さです。
    以上、個人のやや偏向した好みの披瀝となってしまいましたが ver1.03 試聴のご報告であります。

  • @mike さん

    ご返信いただきありがとうございます。

    v1.0.1からv1.0.2へのバージョンアップでは、高域の顕著な改善と、ボトルネックの移動に伴う帯域バランスの変化(崩れ)がありました。
    おそらく、mikeさんの好む音質から遠ざかってしまっただろうと思いまして、ちょっと心配になりお声掛けした次第です。

    今後のバージョンアップで再びバランスが良化していくものと思いますが、ご要望があればv1.0.1のカーネルへの差し替え手順をご案内いたします。