Select Your Language

免責事項

  • 本サイトの情報の利用、内容、サービスによって、利用者にいかなる損害、被害が生じても、著者は一切の責任を負いません。ユーザーご自身の責任においてご利用いただきますようお願いいたします。

    本サイトで頒布している基板およびキットは、技術者、またはそれに準ずる電気的知識をお持ちの電子工作ファンの方のためのものです。 一般のオーディオファンの方のためのものではありません。
    また、頒布基板およびキットは、いかなる条件でも動作を保証するものではございませんので、あらかじめご了承ください。

    電子工作では、火傷、感電、火災などの可能性があります。 十分に注意をして作業して下さい。

    営利目的のご使用は認めておりません。  記事の転載や、基板・キットの商用利用の方は、ご連絡ください。
    学生やサークルの学習目的でまとめてご購入する場合は特別なコースをご用意させていただきます。

スポンサー

« sabreberry32 頒布開始します | トップページ | Moode Audio Player Release2.5 でsabreberry32のマスター/スレーブを切換える方法 »

2016年3月17日 (木)

SabreBerry32のドライバのコンパイル方法(SABRE9018Q2C)

OSに Raspbian を採用しているvolumioでSabreBerry32用ドライバのコンパイル方法を説明します。 

本家RaspbianやRaspbianをベースにしている Moode Audio Player 等も同様です。 

SabreBerry32の紹介ページに書いたドライバ導入方法は、既にコンパイル済みのドライバをインストールするので、コンパイル環境を構築する必要がありません。 

 

以下は、自前でドライバモジュールをコンパイルする方法です。 

 

まずはコンパイルする環境を準備するところから始めます。 

私も長らく勘違いしていました。 じつは、ドライバモジュールをコンパイルするのにカーネルソースは必要でも、カーネル本体をビルドする必要はありません。 したがって、カーネル本体のセルフビルドに掛かるような時間(4~5時間)を待つ必要がありません。 

 

SDカードの領域拡大

 

Ssh01 

SDカードは、Volumio単体では2GBの容量で足りますが、カーネルソース一式を入れるので、8GBくらいあった方が良いです。 

それでは、SDカードの領域をいっぱいまで使えるようにfdiskでパーティション領域を拡大していきましょう。

 

sudo fdisk /dev/mmcblk0

d エンター (削除する)
3 エンター (3番目のパーティション)
n エンター (新規作成)
p エンター (プライマリ)
3 エンター (3番目のパーティション)
エンター (初期値のまま)
エンター (初期値のまま)
w エンター (書き込んで終了)

ここで、一度再起動します。 reboot       再起動したら、またsshで接続します。

sudo resize2fs /dev/mmcblk0p3  (パーティション3の場合)

終わったら、領域が拡大されたか、確認してみましょう。

root@volumio:~# df -h
Filesystem                   Size  Used Avail Use% Mounted on
rootfs                       7.3G  662M  6.4G  10% /
/dev/root                    7.3G  662M  6.4G  10% /
devtmpfs                     484M     0  484M   0% /dev
tmpfs                         98M  496K   97M   1% /run
tmpfs                        5.0M     0  5.0M   0% /run/lock
tmpfs                        256M     0  256M   0% /run/shm
/dev/mmcblk0p1                75M   24M   51M  32% /boot
Ramdisk                      256M     0  256M   0% /run/shm 

------ 8GBのSDカードの例です -------

 

 

コンパイル環境の構築

コンパイル環境をインストールします。

sudo apt-get update

sudo apt-get -y install ncurses-dev device-tree-compiler gcc bc make

gcc -v コマンドでバージョンを確認して下記コマンドのgcc バージョンと同じならOKです。 

cat /proc/version

 

もし違っていれば、該当するバージョンのgccをインストールします。 そして優先順位を指定します。 (例えば4.9が入っていて4.8を指定したい場合)  

sudo apt-get -y install gcc-4.8

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60

gcc -v コマンドでバージョンを確認して 4.8.xになればOKです。 

 

 

現在起動中のカーネルソース取得

rpi-source を導入します。 これ、すごい仕組みです。 現在使っているカーネルのバージョンを調べて、そのカーネルソース一式を一発で持ってきてくれます。

sudo wget https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source -O /usr/bin/rpi-source

sudo chmod +x /usr/bin/rpi-source

sudo /usr/bin/rpi-source -q --tag-update

sudo rpi-source    <= 場所を指定しないと /root/ に展開されます

sudo rpi-source -d /home/pi/    <= 場所を指定する場合このような感じで
(ソースが落ちてくるまで、しばらく待ちます。。  10~30分くらい )

 

 

ドライバモジュールのコンパイル

終わりましたら、いよいよ sabreberry32 のドライバのコンパイルです。

git clone https://github.com/SatoruKawase/SabreBerry32

cd SabreBerry32

sudo make

sudo make modules_install

 

devicetreeも同様にコンパイル&インストールします。

sudo make dtbs

sudo make install_dtb

 

ドライバを組込むように設定

/boot/config.txt に下記の2行を追加すると、次回起動時に有効になります。

dtparam=i2c_arm=on
dtoverlay=sabreberry32

 

以上で終了です。 

 

手順さえ分かったら、意外と簡単ですかね。 

 

マスター・スレーブ切換え

/boot/config.txt の設定を下記のようにするとDACをスレーブで起動できます。 
次回起動時に有効になります。

dtparam=i2c_arm=on
dtoverlay=sabreberry32,slave

 

16bit (S16LEフォーマット)で再生したいときはスレーブに切換えてください。

 

 

 

 

にほんブログ村 PC家電ブログ PCオーディオへ にほんブログ村
ブログランキングに参加中です。 めざせ1位! 
もしよろしければ「ぽちっと」お願いします。 



