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

既存のブログをこちらへ順次移動します。

ラズベリーパイ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*”

Follow me!

-ラズベリーパイB

執筆者:


comment

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

CAPTCHA


関連記事

no image

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

過去記事では、ラズパイ2のi2s方式での音楽再生について、ラズパイ側がクロックスレーブとなる形式(ラズパイの外部からクロックを供給する形式)で再生するためのi2sのドライバーの改造方法、FPGAを用い …

no image

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

やっと動きました!!音が鳴りました!! まずは、カーネルを改造せず、ラズベリーパイから提供されるBCLK、LRCK、DATAに加え、de0-socのpllで作成したマスタークロックのxckで音を鳴らし …

no image

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

11 カーネルソースの編集 編集すべきは、以下の3つ。 (1) rpi-dac.c  (snd_soc_rpi_dac) (2) bcm2835-i2s.c (snd_soc_bcm2835_i2s) …

no image

ラズベリーパイ カーネル3 I2Sドライバのコンパイルをあきらめず続ける

以前の記事に引き続き、I2Sドライバのコンパイルをあきらめず続ける。 「三日坊主な私がいつまでブログやれるか...( ̄~ ̄;) 」のラズベリーパイの記事を参考にさせていただいています。 volumio …

no image

ラズベリーパイ nanoでの行番号の表示の仕方

find / -name “nano*”で、nanorcを探す。 私のラズベリーパイの場合、 /etc/nanorcで発見できた。 nano /etc/nanorcで、設定ファ …

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

3PR エリア3 タイトル