車載PC Player - 6 - VoyageのBluetooth

Car, PC & Software, PC Player for Car Audio No Comments »

USBドングルのBluetoothが認識されたので、テストをしてみたのですがAndroidとVoyageでペアリングできるものの通信ができませんでした。

よくよく調べてみると、VoyageにはBluetoothの通信に必要なRFCOMMがロードされていない事が判明。RFCOMMをロードするためにはカーネルの再構成が必要になります。カーネルの再構成にはコンパイルを伴うので開発ツールも必要になります。ZBOXNANOにはいらないパッケージをインストールしたくはなかったのですが仕方ありません。

まず再構成に必要なパッケージをインストールします。

root@voyage:~# apt-get install kernel-package ncurses-dev fakeroot

カーネルソースパッケージのインストール

root@voyage:~# apt-get install linux-source-3.0.0-voyage

ソースの用意

root@voyage:~# cd /usr/src
root@voyage:/usr/src# tar -jxvf linux-source-3.0.0-voyage.tar.bz2
root@voyage:/usr/src# ln -s linux-source-3.0.0-voyage linux

コンフィグレーション

root@voyage:~# cd linux
root@voyage:/usr/src/linux# cp /boot/config-3.0.0 .config
root@voyage:/usr/src/linux# make menuconfig


少し待つとCUIのメニューが表示されます。



Networking support → Bluetooth subsystem support と開いて



こんな風に変更します。使う予定のないサービスもありますが、またカーネルを作り直すはめになるのも面倒なのでとりあえず全部入りです。
さらに、Bluetooth device driversから



以前ダウンロードしておいた内蔵Bluetoothのファームウェアも取り込むように指定します。

コンパイル

root@voyage:/usr/src/linux# fakeroot make-kpkg --initrd --revision=ya1.0 kernel-image modules-image

--revision=ya1.0は好きな名前で指定します。

コンパイルが始まりますが、ZBOXNANOではかなり時間がかかります。多分2時間ぐらいかかったと思いますが、ほかのことをやってて忘れたころに見たら終わってました。

インストール

root@voyage:/usr/src/linux# cd ..
root@voyage:/usr/src# dpkg -i linux-image-3.0.0_ya1.0_i386.deb


これで再起動すると新しいカーネルが読み込まれます。


root@voyage:~# dmesg
:
[ 5.070125] Bluetooth: Core ver 2.16
[ 5.070258] Bluetooth: HCI device and connection manager initialized
[ 5.070312] Bluetooth: HCI socket layer initialized
[ 5.070362] Bluetooth: L2CAP socket layer initialized
[ 5.070832] Bluetooth: SCO socket layer initialized
[ 5.074232] Bluetooth: Generic Bluetooth USB driver ver 0.6
[ 11.695315] Bluetooth: RFCOMM TTY layer initialized
[ 11.695372] Bluetooth: RFCOMM socket layer initialized
[ 11.695416] Bluetooth: RFCOMM ver 1.11
[ 11.703248] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 11.703309] Bluetooth: BNEP filters: protocol multicast

root@voyage:~# lsusb
Bus 007 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 006 Device 002: ID 2109:0811
Bus 006 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
lBus 005 Device 004: ID 0cf3:3005 Atheros Communications, Inc. AR3011 Bluetooth
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 099a:0638 Zippy Technology Corp. Sanwa Supply Inc. Small Keyboard
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

root@voyage:~# hcitool dev
Devices:
hci0 74:2F:68:E1:2F:F4 <-- 内蔵Bluetooth