« sabreberry32 頒布開始します | トップページ | Moode Audio Player Release2.5 でsabreberry32のマスター/スレーブを切換える方法 »

DAコンバータ」カテゴリの記事

Raspberry Pi」カテゴリの記事

コメント

次回のsabreberry32 頒布は何時ごろでしょうかね。

現在、部品の手配をかけている最中です。
再開は4月下旬ころを目指しています。 よろしくお願いします。

はじめまして、電流駆動アンプとSABRE9018Q2Cで検索して飛んできました。
素人考えで申し訳ないですが、9018Q2CとES9118は何が違うのかご存知でしょうか?

和京神壱さん

DAC機能を持ったICは、色々なメーカーから様々な品種がでています。 ESS社もいくつかの種類を出していますが、データシートを公開していないため詳細は不明です。 概要が書いてある資料はESS社のwebサイトで読むことができます。 そちらを参考にしてみてはいかがでしょうか。 

http://www.esstech.com/index.php/en/products/dac/

たかじんさんお忙しいところご返答ありがとうございます。
9018Q2CはHPA統合型について質問したのは、素人考えですが、HPAバイパスさせてDAC単体の出力も得られるのかなとか、電流出力型 DACならIV無しで電流駆動アンプに直結できないのかなといった疑問でした。

もう少し調べて見たいと思います。

和京神壱さん

電流を出力させたいという意味では、DAC単独のES9018K2M、PCM1792Aなどを使った方が良いと思いますよ。

先日、Sabreberry32をギリギリ入手できて、工作面は落ち着いたと思ったら中々ドライバインストールから戸惑ってしまったので、F/Bさせていただきますね。

先日、Trial Releaseされた、moOdeOS 2.6 TR4が出ましたが、ブログ内容からOS側が変わっていた点が下記のように変わっていました。
・moode audio playerにSetup Guideがついたのでログインユーザ等がそちらに記載されてようになりました。SSHログインはpiのみでrootログインは塞がれました
・moode audio playerではWeb UIの設定が、/var/www/player.dbに集約されていますが、TR4時点でaudiodevの数が93個あり、id numberがプライマリキーになっているので、sabre32_install.shでコケました(一応の治し方を下記に書いておきます)

シェルスクリプトの中では、下記のMaster、Slaveの設定を追加している部分になります。
sqlite3 /var/www/db/player.db "INSERT INTO "cfg_audiodev" VALUES(85,'SabreBerry32_Master ','ESS SABRE9018Q2C','Sigma/Delta 32 bit 384 kHz','I2S','sabreberry32','100,0,FIR interpolation with de-emphasis','H/W volume');"
sqlite3 /var/www/db/player.db "INSERT INTO "cfg_audiodev" VALUES(86,'SabreBerry32_Slave ','ESS SABRE9018Q2C','Sigma/Delta 32 bit 384 kHz','I2S','sabreberry32,slave','100,0,FIR interpolation with de-emphasis','H/W volume');"

sqlite3からdbファイルを開いてみると下記の定義のようになっていますが、settingsの部分が設定にうまく反映されていないようでした。
確認をしてみると、

sqlite> .schema cfg_audiodev
CREATE TABLE cfg_audiodev (id INTEGER PRIMARY KEY, name CHAR (64), dacchip CHAR (32), arch CHAR (128), iface CHAR (32), driver CHAR (32), settings CHAR (128));

sqlite> select max(id) from cfg_audiodev;
93
という事で、対応機器の追加で、idは94以降の数字を指定しなければならないのと、最後のsettingsの指定の記載で、'H/W volume'のカラムが変更されてしまったのかもしれませんね。
primary keyがバージョンアップと共に変わってしまうので、シェルスクリプトに落としこむのは変数を取ったりしなければならないので、チョット面倒くさそうですね。2.6 TR4時点では、下記のように手でinsertをしてやれば解決しました。DACの設定は手動で設定することになります。

pi@moode:~/sabreberry32 $ sqlite3 /var/www/db/player.db

sqlite> INSERT INTO "cfg_audiodev" VALUES(94,'SabreBerry32_Master ','ESS SABRE9018Q2C','Sigma/Delta 32 bit 384 kHz','I2S','sabreberry32','');
sqlite> INSERT INTO "cfg_audiodev" VALUES(95,'SabreBerry32_Slave ','ESS SABRE9018Q2C','Sigma/Delta 32 bit 384 kHz','I2S','sabreberry32,slave','');

しかし、Rune Audioもそうですが、OS側がどんどん変わってしまうと頒布側としても設定サポートをどこまでやらなきゃいけないのか、キツイですね…

のびさまさん

ご指摘と、詳細な情報ありがとうございます。
私もちょうど調べていたところでした。

Pi3ではapt-get updateできず、Pi2でドライバをコンパイルする必要がありますね。 またDSD2PCM変換再生がうまく機能しないようです。

現在、Testリリースのようですので、正式なリリース2.6が出たら対応しようと思います。

たかじん様

MoOde Audio 2.6正式版で音出しできましたのでご報告です。

使用したドライバは、TR4用に公開していただいたものです。
これを、のびさまさん情報をもとにDB登録したのですが、正式版では「97」まで使用されており、「98」および「99」で登録しました。

DSDtoPCM再生もできますが、5.6Mは音が途切れます(数秒演奏して途切れ、また数秒演奏して...という感じです)。
この時のCPU使用率は25%程度のようなので、ネットワーク環境を含めて検証する必要がありそうです(NASとRPI間は100Mの有線LANです)。

また何か分かったら情報を上げさせていただきます。

こんにちは。

