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

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

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

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

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

no image

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

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

no image

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

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

no image

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

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

no image

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

13 ラズパイの信号に応じて、クロックを切り替えるボード  この点をどのようにするか、基板を起こす方法もあるけれど、試行錯誤が多いと思えるので、 FPGAを用いて、プログラム的に、信号切り替え、分周な …

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

3PR エリア3 タイトル