root@voyage:~# hciconfig -a
hci0: Type: BR/EDR Bus: USB
BD Address: 74:2F:68:E1:2F:F4 ACL MTU: 1022:8 SCO MTU: 121:3
UP RUNNING PSCAN
RX bytes:1886 acl:0 sco:0 events:68 errors:0
TX bytes:1727 acl:0 sco:0 commands:63 errors:0
Features: 0xff 0xfe 0x0d 0xfe 0x98 0x7f 0x79 0x87
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: SLAVE ACCEPT
Name: 'voyage-0'
Class: 0x4a0100
Service Classes: Networking, Capturing, Telephony <-- サービスがロードされてる
Device Class: Computer, Uncategorized
HCI Version: 3.0 (0x5) Revision: 0x9999
LMP Version: 3.0 (0x5) Subversion: 0x9999
Manufacturer: Atheros Communications, Inc. (69)


ふぅ。

注) 記憶を頼りに書いてるので間違ってるかもしれません!



車載PC Player - 5 - 全体構成

Car, PC & Software, PC Player for Car Audio No Comments »

全体の構成を考えてみました。
まだ具体性は全然ない贅沢な妄想バージョンです。



CPUボードを核に、6チャンネルの電子ボリューム付きマルチアンプ構成です。
内2チャンネルはローパスフィルター付きでサブウーファーに使用します。
キーボード(K/B)はメンテ用で普段は付けません。楽曲データはSDカード(SD)経由で。Andoroidとの接続はBluetooth(BT)のRFCOMM接続で専用のプログラムと通信します。

本体の表示は明るいところでも見やすいノリタケ産業のSCK256X64E-3100-Aあたりを使います。

アンプは6チャンネルともYAMAHAのデジタルアンプICを使用した、サンネット電子のDAY015Aを予定。以前にDesktop Nautilusで使った物です。15W/4Ω出力ですが十分でしょう。

ローパスは同じサンネット電子のSWF100という物で、ボリュームで周波数を調整できます。カットオフ周波数の上限が150Hzなので、300Hzぐらいまで使いたいので変更するかもしれません。

FMチューナーは、aitendoのFM-TEA5767-Mを予定。PhilipsのTEA5767HNを使ったFMレシーバモジュールです。チューニングはPICで制御しますが、チューニングダイアル(RE2)とPCからの指示で行えるようにします。

DACはUSB接続のバスパワーで動作するコンパクトな物から、VICSのPCM2704使用USBオーディオキットを使ってみようと思います。

USB DACとFMの切替はSELで書いたセレクターで行い、FMで受信した音声信号はPCを経由しないで直接アンプに流す事にしました。これもPICで切替指示をしますので、セレクトダイヤル(RE2)とPCからの指示で行えるようにします。

6個の電子ボリュームは全部別々に音量設定ができるようにして、前後左右のバランス調整、メインスピーカーとサブウーファーのバランス調整を兼ねるようにします。調整はPCからPIC経由で行います。

操作はAndroid上のGUIで、楽曲ファイルの転送や管理、選曲やプレイリストの管理、FMとMP3の切替、FMの選局、音量や各スピーカーのバランス調整、各種設定などフル機能が操作できるようにし、本体のツマミで選曲や音量などの通常の利用で必要な機能の操作ができるようにするつもりです。
エリーゼはオープン状態とクローズ状態で大きく音響特性が変るので、PC内のプログラムからオープンモードとクローズモードを切り替えられるようにして、サブウーファーのバランスとイコライザーで音質を調整します。イコライザーはPCのソフトイコライザーか、電子ボリュームチップにイコライザーを内蔵する物もあるらしいので、それを使うかもしれません。

この構成の成否はPICの部分と電子ボリュームですが、PICは使った事が無いという大きな問題が立ちはだかっています。
それと電源。クルマの12Vから各部品に必要な電圧を安定して供給しないといけません。特にCPUボードはACPIの絡みもあるので難しいです。

電気知識に乏しい私に実現できるか微妙なところです。
とりあえずこちらで勉強してみます。

車載PC Player - 4 - クロスコンパイル環境

Car, PC & Software, PC Player for Car Audio No Comments »