自分は、MoOde Audio 2.6(kernel 4.4.13-v7+、gcc 4.9.3)で、SabreBerry32ドライバを再コンパイルしようとしているのですが、モジュールがロードされるところで、エラーが出ています。ヘッダーが足りないようです。

FlatTwinさん

情報ありがとうございます。 早速コンパイルしてバイナリを用意しました。
5.6M DSDですか。 MPDのバッファや、NASのマウントオプションなど調整する必要があるかもしれないですね。

AYORさん

私もつい先程コンパイルしました。 問題なくコンパイルできました。
ただ、前回と違うのはrootでログインできないので、コマンドの前に「sudo」をつけないといけないです。

たかじんさん、

SabreBerry32をpi3(mood 2.6)で動かそうとしています。

私も、SabreBerry32用ドライバのコンパイルとインストールはエラーは出ないのですが、モジュールがロードされていないようです。lsmodでモジュールは表示されていますか?

SabreBerry32が認識されていないような気もします。power LEDは点灯しています。
 

AYORさん

起動時に組み込まれたかどうかを見るには dmesg | grep sabre とコマンドを打つと良いと思います。

それと、カーネル4.4.x系はデバイスリーの形式が変更になりました。 上に追記しましたので参考にどうぞ。 

たかじんさん、

 ご指摘のとおり、device treeの問題でした。モジュールが読み込まれました。有難うございました。

ドライバー組み込み後の状況です。ネットラジオを聞いております。

Ethernetでは再生可能ですが、内蔵のwifiと共存?できません(再生できず)。また、AirPlayでの再生もできていません。そちらの環境では、どうでしょうか?

Pi3 MoOde Audio 2.6(kernel 4.4.13-v7+、gcc 4.9.3)

AYOR さん

Shairpotを使う場合は、スレーブモードをお使い下さい。 
http://nw-electric.way-nifty.com/blog/2016/03/moode-audio-pla.html
こちらも参考にどうぞ。

EthernetとWifiはどちらにアクセスしてよいか迷うので、片方だけの方が良いと思います。 LANケーブルを抜いて、ちゃんとネットにアクセスできているか確認すると良いです。 

たかじんさん、

お返事、恐れ入ります。ご指摘のとおり、Sabreberry32はslaveにしているのですが。
コンパイルした上記ドライバーを入れるとwifiが使えなくなることがありますか?

AYOR さん

sabreberry32ドライバ以前の問題のようです。

http://moodeaudio.org/docs/readme.txt

WifiはAP(アクセスポイント)モードになっていて、ルータへは接続しない仕様になったようです。 (172.24.1.1 - AP mode activeという表示が出てます) 
ひと通りMENUを見てみましたが、APモードを解除するものが見つかりません。 

NASやネットラジオへの接続は有線LAN。 操作はスマホからwifiでRPi3へ直結という方針になったのかもしれないですね。

1. CONFIGURE FOR WIFI CONNECTION
- Ethernet mode
a) leave eth cable connected
b) insert wifi adapter (while Pi running)
c) http://moode
d) Menu, Configure, Network
e) configure a wifi connection
f) Menu, Restart, Power off
g) unplug eth cable
h) power on

という手順が書いてありますね。

ダウンロードした素のR26のままでも、WIFI接続は不調ですね。
一度は有線LAN接続しないと、WEB-UIにアクセスできないし、画面が出たとしても再生が出来ない。

対して、RuneAudioのWifiは有線LANとまったく変わらないレベルで接続できます。 設定するときもAP一覧から接続したいAPをクリックしてパスワード入れるだけと、超お手軽です。

Pi3でWifiを使いたいならRuneAudio v0.4 がお勧めですね。

たかじんさん、

御返事、有難うございます。
当方の思い込みだったようです。その後、diyAudioのForumも見ているのですが、書き込みが多くて有用な情報にたどり着いておりません。

あと、同環境で、lircが動きません。lirc-rpiが組み込まれません。IRモジュールや設定方法は、以前お書きになられていた方法です。


AYORさん

最近のRaspbianでは、/boot/config.txt の書き方が変わっているみたいです。
私もはまりました。


/etc/modules
lirc_dev ← 追加

/boot/config.txt
dtoverlay=lirc-rpi ← 追加
dtparam=gpio_in_pin=24 ← 追加・ご自分の環境に合わせて変更
dtparam=gpio_out_pin=7 ← 追加・ご自分の環境に合わせて変更

でどうでしょうか?

AYORさん
通りすがりのおじさんさん

以前と変わっていなければ、下記の方法ですね。
http://nw-electric.way-nifty.com/blog/2015/08/20159-7e3b.html

通りすがりのおじさんさんのおっしゃる通り、昨年の1月に方法が変わりました。

たかじん さま

Raspberry Pi 3を使用しています。
設定についてお尋ねいたします。

①MOODE Audo Player2.6 にsabreberry+のドライバを組み込む方法

②MOODE Audio Player Relese2.6で外付けの無線LANアダプター(I・O DATA:WN-G300UA)を取り付けるときの設定方法

 ①32ではなく、+を購入しました。
 ②ルーターの電波が届きにくい部屋で使用します。

  お手数ですが、以上よろしくお願いいたします。

fu103 さん

sabreberry+ですと、hifiberryのドライバで動作します。 MoodeのWifiは、かなり厄介です。 スマホからのコントロールを前提にソフトを作りこんでいるようで、NASなどに接続しにくいです。 
私も挑戦しましたが、一度有線LANを接続しないとNASへ到達できません。 そして、認識した後も、すぐに途切て、Wifi経由でまともに音楽を再生出来ませんでした。

wifiを使うならRuneAudioを使う方が良いかと思います。 なんら苦労することなく設定できますよ。

