2015年7月19日日曜日

cocos-2dってどうかなあと思いゲームを作ってみる

息子が夏休みの宿題でゲームを作ってみたいと言い出した。

うーん、たしかに夏休み一杯掛ければそれなりなものを作れるかもしれんが、高校受験を控えている息子はそんなに時間はない。
せいぜい1日で、プログラムの知識のない息子にゲームを作ってもらい、それなりな達成感は与えられないか。
そんなことを考えて、とりあえず自分の興味もあったので最近流行りの2D用のプラットホームを調べてみた。
Mac OSでもつかえて、比較的簡単そうな。。。と探していた所、Cocos-2dのJavaScriptに辿り着いた。これでブラウザーゲーム作り適当なサーバーにアップすれば、学校のPCでも見られると思いつく。
そんなわけで、とりあえずやってみた。

cocos2d-jsをためす

・インストール
 ・以下から最新のCocos2d-JSをダウンロードする
    http://www.cocos2d-x.org/download
 ・ダウンロードしたZIPを解凍する。
 ・解凍したフォルダを任意のディレクトリに移動する。
  ターミナルで以下の様な感じ
  sudo mv cocos2d-js-v3.6.1 /opt/local/share/
 ・フォルダの所有権を変更
  cd /opt/local/share/
    sudo chown -R root:admin cocos2d-js-v3.6.1
 ・セットアップ実行
  cd cocos2d-js-v3.6.1
    ./setup.py
     ⇒色々聞かれるがJavaScriptしか使わない場合は関係ないので全部SKIP
 ・一旦ターミナルを閉じて、新規に開き直す。
 ・プロジェクトを作成するディレクトリに移動する。
 ・プロジェクトを作成する。
  cocos new MyGame -l js -d ./
 ・とりあえずサンプルを起動する。
  cd MyGame
    cocos run -p web
   ⇒ ブラウザが立ち上がりゲームが動き出す
   ⇒やめるときはターミナルでctl+Cで停止

で、とりあえず一晩でクソゲーを作ってみた

背景、キャラクター、BGM、効果音は、全部Webで集めました。
左から飛んでくる弾丸をマウスでクリックしてジャンプしてよけるだけのゲームです。
メインのキャラクターは江別のゆるキャラのえべチュンです。
作ってみてわかったのですが。。。。

・Safariでは音が出るのにFirefoxでは音が出ない。OGG形式なら両方共いけるという情報があったのに。。。MP3ならとりあえずSafariとChromでは音が出る。
・FirefoxでBGMと効果音の両方の音を出そうとするとうまくいかない。
 BGMだけならMMP3でも音が出る。
・衝突判定後の処理がSafari/ChromとFirefoxで異なる。

うーん、もう少し調べてみないと、息子の自由研究に使えんかなあ。。。



2015年3月14日土曜日

諸君私はレビューが好きだ