ZBOXNANO VD01はコンパイラを動かすにはちょっと向かないPCです。CPUは遅いしSSDは酷使したくないし。
そこで、別のPCでコンパイラを動かす必要があるのですが、手元にあるのはメインで使っているWindowsXPと、Windows7だけです。パワフルなLinux環境のPCがあれば簡単な話ですが、ここはWindowsでvoyage用の実行ファイルを作る事にします。

WindowsでLinuxの実行ファイルを作るには、クロスコンパイル環境が必要になります。

GCCをクロスコンパイル用に設定してWindows上でコンパイルして利用する

考えただけでも面倒な作業になるので却下。

voyageにrshサーバを立ち上げて、Eclipseからrshでコンパイルを行わせる

そもそもVD01が遅いからクロスコンパイル環境を作ろうとしているので却下。

windows上の仮想PCでLinuxを動かし、eclipseからrshでコンパイルを行わせる

これしかありませんね。クロスコンパイル環境と言えるのか微妙ですが、実行ファイルがWindowsPC上で作れればOKです。

まず、仮想PCはフリーで使えてLinuxに対応しているvmware playerを使用します。本家サイトからダウンロードしてインストールします。

仮想PCに入れるのはvoyageに近い物ということでDebianを選択。こちらも本家からisoイメージをダウンロードしてvmwareにインストールします。
環境はコンソールモードのファイルサーバを選択して、ssh、C++の開発に必要なパッケージ、sambaクライアント、など使いそうな物を追加しました。

vmwareにはホストPCのファイルにアクセスするための仕組みがあるのですが、上手く動作しなかったのでsambaクライアントを使ってDebianからWindows上の共有ファイルをアクセスするようにしました。これで、Windows上のプログラムをDebian上でコンパイルする事が出来ます。

あとは、Eclipseの環境設定とかrsh環境設定です。でもEclipseのCDTは使いにくいから、プログラムはVisualStudioで書くのでmakefileだけでも良いかも。どうせ連携できないし。

こちらを参考にとりあえず書いたmakefile。懐かしいな

CC=g++
LD=g++

PROJECT_DIR=(Windows上の共有ファイルをマウントしたディレクトリ)
WORK_DIR=(作業場所)

SRC_DIR=$(PROJECT_DIR)src
SRCS=$(shell cd $(SRC_DIR); ls *.cpp)
BUILD_DIR=$(WORK_DIR)debug
TARGET = (出力ファイル).so
OBJS = $(SRCS:.cpp=.o)

INCLUDE=-I$(PROJECT_DIR)include
CFLAGS=-c -D_GCC -DLINUX -DEXPORTS -DUNICODE -static -MMD -MP
LDFLAGS = -shared

all : $(BUILD_DIR) $(patsubst %,$(BUILD_DIR)/%,$(TARGET))

$(BUILD_DIR):
mkdir $(BUILD_DIR)

$(BUILD_DIR)/%.o : $(SRC_DIR)/%.cpp
$(CC) $(CFLAGS) -o $@ $<

$(BUILD_DIR)/$(TARGET) : $(patsubst %,$(BUILD_DIR)/%,$(OBJS))
$(CC) $(LDFLAGS) -o $@ $^

clean:
rm -fr $(BUILD_DIR)

.PHONY: all clean

車載PC Player - 3 - ZBOXNANO VD01内蔵のBluetooth

Car, PC & Software, PC Player for Car Audio No Comments »

ZBOXNANO VD01に内蔵されているBluetoothが認識されない件を調べてみました。

デバイスは検出されているようです。

root@voyage:~# lsusb
Bus 007 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 006 Device 002: ID 2109:0811
Bus 006 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 002: ID 0cf3:3000 Atheros Communications, Inc. AR3011 Bluetooth (no firmware)
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 099a:0638 Zippy Technology Corp. Sanwa Supply Inc. Small Keyboard
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


搭載されているのはAtheros CommunicationsのAR3011というチップのようで、(no firmware)となっています。
ファームウェアを探すと、

