2015年5月アーカイブ

Volumio 1.55 をあれこれ弄ってましたので、この辺でちょっとまとめてみましょう。Firmwareファイルはこちら

オリジナルのVolumio 1.55 と比較すると、こんな機能が入っています

  1. MPD Version 0.19.9
  2. Wave ファイル(RIFF形式)の ID タグが S-JIS でも正しく読める
  3. Linux Kernel 3.18.10
  4. GPIO4 Pin から I2S の MCLK を出力
  5. Arch Linux (RuneAudio の Linux) 由来の Kernel Config  ※ Raspberry PI 2 のみ対応
  6. ジッターレス化対応
  7. 左詰24bit 出力対応
  8. I2C 接続 LCD 対応
  9. LCD に装置の IP アドレス表示

環境に応じて、[MENU]-[System] 画面から、I2S Driver を選択してから音楽を再生してください。設定を誤るとノイズが出ます。

I2Sdriver.pngHifiberry-ASYNC : MCLKと、BCLKが調歩同期します。おそらくほとんどのDACチップで鳴るはず。サンプリングレートの正確さが失われます

Hifiberry-RialTime : Linux オリジナルと同様の動作。理論上ジッタが発生しますが、サンプリングレートは正確。DACチップによってはノイズまみれになるかもしれません

Hifiberry-JitterFree : 理論上発生するジッタを除去してますが、MCLKとBCLKの同期は保証できません。Hifiberry-ASYNC よりはサンプリングレートの正確性が保たれます。DACチップによってはノイズがでる可能性があります

Hifiberry-R2R(Left) : 左詰24bit 出力します。上野DACを接続するときに使います

Summit200を設定する

| コメント(0) | トラックバック(0)

Core Swich を追加しました。って、って、ふつー Core Switch は追加するんじゃなくて、置き換えるものなんですけど、追加です。
どーゆーことかというと、いままで Core Switch は、8624XL だったんですが、これ、100BASE-T の機械なんですね。サブネットをまたぐ通信なんて 100M でいーだろ!ということで今までこれで来てたんですが、バックアップとかでトラフィックがセグメントまたぐようになった都合で、L3 Swich も Giga 化しないと駄目だねぇということになったのです。
あ、Server とストレージ間だけは L2 Swich で Giga 化してましたよ。

DSCN4867.JPGちうわけで、こんなネットワークになりました。

当時、1000円で買った 8624LX と、今回 1500円で買った Summit200-24 です。

さて、問題はですね、この Summit200-24 は Edge License しか入っていないんです。

うちのネットワークは OSPF で経路設定を自動設定しているので、L3 機器は OSPF をしゃべってくれないと困るのですが、ExtreamWare で OSPF をしゃべるには、Advanced Edge License が必要で、Edge License では RIP しかしゃべってくれません。

しょーがないので、Summit200-24 には、RIP をしゃべらせて、8624LX に RIP と OSPF の両方しゃべらせて全体として経路交換をすることにしました。

さて、関連する設定です。

Summit200-24

# Configuration Mode
create vlan "net1"
create vlan "dmz"

#
# Config information for VLAN net1.
configure vlan "net1" tag 10
configure vlan "net1" ipaddress 192.168.10.1 255.255.255.0
configure vlan "net1" add port 1 tagged
configure vlan "net1" add port 24 tagged
#
# Config information for VLAN dmz.
configure vlan "dmz" tag 5
configure vlan "dmz" ipaddress 192.168.5.10 255.255.255.0
configure vlan "dmz" add port 1 tagged
#
# Config information for VLAN net2.
configure vlan "moe" tag 20
configure vlan "moe" add port 1 tagged
configure vlan "moe" add port 24 tagged

# -- IP Interface[1] = "net1"
enable ipforwarding vlan "net1"

# -- IP Interface[2] = "dmz"
enable ipforwarding vlan "dmz"

# RIP interface configuration
configure rip add vlan "net1"
configure rip add vlan "dmz"

# RIP global parameter configuration

# RIP Global enable/disable state
enable rip

# End of configuration file for "Summit200-24".

VLAN を3切ってます。net1 と net2 がユーザセグメント、dmz がセグメント間をつなぐインターコネクトです。
net1 の Default router は、Summit200 が担当します。

つぎに、8624LX

#
# VLAN general configuration
#
create vlan="net1" vid=10
create vlan="net2" vid=20
create vlan="dmz" vid=5

#
# VLAN port configuration
#
add vlan="net1" port=1,24 frame=tagged
add vlan="net2" port=1,24 frame=tagged
add vlan="dmz" port=1 frame=tagged

#
# IP configuration
#
enable ip
add ip int=vlan20 ip=192.168.20.1 mask=255.255.255.0
add ip int=vlan5 ip=192.168.5.20 mask=255.255.255.0
add ip rip int=vlan5 send=rip2 receive=rip2

#
# OSPF configuration
#
set ospf routerid=192.168.5.20 rip=both asexternal=on
add ospf area=backbone stubarea=off summary=send
add ospf range=192.168.20.0 area=backbone mask=255.255.255.0
add ospf range=192.168.5.0 area=backbone mask=255.255.255.0
add ospf interface=vlan20 area=backbone
add ospf interface=vlan5 area=backbone
enable ospf

こっちも Summit200 が持っているのと同じ VLAN を切ってますが、net1 には IP アドレスを振っていません。
net2 の Default Router は 8624 が担当します。

ポイントは set ospf routerid=192.168.5.20 rip=both asexternal=on の設定。この設定が OSPF の経路情報と RIP の経路情報を相互に交換させるコマンドです。

Linux Kernel の Config を変更して音質改善を図ってみよう、第二段

リアルタイムカーネルと呼ばれるものを試してみました。と言っても、Linuxというか、Unix系OSである以上、本当のリアルタイムカーネルというのは不可能なんですけどね。

改造したFirmwareはこちらから。

変更点は、Kernel の Tick タイマーを100Hzから、1kHzに上げてみました。これ、デスクトップ Linux で DTM やる人にとっては当たり前のことらしいのです。

Unix 系というか、マルチプロセスのタイムシェアリング OS には必ず Tick タイマー割り込みというものが乗っています。定期的にタイマーで割り込みをかけて、その割り込みハンドラでプロセスを切り替える。これで、あたかも複数のプロセスが走ってるようにみえる。すなわち、マルチタスクが実現できるのです。

で、せっかく定期的に割り込みが来るんだからと、Kernel はそのタイマー割り込みのタイミングでさまざま OS サービスを行います。デバイスドライバーの Queue に入ってるデータを処理するとかいうのもこのタイミング。UserLand(MPD) から発せられた「この音データ再生しといて」というリクエストは、サウンドドライバーに渡されて、そこで一時保留され、割り込みのタイミングでサウンドハードウェアに渡される・・・・ハズです(まだその辺りのコード読めてない)

つまり、割り込み頻度をあげると、サウンドデバイスへデータが渡りやすくなる。MPDの再生要求に対して、ハードウェアの応答性がよくなる。つまり、リアルタイム性がある OS ということになるのです。

ただし、CPU が忙しくなるので、消費電力が上がるはずです

このアーカイブについて

このページには、2015年5月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2015年4月です。

次のアーカイブは2015年6月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。