2015年6月15日月曜日

Google cardboardをおためし

えー、いまさらですね。まったくもって、いまさら。

ことのはじまりは、先日GoogleIO 2015のkey note speechをみていて、最後の方に
「去年紹介したんだけど、Google cardboardがあたらしくなったよ」的なのを聞いて、なにー!ってなったのです。まぁつまり2014のもきいてなかったと。やむをえないですなぁ。まったく。

さっそくぐぐってみると、やっぱし100均でやったひとがいるんですね。日本だねぇ。
1000円でハコスコが買えることが判明するも、やっぱ自作のほうが楽しいかな?ということで、道を踏み外しました。。。
Daisoを2軒ほど回ってみたんだけど、、、ない。ないよー、そのレンズ。んー、困ったなぁということで、CanDoで別物を買ってみたんだけど、、、ハマった。はまりました。
そもそも、焦点距離45mmって何よ?ってことになるわけです。
それで、それがどこに効いてくるか?ってことなんだよね。
んで、まー、とりあえず組んでみたんだけど、GoogleからDLした図面通りに作ると、きちんと見えないですわ。
あとね、工作用紙だと薄すぎてレンズのところがうまくいかないね。レンズは3つ折りの真ん中にポコっとはまるようになっていると思われるので、そこを考えないとダメですね。
ということで、私の後悔リストですが、、、
  • Googleの図面どおりやるなら、焦点距離45mm(前後)のレンズが必須
  • 適当なレンズがない場合は、スマホの画面からレンズまでの距離が焦点距離になるように修正する。
  • 焦点距離の測り方は、室内でレンズを垂直に動かして蛍光灯がばっちりピンが合う高さ(今回は15cmでした)
  • レンズを支える部分はレンズぐらいの厚みのある紙があったほうがいい(つまり、ダンボールだね)
  • レンズの直径がでかい場合は、少なくとも真ん中の紙の穴をレンズと同じサイズにするとすわりがよい
  • それ以外はテキトーでok
  • めんどくさい人にはハコスコに1,000円出す価値があることをお知らせしておきます。
んで、こんなかんじでできました♪
あっ、そうそう、最終的に外箱も工作用紙使ってないんで、工作用紙は買わないほうがいいですよ~っと。

2015年1月8日木曜日

パフォーマンスの比較

気がついてみると、もう一年も経つんですね。
はやいもんですなぁ。
どうりでおっさんになるわけだ。やむをえない。
かなりほったらかしにしていましたが、ヒマをみてぼちぼちとやっていきます。

さて、パフォーマンス比較ですがやっとこさまとめました。
といっても、たいした結果が出たわけではないのですが…
先に言っておくとほとんど変わりがありませんでした。 

時間もあいて前回とは別にまた新たにビルドしたりしましたので、
ここで現状の実験に使った環境を整理しておきます。