たかじんさま

お忙しいところ、回答ありがとございます。

①sab+は、hifiberryのドライバで動作する、ということでしたがCustomization settings→Audio device descriptionの
chip名がES9023にならず、音はでませんでした。

②Runeaudioは動作が安定性せず、手こずりましたwifiも設定できませんでした。

すべてresetして、別のMPDでアプローチいたします。
今後もよろしくお願いいたします。

fu103 さん

hifiberryドライバは、PCM5102をはじめとする標準的なI2Sを出力するドライバです。 PCM5102AもES9023もレジスタというのは存在せず、一方的にRPiからデータを送り出すだけなのです。 画面に出ているチップ名は単に説明文です。 気にしないで下さい。 

volumioでもRuneでもMoodeでも、Web-UIの応答待ちをしないで矢継ぎ早にメニューを弄繰り回すようなことをするとダメかもしれないですね。 ワンクリックしたあと、RPiの処理が終わるまで一呼吸まつのが基本的な操作になります。 
LightMPDはweb-UIで設定しないので、そういう要素はありません。 

丁寧な回答ありがとうございます、
現在、七転八倒中ですが
アドバイスを頂き、心強いです。


たかじん様

現在、ドライバのソースリポジトリにアクセスができないようで、以下の git clone に失敗します。
git clone https://github.com/SatoruKawase/SabreBerry32

お手数ですが、ドライバのソースを公開されている場所に配置していただけると幸いです。

fu103さん

moode audio2.6の設定は、
「Configure」→「Configuration setiings」→「System」→「System Cinfiguration」→「I2S audio device」
 に 「HiFiBerry DAC」 を選択して再起動すればOKのハズですよ。

mattsun さん

とりあえずバイナリドライバをご使用ください。
gitは、とある問題のため停止中です。

通りすがりのおじさんさん

フォローありがとうございます。 その通りですね。 英語でメッセージがでるとおり、Hifiberryドライバを選択したあと「再起動」が必要になりますね。

たかじん様

ご確認ありがとうございます。
git 環境の件、承知いたしました。
raspberry pi zero 環境でコンパイルしたいため、ソースのご提供まで待ちます。

mattsun さん

new_western_electric@yahoo.co.jp までメールを頂ければソースをお送りいたします。 

たかじん様

いつも楽しませて頂いております。

上記のドライバモジュールのコンパイルでgit clone すると usernameとpasswordを聞かれて先に進めないのですが、ご教示を頂ければ助かります。どうぞ宜しくお願い致します。

shironeko さん

new_western_electric@yahoo.co.jp までメールを頂ければソースをお送りいたします。 

たかじん様

いつもお世話になります。

最新のKernelでドライバインストールを行いたいので、ソースをご提供願えないでしょうか?
よろしくお願い致します。

Sid さん

http://nw-electric.way-nifty.com/blog/2016/11/sid-adf1.html

合計4回送っていますが、yahoo.co.jpメールのブロックを解除していただかないと送ったものは届かないと思います。

よろしくお願いします。

たかじん様
ご迷惑をお掛けしています。
HOTMAIL側で自動でSPAM判定しているようで
解除には時間がかかりますので、他のメールアドレスで
連絡を取り直します。
本当に迷惑ばかりで・・・ すみません。

Sid さん

お手数かけてしまいました。 今後もよろしくお願いします。

私もドライバモジュールのコンパイルでgit clone すると usernameとpasswordを聞かれて先に進めないのですが、ソースを送ってもらえますか。

たかじん様

Raspbian Jessieに最新のカーネルやパッチを適用してsabreberry32を使いたいので、ドライバーのソースを送っていただきたいと思います。お手数をお掛けしますが、よろしくお願い致します。

Volumio2やmoodeがアップデートしましたが、使用kernelが大幅に新しくなったため、既存ドライバでは使えなくなっている模様です。

あと、まったくの別件なのですが、熱対策っていかがされていますか? moodeのsystem infoで60℃近くまで上がってしまい、実際2時間程度聞いていると熱暴走を起こしてしまうようです。

GPIO端子に挿す形で基板があると、CPUが半密閉されてしまうのが問題なのではと考えています。

そのため、GPIO端子とはフラットケーブルで接続してRaspberry PIとSabreberry32とは平面で並べるようにし、その上でRaspberry PIのCPUの冷却をしようかと考えていますが、それよりも基板の間に熱伝導のいい金属板を入れて熱を逃がすようにしたり、横からファンで風を入れたりするほうがいいでしょうか?

ご意見をいただければ幸いです。

あすかさん

ソースの件、遅くなってしまい申し訳ございませんでした。
rt-Kernelでのビルドは、一度Kernelをビルドしたあとにドライバをコンパイルするとエラーなく通ります。 クロス環境では試していません。
よろしくお願いいたします。


トシさん

情報ありがとうございます。 ドライバを準備しますので、もうしばらくお待ち下さい。

熱については、これまで、私のところでは平気です。 DSD再生が負荷が大きいと思いますが、それでも1日中ならし続けても落ちることはありませんでした。 ケースや周囲の温度にも左右されるかもしれません。

金属ケースであれば、厚みのある熱伝導用シリコンシートをRPiの裏面(CPU部)に貼ってケースに熱を逃がすという手もあります。 1mm、2mm、3mm厚などがあり、重ねて組み合わせて使うとケースまで届きます。

もちろん、トシさんのアイデアのとおり、平置きしてCPU部にヒートシンクをつけるというのも良いと思います。 わりと小さいヒートシンクで無風でもKernel buildの90分間を耐えています。

Kernel buildは、ほぼ100%負荷がつづきます。 DSD再生は負荷20~25%くらいですね。
それと負荷が100%近くのときは電源の方にも気を使う必要があります。

