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

真空管アンプ、最近は資金調達のための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外部クロック、その後6(2018年度版)

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

no image

ラズベリーパイ LANクロスケーブル接続を外部ネットへ ネットワークブリッジ 接続トラブル

ラズベリーパイとPCとを直接つないで、かつ、ラズベリーパイを外部ネットワークにつなぐ方法 トラブル対策 ラズベリーパイには、私はvolumioを入れたが、基本はリナックスなので、リナックスベースのプロ …

no image

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

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

no image

ラズパイのi2sで一般的な24ビットファイルを再生するために・・・(aplayex, for playing general 24bit 3LE files(SNDRV_PCM_FMTBIT_S24_3LE),converting 24bit LE(SNDRV_PCM_FMTBIT_S24_LE) automatically while playing, on raspberry pi)

aplayexを使います。 see http://www.geocities.jp/onsei2007/kousaku/PI_I2S_DAC.html, and http://www.nakata-j …

no image

ラズベリーパイ、volumioカーネル環境2 I2Sドライバのコンパイル

前回の「ラズベリーパイ、volumioカーネル環境をmakeなしクロスコンパイルなしで2時間で立ち上げる。クロスLAN接続」に引き続き、ラズベリーパイ、volumioカーネル環境で、I2Sドライバをコ …

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