諸君、私はレビューが好きだ
諸君、私はレビューが好きだ
諸君、私はレビューが大好きだ 
書面レビューが好きだ
ピアレビューが好きだ
シナリオレビューが好きだ
ウォークスルーが好きだ
役割分担をした厳格なインスペクションが好きだ 
自席で
会議室で
応接室で
移動中のパソコンで
スマホで 
この地上に存在するありとあらゆるレビューが大好きだ 
新人の作った仕様書が好きだ
誤字脱字誤変換だらけで日本語にすらなってないのを見つけた時など心がおどる 
レビュー記録票が好きだ
意味のない軽微な指摘で埋まり何一つ重要な指摘がない時など胸がすくような気持ちだった 
客先とのレビューで仕様が二転三転するのが好きだ
気がつけば昼飯を食う時間も無い時など感動すらおぼえる 
結局出来上がった仕様は最初の指摘と何ら関係ない時などもうたまらない
しかも、その仕様を客先の上司が鶴の一声で変更するのは最高だ 
レビューをせずに不具合だらけの仕様書に基づいて作成されたプログラムがテストで破綻するのを
徹夜してすべての構造を見なおして再設計する時など絶頂すら覚える 
レビューに参加したお偉いさんの指摘が好きだ
仕様書のフォーマットが気に食わないと言われ、リリースが迫っているのに徹夜でMS Wordと戦う時はとてもとても悲しいものだ 
リファクタリングで整然とした構造を設計したものが好きだ
レビューで古参のメンバーに既存の汚い設計のほうが実績があると言われて却下されるのは屈辱の極みだ 
諸君
私はレビューを
終わりの見えない様なレビューを望んでいる 
諸君
私に付き従うレビュー好きの諸君
君たちは一体何を望んでいる?
更なるレビューを望むか
糞の様なレビューを望むか?
会議室に閉じ篭もりキングファイル10冊にもなるAPI仕様書をひたすらチェックするようなレビューを望むか? 
レビュー!!
レビュー!!
レビュー!! 
よろしい ならばレビューだ
だが、会議室で上司の罵倒に、客からの無理難題に、ベテランからの駄目出しに耐え続けて来た我々には
ただのレビューではもはや足りない!!
大レビューを!!
一心不乱の大レビューを!! 
我々はわずかに小数
千枚の仕様書に埋め込まれた一万の不具合に比べれば物の数ではない
だが諸君は一騎当千のレビューアーだと私は信じている
ならば我らは諸君と私で千枚の仕様書から一万と一の不具合を検出するスーパーレビューアー集団となる 
我らを忘却の彼方へと追いやり、バグ密度だけでレビューの成功を確信している奴らを叩きのめそう 
髪の毛をつかんで引きずり下ろし 眼(まなこ)をあけて思い出させよう
連中に見つけるべきは誤字脱字ではなく重大不具合であることを思い出させてやる
連中に探すべきは客の好みではなくユーザーの使い勝手であることを思い出させてやる
レビューには奴らの哲学では思いもよらないテストでは見つけられない重大不具合を見つけるためにある事を思い出させてやる 
1000人のレビューアーの集団で 世界をレビューで埋め尽くしてやる
目標 肥大した10年ものの1000万ステップのソース
焼け石に水作戦 状況を開始せよ
征くぞ 諸君


今更かもしれませんが、たまたま「諸君 私はC言語が好きだ」というのを見つけてしまい、思わず作ってしまった。

2015年2月14日土曜日

Raspberry PiでVNCしてみる


最近、うちの息子が勉強中に家のMacでBGMを流しっぱなしにする。個人的には勉強中にBGMをかけたりするのは嫌なのだが、うちの奥さんと息子はBGMをかけとく派なので。まあ、勉強するのに必要と言われると、反対しにくい。しかし、息子のアカウントでBGMかけっぱなしにされると、パソコンが使えん。
ということで、Raspberry PiでYou Tubeかけとけばいいんじゃないかと思い立つ。
Raspbery Piと家のAudioを接続し、音楽流せばいいんだけど、画面が表示できないと操作できない。かといって、わざわざキーボードやらディスプレイをつなげるのも面倒。
そこで、Raspbmcは、最初からVNCserverをサポートしているので、これを使えば、ディスプレイを使わなくてもMacから操作できると思い立つ。ちなみにRaspbmcはhttpでつなげると、リモート・コントロールできるのだが、アドオンとかのYoutubeとかの操作はできないので、VNCserverが必要です。
RaspbmcのメニューからProgram->Raspbmc Settings -> System ConfigurationにFTPやSMBAのON/OFFに並んでVNC ServerがあるのでこれをONにすればOKです。

あとは、Raspbery PiにVNC Viewerで接続すれば、パソコンから操作できます。
注1: VNCのポートは5900になるようです。
注2: Macの標準で持っているVNC Viewer(Finderのサーバー接続でできるやつ)では接続できません。Real VNCなら問題なく動作します。こちらからダウンロード。

とりあえず、目的は果たせたのだが、Raspberry Piのオーディオの音質あんまり良くない。衝動買いで安いDACをポチりそうだ。。。。。。数時間後にポチった。
で、AmazonでMUSE Audio USB-DAC ヘッドフォンアンプ Burr Brown PCM2704を買った。さてどんな音だろうか、届くのが楽しみだ。

2015年2月12日木曜日

無線が最高速でないので、無線のドライバーをソースからビルドしてみようと思いつく。
とはいえ、Rasbery Pi上でコンパイルするのは時間もかかるので、今後を考えてクロスコンパイル環境を作ることにする。
おうちのMac OS Xなら、そのままクロスコンパイルの環境を作ることもできるのだが、色々とめんどくさい。ここは、公式のHPにもあるようにLinuxで環境を作ることにする。ちなみに、Mac OS X上のVirtual Box上でUbuntuを動かし、そこにクロスコンパイル環境を作ることにした。

