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

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

ラズベリーパイB

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

投稿日:2018年3月25日 更新日:

 ラズベリーパイの24ピンの初代Bは、市場からほとんど消えている状況なので、今までの記事は独りよがりになっている可能性が高く、そこで、入手性の高いラズベリーパイ2を購入し、誰でも、外部クロックを追試できるようにしようと考える。
ラズベリーパイのi2sの記事はたくさん溢れているが、それらは内部のクロックを使ったものであり、
そのクロックは周波数の違うものを織り交ぜて、周波数のつじつま合わせをしておりジッターをわざと発生させていると報告されているものであって、usbを介さないi2s出力という点では音の鮮度が高いが、外部クロックを使わない限り、信号送出の正確さは犠牲になっている。
 外部クロックを使って正確なタイミングで信号を送出しようとすると、
①i2sのモードをラズベリーパイがスレーブになるように設定する必要があり(単にモードのフラグを変えるだけであるが)、
②また、周波数に応じて、gpioの値を変更し、周波数や2つのクロック系統(24.576MHZ、22.5792MHZ)の切り替え信号を出力すること、
③および、その信号に応じて周波数や2つのクロック系統を変更させラズベリーパイに入力させる別ボードが必要になる。

上記①②のためには、カーネルを修正しなければならず、そこまでできているのはごく少数で、誰でも追試できるように解説しているのは、皆無だった。そこで、誰でも外部クロックを追試できるようにしようと考えている。

1 ラズベリーパイ 前準備(SDカードにラズビアンライトを焼く)
(1)購入する付属品
ラズベリーパイ2には、8ギガのマイクロSDカードを買ってきて刺した。あまり多い容量だと、修正をした時にコピーするのに時間がかかる。SDカードのスピードは、クラス10を使う。同じ値段帯なら、できれば速いほうがよい。SDカードにラズベリーパイ用のリナックスを焼いて利用する。
最近32インチのテレビを買ったので、こたつの奥にテレビを置きラズパイにつなぐ。hdmiケーブルはダイソーで300円ほどで売っている。また、小さいusbキーボードも入手して繋げている。
(2)インストールするバージョン
インストールするリナックスは、volumioでもなく、ラズビアンのノーマルでもなく、ラズビアンのライトにした。ライトで充分であった。ライトの場合でも、改造に必要なALSAがインストールされているし、apt-getも利用でき、他のソフトのインストールも可能だし、余計なソフトはできる限り少ないほうが良い。
(3) ミラーサイト利用の勧め
そのOSのダウンロードは、ミラーを使ったほうが断然速く、「ラズベリーパイ lite ミラー」で検索してほしい。例えば、
Raspberry Piのイメージをミラーからダウンロードする[Raspberry Pi]にある、「raspbian_liteのミラー」があり、その中の一番下が最新で、そのフォルダに含まれる一番大きなファイルをダウンロードする。現時点では、「2018-03-13-raspbian-stretch-lite.zip」である。
(4)SDカードへの書き込み等
SDカードへの書き込みは、ウインドウズの場合、Win32 Disk Imagerというのを使う。書き込んでみると、ファイル操作が不安定になって、いちいち警告が出たり、容量が小さくなったように見えるが、それらは無視する。警告のポップアップはxを押して消去する。
なお、sdカードにつき、一度書いたものを修正する場合には、SDメモリカードフォーマッターというソフトで初期化しないと書き込めない。
(5)ssdの有効化
ラズビアンライトの場合、ssdというpcとの通信ターミナルがデフォルトでは利用できないので、PCでSDカードにインストールしたときに見えるsdカードの最上位ディレクトリに、ssdという名称の空ファイルを作成して入れることで、ssdが有効になる。その作成方法は、ssd.txtという空のテキストデータを作成し、ファイル名称から.txtを削除する。
ちなみにラズパイはコンピューターであるが、それ単体で動かしたときはネット情報に書かれたコマンドを自ら打ち込む必要がありそれは大変であることなどの理由から、普段使っているPCから遠隔操作するのが常態である。その遠隔操作をするソフトが、teratermというもので、ssdという通信モードを使う。sはセキュリティーのSであり、暗号処理した通信方法となっているようだ。

2 ラズビアンそのものを直接に操作して、ipアドレスを固定する。
(1)この方法の趣旨
通信をするのに、アドレスが必要になるが、デフォルトの状態は自動割り当てとなっており、アドレスがどのような番号になるかわからないので、後で毎回それを探索するのは大変であるから、ラズパイのアドレスを固定しておいたほうが便利であるので、最初に固定するのが好ましい。ホスト名称で特定する方法もあるようだが、私はこれを使う。
(2)ラズパイを直接操作
そのためには、まずラズパイを遠隔操作せず、ラズパイにつないだキーボードからコマンドを入力し、ラズパイをhdmiを介してテレビにつなぐ。ラズパイには、ラズビアンライトを書き込んだSDカードを刺し、ラズパイにマイクロUSBから電源を供給する。ラズパイとPCを直接つなぐ場合には、クロスLANケーブルを買ってきてつなぐ。
(3)注意点
ただし、今回気づいたのは、電源を入れる前に、ラズパイがルーター(厳密にはネームサーバー)につながる状態にしておく必要がある。クロスケーブルで接続する場合には、PCを立ち上げ、それがLANにつながるか無線LANでインターネットにつながっている状態になることにより、どのネットワークに所属しているかをPCを介して知らせる必要がある。ルーターには、ネットワークの住所を管理するネームサーバーが入っていて、各端末の住所を割り振っている。また、ポケット無線などのルーターにつなぐ場合、クレードルにスイッチングハブを設けて、LANをタコ足にして、その1つにラズビアンをストレートLANケーブルで接続する。
ラズベリーパイがスタンドアロンで立ち上がったら、user id をpi, passwordをraspberryとして、ログインする。
その後面倒なので、
    sudo su