lenny-backports (kernel): Binary firmware for Atheros Bluetooth cards [non-free]

が見つかりました。他にもsqueezeとかでも入っているようです。
これで問題解決かとインストールしてみても動作する気配がありません。
で、更に調べると

Debian Bug report logs - #641749
firmware-atheros doesn't load for Atheros AR3011

だそうです。動作している環境もあるようですがvoyageに入っているカーネル3.0では不安定な様子。
仕方ないので、内蔵Bluetoothは封印かな。

車載PC Player - 2 - voyageインストール

Car, PC & Software, PC Player for Car Audio No Comments »

実験用に購入したPCにVoyageをインストールします。
ZOTACのZBOXNANO-VD01は、外部メディアがメモリカードスロットとUSBしかありませんので、USBメモリにインストールイメージを書き込んで、USBブートでインストールする事にしました。

  1. voyage MPDのダウンロード
  2. こちらからvoyage-mpd-0.8.0.tar.bz2 [2011-10-31] [Live CD]のライブCDをダウンロードします。

  3. DDforWindowsのダウンロード
  4. こちらからDDforWindowsをダウンロードします。DDforWindowsは、unixのddコマンドのようにisoイメージなどをメディアに書き込むツールです。

  5. DDforWindowsでUSBにイメージを書き込みます
  6. ダウンロードしたVoyage MPDのライブCDをUSBメモリに書き込みます。途中でメディア容量とイメージサイズが合わないとか警告が出ますが、かまわず進めます。

  7. ZBOXNANO-VD01を起動
  8. ZBOXNANO-VD01のUSBポートにイメージを書き込んだUSBを刺して起動します。USB3.0のポートからはブートできないようなので、黒い方のUSB2.0ポートを使用します。

  9. SSDへインストール
  10. voyageが起動したらrootでログインします。
    以下のコマンドでSSDへインストールを行います。


    root@voyage:/# /usr/local/sbin/voyage.update


    対話形式でいろいろ訪ねられるので、
    操作は "Create new Voyage Linux disk"
    プロファイルは "GenericPC"
    インストール先は"/dev/sda"
    ブートローダーは "grub"
    パーティーション&ファイルシステムの作成を指定
    となるようにします。

    インストールは数分で完了するので、終わったら と


    root@voyage:/# reboot


    で再起動します。再起動の際にはUSBメモリは取り外しておくのを忘れずに。

  11. bluetooth関連
  12. 正常に再起動したらrootでログインして


    root@voyage:/# apt-get install bluetooth
    root@voyage:/# apt-get install bluez-utils


    で関連ソフトをインストールします。インストールが完了したら


    root@voyage:/# hcitool dev


    でデバイスを認識しているか確認できます。ウチの環境では何故かVD01に内蔵しているデバイスは認識されなかったので、手元にあったUSB接続のBluetoothアダプタ「プラネックス BT-Micro3E2XZ」を刺したところ、こちらは認識されました。VD01はLinux Readyで、BT-Micro3E2XZの対応OSはWindows&OS-Xなのですけど、結果は逆です。
    VD01の内蔵Bluetoothがなぜ認識できないか調査が必要です。

  13. ファイル共有設定
  14. WindowsPCとファイル交換が出来ないと何かと不便だし、DHCPでIPアドレスが毎回変ってSSH接続も面倒なのでsambaをインストールします。


    root@voyage:/# apt-get install samba


    sambaの設定を変更します

    root@voyage:/# vi /etc/samba/smb.conf


    ワークグループ名を指定

    workgroup = xxx
    (xxxはワークグループ名)

    文字コードの指定

    dos charset = CP932
    unix charset = UTF-8
    display charset = UTF-8


    ユーザ認証設定を以下に

    security = user
    encrypt passwords = yes
    passdb backend = tdbsam
    unix password sync = yes


    楽曲ディレクトリの共有

    [music]
    comment = Music Files
    path = /var/lib/mpd/music
    public = yes
    writable = yes


    Linuxユーザを追加します

    root@voyage:/# useradd -m xxxx (xxxxはユーザ名)


    sambaにユーザを登録します

    root@voyage:/# pdbedit -a -u xxxx (xxxxはユーザ名)


    sambaを再起動します

    root@voyage:/# /etc/init.d/samba restart


    Windowsのエクスプローラで接続でき、ファイルの読み書きが出来る事を確認します。

  15. 電源スイッチ関連

  16. 本体の電源スイッチでシャットダウンしないので、acpiが有効になるようにします。


    root@voyage:/# vi /boot/grub/menu.lst


    で、kernelと書いてある行の最後に "acpi=on apm=off" を追記します。


    root@voyage:/# apt-get install acpid
    root@voyage:/# apt-get install acpi-support-base


    関連パッケージをインストールしたらrebootします。
    再起動後、本体の電源スイッチを押してシャットダウンシーケンスが開始されるのを確認します。