コンパイル環境は、公式ページに記載されている。Virtual Boxを使ったUbuntu環境の作り方も丁寧に説明されている。
Ubuntuは普段は会社ではServerばかりいじっているのですが、日本語版のデスクトップを落としてきました。Virtual Box用の仮想イメージがあったので、それをそのまま使うことにします。ダウンロードしたzipを解凍して、Virtual Boxでダウンロードしたイメージを指定して起動します。起動後は、普通のUbuntuのセットアップです。インストールした直後に、もろもろアップデートしておきます。Virtual Boxのネットワークの設定をブリッジモードにすればUbuntuからさっくりつながります。

ここからは、ubuntu上の作業。ちなみにUbuntuのバージョンはUbuntu 14.04.1 LTS(64Bit)です。
Webに幾つかUbuntuのクロスコンパイル環境を作る方法があったのですが、Ubuntu 32bit前提のページが混在しており、結局以下の様な方法になりました。 

もろもろ必要なパッケージをインストール


$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get clean
$ sudo apt-get install build-essential libncurses5-dev

クロスコンパイラーはgitにもあるのですが、Ubuntuの64bitでは動作しないようなので、apt-getでとってきます。


$ sudo apt-get install gcc-arm-linux-gnueabi make ncurses-dev

クロスコンパイラーは、/usr/binに配置されるようです。


$ ls /usr/bin/arm*
/usr/bin/arm-linux-gnueabi-addr2line       /usr/bin/arm-linux-gnueabi-gcov-4.7
/usr/bin/arm-linux-gnueabi-ar              /usr/bin/arm-linux-gnueabi-gprof
/usr/bin/arm-linux-gnueabi-as              /usr/bin/arm-linux-gnueabi-ld
/usr/bin/arm-linux-gnueabi-c++filt         /usr/bin/arm-linux-gnueabi-ld.bfd
/usr/bin/arm-linux-gnueabi-cpp             /usr/bin/arm-linux-gnueabi-ld.gold
/usr/bin/arm-linux-gnueabi-cpp-4.7         /usr/bin/arm-linux-gnueabi-nm
/usr/bin/arm-linux-gnueabi-dwp             /usr/bin/arm-linux-gnueabi-objcopy
/usr/bin/arm-linux-gnueabi-elfedit         /usr/bin/arm-linux-gnueabi-objdump
/usr/bin/arm-linux-gnueabi-gcc             /usr/bin/arm-linux-gnueabi-ranlib
/usr/bin/arm-linux-gnueabi-gcc-4.7         /usr/bin/arm-linux-gnueabi-readelf
/usr/bin/arm-linux-gnueabi-gcc-ar-4.7      /usr/bin/arm-linux-gnueabi-size
/usr/bin/arm-linux-gnueabi-gcc-nm-4.7      /usr/bin/arm-linux-gnueabi-strings
/usr/bin/arm-linux-gnueabi-gcc-ranlib-4.7  /usr/bin/arm-linux-gnueabi-strip
/usr/bin/arm-linux-gnueabi-gcov            /usr/bin/arm2hpdl

作業ディレクトリを作成し、そこにカーネルソースを持ってくる。


$ mkdir raspi
$ cd raspi
$ git clone https://github.com/raspberrypi/linux.git

ここで、カーネルのconfigをするのですが、0からやるのは大変です。いくつかの方法がありますが、一番良いのは、すでに使っているRaspberry Piのconfigファイルを持ってくることです。Raspberry Piをネットワークにつなげ、アクセスできるようにします。先ほどつくったraspiディレクトリにカーネルソースのあるlinuxディレクトリがあるはずなので、そこにRaspberry Piから持ってきたconfigをぶっこみます。


$ cd ./linux
$ scp  pi@(Raspberry PiのIPアドレス):/proc/config.gz ./
$ zcat config.gz > .config

クロスコンパイラーを使用するので、CCPREFIXを指定しておきます。


$ export CCPREFIX=/usr/bin/arm-linux-gnueabi-