とコマンドを打ち込み、スーパーユーザーに変更する。

(4)現在加入しようとしているアドレスの調査
現在PCが接続しているアドレスを調べるには、PCのコマンドプロンプトから、ipconfigと打ち込み、エンターキー。
接続固有の DNS サフィックス . . . . .:
リンクローカル IPv6 アドレス. . . . .: (省略)
IPv4 アドレス . . . . . . . . . . . .: 192.168.179.4
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .: 192.168.179.1
この3つの数字、192.168.179が、ラズパイと合っていないと、ラズパイとPCでネットワークが接続できない。
これをきっちり合わせるように、ラズパイのアドレスを固定する必要がある
なお、ここの179という数字は、ルーターにより異なり、ワイマックスでは179,バッファローでは10だったと思う。
それゆえ、パソコンがどのアドレスのネットワークにつながっているのか調べる。

(5)アドレスの固定した場合の目標となる状態
その後、コマンドをラズベリーパイに接続したキーボードから、
ifconfig
と打ち込み、エンターキーを押す。これにより、ラズベリーパイの現在のネットワーク構成が表示される。
私は、wimaxを使っているので、設定後は、以下のような表示になる(これが目標になる)。
root@raspberrypi:/home/pi# ifconfig
eth0: flags=4163 mtu 1500
inet 192.168.179.20 netmask 255.255.255.0 broadcast 192.168.179.255
設定前は、192.168.179のところ、169.255・・・などとなっているのではないかと思われるが、これではこの3つの数字が合致せず、接続できない。
それから、この段階で、クロスLAN接続の場合にはWi-Fiにつながったpcとラズパイを、ルーターに接続する場合には、ルーターにラズパイを接続していないと
ifconfigと打ち込んだときに、アドレスが全く表示されず、困った状態になる。

(6)アドレスの固定の方法
昔は、ラズパイのアドレスを固定するため、/etc/network/interfacesのファイルをいじっていたが、
現在は、/etc/dhcpcd.confというファイルを修正する。
     sudo nano /etc/dhcpcd.conf
として、このファイルを編集する。
最終行に、
interface eth0
static ip_address=192.168.179.20
static routers=192.168.179.1
static domain_name_servers=192.168.179.1

と記載し、ctrl+oでセーブ、ctrl+xで、エディタを閉じる。
192.168.179の部分は、ipconfigで得られた太字の3つの数字に合わせる。
赤字の部分は、2~255の範囲で任意だが、すでに設定したPCの番号と被らないようにする。
2台以上のパソコンを使っている場合には、被らないように大きめの数字を入れる。
最後に、
reboot
を入力し、再起動する。
再起動して、id、パスワードを入力し、ifconfigを打ち込んで、アドレスが、上記の3つの数字になっていればOK.
(7)PCとの通信の確立
PCのコマンドプロンプトから、
ping 192.168.179.20 (ラズパイのアドレス、上記で設定したアドレス、”179”はルーターにより異なる。以下同じ。)
およびラズベリーパイから、
ping 192.168.179.5 (PCのアドレス、PCのコマンドプロンプトでipconfigを打ち込んで調べる。)
を打ち込んで、短い時間内に返答があるかを確認する。
ラズベリーパイのpingは永遠に繰り返すようなのでctrl+cで終了させる。
PCへのpingのみが届かない場合には、ファイアーウォールの影響が考えられる。

3 PCからラズパイを遠隔操作
(1)teratermのインストールと設定
モードをSSD、アドレスを、上記static ip_address=192.168.179.20で設定したアドレスを入力し、通信を行う。
ラズパイが立ち上がり、通信できる状態であれば、直ちにidとパスワードを入力する画面となる。


(2)ここでも、pingコマンドを打つ。
ping google.com
これが短い時間で帰ってくるようだと、外部のソフトをインストールできる状態になっている。
クロスLANケーブルで接続される方は、次回説明します。
PCへのpingのみが届かない場合には、ファイアーウォールの影響だから、teratermの例外の設定をする。
(3)コピー・ペースト等
クリップボードに入ったテキストは、右クリックでペーストがかかる。
今後はネット情報をなぞってコントロール+Cでコピーし、それをペーストできるので、効率が良くなる。
また、teraterm内の文字も、なぞった状態で、右クリックを押すと、ペーストがかかる。
(4)上ボタンを連打すると、入力したコマンドの履歴が次々に表示される。

Follow me!

-ラズベリーパイB

執筆者:


comment

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

CAPTCHA


関連記事

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

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

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

no image

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

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

no image

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

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

no image

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

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

[最近の記事]
2018年3月
« 7月   4月 »
 123
45678910
11121314151617
18192021222324
25262728293031

3PR エリア3 タイトル