やまちゃんのオーディオブログ

真空管アンプ、最近は資金調達のためのFX,MetaTrader4ネタもやっています。

ラズベリーパイB

コマンドラインで動く、汎用i2sハイレゾモジュールの作り方(これまでのまとめ)。 (How to make a general i2s hi-resolution play-module with external bck clock using command-line on raspberry pi. And you can use gpio for operation)

投稿日:2016年8月7日 更新日:

これまでののうち、コマンドをまとめました。
<2018.4.28 追記 以下は、24ピンのラズパイBノーマルバージョンかつ当時のカーネルを使うことが前提になります。
今のカーネルには、bcm2708-i2s.cが入っていないので、その点では有効です。>

説明は、このカテゴリの過去記事をご覧ください。
<gccのインストール>
sudo apt-get update
cat /proc/version
sudo apt-get install gcc-4.8 g++-4.8
sudo apt-get install gcc-4.7 g++-4.7
sudo apt-get install gcc-4.6 g++-4.6
sudo update-alternatives –config gcc
sudo apt-get install libncurses5-dev

<2018.3.25 追加>
同日現在、gccは、4.8ではありません。
sudo apt-get install libncurses5-devは、現在はする必要がありませんでした。

      cat /proc/version
により、カーネルを編集するのに使うべきgccのバージョンが出てきます。
これがインストールされていなければ、インストールする必要があります。
同日現在は、gcc version 4.9.3となります。
後述のrpi-source をダウンロードし、rpi-sourceを実行すると、
ERROR:
gcc version check: mismatch between gcc (xx) and /proc/version (yy)
xx,yyはバージョン名です。そのうちの1つが (6)と表記されるかもしれませんが、
バージョン6をインストールするのではなくて、cat /proc/versionに表示されたバージョン(同日現在では4.9.3)をインストールする必要があります。
それをインストールしても場合によっては動かず、どのバージョンを適用するかの優先順位を定める必要がある場合もあります。

<カーネルソースの導入> install kernel sources
see https://github.com/notro/rpi-source/wiki

sudo wget https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source -O /usr/bin/rpi-source
sudo chmod +x /usr/bin/rpi-source
/usr/bin/rpi-source -q –tag-update
rpi-source

(editing etc/modules)
nano /etc/modules
以下を追加 (add below)

snd_soc_pcm1794a
snd_soc_bcm2708_i2s
snd_pcm_dmaengine
snd_soc_rpi_dac

<2018.3.25 追加>
この辺の扱いは、若干変わりました(ラズベリーパイでI2S出力参照。ただし、rpi-updateを素人が無条件にやらないことは注意。これはバージョンのずれの問題を生じさせ、危険をはらむ可能性がある。)。

以上に加えて、
sudo nano /boot/config.txt
で、/boot/overlaysにあるファイルの中から選んで、
dtoverlay=xx.dtbo とする。
例えば、
dtoverlay=rpi-dac.dtbo
とする。

<再起動>(reboot)
reboot
sudo reboot

<デバイス登録の確認>(checking a i2s divice installed)
aplay -l

<変数定義>(definition of the source directory)
export linux=/root/linux-1981ddebd4d3108cc942680a75ea151a479d65a8(ここはディストリビューションにより異なる differs by distributions)
export bcm=$linux/sound/soc/bcm
export codec=$linux/sound/soc/codecs

<ファイル編集>(editing module files)
sudo su
nano $bcm/rpi-dac.c
nano $bcm/bcm2708-i2s.c
nano $codec/pcm1794a.c

<コンパイル>(compiling)
cd $bcm
make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
cd $codec
make -C /lib/modules/$(uname -r)/build M=$(pwd) modules