設定ファイルを読み込んで編集します。色々聞かれるけど、全部デフォになるようReturn。。。と思ったらARM_PATCH_PHYS_VIRTがnになり面倒。。。vi で.configを開いてARM_PATCH_PHYS_VIRT=yにしてから設定ファイルの編集をします。


$ make ARCH=arm CROSS_COMPILE=${CCPREFIX} oldconfig

設定ファイルができたら、makeです。コンパイル速度を上げるためjオプションを付けます。jオプションはコア数×2にすると良いようです。Virtual Boxのコア数が2になってたので、j4を指定します。


$ make ARCH=arm CROSS_COMPILE=${CCPREFIX} -j4

エラー無しでカーネルできればOK。次はモジュール用のディレクトリを作って、モジュールもコンパイル。


$ mkdir mod
$ make ARCH=arm CROSS_COMPILE=${CCPREFIX} modules -j4
$ make ARCH=arm CROSS_COMPILE=${CCPREFIX} INSTALL_MOD_PATH=./mod modules_install -j4

余計なファイルは削除



$ sudo rm -rf ./mod/lib/modules/3.18.6+/build
$ sudo rm -rf ./mod/lib/modules/3.18.6+/source

出来上がったモジュールとカーネルをRaspberry Piにぶっこむ。


$ scp -rp ./tmp/lib ./arch/arm/boot/zImage pi@(Raspberry PiのIPアドレス):~/
$ ssh pi@(Raspberry PiのIPアドレス)
Raspberry Piで、以下を実行して、再起動。
pi@xxx $ sudo cp -rp ./lib /
pi@xxx $ sudo chown  root:root ./zImage 
pi@xxx $ sudo cp -rp ./zImage /boot/kernel.img
pi@xxx $ sudo reboot


これで無事、最新のカーネルになりました。

で、結果として無線は最高速でつながったのか?。。。。ダメでした。。。。
こうなりゃhostapdもコンパイルしてやる。。。あれ、エラーが出てコンパイルできない。
sysinfo.h の頭に以下をつけてコンパイルエラーを回避

#ifndef __kernel_long_t
typedef long __kernel_long_t;
typedef unsigned long __kernel_ulong_t;
#endif

よし、と思ってhostapdを起動するもエラー。。あ、.configでCONFIG_IEEE80211N=yにしてなかった。。。再コンパイルして無事起動を確認。よし、これで11nでつながる。。。つながらなかった。
どうやら、11nへの壁は厚いようです。


今回参考にさせていただいたHP:
 もぐてっく これでダメなら諦めた方が良い程度にRasberry Piのカーネルクロスコンパイル手順をまとめてみた。

2015年1月4日日曜日

RaspbmcをWiFi親機にしてAirPlayする

ケースに入れました。ちょっとクリーム色っぽい。

 前回、とりあえずRaspbmcをインストールし、AirPlayを試したもの動画が再生できず、音楽だけ流れるしょぼーんな結果に。今回は、AirPlayで動画再生にチャレンジします。ついでにRaspberry Piを親機化します。
とりあえず、想定した使い方は、実家とか親戚の家に遊びに行った時に、Raspberry PiをTVにつなげて、iPhoneの写真や動画をTVに映すことです。したがって、Raspberry Piは、WiFiの親機として動作し、そこにiPhoneで接続することを想定しています。
で、これをいろいろ試した時には、手元に有線の環境がなくテザリングでWiFi環境しかなかったので、Raspberry Piの有線の設定が適当です。本当は有線の設定をきちんとして、ブリッジの設定をしたいのですが、それは次回に持ち越しです。今回は単独でRaspberry PiでAirPlayをする環境を設定するまでです。

とりあえず、前回の続きRaspbmcの設定をする


  • RaspbmcのMenuでpasswardを設定する。
    • PROGRAMS->Raspbmc Settings->SystemConfiguration
      1. Enter Passwordに新しいパスワードを入力
      2. Confirm Passwordに上記と同じパスワードを入力
      3. Set Passwordを押下

