「debian」タグアーカイブ

【音】ラズパイ2をBluetoothスピーカー化してみる

sc20150322024152

追記:問題点3/27

RaspberyPiを、Bluetoothレシーバー側にしてみようと思います。

ラズパイが、Bluetoothワイヤレススピーカー化するような感じです。スピーカーは別に必要ですけどね・・。

スマホ・タブレットやPCから、音声を飛ばして(Bluetooth)、ラズパイで受け、それをスピーカーで鳴らします(Bluetoothデバイスから、PulseAudioのLoopbackで音声に接続という流れ)

P1010510手順は、検索しても相当に少なくて、そもそもLinuxでのBluetoothの情報少ない・・という状況のようです。

ちなみに後遺症として、PulseAudioをシステムモード動作させるため、一部オーディオ系コマンドがエラーになってしまう場合があります。利用したい場合は、「sudo –u pulse コマンド」とかすればOKです。

P1010511また、「apt-x」での接続を確認していないので、昔ながらの0.5秒遅延アリアリな感じです。

こちらの「猫ぱんち」さんのブログを参考にしました。同じ様な内容で、リンク先の英語サイトを参考にされたようです。

http://d.hatena.ne.jp/penkoba/20130909/1378744109

ただ、このままではうまく出来ませんでした(;^ω^)

※素の状態でもダメでした

色々やってみて、やっと動作までこぎ着けました。備忘録となりますが、先の「猫パンチ」さんと共に参考にどうぞ。

※ほぼ同じです

なにかと面倒無いよう、通常の「pi」ユーザーでログインしておきます。

インストールするパッケージ

sudo apt-get install pulseaudio-module-bluetooth python-gobject python-gobject-2

Bluetooth関連ユーティリティ(無くても良い)

sudo aptitude install bluetooth bluez-utils bluez-compat

USBのBluetoothドングルを挿して、認識してるか調べます。

lsusb

Bus 001 Device 005: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

sc20150322182557私のは安価なバッファロー製のこちらです。多分、何でも認識するかと思います。バッファローとアイ・オーは実績があるようです。

消費電力を意識するならVer4で、速度重視ならVer3のようです。

iBUFFALO Bluetooth USBアダプター 3.0+EDR対応 class2 ブラック BSHSBD04BK

pulseユーザーをlpグループに追加・・が、正直、ここは意味が分かりません。lpグループって何さ?w

sudo usermod -a -G lp pulse

/etc/init.d/pulseaudioを編集(startメソッド付近:39行目)

–disallow-module-loading=$DISALLOW_MODULE_LOADING」という部分を削除します。

/etc/default/pulseaudioの編集(システムモードに変更)

PULSEAUDIO_SYSTEM_START=1

/etc/pulse/system.paの編集(Bluetoothモジュールのロード)

.ifexists module-bluetooth-discover.so
load-module module-bluetooth-discover
.endif

※末行に追加、ifexistsは無くてもいいけど

/etc/pulse/daemon.confの編集(サンプリング・レート対応)

resample-method = trivial

/etc/bluetooth/audio.confの編集(Bluetoothスタック)

Enable=Source,Sink,Headset,Gateway,Control,Socket,Media

※ここでBluetoothの対応スタックを選択します

/etc/bluetooth/main.confの編集(スタックID)

Class = 0x20041c

/var/lib/bluetooth/<BDADDR>/config の編集(合わせる)

class 0x20041c

フラグ値はよく知りません。そのまんま利用してます。あんまり意味無さそうな印象です。

BDADDRは、機器により違います。1個しかないかと思うので、それです。TAB押せばええ。

オーディオデバイスを表示(デバイス名の確認)

sudo -u pulse pactl list short sinks

※鳴らしたいデバイス名を、メモっておきましょう

別にUSB-DACデバイス(スピーカー)で鳴らしたい場合は、とても重要です。

/usr/lib/udev/bluetoothを新規作成(Bluetoothリンク時の動作)

Bluetoothが接続や切断をした際に呼び出されます。やっている事は、Bluetooth機器を探して、PulseAudioの出力にループバック接続してます。なので、事前にメモしたデバイス名を、以下の赤字に記述します。標準アナログ出力なら、この名称でしょう。

#!/bin/bash

AUDIOSINK=”alsa_output.0.analog-stereo