<モジュール解除&インストール1>(module delete & install 1, do at once)
rmmod $bcm/snd-soc-rpi-dac.ko
rmmod $codec/snd-soc-pcm1794a.ko
rmmod $bcm/snd-soc-bcm2708-i2s.ko
insmod $bcm/snd-soc-bcm2708-i2s.ko
insmod $codecs/snd-soc-pcm1794a.ko
insmod $bcm/snd-soc-rpi-dac.ko

1度だけでよい。2度目以降は、インストール2のみすればよい。rmmodは実際は不要。

<インストール2>(install 2nd)
cp $bcm/snd-soc-bcm2708-i2s.ko /lib/modules/$(uname -r)/kernel/sound/soc/bcm/snd-soc-bcm2708-i2s.ko
cp $bcm/snd-soc-rpi-dac.ko /lib/modules/$(uname -r)/kernel/sound/soc/bcm/snd-soc-rpi-dac.ko
cp $codec/snd-soc-pcm1794a.ko /lib/modules/$(uname -r)/kernel/sound/soc/codecs/snd-soc-pcm1794a.ko

<再起動>
reboot
sudo reboot

<ウィンドウズとの連絡>
sudo apt-get install samba
sudo mkdir /home/nas_all

sudo nano /etc/samba/smb.conf
# interface names are normally preferred
interfaces = 192.168.xx. 127.0.0.0/8 eth0
hosts allow = 192.168.xx.
・同ファイルの最後に以下を追加
「[all]
path = home/pi/nas_all
guest ok = Yes
read only = No

force user = pi 」
<2018.3.25追加>
pcからフォルダが見えるが、アクセスが拒絶される場合には、nas_allの権限を変えて、書き込みできるようにする。
ls -lで権限を調べられる。詳しくはネットで。wが書き込み。

chmod g+wrx nas_all
それでもだめなら、
chmod a+wrx nas_all

<再生>(play)
cd /home/pi/nas_all
aplay -D hw:1 xxxx.wav
sudo mkdir /home/nas_all
sudo nano /etc/samba/smb.conf
# interface names are normally preferred
interfaces = 192.168.xx. 127.0.0.0/8 eth0
hosts allow = 192.168.xx.

<ファイル検索> (finding files)
find / -name “snd-soc-pcm1794*”

-ラズベリーパイB

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

no image

ラズベリーパイのi2s外部クロック、その後3-3(2018年度版)

(以下、コンパイルの説明をする。コンパイルをしてしまうと後で戻ることは難しくなる。  ここで、パソコンにSDカードのデータをセーブする必要がある。セーブするにはsdformatterを使う(後の回に説 …

no image

ラズベリーパイDAC、I2S完全外部クロック、スレーブ入力のめどが立ちました!

ラズベリーパイ、I2S、完全外部クロック、スレーブ入力のめどが立ちました! 現在、I2Sという形式でデジタル音声データをラズベリーパイからDACへ送ることが流行っています。 I2Sは、従来のUSB経由 …

no image

ラズベリーパイBのi2s外部クロックでサンプリング周波数に応じたgpio出力

ラズベリーパイB(モデル1)です。すいません。 もはや中国のalliexpressなどでしか入手できないかもしれません。 <追記:ラズベリーパイ0へ応用できるかもしれません。> 以前の記事の通り、ラズ …

no image

ラズベリーパイ、volumioカーネル環境をmakeなしクロスコンパイルなしで2時間で立ち上げる。クロスLAN接続

私は、ラズベリーパイをリニア電源(スイッチング電源でなくノイズが少ない)で動作するノーマルBモデル、rev2(過去記事「ラズベリーパイモデルBの入手と設定1」)をaliexpressで入手し、あえてこ …

no image

ラズベリーパイのi2s外部クロック、その後8(2018年度版)

やっと、外部クロックで、ラズパイを動かすことができました!!! ラズパイからは、GPIOでサンプリング周波数を指示し、これに基づいて、外部ボードであるde0-socが周波数を切り替え、マスタークロック …

[最近の記事]
2016年8月
 123456
78910111213
14151617181920
21222324252627
28293031