SSHでRaspberry Piに接続して色々設定を変更する

  • 先の設定をした後にsshを使って接続する。
    • 無線で接続すると無線の設定を変更した途端に接続が切れてしまうので、有線で接続したほうが良い
    • 家のLANに有線で接続するときには、DHCPでIPがふられるので、そのIPに接続する。直接接続するときには、固定IPを振っておいたほうがよい。有線のネットワークの設定は、PROGRAMS->Raspbmc Settings にあります。
    • Macの場合には、ターミナルを立ち上げて
      ssh pi@192.168.x.x
      というように接続すればOKです。
      アカウント名はpi、パスワードはRaspbmcのMenuで設定したパスワードになります。
    • 以降の作業は、SSH上で行います。
  • 最初にログインしたときに言語とタイムゾーンの設定を求められます。
    • 言語は、ja_IP.UTF-8あたりとNoneを選択
    • タイムゾーンは、GMT+9を選択
  • とりあえず、2014/12/31現在の最新のRaspbmcでは、AirPlayはできるものの、動画がうまく再生できません。パッケージを新しくすると動画が再生できます。

    sudo apt-get update
    sudo apt-get upgrade
  • Raspberry Piを親機化するのに必要なパッケージをインストールします。

    sudo apt-get install hostapd dnsmasq
  • hostapd の設定をします。これを適切に設定しないと、せっかくWiFiアダプターが動作してもiPhoneがRaspberry Piをアクセスポイントとして認識してくれません。

    cd /usr/share/doc/hostapd/examples/
    sudo gunzip hostapd.conf.gz
    sudo cp hostapd.conf /etc/hostapd.conf
    sudo vi /etc/hostapd.conf
    • とりあえずのhostapd.confの内容は以下の様な感じです。
      アクセスポイントとしてきちんと設定するには、ブリッジの設定が必要ですが、今回は設定していません。とりあえず親機として動作してiPhoneが接続できるようにする設定です。
      ちなみにiPhone5だからかもしれませんが、wpa_pairwiseとrsn_pairwiseの値はTKIPじゃないとうまく接続できませんでした。 ssidとwpa_passphraseは、適当に設定して下さい。
      logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 dump_file=/tmp/hostapd.dump ctrl_interface=/var/run/hostapd ctrl_interface_group=0 ssid=MyXXXXXX country_code=JP hw_mode=g channel=1 beacon_int=100 dtim_period=2 max_num_sta=255 rts_threshold=2347 fragm_threshold=2346 macaddr_acl=0 auth_algs=3 ignore_broadcast_ssid=0 wmm_enabled=1 wmm_ac_bk_cwmin=4 wmm_ac_bk_cwmax=10 wmm_ac_bk_aifs=7 wmm_ac_bk_txop_limit=0 wmm_ac_bk_acm=0 wmm_ac_be_aifs=3 wmm_ac_be_cwmin=4 wmm_ac_be_cwmax=10 wmm_ac_be_txop_limit=0 wmm_ac_be_acm=0 wmm_ac_vi_aifs=2 wmm_ac_vi_cwmin=3 wmm_ac_vi_cwmax=4 wmm_ac_vi_txop_limit=94 wmm_ac_vi_acm=0 wmm_ac_vo_aifs=2 wmm_ac_vo_cwmin=2 wmm_ac_vo_cwmax=3 wmm_ac_vo_txop_limit=47 wmm_ac_vo_acm=0 eapol_key_index_workaround=0 eap_server=0 own_ip_addr=127.0.0.1 wpa=2 wpa_passphrase=XXXXXXXXXXXX wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=TKIP wpa_group_rekey=600 wps_state=0

  • Raspbmcのちょっとやらしいとこですが、NetworkManagerが導入されているので通常のLinux Serverの設定をしても、NetworkManagerが上書きしてしまいます(イラ
    そこで、NetworkManagerの管理対象から、wifiアダプターを外します。これをすることで、wifiアダプターの親機化をすることができますが以降RaspbmcのMenu画面からwifiアダプターの設定ができなくなるので注意
    • まず、管理対象から外すwifiアダプターのMACアドレスを確認します。

      ifconfig wlan0

      以下のように表示されるので、MACアドレスをメモっておきます。
      wlan0     Link encap:Ethernet  HWaddr 34:95:XX:XX:XX:XX
    • NetworkManagerの対象からwlan0を外すため、設定ファイルを編集します。
      設定ファイルに[keyfile]以下を追加します。MACアドレスにwlan0のMACアドレスを指定します。
      保存したとたんに無線の設定が変わります。無線でSSHしてるといきなり切れるので注意。

      sudo vi /etc/NetworkManager/NetworkManager.conf

      [main]
      plugins=ifupdown,keyfile

      no-auto-default=B8:27:EB:XX:XX:XX,

      [ifupdown]
      managed=false

      [keyfile]
      unmanaged-devices=mac:34:95:XX:XX:XX:XX
  • 親機として動くからには、継った子機にIPアドレスを払い出ししなければいけません。設定をしてDHCPが通るようにします。DHCP用にnetfilterを設定します。iptables -A INPUT -s 0.0.0.0 -i $IFACE -j ACCEPT を追加

    sudo vi /etc/network/if-up.d/secure-rmc

        :(途中省略:ファイルの最後の方)
    logger -t iptables "Configuring ip tables for interface $IFACE"
    if [ "$IFACE" != "lo" ]; then
        NETMASK=$(get_subnet $IFACE)
        if [ ${#NETMASK} -eq 0 ]; then
            logger -t secure-rmc "netmask not found"
            exit 1
        fi
        iptables -A INPUT -s $NETMASK -i $IFACE -j ACCEPT
        # for DHCP
        iptables -A INPUT -s 0.0.0.0 -i $IFACE -j ACCEPT

        iptables -A INPUT -i $IFACE -j DROP
    fi
    • wlan0を自動で立ち上げて、その際にhostapdを立ち上げるようにします。
      ipアドレスの設定は、適当に。

      sudo vi /etc/network/interfaces

      allow-hotplug wlan0
      iface wlan0 inet static
          address 192.168.2.1
          netmask 255.255.255.0
          broadcast 192.168.0.255
          network 192.168.2.0
          post-up /usr/sbin/hostapd -B /etc/hostapd.conf
          post-up iptables -t nat -A POSTROUTING -o eth0 -s 192.168.2.0/24 -j MASQUERADE
          pre-down kill `pidof hostapd`
          pre-down iptables -t nat -D POSTROUTING -o eth0 -s 192.168.2.0/24 -j MASQUERADE
  • DHCPの設定をします。ここは子機に割り振るIPアドレスの設定に合わせて適宜変更します。interfaceの行を有効にして、wlan0を指定します。147行目のdhcp-rangeのコメントを外し、割り振るIPアドレスを設定します。

    sudo vi /etc/dnsmasq.conf
       :(省略)
    interface=wlan0
       :(省略)
    dhcp-range=192.168.2.50,192.168.2.150,255.255.255.0,12h
  • AirPlayの際にIPv6が邪魔するので無効化(くわしくはこちら
    /etc/sysctl.d/ipv6.conf を作成する。

    sudo vi /etc/sysctl.d/ipv6.conf

    net.ipv6.conf.all.disable_ipv6 = 1
  • 想定する使用方法だと、キーボードやマウスを付けないので、正常にシャットダウンできないケースも考えられる。ヒジョーに親切なことにRaspbmcは正常にシャットダウンしないと警告ダイアログが出る(リセットさんのようだ)。ところがキーボードやマウスがないと、このダイアログを消す方法がないので、邪魔になる。Raspbmcの設定でも消せそうなメニューがあったが、面倒なのでプログラムを修正。該当箇所をコメントアウトする。

    sudo vi /opt/xbmc-bcm/xbmc-bin/share/xbmc/addons/script.raspbmc.settings/autostart.py

        
        import xbmcgui
        dialog = xbmcgui.Dialog()
    #    if DISTRO == "Raspbmc" and os.path.isfile("/home/pi/.bootstatus") and c>
    #         dialog.ok("Raspbmc did not shut down properly", "Raspbmc should>
    #         dialog.ok("Raspbmc did not shut down properly", "If your device>

        if DISTRO == "Raspbmc":
             os.system('sudo /sbin/initctl emit --no-wait start-wd')
  • GPUの設定を変更する。RAMサイズが512MBなのでGPUに256MBくらい割り当てる。動画再生のためには、GPUのメモリーが必要。gpu_memの値は、gpu_mem_512の値で上書きされるようですが、念のため両方変更。

    sudo vi /boot/config.txt

    arm_freq=850
    core_freq=375
    force_turbo=1
    gpu_mem=256
    gpu_mem_512=256
    gpu_mem_256=112
    disable_overscan=1
    start_file=start_x.elf
    fixup_file=fixup_x.dat
    hdmi_ignore_cec_init=1

  • ここまで設定したら、sudo shutdown -r now で再起動して、動作を確認しましょう。wifiでRaspberry Piに接続して、AirPlayで出力先に指定すれば、ばっちり動画と音楽が再生できます。

ちょっと注意

 iPhoneにxbmcRemoteというアプリをインストールすると、iPhoneからRaspbmcを操作できます。キーボードやマウスがなくてもRaspbmcを操作できるのでお勧めです。ただし、これを使ってRaspbmcにつなげるとAirPlayで接続した時にスピーカーとして認識されてしまい、動画が再生できない?ようです。まあ、AirPlayの時にxbmcRemoteを落とせばいいだけですが。うーん、xbmcRemoteは関係なかったよう。無線の速度が遅いのが原因か。。。無線が最高速出ていないので、このへんも見直さないと。

参考HP


2014年12月14日日曜日

とりあえずRaspbmcをインストールしてみよう

Amazonさんからの荷物も届き、あとはケースが届けばOKです。
とりあえず、ケースはなくとも動作に必要なものはこれで揃ったので、早速試してみることにしましょう。
王道では、NOOBSとよばれるディストリビューションを公式サイトからダウンロードしてSDカードに焼けばOKです。が、そこはそれ、とりあえずやってみたいことを優先し、ここはひとつ「Raspbmc」から始めましょう。NOOBS使ってもRaspbmcはインストールできるのですが、ここは直接最新版をインストールしてみたいと思います。

RaspbmcはDebianベースのディストリビューションで、XBMCとよばれるマルチメディアプレイヤーが最初から含まれているのが特徴です。XBMCがiPhoneからのAir Playに対応しているので、これを試してみるのが主な目的です。
我が家のPCはMac OS X(10.9.5)なので、ターミナルを使えばさくさくインストールできるはず。


  1. ターミナルを立ち上げる。
  2. とりあえず作業用ディレクトリを作成
    $ mkdir raspbmc
  3. 作業用ディレクトリに移動
    $ cd raspbmc
  4. インストール用のファイルをリポジトリから入手
    $ curl -O http://svn.stmlabs.com/svn/raspbmc/release/installers/python/install.py
  5. ファイルに実行権を付与
    $ chmod +x install.py
  6. ファイルを実行。管理者のパスワードを聞かれるので入力する。
    $ sudo python install.py
  7. 「Please ensure you've inserted your SD card, and press Enter to continue.」と表示されるので、インストールするSDを差し込んで、デスクトップにアイコンが表示されたらEnterキーを押す。
  8. HDDのリストが表示される。通常 disk1はPCのHDDで、disk2がSDのはず。sizeをよく確認し、インストールしたいSDの名前(IDENTIFIER)を入力する。渡しの場合には、「disk2」と入力しました。
  9. ライセンスの同意を求められるので「y」と入力
  10. 最新ソフトがダウンロードされ、SDに焼かれる。
  11. 「Would you like to setup your post-installation settings [ADVANCED]? [y/N] 」と聞かれる。NでOKの場合には14へ。yの場合には以下の12、13に進む。
  12. 「Would you like to install Raspbmc to a USB stick or an NFS share?」と聞かれる。今のところUSBやらNFSを使う予定はないのでNにする。
  13. 「Would you like to configure networking manually? 」と聞かれた。ネットワークの設定を自分でやりたい場合は、以下の様な感じで質問に答える。とりあえずは、有線で接続してDHCPでやるのが一番確実なので、Nでよい。yで答えた場合以下の様な設定項目が出る。
    • 「Please choose the network type you would like to configure:」
      ここで有線か無線のどちらかを設定できる。
      ※この段階ではどちらか一方しか設定できない。無事にインストールが完了すれば、メニュー画面から変更できる。
    • 1なら有線
      • IP Address
      • Subnet Mask
      • DNS Server
      • Default Gateway
    • 2なら無線
      • Use DHCP ?
      • Enable ad-hoc networking?
      • Enable 5Ghz only? 
      • Please enter SSID 
      • Please enter encryption type
      • Please enter encryption key
  14. 上記の設定が終わると無事にインストール完了
    そのままSDカードは抜いて構わない。
  15. ボードにLANケーブル、HDMI、キーボード、マウスを接続し、microSDを挿入して電源を接続する。
  16. レインボーな画面がしてしばらくするとOSの起動画面が表示される。
    初回でネットワークの接続を確認し、自動でアップデートが開始される。
    ダウンロードはかなり時間が掛かる。
    ダウンロード後も何回か再起動を繰り返して、アップデートする。
    ちなみに40分位かかりました。
    ※ダウンロード中にUSBのデバイス見つけたとかOSが色々なメッセージを表示して、ダウンロード画面が崩れて読めなくなる。何となく数字が更新されていれば、ダウンロードは淡々と続いているので、無視する。
  17. 起動音が鳴って、設定画面が出る。
    • 言語の選択:とりあえずEnglishを選択
    • メニューから、SYSTEM->Settings->Services->AirPlayで
      Allow XBMC to receive AirPlay content で ONにする。
    • PROGRAMS -> Raspbmc Settings
      • Network Configuration
        ネットワーク設定(Wifiの設定)
      • System Configuration
        パスワードの再設定
ここまでで、iphoneから音楽を再生し、Air Playを選択すると、HDMIで接続した画面から音楽が流れました。
でも、ミュージックビデオを再生するとエラーが出て再生できない。
RaspbmcのメニューからならYoutubeとか動画の再生もできているので、Air Playの問題のようだ。
しかも、無線はうまく接続できず、有線のみで接続している。
うーん、ちょっと調べてみないと。



2014年12月13日土曜日

Raspberry Piが届いた

 以前から興味があったRaspberry Piを衝動買いしました。
 とりあえず0から揃えるため、色々と購入。
 購入したのは以下の様な機材です。購入金額は2014/12/12時点のものです。


RS オンラインで購入
 専用ケース:Raspberry Pi B+ Case, White       ¥980
 RASPBERRY PI B+                  ¥3,940
 HDMIケーブル(1m)                 ¥942
                       小計  ¥5,862
                      配送料   ¥450
                      消費税   ¥505
                       合計  ¥6,817

Amazon.co.jpで購入
 Transcend microSDHCカード 16GB Class10 2枚     ¥1,040
 PLANEX (2ポート合計2000mA)USB充電器
 PL-WUCHG03-W                        ¥588
 iBUFFALO USBキーボード ホワイト BSKBU11WH          ¥645
 iBUFFALO 光学式有線マウス USB Mサイズ BOMUMLGA   ¥384
 Logitec 無線LANアダプタ 11n LAN-W300NU2SWE     ¥1,180
 USB2.0 TO TTL 6ピン シリアル・コンバータ UART
 モジュール CP2102 STC 6ピンケーブル              ¥289
                          配送料     ¥150
                           合計  ¥4,276

ダイソーで購入
MicroUSB-USBケーブル                  ¥108

合計:¥11,201

何か色々買ったら1万円超えている。。。。。

  • microSDカードを2枚買ったのは、用途で異なるOSを使う予定なので。
  • 無線LAN用にWifiアダプタを購入。これは必須。
    もっと小さな機種もあったが、熱とかに弱いようで評判が良くない。
    動画とか再生したいので連続運用に耐えられない機種は避けたい。
    あと、動画の再生とかに使うなら速いほうが良いということで、この機種を選定
    2.4GHzで300Mbps。5GHzを選択しないあたりが貧乏症。電子レンジ使ってなきゃ大丈夫?
  • おうちのパソコンがMacなので、実は我が家には有線のキーボードやマウスがない。
    無くてもTelnetなら困らないのだが、やっぱりあったほうがいいのでキーボードとマウスを購入。
    これは安さで選ぶ。とはいえBuffalo。
  • HDMIのケーブルが適当なのが家にないので同時に購入
    後でダイソーで¥400で売っているのを見つけた。。。。
  • 無線アダプタをつけると消費電力が約900mAになるようなので余裕を持って2Aのアダプタを購入
  • ケースやキーボード、充電器など、何となくこだわって白で統一
  • シリアルケーブルだけは、中国から発送なので、1か月後に届くみたいです。
    安いから文句は言いません。
    Etherがあっても、ついついシリアルが欲しくなるのですよ。

さて、色々注文しましたが、まだボードとHDMIケーブルしか届いてません。注文して2日で届くと思わなかった。後はAmazon待ちです。楽しみです。