ソフト屋さんがblueninjaをさわってみた
IoTブームの流れで、CEREVOさんから出たblueninjaってーのが気になったので買ってみました。紆余曲折あってちょっと届くのが遅れたけどまぁよくあること。
ニュース記事はここらへんとか。
で、開発環境の資料が見たかったんだけど、現物しか入ってないんです。しくしく。
- Blueninja本体
- ブレイクアウトボード
- バッテリ(初回?限定オマケらしい)
- ネジ
- 保証書
保証書に「詳細な情報はオンラインドキュメントを参照」とのことで。
うん。わからん。
ソフト屋さんにはよくわからん用語がいっぱい。
実はこのドキュメントはもうちょっと後で必要な話で、開発環境については「スターターガイド」ってのを見ないといけなかったのでした。
ここに、開発環境のつくり方が丁寧に書いてあるので、それにしたがって実行します。
おおざっぱに段取りだけならべると、以下のような感じです。
- USBで接続する
- mbedドライバをインストール :USBシリアルで見えるようになる
- MinGW(msys)をインストール :コンパイルに必要
- Git for Windowsをインストール :ソースなどの入手に必要
- BitbucketからBlueNinja BSP (Board Support Package)を入手
- KeilからARM.CMSIS.3.20.4.packを入手
- 東芝からTZ1000のBSP(TOSHIBA.TZ10xx_DFP.1.31.1.pack)を入手
- インストール用BATを実行
が、しかし、、
東芝からのBSP入手がまだできていません。。
(8/25追記:入手できました)
スターターガイドには、ログインしたら自分でダウンロードできるような感じで書いてあるのですが、2015/08/21現在では東芝のサポート宛てにメールを投げて、ライセンス確認&サインが必要なんだそうです。
とりあえず、仕方がないのでメールを投げたところで、今日はここまで。。。
#きっと週末は返事が来ないだろうから、続きは来週かなぁ。。
→ つづきはこちら。
Raspberry PI 2 + Windows10 IoT Core でアプリ開発
前回、RasPI2に Windows 10 IoT Coreをインストールして、なんじゃこりゃぁってなって、VS2015でアプリが作れるらしいぞ、ってなって、今回に至ります。
繰り返しになりますが、Windows10 IoTだけでは何もできないので、アプリを作ってインストールする必要があるわけです。で、VS2015の出番と。
VS2015のインストールは、まぁ適当にすればOK.(をぃ
まずは、プロジェクトの作成
「Windowsユニバーサル」というのが、RasPI2で動くいわゆるマルチプラットフォーム用のプロジェクトです。とりあえず、C#で作成。
VS2015のインストール時にユニバーサルアプリの機能をインストールしていなかった場合は、ここで追加インストールするか選択肢が出てきて追加することができます。
フツーにプロジェクトを作成しますが、ここで気を付けないといけないのが2点。
- プラットフォームの設定をARMにしておく
- ターゲットをリモートにしておく。+認証は無しに設定。
前者は、思わず「ユニバーサルちゃうんかい!」と独りツッコミを入れたところです。
後者のリモートターゲットのIPアドレスはもちろんWindows10IoTCoreが動いているRasPI2のIPアドレスです。
また、設定しておくと後々都合がよさそうのが
- パッケージ名
です。デフォルトではGUIDのような長ったらしい16進文字列なのですが、後でビルドしたパッケージを削除したり起動したりするのに名前を付けておくとわかりやすいです。
さぁ、ビルド&実行だ。
ん?プログラム書いてませんね。。
何かつくろうとおもったんですが、ストアアプリ書いたことが無くて、XAMLが分からんくてあきらめました←
ということで、スケルトンのままです。動くことが確認できればよろしい。
普通にビルドして、リモートデバッグで実行すると。。。
おー。うごいた。って面白くも何ともないですね。デフォルトのアプリが隠れちゃってます。
で、ここでハタと気が付くわけです。「これって、どうやってプロセス管理やらインストールやらするんだ??」
管理はPowerShell!なんだろうけど、Webでもいろいろできる。
先の疑問をGoogle先生に問いかけてみると、どうも開発PCからPowerShellでリモート接続してコンソールコマンドでごちゃごちゃやるのが正当らしいです。
が、PowerShellってどうも苦手。。で、実は今までずっとスルーしていた「Windows IoT Core Watcher」をいじってたら、
ネットワーク上のRasPI2が勝手に検出されていて、しかも右クリックすると "Web Browser Here" っていうメニューが。
『ひょっとしてブラウザで管理できるんじゃね?』
ってことでクリックすると、ブラウザに飛んでRaspi2の8080ポートへ接続しました。
ユーザー名とパスワードを聞かれるので、PowerShellでログインするときの設定でユーザ名="Administrator",パスワード="p@ssw0rd"を入れてみたら、ビンゴでした。
上の画面は"AppX Manager"となっていて、いわゆるパッケージ管理画面と思われます。先ほどVS2015の設定で「パッケージ名を設定しといた方が便利」っていってたところの設定ファイルが実は”Package.appxmanifest"っていう名前で、こことつながってるわけですね。
”Installed apps"のところに"TestApp1_1.0.0.0_arm_xxxx"っていうパッケージ名が見えていますが、このTestApp1がVS2015で設定した名前です。その後ろはバージョン番号とプラットフォーム名、あとは開発環境か開発者IDか、そんな感じでしょう。
AppX以外にも、プロセス一覧やデバイス一覧、今はまだ使えないWiFi&Bluetoothの設定画面もここにあります。興味のある方は8080ポートにつないで覗いてみてください。
でも、バッテン出すだけじゃぁねぇ。。。
RasPIのテストアプリといえば「Lチカ」ですが、限りなくソフト屋さんの自分は敢えてグラフィック周りを。っつーてもやっぱりスケルトンのみですが。
VS2015のプロジェクト新規作成で、C#ではなくてC++からWindowsユニバーサルアプリを選ぶと、「DirectXのアプリ」が作れたりします。
こいつをひな形にしてビルド&実行すると、プロジェクト作成画面のサムネ画像のような四面体がグリグリ回ってFPSが表示されます。RasPI2で!
RasPIでDirectX11とかが動くのって不思議な感じですね。
まぁ、でもしかし、こんな単純なCubeですが15FPSくらいです。遅いです。
raspbianのOpenGLデモに比べれば、ハエが止まりそうです。
Web管理からデバイスドライバの一覧っぽいのも見えるんですが、ディスプレイドライバが "Microsft Basic Display Driver" ってなっていて、どうもアクセラレーションは特に効いてなさそうな雰囲気です。
が、無線関係も含めてまだ改善はされていきそうな気配なので、今後に期待したいところです。
Raspberry PI 2 に Windows 10 をインストールするのだ。(正式版)
まず初めに言っておきましょう。
Raspberry PI 2 にインストールできるのは、
Windows 10 IoT Core
であって、普通のWindows 10ではありません!!
インストールするまでよくわかってなかったので、とりあえず先に言っといたほうがいいかなと。
何が違うんや、というと、
Windows 10 IoT Coreは、それ単体ではなんにもできません!
ということで、全然違います。IEなんてありません。というかアプリは何も入っていません。動作環境というかプラットフォームがWindows(みたいなの)なだけです。
前置きが長くなりましたが、インストール手順を。
インストールするときには普通のWindowsが必要。10じゃなくても可。
実はInsiderPreviewのときとかは、RaspberryPI2の起動ディスクを作るためにWindows10が必要だったのですが、これはSDカードに書き込むコマンドがWindows10にしか入っていなかったためです。
Windows10の正式リリースと同時に、RaspberryPI用のツールも更新されて、SDカードへの書き込みツールが同梱されるようになりましたので、書き込み側はWindows8.1でも可能です。(7では試してません)
RaspberryPIの起動SDへイメージを書き込むには、
Windows IoT - Setup your Raspberry Pi 2
からWindows 10 IoT Core toolsをダウンロードしてインストールします。
ISOファイルがダウンロードできますが、中身はアプリのセットアップが1本だけですので、それを実行します。
このツールは、VisualStudio2015で作ったRasPI2用のアプリをデバッグするのにも必要になるものです。
インストールが済んだら、「Windows IoT Image Helper」というツールを起動します。
実行すると、SDカードのデバイスと、書き込むイメージファイルを選択するGUIが出てきます。
SDカードは8GB以上のものが必要です。
イメージファイルは、"flash.ffu"というファイルがツールをインストールしたときにProgram Files下にコピーされていますので、それを指定します。
あとは、「Flash」ボタンを押せばコマンドプロンプトが開いて書き込みが始まります。数分経つと終了です。特に何のメッセージも出ません!漢らしい。
RasPI2で実行
起動中。。
起動したらさぞもっさりしたWindows10のスタートメニューが出てくるんだろうと思ってwktkしてたら、
なんかボクの知ってるWindowsじゃない、感。
で、セットアップは言語選択のみで「Next」。
どうやらこれが立ち上がった状態らしい。。
まぁ結局のところは冒頭に書いた通りで、写真の「デバイス情報」のほかには
基本設定は言語選択のみ。Wi-Fiってのがちょっと気になったんですが手持ちのUSB Wi-Fiモジュールはどれも認識しませんでした。。。有線LANは使えるようで、「デバイス情報」からDHCPで割り当てられたIPアドレスが取得できていました。
チュートリアルは、これ自体がVisualStudio 2015 でビルドされたアプリケーションのようで、ソースも取得できるようです。
が、開発環境にWindows10とVisualStudio 2015 が必要なんですよね。。敷居が高いなぁと思うのはボクだけでしょうか。。
# 追記:開発用OSはWindows8.1でいけました。
また時間ができたらアプリの一つも書いてみたいところです。
Raspberry PI2でPCゲームをリモートプレイ その2
前回、Gamepadについて何も書かなかった、というか、H.264の映像配信が見られたところで満足して実際にゲームをしてなかったので、続きを。
やろうとしてるのはFF14なのでまぁキーボードとマウスでもできる、っちゃぁできるんだが、ゲームはやっぱりコントローラでやりたい、というのが個人的な心情である。
で、moonlightでUSBゲームパッドを使う方法について、まとめ。
使用したコントローラはLogicool Gamepad F310 というやつで、まぁヨドバシあたりで安価で購入できるやつだ。これをRaspberryPIにつなぐと、あっさり認識はする。
$ 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 046d:c21d Logitech, Inc. F310 Gamepad [XInput Mode]
Bus 001 Device 005: ID 099a:7202 Zippy Technology Corp.
4番目のやつですな。/dev/inputを見てみると、event0, event1, event2と3つ出来上がっている。。キーボードとマウスと、Gamepadなのだが、どれがどれに該当するのか確認する方法がよくわからん。。
で、どうせキャラクターデバイスだからcatしてGamepadいじればなんか出るんじゃないの?と思ったら、そのとおりでした。
$ cat /dev/input/event0
どうやらevent0がパッドでevent1がキーボード、event2がマウスらしい。
が、これって認識した順番のような気がするのであまりあてにならんなぁ。。ちゃんと一意に確認する方法だれかおしえてください(他力本願)
とりあえずGamepadがちゃんと入力できそうなのは分かったので、パッドのボタンマッピングを設定する必要がある。moonlightでactionにmapを指定すると、マッピングファイルを出力することができる。言われたボタンを押す(倒す)とデバイスのイベントコードをファイルに書き出す仕組みのようだ。
$ moonlight map f310.map
Move Left Stick Right
Move Left Stick Up
Press Left Stick Button
Move Right Stick Right
Move Right Stick Up
Press Right Stick Button
Press D-Pad Right
Press D-Pad Down
Press Button X (1)
Press Button A (2)
Press Button B (3)
Press Button Y (4)
Press Back Button
Press Start Button
Press Special Button
Press Left Trigger
Press Right Trigger
Press Left Bumper
Press Right Bumper
Playstation系のパッドに慣れているので「Left Triggerってなんや?」ってなったけど、パッドを見たら「LT」ってかいてたのですぐわかった。
コマンドの最後に指定したf310.mapが、出力されたmapファイル。これをstreamで指定すればOKだ。
カレントディレクトリに、前回と同様認証用の鍵ファイルなどを置いておくことを忘れずに。。
$ ls
client.p12 client.pem f310.map key.pem uniqueid.dat
$ moonlight stream -1080 -30fps -app "Final Fantasy XIV: A Realm Reborn" -mapping f310.map 192.168.0.5
こんな感じ~。左のモニターがPCで右がRaspberryPIだす。
モニターを並べるとさすがにちょっと遅延があるのがわかるが、実際に操作してる限りではPS4/VITAのリモートプレイより快適な気がする。
ではでは~
Raspberry Pi2 Model B ボード&ケースセット (Standard, Clear)
- 出版社/メーカー: TechShare
- メディア: エレクトロニクス
- この商品を含むブログ (3件) を見る
Raspberry PI2 でPCゲームをリモートプレイするのだ
ここに記事を書くのは久しぶりだ。。
忙しくて書いてる暇がなかったからなんだけど、時間ができて速攻GTX960を買ってFF14がPS4からPC版に移行したのは我ながらアホだと思う。
ついでに言うとサーバもAlexからShinryuに移動しますた。
というわけで、最近のGeForceでしかできないGameStreamという機能を使ってみようというのが今回の試みである。
GameStreamってのは、要するにPS4 → PSVitaで言うところのリモートプレイのことですな。
GeForceドライバと一緒にインストールできる、GeForce Experience(GFE)っていうのを使って、PCのゲームを実行してレンダリングした画面をGeForce内蔵のH.264エンコーダでよその端末にストリーミング配信する、っていう機能である。もちろん、リモート端末からゲームコントローラやマウス・キーボードで操作できる。
もともとはnVidia謹製のSHIELDってゲーム端末向けの機能のはずなんだが、通信プロトコル自体はとても単純でリモート端末用にmoonlightっていうアプリが公開されている。AndroidやiOSでも動くようだが、ここはあえてRaspberryPIで動かそうと!いうわけだ。いや、動かしてる人がいるのでオレもオレも!というわけだ。
かなり前からあったものなので知ってる人には何をいまさらってな感じだろうが、そんなことはどうでもよろしい。
moonlightをraspberrypiで動かしてる動画はこちら→
この当時はmoonlightじゃなくてlimelightって呼んでたらしい。
PC側の準備
GameStream + Moonlightを使用するには、まずPC側に
が必要だ。
GFEを起動して「ゲーム一覧を更新」すると、PCにインストールされている&GFEが対応しているゲームを探し出してくる。GameStreamを使うには、単にインストールされているゲームをそのまま実行するのではなくて、GFEから起動する必要がある。
想像だが、GFEがゲームプロセスに介入してDirect3Dのレンダリング・パイプラインをフックしているのではないかと思われる。そんなことをすると普通はゲーム側のプロテクトに引っかかるので、ゲーム側にもGFEに対応させる何かの処理が入っているのかもしれない。
さて、めでたく目的のゲームが見つかった場合は、「ゲーム」タブに表示されて、PC側の準備は完了だ。
RaspberryPIの準備
moonlightはgithubからソースを入手して自分でコンパイルする。
のだが、どうも本家サイトのソースはStableなWheezyベースのRaspbianではなくてJessyベースの何かを使っているらしく、バージョン違いやら何やらでコンパイルができない。
んで、ここらへんを参考に、必要なパッケージたちをインストール。
$ sudo apt-get install cmake libopus-dev libexpat1-dev libjs-jquery libssl-dev libasound2-dev libudev-dev libavahi-client-dev libcurl4-openssl-dev
$ wget http://archive.raspbian.org/raspbian/pool/main/libe/libevdev/libevdev-dev_1.4.2%2bdfsg-1_armhf.deb
$ wget http://archive.raspbian.org/raspbian/pool/main/libe/libevdev/libevdev-tools_1.4.2%2bdfsg-1_armhf.deb
$ wget http://archive.raspbian.org/raspbian/pool/main/libe/libevdev/libevdev2_1.4.2%2bdfsg-1_armhf.deb
$ sudo dpkg -i libevdev*
次に、 ソースを取得。本家のirtimmerじゃなくて7hunderbugからmoonlight-raspbianブランチを持ってくる。。
$ git clone --depth=1 https://github.com/7hunderbug/moonlight-embedded/ -b moonlight-raspbian
$ cd moonlight-embedded
$ git submodule update --init
あとは、ビルドだ!
$ mkdir build
$ cd build
$ cmake ../
$ make
$ sudo make install
これでめでたく、/usr/local/bin/moonlightが生成される。
さぁ、使ってみるのだ!
GFEを使用しているPCのアドレスを192.168.0.5として、まずはペアリングを行う。
$ moonlight pair 192.168.0.5
Generating certificate...done
Please enter the following PIN on the target PC: 1234
みたいなのが出る。最初に証明書だか鍵だかを作成している様子で、カレントディレクトリにclient.p12とclient.pemというファイルが出来上がっている。以降、moonlightコマンドを実行する際にはこのファイルをカレントにおいて実行する必要があるようだ。
んで、ターゲットPCでPINコードを入れろと言われてるのでPCを見てみると、
おー。なんか出てるー。
ここにPINコードを入れればコンソールに"Paired"と出て、認証はOKだ。
あとは、ゲーム実行コマンド…
$ moonlight stream -app "Final Fantasy XIV: A Realm Reborn" 192.168.0.5
おおおおおお。でたー
ってスマホ会社に忘れてきたから写真とれねーーーww
デフォルトでは720pで、速度的には何の問題もないのだが、解像度を720にしてしまうとFF14のUI配置が崩れてしまうので1080に変更。
1080ではさすがに60fpsでは間に合わないらしく、2秒くらい遅延が発生して却下。30fpsだとなんとか使える感じ。
(※) READMEにはデフォルトが30fpsと書いてあるけど、明示的に30fpsを指定すると遅延が減った。そして720のときより明らかにフレームレートが落ちてる。ので、デフォルトは60fpsなんじゃないかなと。。まぁ、720でも1080でも30fpsなら使い物になります。
これ用にUSBのゲームコントローラもう一個買ってこようかな。。
ということで、GTX650以上&RasPI持ってる人はおためしあれ~
PSP出荷完了(生産終了とは違うのか?)
なんか、感慨深いな。
- 初代 → CFW入れて遊んだ。モンハンやってた頃が一番使ってたな。ボタンがつぶれたのを交換したり。
- 3000 → 「めっちゃ軽っ」って思ったのを覚えてる。いちばんやったのはGodEaterかなぁ。Divaかも。
- 3000 その2 → 奥さんに買った。稼働率低い。
- 3000 その3 → 娘に買った。テイルズ専用w
自分は既にVitaに移行してるけど、娘あたりが「おねだり大作戦」に便乗してくるかも。
いいけど。←
で、思ったんだが、UMD Passport対応少なすぎません??そして、Passport対応でも高すぎじゃない???既にソフトを持ってるんだから、タダとは言わないけどせめて千円以下にして欲しいなあ。。