echo “Executing bluetooth script…|$ACTION|” >> /var/log/bluetooth_dev

ACTION=$(expr “$ACTION” : “\([a-zA-Z]\+\).*”)
if [ “$ACTION” = “add” ]; then
   # set volume level here, if necessary
   amixer set Master 100%
   pacmd set-sink-volume 0 65537
   for dev in $(find /sys/devices/virtual/input/ -name input*); do
      if [ -f “$dev/name” ]; then
         mac=$(cat “$dev/name” | sed ‘s/:/_/g’)
         bluez_dev=bluez_source.$mac

         sleep 1

         CONFIRM=`sudo -u pulse pactl list short | grep $bluez_dev`
         if [ ! -z “$CONFIRM” ]; then
            echo “Setting bluez_source to:  $bluez_dev” >> /var/log/bluetooth_dev
            echo pactl load-module module-loopback source=$bluez_dev sink=$AUDIOSINK rate=44100 adjust_time=0 >> /var/log/bluetooth_dev
            sudo -u pulse pactl load-module module-loopback
source=$bluez_dev sink=$AUDIOSINK rate=44100 adjust_time=0 >> /var/log/bluetooth_dev
         fi
      fi
   done
fi

if [ “$ACTION” = “remove” ]; then
   CONFIRM=`sudo -u pulse pactl list short | grep ‘module-loopback\ssource=bluez_source’`
   if [ ! -z “$CONFIRM” ]; then
      module_id=`echo $CONFIRM | sed ‘s/\s.*//’`
      echo pactl unload-module $module_id >> /var/log/bluetooth_dev
      sudo -u pulse pactl unload-module $module_id >> /var/log/bluetooth_dev
   fi
fi

水色のところは、無くてもOKです。コメントとか、ログ書き出しの部分です。ちなみに、ログは「/var/log/bluetooth_dev」です。

このファイルに実行権限を与えます。

chmod +x /usr/lib/udev/bluetooth

/etc/udev/rules.d/99-input.rulesの編集(追加)

上で追加したファイルを登録します。

KERNEL==”input[0-9]*”, RUN+=”/usr/lib/udev/bluetooth”

/etc/init.d/bluetooth-agentを新規作成(Bluetoothリンク待受)

参考のものをそのまんま利用です。デーモンとして動作します。

### BEGIN INIT INFO
# Provides: bluetooth-agent
# Required-Start: $remote_fs $syslog bluetooth pulseaudio
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Makes Bluetooth discoverable and connectable to 0000
# Description: Start Bluetooth-Agent at boot time.
### END INIT INFO
#! /bin/sh
# /etc/init.d/bluetooth-agent
USER=root
HOME=/root
export USER HOME
case “$1” in
        start)
                #echo “setting bluetooth discoverable”
                sudo hciconfig hci0 pscan
                start-stop-daemon -S -x /usr/bin/bluetooth-agent -b — 0000
                echo “bluetooth-agent startet pw: 0000”
                ;;
        stop)
                echo “Stopping bluetooth-agent”
                start-stop-daemon -K -x /usr/bin/bluetooth-agent
                ;;
        *)
                echo “Usage: /etc/init.d/bluetooth-agent {start|stop}”
                exit 1
                ;;
esac
exit 0

実行権限を与えておきます。

chmod –x /etc/init.d/bluetooth-agent

デーモンとして登録

sudo update-rc.d bluetooth-agent defaults

Bluetoothサービスの再起動&エージェントを起動

sudo service bluetooth restart

sudo service bluetooth-agent start

ここまでやれば、Bluetoothのペアリンクが出来るはずなので、スマホなどから探してみてください(ホスト名に数字が付いたのが見えるはず)

ペアリンク時のコードは、上記スクリプトで「0000」とかしてますが、入力を要求されたらこれを入力、違う数字が表示された場合でも、そのまま「OK」して下さい。内部で、ちゃんとやり取りしてます。

この辺が、LinuxによるBluetoothの変なクセの一つなようです。

基本的なところは、ここで終了なのですが、もう一つ。

接続相手を自動接続にする(信用化)

hcitool scan

Bluetoothスキャンを掛けて、表示されたID(00:11:22:33みたいなやつ)をメモします。

sudo bluez-test-device trusted (ID) yes