比較は3種類で、yoctoのGCCを使ったarmv6, armv6hfとlinaroのarmv6hfです。
linaroはプリビルドのツールチェインではなく、yoctoでビルドされたツールチェインです。
linaroのパッチはあたってるものと信じています(w 

各レイヤのハッシュは下記の通りで、実験時点でのdaisyのHEADです。
実験時点でdizzyも出ているのですが、daisyを使ったのは、
raspberrypiでdizzyのブランチが見つからないためです。
meta
meta-yocto
meta-yocto-bsp = "daisy:9bb6f7f3f00c66abe45e97286323496694ef1609"
meta-raspberrypi = "daisy:946b69299737cc2f1378c864f1b9075280db1b53"
meta-oe
meta-networking = "daisy:d3d14d3fcca7fcde362cf0b31411dc4eea6d20aa"
meta-linaro
meta-linaro-toolchain = "daisy:bc63e777ad2748b8bfa7fa70ffd74700fa21a567"
これで、core-image-satoをビルドしました。
その時のカーネルサイズと展開後のrootfsのトータルサイズをdu -sbで調べたものが下記です。

imagearmv6armv6hflinaro-armv6hf
kernel6,371,5326,371,5326,346,956
rootfs163,050,467162,170,553161,962,637

サイズとしてはそれなりに違いますね。armv6とlinaro-armv6hfとではrootfsで1Mほどサイズが違いますね。

次に、パフォーマンスの比較に使ったのは、lmbenchです。
 今までnbenchでやってきましたが、結果の見方がいまいちよくわからないのと、
コードも古そうなので浮気しましたw
lmbenchもすべてやったわけではなく、下記の表の項目のみです。
networkやdisk ioなどは飛ばしています。


testarmv6armv6hflinaro-armv6hf
integer bit1.461.461.47
integer add1.531.531.53
integer mul7.357.347.35
integer div140.81140.66140.69
integer mod49.0749.1048.98
int64 bit2.942.942.93
uint64 add3.213.203.21
int64 mul14.7014.7314.71
int64 div543.82544.35544.77
int64 mod352.95353.23355.10
float add11.6311.6511.67
float mul11.6211.6411.63
float div27.6827.6527.70
double add11.6411.6611.67
double mul13.1013.1113.11
double div48.0648.1448.13
float bogomflops67.7767.8767.97
double bogomflops89.6389.6789.97
lat_pipe44.6943.6947.07
lat_ctx -s 128k processes 4224.94221.91247.12
lat_sem5.956.386.15
bw_mem 1M rd187.02187.16186,62
bw_mem 1M wr1484.261483.321483.03

結果はそれぞれ3回試行して平均をとってあります。

それなりに傾向が出ているところもあるんですが、
全体的にはほとんど差がないというところかと思います。
hfのほうが若干悪いようにみえるところもありますね。


2014年4月10日木曜日

linaro external toolchainでのビルド (リトライ)

えー、月日の経つのは早いもんですなぁ。
ちょっと忙しいとこれだもんね。ま、やむをえないですが。

久々に、pullしてみると、meta-linaroでeglibc-2.19が追加されていたので、
再度挑戦してみましたっっっ

つっても、やっぱり32bitのhfはチェックしてないみたいで、
前回修正したところがぼろぼろと同じエラーで出てきました。

珍しいことにパッチを残していたので、それを使って直しましたよ~
んで、今回は、linaroのフルビルドとext-linaroとgnu gccとで全部確認がとれましたので、
パッチをサブミットしてみました。
採用されるといいですね。
採用されないと、なんだかなぁなので、一応ここにも貼っておきます。

Subject: [meta-linaro][PATCH] external-linaro-toolchain: Fix for 32bit armhf build

Use ld-linux-armhf.so.3 if call convention hard.
Fix QA issue errors by packaging approprieately.
Add eglibc-locale_2.19.bbappend to fix QA issue error.
  An empty directory is created while do_install.

Signed-off-by: Kazuya Nishimura 
---
 .../conf/distro/include/tcmode-external-linaro.inc |    1 +
 .../eglibc/eglibc-locale_2.19.bbappend             |   23 ++++++++++++
 .../external-linaro-toolchain.bb                   |   38 ++++++++++++++++----
 3 files changed, 56 insertions(+), 6 deletions(-)
 create mode 100755 meta-linaro-toolchain/recipes-core/eglibc/eglibc-locale_2.19.bbappend

diff --git a/meta-linaro-toolchain/conf/distro/include/tcmode-external-linaro.inc b/meta-linaro-toolchain/conf/distro/include/tcmode-external-linaro.inc
index 1d9fd59..26d464c 100644
--- a/meta-linaro-toolchain/conf/distro/include/tcmode-external-linaro.inc
+++ b/meta-linaro-toolchain/conf/distro/include/tcmode-external-linaro.inc
@@ -41,6 +41,7 @@ DISTRO_FEATURES_LIBC = "ipv4 ipv6 libc-backtrace libc-big-macros libc-bsd libc-c
    libc-getlogin libc-idn libc-inet-anl libc-libm libc-libm-big \
    libc-memusage libc-nis libc-nsswitch libc-rcmd libc-rtld-debug libc-spawn libc-streams libc-sunrpc \
    libc-utmp libc-utmpx libc-wordexp libc-posix-clang-wchar libc-posix-regexp libc-posix-regexp-glibc \
+   libc-charsets libc-locales libc-locale-code \
    libc-posix-wchar-io"
 
 ENABLE_BINARY_LOCALE_GENERATION = "0"
diff --git a/meta-linaro-toolchain/recipes-core/eglibc/eglibc-locale_2.19.bbappend b/meta-linaro-toolchain/recipes-core/eglibc/eglibc-locale_2.19.bbappend
new file mode 100755
index 0000000..3e91e74
--- /dev/null
+++ b/meta-linaro-toolchain/recipes-core/eglibc/eglibc-locale_2.19.bbappend
@@ -0,0 +1,23 @@
+do_install () {
+ mkdir -p ${D}${datadir}
+ if [ -n "$(ls ${LOCALETREESRC}/${bindir})" ]; then
+  mkdir -p ${D}${bindir}
+  cp -fpPR ${LOCALETREESRC}/${bindir}/* ${D}${bindir}
+ fi
+ if [ -n "$(ls ${LOCALETREESRC}/${localedir})" ]; then
+  mkdir -p ${D}${localedir}
+  cp -fpPR ${LOCALETREESRC}/${localedir}/* ${D}${localedir}
+ fi
+ if [ -e ${LOCALETREESRC}/${libdir}/gconv ]; then
+  mkdir -p ${D}${libdir}
+  cp -fpPR ${LOCALETREESRC}/${libdir}/gconv ${D}${libdir}
+ fi
+ if [ -e ${LOCALETREESRC}/${datadir}/i18n ]; then
+  cp -fpPR ${LOCALETREESRC}/${datadir}/i18n ${D}${datadir}
+ fi
+ if [ -e ${LOCALETREESRC}/${datadir}/locale ]; then
+  cp -fpPR ${LOCALETREESRC}/${datadir}/locale ${D}${datadir}
+ fi
+ chown root.root -R ${D}
+ cp -fpPR ${LOCALETREESRC}/SUPPORTED ${WORKDIR}
+}
diff --git a/meta-linaro-toolchain/recipes-devtools/external-linaro-toolchain/external-linaro-toolchain.bb b/meta-linaro-toolchain/recipes-devtools/external-linaro-toolchain/external-linaro-toolchain.bb
index 240d550..47fd4ca 100644
--- a/meta-linaro-toolchain/recipes-devtools/external-linaro-toolchain/external-linaro-toolchain.bb
+++ b/meta-linaro-toolchain/recipes-devtools/external-linaro-toolchain/external-linaro-toolchain.bb
@@ -41,6 +41,12 @@ PROVIDES += "\
  libitm \
  libitm-dev \
  libitm-staticdev \
+ libasan \
+ libasan-dev \
+ libasan-staticdev \
+ libatomic \
+ libatomic-dev \
+ libatomic-staticdev \
  virtual/linux-libc-headers \
 "
 
@@ -50,12 +56,11 @@ PR = "r2"
 # https://launchpad.net/linaro-toolchain-binaries
 SRC_URI = "file://SUPPORTED"
 
+LDLINUX32 = "${@base_contains("TUNE_FEATURES", "callconvention-hard", "ld-linux-armhf.so.3", "ld-linux.so.3",d)}"
+
 do_install() {
  install -d ${D}${base_libdir}
- install -d ${D}${bindir}
- install -d ${D}${sbindir}
  install -d ${D}${libdir}
- install -d ${D}${libexecdir}
  install -d ${D}${datadir}
  install -d ${D}${includedir}
 
@@ -79,7 +84,7 @@ do_install() {
  fi
 
  # fix up the copied symlinks (they are still pointing to the multiarch directory)
- linker_name="${@base_contains("TUNE_FEATURES", "aarch64", "ld-linux-aarch64.so.1", "ld-linux.so.3",d)}"
+ linker_name="${@base_contains("TUNE_FEATURES", "aarch64", "ld-linux-aarch64.so.1", "${LDLINUX32}",d)}"
  ln -sf ld-${ELT_VER_LIBC}.so ${D}${base_libdir}/${linker_name}
  ln -sf ../../lib/libnsl.so.1 ${D}${libdir}/libnsl.so
  ln -sf ../../lib/librt.so.1 ${D}${libdir}/librt.so
@@ -144,6 +149,12 @@ PACKAGES =+ "\
  libitm \
  libitm-dev \
  libitm-staticdev \
+ libasan \
+ libasan-dev \
+ libasan-staticdev \
+ libatomic \
+ libatomic-dev \
+ libatomic-staticdev \
 "
 
 INSANE_SKIP_${PN}-dbg = "staticdev"
@@ -282,14 +293,16 @@ FILES_libssp-staticdev = " \
 
 FILES_libgfortran = "${base_libdir}/libgfortran.so.*"
 FILES_libgfortran-dev = " \
-  ${base_libdir}/libgfortran.so"
+  ${base_libdir}/libgfortran.so \
+  ${base_libdir}/libgfortran.spec"
 FILES_libgfortran-staticdev = " \
   ${base_libdir}/libgfortran.a \
   ${base_libdir}/libgfortranbegin.a"
 
 FILES_libmudflap = "${base_libdir}/libmudflap*.so.*"
 FILES_libmudflap-dev = "\
-  ${base_libdir}/libmudflap*.so \
+  ${base_libdir}/libmudflap*.so"
+FILES_libmudflap-staticdev = "\
   ${base_libdir}/libmudflap*.a \
   ${base_libdir}/libmudflap*.la"
 
@@ -313,6 +326,19 @@ FILES_libgomp-dev = "\
 FILES_libgomp-staticdev = "\
   ${base_libdir}/libgomp*.a \
   "
+
+FILES_libasan = "\
+  ${base_libdir}/libasan.so.* \
+  "
+FILES_libasan-dev = "\
+  ${base_libdir}/libasan.so \
+  "
+FILES_libatomic ="\
+  ${base_libdir}/libatomic.so.* \
+  "
+FILES_libatomic-dev = "\
+  ${base_libdir}/libatomic.so \
+  "
 ELT_VER_MAIN ??= ""
 
 python () {
-- 
1.7.9.5


それで、そのほかのconfigurationですが、
local.confにこんなかんじで追加します。
EXTERNAL_TOOLCHAIN = "/home/knishimu/workplace/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux"
TCMODE = "external-linaro"

TUNE_CCARGS += "-marm"

EXTERNAL_TOOLCHAINはlinaroのtoolchainをインストールしたパスです。
TUNE_CCARGSはこれをつけないと、thumbでビルドしようとしてエラーになったりするので必要でした。

ではでは~

2014年3月14日金曜日

linaro external toolchainでのビルド(中断)

えー、前回のlinaroのtoolchainからビルドするのに続いて、
ビルド済みのバイナリを使ってyoctoをビルドする方法を
トライしていたんですが、結果的に中断することにしました。
(こっちのほうが簡単にできるとおもってたんだけどねっっ)

一応、ごちゃごちゃやるとできたんですが、
最終的にきれいにならないため、
Linaro側で対応されるまで待とうという感じになりました。

もう少し直接的な理由を書くと、external-linaro-toolchainとセットで、
eglibcのbbappendが提供されているんですが、それが今は2.18のものしかありません。
yoctoのマスターブランチは2.19に移っているんですが、
Linaroはまだ2.19をビルドしたバイナリをリリースしていないようです。
2.18を2.19と偽ってビルドするとうまくいくんですが、
(external-linaro-toolchain.bbも結構変更必要ですが。。。)
そうすると、今度は前回成功したtoolchainからビルドするほうが
うまくいかなくなったりします。

それと、下記のメールスレッドを見つけたので、
一応、Linaro側で対応するのを待とうかなという気になりました。

https://www.mail-archive.com/linaro-toolchain@lists.linaro.org/msg03980.html

ま、やむをえないですな。
とりあえず、前回のやつでできたバイナリを評価しようかと思います。
どうかなぁ?

2014年3月2日日曜日

Linaroのtoolchainを使う(ソースビルド)

先日のヤクト勉強会にて、Linaroのツールの話がありまして、
LinaroのGCCを使うと、早いしコードも小さいしいいことだらけですよ
ということでしたので、それならばさっそく使ってみましょう
というエントリです。

yoctoにはlinaroのレイヤも存在していまして、
Linaroのwikiにもビルドの仕方が紹介されていますので、
基本的にはそれをなぞるだけです。

まずは、meta-linaroをクローンしてきます。
meta-openembeddedも必要です。
$ git clone git://git.linaro.org/openembedded/meta-linaro.git
$ git clone git://git.openembedded.org/meta-openembedded

ビルドディレクトリを作成したら、bblayersに下記のレイヤを追加します。
$ source poky/oe-initi-build-env build_dir
$ vi conf/bblayers.conf
BBLAYERS ?= " \
...
  /home/knishimu/workplace/raspi/poky/meta-openembedded/meta-networking \
  /home/knishimu/workplace/raspi/poky/meta-linaro/meta-linaro \
  /home/knishimu/workplace/raspi/poky/meta-linaro/meta-linaro-toolchain \
  "
...

meta-networkingがないと、networking-layerがないとかいうわかりにくいエラーが出ます。
meta-networkingがないって出してくれればいいのにと思うんですが、
まぁ、やむをえないですねぇ。

次に、local.confでlinaroのツールを指定します。
現在のmasterブランチでは、linaro-4.8しかレシピがありません。
昔のブランチでは、4.7などほかのバージョンのレシピも存在しています
DEFAULTTUNEは好みですが、armv6hf, arm1176jzfshfともにビルドできました。
$ vi conf/local.conf
...
GCCVERSION = "linaro-4.8"
SDKGCCVERSION = "linaro-4.8"
PREFERRED_PROVIDER_eglibc = "eglibc"

#DEFAULTTUNE_raspberrypi = "arm1176jzfshf"
DEFAULTTUNE_raspberrypi = "armv6hf"
...

とりあえず、これでビルドはできました。
これとは別に、ビルド済みのツールチェインを使ってビルドする方法も
ありますが、こちらはまた別の機会で。

https://wiki.linaro.org/KenWerner/Sandbox/OpenEmbedded-Core

2014年2月24日月曜日

Yoctoはヤクト

先日(2014.2.22)Yocto Japanの勉強会に行ってきました。
こういうのってあまり参加しないんですが、(特に有志でやってるやつは)
参加無料なのに、なかなかの充実ぶりでした。
休みをつぶして行った甲斐がありました。

せっかく参加したので、raspberrypi+yoctoというタイトルで話をしてきました。
内容がどうだったかわかりませんが、
少なくとも、Legoのケースは好評だったようで、よかったです。

あと、Yoctoは外国人の発音は「ヤクト」だということらしいので
今後は「ヤクト」の発音を広めることに決定しました~~~。

IT系の単語は読み方がよくわかんないものが多いですよね。

2014年2月17日月曜日

WiFiドングルの設定

やっぱりWiFiははずせないでしょうということで、
WiFiドングルの設定をしました。
raspbianとかでは、ほとんどそのまま使えるようですね。
yoctoでは一手間かかりました。

使ったものは、BUFFALO WLI-UC-GNMです。
アクセスポイントにはiPhone5を使ってます。
いろいろと実績がありそうなところで決定しました

ドライバが対応していれば、設定なしで使えるはずなんで、
とりあえず、さしてみました。とりゃ。
[  254.840065] usb 1-1.2: new high-speed USB device number 4 using dwc_otg
[  254.976531] usb 1-1.2: New USB device found, idVendor=0411, idProduct=01a2
[  254.983961] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  254.991775] usb 1-1.2: Product: 802.11 n WLAN
[  254.996185] usb 1-1.2: Manufacturer: Ralink
[  255.000948] usb 1-1.2: SerialNumber: 1.0
[  255.068465] cfg80211: Calling CRDA to update world regulatory domain
[  255.240003] usb 1-1.2: reset high-speed USB device number 4 using dwc_otg
[  255.369540] ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 3070, rev 0201 detected
[  255.407904] ieee80211 phy0: rt2x00_set_rf: Info - RF chipset 0005 detected
[  255.435535] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[  255.463714] usbcore: registered new interface driver rt2800usb
あっ、いけそうじゃないですか?みたいな。
ちょっと、起こしてみると。
root@raspberrypi:~# ifconfig wlan0 up
ifconfig: SIOCSIFFLAGS: No such file or directory

[   45.356373] ieee80211 phy0: rt2x00lib_request_firmware: Info - Loading firmware file 'rt2870.bin'
[   45.372666] ieee80211 phy0: rt2x00lib_request_firmware: Error - Failed to request Firmware
あー、ファームウェアがないですね。
つーか、そんなもんどこから?みたいな。

途中格闘しましたが、結果的にはyoctoにすでにありました。
個別に手動で入れるにはこんなかんじです。
まず、ビルドして、
$ bitbake linux-firmware
...
$ ls tmp/deploy/rpm/all/|grep linux-firmware-ralink
linux-firmware-ralink-0.0+git0+600caefd83-r0.all.rpm
ターゲットでインストールします。
root@raspberrypi:~# rpm -ivh ./linux-firmware-ralink-0.0\+git0\+600caefd83-r0.all.rpm
Preparing...                ########################################### [100%]
   1:linux-firmware-ralink  ########################################### [100%]
root@raspberrypi:~#

次に設定なんですが、、、ここでもひともんちゃくありまして。
いまだによくわからないんですが、、、
どうやらconnmanと/etc/network/interfacesの設定がぶつかっているようで、
どっちかにしないとうまくいかないです。やむをえない。

ということで、まず、古き良き設定から。
とりあえず、connmanを止めます。
root@raspberrypi:~# mv /etc/rc5.d/S05connman /etc/rc5.d/K05connman
そして、wpa_supplicant.confをバックアップを取ってから、
パスフレーズを設定します。
root@raspberrypi:~# mv /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.orig
root@raspberrypi:~# wpa_passphrase my_access_point passphrase > /etc/wpa_supplicant.conf
バックグラウンドモードで動かしますが、
うまくいかないときは-Bをとってエラーログをみると吉かもしれません。
root@raspberrypi:~# wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
Successfully initialized wpa_supplicant
そのあと、udhcpcを動かして、ip addressが取れれば成功です。
root@raspberrypi:~# udhcpc -i wlan0
udhcpc (v1.21.1) started
Sending discover...
Sending discover...
Sending discover...
Sending select for 172.20.10.5...
Lease of 172.20.10.5 obtained, lease time 85536
これを自動化するには、/etc/network/interfacesに書けばいいんですが、
デフォルトである程度書いてあります。
root@raspberrypi:~# vi /etc/network/interfaces
...
# Wireless interfaces
iface wlan0 inet dhcp
        wireless_mode managed
        wireless_essid any
        wpa-driver wext
        wpa-conf /etc/wpa_supplicant.conf
...
ので、あとは、auto wlan0ぐらいを足しましょう。

次は、connmanの場合です。
connmanの設定には、connmanctlというツールが必要になりました。
core-image-satoでは、すでにビルドされていると思いますが、
インストールされていませんので、、
root@raspberrypi:~# rpm -ivh connman-client-1.20-r0.armv6_vfp.rpm
Preparing...                ########################################### [100%]
   1:connman-client         ########################################### [100%]
root@raspberrypi:~#
あとは、connmanctlを使って設定していきます。
root@raspberrypi:~# connmanctl
connmanctl> enable wifi
Enabled wifi
connmanctl> scan wifi
Scan completed for wifi
connmanctl> services
*AO Wired                ethernet_b827ebe52c77_cable
    my_access_point      wifi_b0c745ab05e6_4e6973692d6970686f6e65_managed_psk
    logitec2nd66         wifi_b0c745ab05e6_6c6f6769746563326e643636_managed_wep
    AP0034862080         wifi_b0c745ab05e6_415030303334383632303830_managed_psk
    AP1034862080         wifi_b0c745ab05e6_415031303334383632303830_managed_psk
    AP2034862080         wifi_b0c745ab05e6_415032303334383632303830_managed_psk
    AiMacExtreme         wifi_b0c745ab05e6_41694d616345787472656d65_managed_psk
    logitec66            wifi_b0c745ab05e6_6c6f67697465633636_managed_psk
connmanctl> agent on
Agent registered
connmanctl> connect wifi_b0c745ab05e6_4e6973692d6970686f6e65_managed_psk
  Passphrase = [ Type=psk, Requirement=mandatory ]
  Passphrase?  
ここらへんの設定は、/var/lib/connman/の下に作られるみたいですが、
手動で編集は厳しそうな感じでした。
そして、/etc/network/interfacesの
auto eth0
auto wlan0
あたりを無効にしておくと良いようです。 あ、あと、さっき/etc/rc5.d/K05connmanにした人は
S05connmanに戻しておいてくださいね。

とまぁ、こんなかんじなんですが、、、
イマイチなんか不安定なんですよね。
USBの電力不足(HUBとマウスとキーボードがささってます)なんですかねぇ?
やむを得ないんでしょうけど。

参考:
http://elinux.org/RPi_USB_Wi-Fi_Adapters
http://www.linux.com/learn/tutorials/374514-control-wireless-on-the-linux-desktop-with-these-tools
https://wiki.archlinux.org/index.php/Connman