moode3.8用のstandard kernelのドライバ、どうもありがとうございます。RT kernel版も期待しております。

熱対策方法のご教示、どうもありがとうございます。とりあえず、現在使用中の¥1000の透明アクリルケースでは裏面のエルピーダのチップを含めて窒息してしまうので、とりあえず電源端子が上に向くように回転して設置し、CPUの熱気が上に逃げるようにしたところ、多少マシになりました。

とはいえ、Sabreberry32用のトロイダルトランスと安定化電源の導入とそれに伴う大型ケース導入に向け、平面配置の方向で考えます。

トシさん

CPU温度が60℃程度で落ちるのは、明らかにおかしいですね。
うちでは70℃を超えていても落ちることはないです。

80℃を超えると、CPUクロックを600MHzに強制ダウンさせて、動き続ける仕様になっています。

あやしいのは電源あたりでしょうか。 低電圧警告でていませんか?
もしくは、ハズレPiを引いてしまった可能性もなくはないですね。
初期のPiでは、相当数あったようです。。。

デジットで買った5Aぐらい出るスイッチング電源で、負荷をかけても低電圧警告は出ていません。
となると、本体か…。国産のほう買ったのになぁ。

ちなみに固まり方としては、再生中突如リピートがはじまり、sshどころかpingの応答すらないネットワークトラブルが発生し、HDMIとキーボードをつなげても何も出てこず、ctrl-alt-delも効かず…というものです。

即座に電源オフオンしてもまたすぐ暴走するため、そのままの状態でしばらく冷やしてから電源オンで復旧します。

たかじん様

 2017-07-05 raspbian jessie liteのkernelをセルフコンパイルした4.9.35-rt30-v7+に変更した上で、送っていただきましたドライバーソースをコンパイルした結果、うまく動作しました。
 なお、クロスコンパイルしたkernel 4.9.35-rt30-v7+のjraspbian essieでドライバーのコンパイルをした場合には、sabreberry32 が認識されず、うまく行っていません。

 以上、現状の報告とお礼です。

トシさん

なるほど、その現象、私も経験したことがありました。

MoodeのAdvancedカーネルの時になりました。(R3.1あたりだったかハッキリ覚えていません) 他のディストリでは起きないので、OS自体になにか不安定な要素があるのかもしれません。


あすかさん

早速、コンパイルに成功したようですね。 素晴らしいです。
Pi 3 だと意外とビルドが速いので、むしろクロスで起動しないって行き来を繰り返すくらいなら、早く済んでしまうことがありますね。