細かなタイムゾーンや言語設定は端折りましたが、以上でインストールと最低限の初期設定は終了です。
残るは内蔵されているBluetoothが認識されない原因と対策の調査です。その他のサウンド、メディアリーダ、USB3.0ポートなどの内蔵デバイスは正常に動作しているようです。

※ 内蔵Wi-Fiアダプタは認識してました。(ifup忘れてた^^;

root@voyage:/var/lib/mpd# ifup wlan0
root@voyage:/var/lib/mpd# ifconfig
eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
inet addr:172.16.10.153 Bcast:172.16.255.255 Mask:255.255.0.0
inet6 addr: fe80::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:206468 errors:0 dropped:0 overruns:0 frame:0
TX packets:106870 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:300561623 (286.6 MiB) TX bytes:6724881 (6.4 MiB)
Interrupt:32 Base address:0xe800

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:90 errors:0 dropped:0 overruns:0 frame:0
TX packets:90 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:8067 (7.8 KiB) TX bytes:8067 (7.8 KiB)

mon.wlan0 Link encap:UNSPEC HWaddr 74-xx-xx-xx-xx-xx-xx-xx-00-00-00-00-00-00-00-00
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

wlan0 Link encap:Ethernet HWaddr 74:xx:xx:xx:xx:xx
inet addr:10.1.10.1 Bcast:10.1.10.255 Mask:255.255.255.0
inet6 addr: fe80::xxxx:xxff:xxe1:d75/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:6883 (6.7 KiB)

この状態で、電源ONからログインプロンプトが出るまで約30秒です。ALIX3D2ボードだとCPUとバスが遅い分、もっと起動に時間がかかると思いますが、H/Wがシンプルなのでもしかしたらもっと早いかも。



車載PC Player - 1

Car, PC & Software, PC Player for Car Audio No Comments »

PCプレーヤーの使い勝手が良いので、カーステレオも同じような物がないか探してみました。
ところが、内蔵HDDに楽曲を記録できる機種はないみたいです。おそらくiPodの普及でコネクタに接続して使うのが一般的になったという事みたいです。いちいちプレーヤーにコピーするのも面倒だし、コピーでどうせ接続するならそのまま再生しちゃえって事だと思います。
でも、個人的にはいちいちコードをつなぐのも面動だし、本体だけで使いたいのです。
理想的には、

  1. 内蔵HDDに大量の楽曲を記録できる事
  2. Androidスマホで操作できること
  3. 本体のスイッチだけでも操作できること
  4. 楽曲のコピーにコードをつながなくても良いこと
こんな感じです。良く調べたらこういう機種もあるのかもしれませんが、やっぱり作ってみようかと思います。
Read the rest of this entry »



   Designed By:  Sadh Web Directory     Sponsered By:   BrainBloggers  & Linkature

Entries RSS Comments RSS
ホットワード Do It Yourself Voyage Bluetooth 認識
割引クーポンまとめ情報 - クー割