で、信頼済みとします。次から、ペアリンク手順が不要になります。

sc20150322182308・・が、機器によって、接続のタイミングがそれぞれ違うようで、スマホとかだとすぐ接続されますが、WindowsPCとかだと、いちいちBluetooth画面から、接続に手順をしないといけません。

※Bluetooth管理用ソフトによって、まちまち

sc20150322182225Windows側で、起動時にアクティブになるような、機能とかあるんだろうか。別にプログラムを書かないといけないかもしれない。

遅延無しのapt-xで接続してみたいが敷居が高そう。

最後になりましたが、なんでこんな事をするかという点。

自分は、ソーラー発電&蓄電をしてまして、RaspberryPiやスマホの充電なんかを全て、ソーラー発電からまかなってます。

USBスピーカーも同様で、24時間通電しっぱなしです。

せっかくなので、常用パソコン用のスピーカーも、これで鳴らせれば、節電になるなぁ・・という事から実施してます。TVチューナー(Blurayレコーダ)の音声も、一緒に鳴らしたいんだけども。

※USBスピーカーで、入力が3つとかいう製品が無いしね・・

追記:3/27

しばらく運用してみたのですが、この方法で、ラズパイをBluetoothスピーカー化する事が可能です。

Windows PCなどから、再接続する手間を除けば、実用に耐えます。ま、これもWindows側或いは、ラズパイ側から再接続指示などが行えるかもしれません(Bluetooth仕様でしょう)

追記した理由は、自分の運用的に問題にぶち当たったからです。

PulseAudioをシステムモードON(非デフォ)としていますが、この性で、通常のオーディオ利用が出来なくなってしまいます。

sudo –u pulse mpg321 hogehoge.mp3

とかユーザー指定すれば、音声は鳴ってくれますが、バッチ処理内だとがっつりフリーズしてしまいます。

