raspberry pi でUSBスピーカから音出す
調べればいくらでも出てくる話ではございますが、Raspberry Piで音出したいときにUSBスピーカつないでそっから電気とってかつ音を出すと手軽。
はじめに、やることはぐぐったりして動作実績のあるものや、その後継とかを調べること。たいてい大丈夫だが、ハードウェアは相性問題もあるため。ちなみに手元ではMS-P05UWHを使っている。
つぎに、調達したUSBスピーカをRaspberry Piにつなぐ。そして、認識していることを確認する。ここはコマンドを入力したりする。まず、つながない状態で"lsusb"と打つ。そして、つないでもう一度"lsusb"と打つ。
ここで出力がなんか行数増えてれば認識していそうだと考えられる。例えば
$ lsusb Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 004: ID 0410:0112 BUFFALO INC. (formerly MelCo., Inc.) WLI-UC-GNM Wireless LAN Adapter Bus 001 Device 007: ID 0c76:160c JMTek, LLC. ←増えた
因みに、"-v"オプションをつけると詳細な出力がされる。詳細で意味わかんないけど出力中何となくAudioとか文字が見え隠れするとちょっと安心する。"-t"表示でツリー表示。audioとか文字が見えたりするとまたちょっと安心したりする
lsusbというのは、USBデバイスの情報を確認するコマンド。
そして、設定らしきことをするのだけれども、alsaというものが関係している。これは、Advanced Linux Sound Architectureの略なので、まぁそこは推して知るべし。まず、下のコマンド。そして例えば下記のように表示される
$ cat /proc/asound/modules 0 snd_bcm2835 1 snd_usb_audio
これは、alsaサウンドカードドライバのリスト表示なので、snd_usb_audioとあるので、動作しそうであることがわかる。
最後に、alsaの設定ファイルを書き換える。対象は、/etc/modprobe.d/alsa-base.conf。そして、ファイル中に、先ほど確認した"snd_usb_audio"というものを見つける。そして、このindex値を書き換える。
/etc/modprobe.d/alsa-base.conf内 #options snd-usb-audio index=-2 ←書き換え前 options snd-usb-audio index=0 ←書き換え後
なぜindexを0にしているか、それは0を与えて先に読み込ませ、デフォルトの使用としたいから(コメントアウトするだけでも良いらしいけど手元ではなぜかうまく動かなかった)。-2は「ALSA にカードを優先的に使わせないようにする」とのこと(raspbianとは別ディストリビューションだが、arch linuxのwikiAdvanced Linux Sound Architecture - ArchWikiより)。
上記までやったら、ちゃっと再起動させてみましょう。
他参考、alsa.opensrc.org貧乏環境でのvCenter 6.0
vCenter Server 6.0(Windows版)を少しテストしてみようとしてインストールしようとしたところ、メモリが足りないとのこと。メモリ8GB以上ないとインストールさせてくれない。ちなみに、ドキュメント上は「最小規模環境(最大ホスト10台、仮想マシン100台」で最小ハードウェア推奨要件が8GB RAMとなっている。
環境は、いわゆる"Nested VM"で、VMware Player上にすべてつっこもうとしている。使ったのは全体でメモリが12GBのマシンなので、vCenterだけで8GBも使われたら手も足も出ない。
まず対象Windowsのメモリ設定を8GBにしてインストールだけさせた。そのあと、メモリを5GBほどにして立ち上げる。管理対象のホストは1台というほぼ何もない環境。インストールを通過すれば、メモリの量を減らして立ち上げても立ち上がる。おおむね4.3GBほどが利用されている。
ただし、この環境ではvCenterが立ち上がりきるまではCPU(2.6GHzほど?×4つ)相当使い続けあげく10分くらいかかった。。。こいつぁまともな検証環境にのせる必要があり。
Raspberry PiでSPIが有効にならない
どうでもいいけど今回SPIはシリアル・ペリフェラル・インタフェース(Serial Peripheral Interface, SPI)の略らしいと知った。いつもただ「シリアルシリアル」と言ってるだけだから。
Raspberry Pi Type BのLinux raspberrypi 3.18.7+ にて、SPIが使えなかった。いろいろ調べても、/etc/modprobe.d/raspi-blacklist.conf で"blacklist i2c-bcm2708"行をコメントアウトするとか、なんとかで、再起動するとlsmodでspi_bcm2708出てくるとか、/dev/以下にspidev0.0やspidev0.1が出てくるとか、/etc/modulesにspidev追加とかいろいろそんなのしたけれどもどうにも読み込まれない。
なんやこれと思って調べていると、下記【参考】に記載した投稿を見つけた。どうやら仕組みが変わっていたらしい。
$ sudo raspi-config から、
"8 Advanced Options"→"A6 SPI"→以降の項目でそれぞれ"<はい>"と"<了解>"→再起動
【参考】
『意識低い開発者のBlog』「Raspberry Pi の I2C を有効化する方法 (2015年版)」
https://blog.ymyzk.com/2015/02/enable-raspberry-pi-i2c/