私も、2年くらい前にクロス環境を構築して、2週間くらいかかってやっと起動できるカーネルができたところで力尽きました(笑

ところで、4.9.35-rt30-v7+ のrtパッチはどこから仕入れたものですか?

現在、Moode Audio R3.8の 4.9.40-rt25で、うまくパッチ当てができず途方に暮れています。。。

たかじん様

お尋ねの件ですが、クロスコンパイルの方のkernelは、先に書いた4.9.35-rt30-v7+でなく、4.9.35-rt23-v7+でした。これは、クロスコンパイル環境で、kernel 4.9.y にその時点(23-Jun-2017 )での最新のpatch-4.9.33-rt23 を当てました。その結果、出来たkernelは4.9.33-rt23-v7+ で、これを、2017-04-10 raspbian jessie のkernel 4.9.28-v7+ と入れ替えました。その後、sudo apt-get upgrade を行ったところ、現在は、kernel 4.9.35-rt23-v7+となっています。
patchは、https://www.kernel.org/pub/linux/kernel/projects/rt/ からダウンロードしました。

一方、セルフコンパイルの方は、2017-07-05 raspbian Jessie liteの kernel 4.9.35-v7+にその時点(03-Aug-2017)での最新のpatch-4.9.40-rt30を当てました。その結果、kernel 4.9.35-rt30-v7+となりました。
patchは、クロスの場合と同じサイトからダウンロードしました。

Moode3.8は、gcc-vでは4.9.2で、cat /proc/versionでは7.1.1となっており、これを合わせる事から始めなければならず、ちょっとやろうとしましたが、うまく行っていません。rt-patchは、上2桁が同じ4.9ですから、patch-4.9.35-rt25を使うことはできませんか。

以上です。

たかじん様

クロスコンパイルのkernel versionについて、誤記がありましたので、訂正します。
2017-04-10 raspbian jessie のkernel を4.9.28-v7+と書きましたが、再確認した結果、4.4.50-v7+でした。そして、コンパイルしてできたkernel 4.9.33-rt23-v7+を当てて、再起動した後のuname -a は4.9.35-rt23-v7+で、前回お伝えした番号と同じです。ただ、sudo apt-get upgradeをしない状態で、この番号になっています。

以上、訂正です。

あすかさん

ありがとうございます。 パッチをもってくる場所は私も一緒でした。

カーネルのバージョン番号と違うrtパッチを当てると、エラーがでますね。 無視してビルドすると、なにくわぬ顔でコンパイルが通りました。 ビルド途中のメッセージを細かくチェックしていませんので、何か怪しいことを言っている可能性もあります。

gcc version 7.1.1 と書いてあるのも気になりますね。
Moode Audioは4.9.40-rt25-moode1 ですから、カーネルが4.9.40で、パッチは4.9.35-rt25なのかなっと思います。 それに、384kHzに対応するi2sソースもマージしてます。

実際にはMoode用のドライバをコンパイルするだけで、ここでビルドしたカーネルを使わないということで割り切って、パッチのエラーは無視しました。

本来であれば、カーネルバージョンにあわせたrtパッチを当てるべきなのだと思いますね。 
色々と調べるとrtパッチは安定して動作するバージョンと不具合を起こすバージョンがあるらしく、そういうのを細かく知っているひとがいれば助かりますね。

rt25やrt30ががそれに相当するのでしょうか。。。

たかじん様

moode3.8 rt-kernel用のsabreberry32のドライバーのコンパイルがうまく行って、当dacユーザーの方は喜んでいると思います。私もダウンロードして使ってみて、動作確認できました。大変お疲れさまでした。
私も今回のコンパイルに挑戦してしようと思います。ベースは、moode3.8を使い、linux-4.9.40とpatch-4.9.35-rt25などでkernelコンパイルをして、その後、新しいkernelで起動した上で、sabreberry32用のドライバーをコンパイルしたのでしょうか。それとも、raspbian jessieを使い、linux-4.9.40とpatch-4.9.35-rt25などでkernelコンパイルをして、その後、新しいkernelで起動した上で、sabreberry32用のドライバーをコンパイルしたのでしょうか。お手数ですが、このあたりのことをお教え願いたいと思います。

あすかさん

Moode用のドライバは、Moode上でカーネルをビルドすることはするのですが、そのカーネルでは起動していません。 

以前はカーネルソースとして用意するだけドライバをコンパイルできました。 とあるバージョンから、なぜか一度カーネルをビルドしないとドライバをコンパイルできなくなったのです。 何を参照しているのか。。。ちょっと不明です。

sabreberry32のソース一式入っているmakeファイルのカーネルソースの場所を指定してあげる必要があります。

たかじん様

ありがとうございました。
moode3.8でlinux-4.9.40とpatch-4.9.35-rt25でカーネルのビルドをした後、そのままsabreberry32用ドライバーのコンパイルを行いました。その結果、うまく動作するドライバーを作ることができました。その際に、sabreberry32のソース一式に入っているmakeファイルの冒頭行のカーネルソースの場所を、/home/pi/linux-4.9.40と指定しました。なお、元々はカーネルソースの場所は、/lib/modules/$(shell uname -r)/sourceとなっていますので、その内容を見たところ、/home/pi/linux-4.9.40の内容と全く同じでした。試してはいませんが、makeファイルの冒頭行を変更しなくても、コンパイルできるのではないかと思います。コンパイルの途中、sudo make dtbsを行ったときに、書式に関するメッセージが出ましたが、そのまま続け終了しました。

以上、報告と御礼です。

たかじん様

こんにちは、FlatTwinです。
クロスコンパイルでフルRT・ベーシックRT・LowLatencyのカーネルを作り、動作確認してみました。
RPi2+SB32、mpd0.20.9+upmpdcli+polipoの自作MPDです。

結果、RTカーネル2種ではトシさんのご報告と同じ現象が発生しました。操作開始後45分以内に確実に発生します(最悪は操作開始後2分でした)。
現在、LowLatencyカーネル(4.9.41-v7+)で5時間ほど連続使用していますが、問題は発生していません。
RTパッチに問題があるのか、RTカーネルとmpdの相性なのか…

SB32ドライバもクロスコンパイルしたのですが、あすかさんのご報告にもある「ソースの場所を変更する」ことと、インストールを手動で行うことで対応しました。

音質については、自分にはカーネル間で明確な差は感じられませんでした。
むしろ、電源をDC Arrow×2+トロイダルトランスにした効果が大きいです。
※ 「空気感」が感じられる再生音で、中・低域に力強さを感じます。

以上、ご報告でした。

あすかさん

無事にコンパイルできたようで良かったです。 おっしゃる通りdtbsをコンパイルする時にワーニングがでますね。 でも、ドライバモジュールは取り込めているようです。

FlatTwinさん

クロス環境での挑戦ですか。 素晴らしいです。
RTパッチは、安定して動作するバージョンと不安定なバージョンとがあると聞きます。 MoodeAudioもカーネルソースは最新に近いものを使っているのにRTパッチは少し古めのものを選択している理由がそれだと思います。

カーネルの違いによる音の差は、アンプやスピーカーがソースの音に敏感なものでないとハッキリとは分からないかもしれませんね。 また、差がわかる楽曲と差が出ない曲とがあります。


おっしゃる通り、DACは電源の影響力が大きいですね。 しかもノイズレベルが小さいというだけでは語りきれません。 低ノイズ電源をつかったからといって良い結果が得られるとは限らないのが厄介です。 例えば、ノイズを落とすためにフィライトコア(ファイメットビーズなども)を電源配線に巻くだけでも、音がモッサリしてしまうのが感じ取れます。

必ずフィルタが必要になってしまうスイッチング電源の音の悪さは、そういった部分も影響しているのではないかと私は考えています。 余計なフィルタなしで使える電源が望ましいのではないでしょうか。

ちなみに、DC-Arrowのリップルノイズはとても大きく 1.2A出力時に5mVほどあります(笑  低ノイズLDOが15uV以下というのと比べると、いかに大きなノイズか分かりますね。 それでも、DC-Arorowの位置に低ノイズLDOを入れるとDACからでる音は残念な結果になってしまいます。 

これは好み(趣旨)の問題かもしれませんが、細かい数字に惑わされず、音楽を聴いていて楽しく感じることも大切ですね。

たかじん様

 FlatTwinさんがクロスコンパイルでRTカーネルを作り、SabreBerry32を動かしていると知り、私も再度クロスコンパイルで作ったカーネル4.9.35-rt23-v7+でSabreBerry32のドライバーをコンパイルしてみました。今回はカーネルソースを置くだけでなく、ビルドも行いました。インストールは行わず、SabreBerry32のドライバーのコンパイルをしました。その際には、Makefileの冒頭のカーネルソースの場所を/home/piに変更して、makeしました。その結果、うまくドライバーのコンパイルができ、動作も確認しました。なお、カーネルのビルドに長い時間がかかりました。これでは、折角クロスコンパイルを行った意味がありませんでした。
 セルフコンパイルしたカーネル4.9.35-rt30-v7+で、ドライバーのコンパイルを行った時は、カーネルソースを置くだけで、ビルドは必要ありませんでしたので、moodeなど、他で作ったものを使う場合はともかく、raspbian jessieなどにrtパッチなどを当てる場合には、セルフコンパイルが良いと感じました。
 たかじんさんは、moodeはあるバージョン以降は、ドライバーのコンパイル時にカーネルのビルドが必要になったとおっしゃていますが、恐らく、それ以降のmoodeはクロスコンパイルしたカーネルを使っているのではないかと思います。moode3.8のカーネルのgccバージョンが7.1.1であり、一方、gcc -versionが4.9であることは、これを示していると思います。
以上、報告です。

たかじん様

こんばんは、FlatTwinです。

コメントありがとうございます。
RTパッチにはなかなか楽しい落とし穴があるようですね。
とりあえずは気に入った音のMPDができたので、しばらくはこのままです。

電源については、リップルノイズの大小よりリップルの周波数が影響するのではないか、と思います。
いずれにしても、シンプルな回路でよい音が出てくれれば、お財布にも優しくありがたいです(笑)。


あすか様

参考にしていただいて恐縮です。
ところで、クロスコンパイルでのカーネルビルドにかなり時間がかかったとのこと、私の経験が役立つかも、です。
もしWinodows上でVM Wareなどで仮想環境を作られているのであれば、その仮想環境が使えるCPUコアの数を調べてください。
私の場合、インストール直後は「1コア」になっていたため、カーネルビルドに1時間30分かかりました。
コア数を「4」にした現在は、25分ほどで終了できます。

FlatTwin様

 WinPCはi7-3630で4コアですが、VMwareの設定では2コアでubuntu17.04を使っています。クロスコンパイルでは、-j2でmakeしていますが、時間はそれほどかかりません。時間がかかるのは、クロスコンパイルしたkernelを入れたrpiでSB32のドライバーをコンパイルする時です。この場合は、カーネルソースを置いただけではだめで、ビルドしなければならず、このビルドに時間がかかります。そのため、初めからセルフコンパイルの方が手間がかからないと書いた次第です。
 FlatTwinさんは、カーネルのクロスコンパイル環境でSB32のドライバーのコンパイルも行っていると言うことですね。もしそうなら、私も行ってみます。その時は、VMWareの設定を4コアにし、-j4で最新カーネルと最新RTバッチファイルを使い、カーネルビルドとSBドライバーのコンパイルをしてみます。アドバイスありがとうございました。

あすかさん

本当はカーネスソースを置くだけ(参照するだけ)でドライバモジュールをコンパイルできるはずなのですが、カーネルビルド後じゃないとコンパイルできないケースがあるのが不思議です。

makeは何を参照しているのでしょうかね。

カーネルビルドをクロスで行っているのであれば、ドライバモジュールもクロスで行うのが良いでしょうね。

ちなみに、セルフの場合、Pi3のCPU温度に気をつけなければいけません。80度を超えるとクロックダウンが自動的に入って極端に遅くなります。


FlatTwinさん

rtパッチは、不安定な状態でも公開しちゃうようなのです。 どれが安定版なのかどこかに書いてあれば良いのですけども。

電源リップルは、トランス+両波整流なら100Hz/120Hzで、もろに可聴帯域。 スイッチング電源(AC-DC)は低いものだと40kHzくらい、高いものは400kHzくらいで一応可聴帯域外ですね。

とはいってもDACの出力をみて、100Hz/120Hzは全く漏れ出ていないことまでは確認しています。
その状態で電源ケーブルをファインメットビーズ(FB)に通すと、明らかに音の抜けが悪くなるのを感じとれますので、もっと高い領域のインピーダンスの影響も考えられますね。

スイッチング電源をFBに通してつかうと、賑やかさが幾分まろやかになって、音が良くなった気になってしまうのですが、何かを失っている可能性もあるので、非常に判断が難しいです。

FlatTwin様

 VMWareのubuntuを使い、クロスコンパイルでkernel 4.9.43-rt30v7を作成し、これをrpi3にインストールして動作することを確認した上で、ubuntu上で、クロスコンパイルの結果を残した状態で、SB32のドライバーのコンパイルを行いました。結果はエラーで失敗しました。
 ドライバーのソースが入ったディレクトリーは、/home/usrに置き、カーネルのビルド結果のboot、libが入ったディレクトリーrtkernelも/home/usrにおいて、ドライバーのMakefileで、KERNEL_SRC = /home/usr/rtkernel/lib/modules/4.9.43-rt30-v7/source、BUILD_DIR = $(shell pwd)、DTC_DIR = /home/usr/rtkernel/lib/modules/4.9.43-rt30-v7/build/scripts/dtc/として、makeしました。その結果、エラーでした。Makefileの他の部分は変更しておりません。
 FlatTwinさんは、どの様におやりになりましたか。お手数をお掛けしますが、教えていただきたいと思います。

FlatTwin様

 その後、再度クロスコンパイルを行いました。エラーの原因は、BUILD_DIR = $(shell pwd) となっていて、= の前に : (コロン)が抜けていました。この辺を編集していた時に、コロンを落としてしまったのだと思います。これを修正した後、makeを行い、次にmake dtbsを行ったところdtboファイルもできました。rpiへのインストールは、手動ですが、makefileの中のinstall部分を変更すれば、そのまま書き込みができると思います。環境がそろっていれば、カーネルとドライバーのクロスコンパイル合計で、20分くらいでできますね。
 以上、ご報告です。お騒がせ致しました 

あすかさん
FlatTwinさん

私のところでもクロスでドライバをコンパイルして動作させることが出来るようになりました。 これが出来ると作業が速くなりますね。

ありがとうございます。

たかじん様
あすか様

こんにちは、FlatTwinです。

クロスコンパイルの仕組みや、Makefileの意味が分かってくると、世界が広がりますね。
次は、やはり「安定動作するRTカーネルづくり」でしょうか。
設定を色々変えてカーネルを量産しても苦になりません。
作業中も音楽が聴けますしね…

たかじん様
FlatTwin様

 ありがとうございます。クロスコンパイルでドライバーが作ると本当に楽ですね。
 以下は、私の大雑把な理解です。セルフでドライバーを作る時に、rpiのカーネルとしてセルフコンパイルしたものを使っている時は、SB32のMakefileのKERNEL_SRCやDTC_DIRが参照する/lib/modules/$(shell uname -r)/source や /lib/modules/$(shell uname -r)/build には、home/usr にあるコンパイル済のカーネルソースにシンボリックリンクが張られていて、これでドライバーのコンパイルができますが、rpiのカーネルとして、クロスコンパイルしたもの使っている場合には(Moode3.7なども) , 上記の場所にあるsourceやbuildにはシンボリックリンクが張られていません。このため、Makeでエラーになるのだと思います。また、仮にsouceやbuildの場所を、直接、home/usr/linuxなどとして指示しても、ダウンロードしたままのlinuxソースには、コンパイルをしていないため、必要なファイル(Module.symvers)が存在せず、ターゲットとするカーネルを特定できないので、ドライバーのmakeでエラーになるのだと思います。これを避けるためには、クロスコンパイルしてできたboot、libの中身をrpiにコピーし、その場所を指定して、makeをすれば良いのでしょうが、わざわざそんなことをするなら、クロスでやっていまう方が良いわけですね。
 なお、KERNEL_SRC:=で、: が無い場合には、コンパイルの途中で、Build_DIRとして、rpi用のarmでなく、クロスコンパイル環境のubuntuのx86を選んでしまい、このために必要なファイルが見つからずエラーになったようです。
 いずれにしましても、クロスコンパイルであれば、時間も早いので、今後はこちらをメインで使おうと思います。
 以上ですが、間違っていましたら教えていただきたいと思います。

FlatTwin さん

たしかに、RTカーネルで安定したバージョンがほしいところですね。
Moode Audioさんは、それなりに検証しているようなので、彼らが選択したバージョンがひとつの目安になるかもしれません。 新しければいいってものではないですからね。


あすかさん

/lib/modules/$(shell uname -r)/source
というのは、apt-get などで、正式にKernelSourceをセッティングした場合のもの、且つ、セルフコンパイル用のものです。

クロス用にダウンロードしてきて展開したソース一式の場所を直接指定してあげればOKですよ。
問題ありません。

たかじん様
FlatTwin様

 今回、いろいろやった結果、rpi上でも、クロス環境上でもドライバーのコンパイルがスムースにできるようになりました。本当にありがとうございました。
 なお、わたくしは、話題になっているイーサネット分離方式をrpi2台で構築していじっています。Jessie LiteやMoodeにpolipoやupmpdcli(Moodeには入っています)を入れ、それぞれをアダプターとしてもプレヤーとしても使っています。一応は動作しています。usb-lanアダプターが何本か必要で、あまりスマートな構成ではありませんし、スタンドアロン方式やMoodeなどに比べ、どれだけメリットがあるかは、まだ分かりませんが、あれこれ試すには面白い対象です。
 以上です。

あすかさん

LANを2系統に分ける。 バッファを設けるなど、色々と使いこなしが複雑で、構築のしがいがありますね。

RaspberryPiに限った話かは分かりませんが、LANを経由したりUSBメモリに楽曲を置くよりも、ローカルのSDカードに楽曲を入れた方が音が良い。 という面もあります。 LANケーブルを抜くだけでも違いがでます。 もちろんWifiもONしてはいけません。

もしかすると、電源の消費に関係するかもしれないです。 音楽に同期しない消費電力変動を極力抑えるという意味で。

複雑なシステム系と、逆に超シンプル系。 どちらに軍配があがるかは不明ですが、色々と実験して楽しめそうですね。

たかじん様

はじめまして、sabreberry32を愛用しています。

最近登場したMPD、"SYMPHONIC-MPD"にドライバをインストールをするため、こちらの記事を試していました。
git cloneが利用できないのですが、yahooのアドレス宛にご連絡しても良いでしょうか。
お手数ですが、よろしくお願いいたします。

iwa3 さん

new_western_electric@yahoo.co.jp にメールをお願いいたします。

たかじん様

この度はありがとうございました。symphonic-mpd版バイナリ公開の記事も早速拝見しました。
また、多岐にわたるアドバイスありがとうございました。
改めてこの場でお礼申し上げます。

iwa3さん

ご自身でのコンパイル成功、おめでとうございます。
RT-Linuxまでいくと難易度が高いですが、それも大丈夫だったとのことで、他にも応用が効くと思います。

こちらこそよろしくお願いいたします。

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/587107/63355567

この記事へのトラックバック一覧です: SabreBerry32のドライバのコンパイル方法(SABRE9018Q2C):

« sabreberry32 頒布開始します | トップページ | Moode Audio Player Release2.5 でsabreberry32のマスター/スレーブを切換える方法 »

サイト内検索

Sponsors link

2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

最近のトラックバック

無料ブログはココログ