PulseAudioを、ちゃーんと理解していれば、対策も出来るのでしょうが、生半可な知識ではこれが限界(;´Д`)

他に時報とかメール着信・監視時とか鳴らしたいので、自分的には実験的段階で終了という運びとなりました。

【PC】RaspberryPi2きたこれ!どんなやつ?

sc20150204190944

追記有:2015/02/10

なにやら突然に発表と思いきや、既に販売中という、いつながらワクテカさせる暇を与えてくれないラズパイですが・・w

RaspberryPi+でしばらくの辛抱と思いきや、「RaspberryPi2」が登場です!(Type-Bのみ)

CPUコア単体では1.5倍、4コアなので、単純に6倍に性能アップ!メモリも、512MBから1GBに倍増!(ELPIDA社製)

他の構成は、TypeB+と同じだそうです(サイズやGPIOも含め)

しかも、値段据え置き!35ドル!全て英国製で、中国製は無くなった。

日本ではなぜか?いくらか乗ってます。TypeB+よりも数百円高い。英国からの送料は同じなのにねぇ・・・(;・∀・)

ただただ、気になるのが、消費電力と発熱です。TypeB+は、200mAで動作してたので、これがどれだけ増加するか?です。また、ヒートシンクを持たない状態みたいですが、発熱具合も気になるところです。

※ちなみに、TypeA+は90mAで動作しちゃう 参考:ブログ

追記:

sc20150210163217消費電力は、以前のモデルとは違い、CPUロードによって増減するようです。

アイドル時で230mA、フルロード時で470mAのようです。参考

※LANポート利用、HDMI出力、USBキーボード利用の時

案の定ですが、結構、電力を消費します。幸い500mA以下なので、どんなUSBポートでも動作は可能ですが、ラズパイのUSBポートや純正カメラ等を利用する場合は、1~2A以上の余裕が必要でしょう。

Type-B+も継続して販売との事で、低電力を望むならPi A+/B+、高スペックなら、Pi2となる感じでしょうか。

追記:

以前は遅すぎて使い物にならなかったGUI環境ですが、CPUスペックが大幅に上がった事で、スムーズに動作してくれるようです。

こちらの動画が参考になるかと思います。

スクロールとかも、波打ってませんし・・(;^ω^)

sc20150204194610

先日凄いニュースが飛び込んできました。

なんと、RaspberryPI向けに、無料でWindows10を提供との事です。

スペック的に、パソコンとして快適に利用する事は困難ですし。

大事な事を忘れてますよ!

ラズパイは、RISCなんですよ。intel x86では無いんですよ。って事は、普段使いのWindowsでは無いのが想定できます。多分、Windows8 RTみたいなシロモノでしょう。RT機はRISCだったし。

アメリカきっての営利企業が、そんなボランティア的な事は絶対にしません。

RaspberryPi関連製品

追記:

sc20150210164612

初めて聞くようなニュースが飛び込んできましたね。

なんと、ラズパイをカメラのフラッシュで焚くと、再起動する!?と・・(;^ω^)

オカルトちっくな印象ですが、これ、本当のようで。。

チップの回路が一部露出しているらしく、そこに大きな光を受けた場合、電圧が低下するんだそうです。

※太陽光や室内灯くらいでは問題無し

かと言って、これは不具合でも無く、そういうものだそうです。これで、故障する訳でも無いようです。突然の再起動によって、ストレージとかへのデータ的ダメージはあるでしょうけど。

公式では、対策版を出荷するようです。

ヒートシンクとか取り付けたら対策できるんだろうかね。

【pc】いつの間にか登場してた新ラズパイA+

sc20150106205435

2014/11に発表してたみたいでしたw

モデルB+に続いて、モデルAにも後継が登場したようです。

GPIOピン数はタイプB+と同等、USBやLAN無し、RAM容量などの部分は、以前と同じです。

驚くべきは、100mA/5V以下で、まっとうに動作するコンピュータなところ。実に消費電力、0.5Wですよヽ(;゚д゚)ノ !!

sc20150106212939そんなパソコンが、約2500円以下で手に入っちゃいます。

さすがに、Windowsは動かないけどね。

  Type A+ Type B+
価格 $20 $35
価格(国内) 2620円付近
※為替により変動
Amazon (送料込)
3940円付近
※為替により変動
Amazon (送料込)
USBポート 1 4
出力計1.2Aまでだが、2A電源入力なら1.5Aまでいけるようです(噂)
RAM 256MB 512MB
LAN 無し 10/100Mbps x1
サイズ 65mm x 65mm 85mm x 56mm
CPU 700Mhz (BCM2835)
1 Core
※オーバークロック化だが、ほとんど変わらず
GPU 2 Core (VideoCore IV)
電源 Micro USB (5V)
ビデオ入力 CSIカメラ用
GPIOピン 40ピン
SDカード MicroSDスロット
オーディオ出力 3.5mm x1
※RCAビデオ出力兼
※以前のモデルよりも、低ノイズ化
ビデオ出力 HDMI
3.5mm
※オーディオ出力兼
※GPIOからも出力有り
固定用穴 →(位置は同じ)
消費電力
(アイドル)
90mA / 5V 200mA / 5V
※従来 310mA
消費電力
(最大)
110mA/ 5V 240mA / 5V
※従来 360mA

P1010414

私の部屋で24H稼働中のRaspberry Pi タイプB(以前のモデル)はこちら。

一度も不安定になる事なく稼働し続けてます。

今は、ソーラーパネルで発電したバッテリーから給電して動作してるので、完全無欠の地球に優しいコンピュータです。

Windowsバックアップ、ファイルサーバ、監視カメラ、時報など色々動作させてます(ストレージは120GBのSSDを接続)

新モデルの方が、確実にスペックアップしてるわ、消費電力が低いわで。。(;^ω^)移行しようかな。

Type-Aもかなり魅力的ですが、ネットワークが使えないスタンドアローンとなるので、用途はかなり限られますね。制御系コンピュータとして考えても、夢の様なコンピュータです。$20だしw

追記:

Raspberry Pi B+での話ですが、USBの電流合計が0.6A(600mA)に制限されているようで、これを撤廃して、最高1.2Aにする事ができるようです。

以下のサイトに設定方法が書かれてます。

http://www.mugbot.com/2014/08/19/raspberry-pi-model-b-%E3%81%AEusb%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E9%9B%BB%E5%8A%9B%E3%82%A2%E3%83%83%E3%83%97/

ただ、注意すべきは、OS起動後に1.2Aとなるので、電源投入後は0.6A制限が生きてます。よって、最悪は故障となる可能性があるので、なんとも厳しいかもしれない。