SSブログ

SyntaxHighlighterを使ってみる [雑記]

nice!(0)  トラックバック(0) 
共通テーマ:日記・雑感

ArduinoでCMOSカメラを動かしてみる [Arduino]

前回から,ずいぶんと時間が経ってしまったが,ArduinoとCMOSカメラを接続して動かす続きをやってみる.

前回は,I2C(SCCB)で通信するところで終わっていたが,今回は画像の取得をやってみる.CMOSカメラで撮影した画像データをFIFOに保存し,その保存されたデータを読み出してみる.

というわけで,まずはArduinoとCMOSカメラを接続するわけだが,前回と同様の問題にぶち当たる.Aruduinoは5Vで動いていて,CMOSカメラのFIFOは3.3V,ov7670は2.8Vで動いてて,電圧が違う.直結していいかどうか確認が必要だ.

で,データシートを調べてみた.
今回のCMOSカメラで使われているFIFOは,AL422というデバイスで,AL422へのIO入力は5.5VまでOKのようだ(3.3V駆動時).なので,ArduinoからFIFOへ出力する場合の接続は直結でも問題ない.
また,Arduinoからov7670へ出力するような接続は,前回のI2C以外では使わないので気にしなくていい.
逆にCMOSカメラ,すなわちFIFO,もしくはov7670の出力をArduinoで受ける場合だと,2.8Vもしくは3.3V出力を5Vで受けるので,High/Loが正しく検出できない.実力的には問題が出ないかもしれないが仕様上はアウトだ.

というわけで,Arduino-->CMOSカメラは気にせず直結,CMOSカメラ-->Arduinoはレベル変換ICを間に挟むことにする.

今回使用するレベル変換ICは,秋月電子通商の「8ビット双方向ロジックレベル変換モジュール」だ.これを2個使用した.

では,回路図を示そう.前回同様,fritzingで書いてみた.
Untitled.jpg

で,実際接続してみたのがこちら
photo.jpg
配線数が多いのでさすがにごちゃごちゃしてる...

とりあえずこれで接続は完了.
あとはスケッチの作成だが,それはまた次回.

タグ:ov7670 al422
nice!(1)  トラックバック(0) 
共通テーマ:日記・雑感

ArduinoでCMOSカメラと通信してみる [Arduino]

前回,ArduinoとCMOSカメラを接続しようと思ったのだが,電圧があわなくて接続できず動作させるとことができなかった.

というわけで,レベル変換ICだが,今回は,秋月電子通商の「I2Cバス用双方向電圧レベル変換モジュール(PCA9306)」を購入してみた.

で,こいつの電源だが,Aruduino側は5VなのでArduino側からもらってくればいいんだけど,OV7670側のI2C(厳密にはSCCB)は2.8Vだ.2.8VなんてArduino側にはない.

どうしようか迷ったが,CMOSカメラモジュール内で2.8Vを作ってるので,そこから引き出すことにした.回路図と,CMOSカメラモジュールを見比べながら,2.8Vが引き出せそうなところを探した.
で,下の写真はレンズを外したCMOSカメラモジュールで,赤矢印のところから2.8Vが引き出せる.ここに線材を半田づけして引き出した.

2.8V.jpg

ここまでくれば,あとはCMOSカメラとArduinoを接続するだけだ.とりあえず通信できるかどうか確認するために,I2C(SCCB)に必要なところだけつないでみる.

回路図をfritzingで書いてみた.使いこなせてない&回路図書くことなんて滅多にないので,図が微妙かもしれないが.
Untitled.jpg

で,つないでみた.
接続.jpg


あとは,実際に通信してみるのだが,スケッチは,トランジスタ技術SPECIALの「カメラ・モジュールの動かし方と応用製作」にのってるのを使わせてもらった.詳細は本を参照してくださいな.

で,とりあえず,OV7670のレジスタマップを見ながらアドレス0AのProduct IDを読み出してみたら,ちゃんと76が返ってきた.ほかにもレジスタを読み出してみたが,どうやら通信はうまくできているようだ.

よし,次は,画像の取得だ.
ちなみに,画像データはFIFOモジュールと通信することになるのだが,こっちはFIFOの電源電圧が3.3Vだ.ここでもまたレベル変換ICが必要になる.
これについてはまた次回.

nice!(2)  トラックバック(0) 
共通テーマ:日記・雑感

ArduinoにCMOSカメラをつないでみる [Arduino]

Arduinoで何か作ってみようといろいろ調べてるときに,トランジスタ技術SPECIALの「カメラ・モジュールの動かし方と応用製作」ってのを見つけた.

トランジスタ技術 SPECIAL (スペシャル) 2013年 10月号 [雑誌]

トランジスタ技術 SPECIAL (スペシャル) 2013年 10月号 [雑誌]

  • 作者:
  • 出版社/メーカー: CQ出版
  • 発売日: 2013/09/28
  • メディア: 雑誌

この本の中には,ArduinoとCMOSカメラをつないで動かす記事も含まれてる.以前から,一度カメラを動かすのってやってみたかったので,さっそくこの本を購入.ちなみに,この本はトランジスタ技術2012年3月号特集記事「始めよう! チョコっとカメラ」の再編集版だ.

で,何しろCMOSカメラがないと話が始まらない.この本では,OmniVision Technologies社製のイメージセンサ「OV7670」を使ったカメラモジュールが紹介されてる.カメラモジュールは2種類あって,FIFOなしとFIFO付きのがあるが,今回はFIFO付きを使ってみることにした.
買ったのは,「OV7670+FIFOカメラモジュール(SCCBインタフェース)」.2980円也.ちなみに,「始めよう! チョコっとカメラ」の特集があったときは1980円で購入できたようだ.

というわけで,本を参考に,いざ接続!となるわけだが,よくよく見ると,単に直結というわけにはいかないようだ.
まずはCMOSカメラと通信したい.通信のインターフェースはSCCB(Serial Camera Control Bus)というやつでI2C互換なので,ArduinoのWireライブラリを使えばいい.なのでソフト的には全然問題ないのだが,ハード的には困ったことに電圧が合わない.
Arduinoのピンは5V系で動いていて,I2Cで使うピンも当然5Vで動いてる.だけどカメラモジュールの電源は3.3Vだし,I2C(厳密にはSCCB)の接続先であるOV7670は2.8Vで動いてる.念のため仕様書を確認してみたけど,さすがにアウトだ.

というわけで,すぐには試せない.とりあえずレベル変換ICを買うか...

つづく.

nice!(0)  トラックバック(0) 
共通テーマ:日記・雑感

Arduinoをはじめてみる [Arduino]

ふと思い立って,Arduinoをはじめてみる.
というわけで,定番らしき,

Arduinoをはじめよう 第2版 (Make:PROJECTS)

Arduinoをはじめよう 第2版 (Make:PROJECTS)

  • 作者: Massimo Banzi
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2012/03/16
  • メディア: 単行本(ソフトカバー)


Arduinoをはじめようキット

Arduinoをはじめようキット

  • 出版社/メーカー: スイッチサイエンス
  • メディア: エレクトロニクス

を買ってみた.

こういうのは本だけ買っても楽しくない.キットも買って,いろいろ試してみるのがおすすめ.
一通り試してみたけど,素直に楽しい.そして簡単.
スケッチ(Arduinoではプログラムをスケッチと呼ぶ)は最小限の記述ですむように環境がいろいろラップしてくれてるので,マイコンの初期化処理とかを書かなくてもいい.あと開発はArduino言語という言語だがC言語が分かれば,だいたい理解できる.

BeagleBoardやRaspberry Piよりも,マイコンにすごく近いところをいじる感じ.
キットにはArduino Uno R3というマイコンボードが付いてくるけど,こいつはBeagleBoardやRaspberry PiみたいにLinuxが走る訳でもないし,Ethernetも付いてないし,そもそもクロックは16MHzだし,スペックだけ見るとなんだか寂しく感じるかもしれないけど,このシンプルさがまたいい.

電子工作に興味がある人は絶対楽しいと思う.
お試しあれ.

nice!(0)  トラックバック(0) 
共通テーマ:日記・雑感

BeagleBoard-xMをVPNサーバにしてみる [beagleboard]

BeagleBoard-xMにはUbuntu 12.04をインストールして,USB WiFiを使えるようにした

今回はこれをVPNサーバにしてみる.
プロトコルはPPTPが簡単らしいのだが,docomoのSPモードだと使えないのでL2TP/IPsecを使うことにする.あと,IPsecは事前共有鍵認証を使うことにする.

ではまず必要なパッケージとして,openswanとxl2tpdをインストールしてやる.

最初にopenswanのインストールだが,androidのICSにはバグがあってIPsecがつながらない.ただ,回避策はあって,openswanのソースにパッチを当ててビルドしてやればいい.

では,ソースとパッチのダウンロード.
wget http://download.openswan.org/openswan/openswan-2.6.38.tar.gz
wget http://people.redhat.com/pwouters/osw/openswan-2.6.38-android-ics-natoa.patch

ダウンロードしたら展開.
tar -xzvf openswan-2.6.38.tar.gz

ビルドに必要なツールをインストール.
sudo apt-get install build-essential libgmp3-dev gawk flex bison

そしたらパッチをあててビルド,インストールしてやる.
cd openswan-2.6.38/
patch -p1 < ../openswan-2.6.38-android-ics-natoa.patch 
sudo make ARCH=arm programs
sudo make ARCH=arm install

ちなみに,Openswanの最新バージョンは,2.6.39のようだ.2.6.39ならパッチは必要ないかもしれないが確認していないので分からない.

では,次にxl2tpdをインストール.
こちらは単純に,
sudo apt-get install xl2tpd

でOK.

そしたら,設定開始.
まずはカーネルパラメータの設定.
sudo vi /etc/sysctl.conf

以下を追記
###################################################################
# add settings
###################################################################
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0 
net.ipv4.conf.all.accept_redirects = 0 
net.ipv4.conf.default.send_redirects = 0 
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0 
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.wlan0.send_redirects = 0
net.ipv4.conf.wlan0.accept_redirects = 0


そしたら設定値の反映.
sudo sysctl -p


次にopenswanの設定.
sudo vi /etc/ipsec.conf


元々ある記述のうち,config setupのprotostack=netkeyに変更するのと,conn ***以下を追記してやる.ファイル全体を示すと以下のようになる.
# /etc/ipsec.conf - Openswan IPsec configuration file

# This file:  /usr/share/doc/openswan/ipsec.conf-sample
#
# Manual:     ipsec.conf.5


version	2.0	# conforms to second version of ipsec.conf specification

# basic configuration
config setup
	# Do not set debug options to debug configuration issues!
	# plutodebug / klipsdebug = "all", "none" or a combation from below:
	# "raw crypt parsing emitting control klips pfkey natt x509 dpd private"
	# eg:
	# plutodebug="control parsing"
	# Again: only enable plutodebug or klipsdebug when asked by a developer
	#
	# enable to get logs per-peer
	# plutoopts="--perpeerlog"
	#
	# Enable core dumps (might require system changes, like ulimit -C)
	# This is required for abrtd to work properly
	# Note: incorrect SElinux policies might prevent pluto writing the core
	dumpdir=/var/run/pluto/
	#
	# NAT-TRAVERSAL support, see README.NAT-Traversal
	nat_traversal=yes
	# exclude networks used on server side by adding %v4:!a.b.c.0/24
	# It seems that T-Mobile in the US and Rogers/Fido in Canada are
	# using 25/8 as "private" address space on their 3G network.
	# This range has not been announced via BGP (at least upto 2010-12-21)
	virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v6:fd00::/8,%v6:fe80::/10
	# OE is now off by default. Uncomment and change to on, to enable.
	oe=off
	# which IPsec stack to use. auto will try netkey, then klips then mast
	# protostack=auto
	protostack=netkey
	# Use this to log to a file, or disable logging on embedded systems (like openwrt)
	#plutostderrlog=/dev/null

# Add connections here

# sample VPN connection
# for more examples, see /etc/ipsec.d/examples/
#conn sample
#		# Left security gateway, subnet behind it, nexthop toward right.
#		left=10.0.0.1
#		leftsubnet=172.16.0.0/24
#		leftnexthop=10.22.33.44
#		# Right security gateway, subnet behind it, nexthop toward left.
#		right=10.12.12.1
#		rightsubnet=192.168.0.0/24
#		rightnexthop=10.101.102.103
#		# To authorize this connection, but not actually start it, 
#		# at startup, uncomment this.
#		#auto=add

conn L2TP-PSK-NAT
	rightsubnet=0.0.0.0/0
	also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
	forceencaps=yes
	authby=secret
	pfs=no
	auto=add
	keyingtries=3
	ike=aes-sha1;modp3072       # ike phase1 の設定 (暗号化アルゴリズムは AES 、ハッシュアルゴリズムは SHA1 、Diffie-Hellman グループは 15 (3,072bit))
	phase2=esp                  # ike phase2 の設定 (セキュリティプロトコルは ESP)
	phase2alg=aes-sha1;modp3072 # ike phase2 の設定 (暗号化アルゴリズムは AES 、ハッシュアルゴリズムは SHA1 、Diffie-Hellman グループは 15 (3,072bit))
	rekey=no
	ikelifetime=8h
	keylife=1h
	type=transport
	left=10.0.1.100             # 自サーバの IPv4 アドレスを設定する。
	leftprotoport=17/1701
	right=%any
	rightprotoport=17/%any
	# 以下は iOS クライアント向けの設定。
	dpddelay=40
	dpdtimeout=130
	dpdaction=clear

ちなみに,「left=10.0.1.100 # 自サーバの IPv4 アドレスを設定する。」の部分はあくまで例なので,自分のサーバのIPアドレスを設定してやる.

IPsecの事前共有鍵(pre-shared key)の設定.
sudo vi /etc/ipsec.secrets

ファイルがない場合は作成してやる.で,以下を追記してやる.
10.0.1.100 %any: PSK "hogehoge"

ここで,先頭のIPアドレスは上記で設定した自分のサーバのIPアドレスだ.また,hogehogeが事前共有鍵になる.なのでファイルのアクセス権を変更しておく.
sudo chmod 600 /etc/ipsec.secrets


ここまでできたら,IPsecを再起動.
sudo /etc/init.d/ipsec restart


設定の確認をしてみる.
sudo ipsec verify

N/A, WARNINGとDISABLEDは気にしなくていいらしいが,FAILEDが出るとNGだ.だが,openswanをソースからビルドすると,「Two or more interfaces found, checking IP forwarding」の部分がFAILEDと出ることがあるようだが気にしなくていいらしい.
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path                                 [OK]
Linux Openswan U2.6.37/K3.2.0-51-omap (netkey)
Checking for IPsec support in kernel                            [OK]
 SAref kernel support                                           [N/A]
 NETKEY:  Testing XFRM related proc values                      [OK]
        [OK]
        [OK]
Checking that pluto is running                                  [OK]
 Pluto listening for IKE on udp 500                             [OK]
 Pluto listening for NAT-T on udp 4500                          [OK]
Two or more interfaces found, checking IP forwarding            [OK] <--- FAILEDと出るかも
Checking NAT and MASQUERADEing                                  [OK]
Checking for 'ip' command                                       [OK]
Checking /bin/sh is not /bin/dash                               [WARNING]
Checking for 'iptables' command                                 [OK]
Opportunistic Encryption Support                                [DISABLED]


次にxl2tpdの設定.
sudo vi /etc/xl2tpd/xl2tpd.conf

以下を追記してやる.
[global]

[lns default]
ip range = 10.0.1.201 - 10.0.1.210
local ip = 10.0.1.100
length bit = yes
refuse chap = yes
require authentication = yes
name = l2tp
pppoptfile = /etc/ppp/l2tpd-options

ここで,ip rangeはVPN接続してきたクライアントに割り当てるIPアドレスの範囲で,local ipは自分のサーバのIPアドレスだ.これもあくまで例なので,自分の環境にあわせて設定してやる.

pppの設定.
sudo vi /etc/ppp/l2tpd-options

ファイルが無いので新規作成し以下を記入する.コメントがあるとうまく動かないようなので削除すべし.
name l2tp           # /etc/xl2tpd/xl2tpd.conf で設定した name と合わせる
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
ms-dns 10.0.1.1     # DNS サーバの IPv4 アドレス    
proxyarp
nodefaultroute
lock
nobsdcomp 
mtu 1280
mru 1280


chap認証設定.
sudo vi /etc/ppp/chap-secrets

以下を追記
hogehoge	l2tp	"fugafuga"		*

ここで,hogehogeはUserName, fugafugaはパスワードになる.

ここで,いったんxl2tpdの再起動.
sudo /etc/init.d/xl2tpd restart


ファイヤーウォールでUDP/500とUDP/4500を通すように設定.
sudo ufw allow 500/udp
sudo ufw allow 4500/udp


ESP を通すための設定と,xl2tpd を IPsec 以外から使えないようにする設定と,LAN の NAT をさせる設定とを適切な場所に追加.
sudo vi /etc/ufw/before.rules

*filter に対応する COMMIT の手前に(COMMITの直前に)以下を記載.
# for ESP protocol of IPsec
-A INPUT -p 50 -j ACCEPT
# restricts l2tp to be used under ipsec
-A INPUT -p udp -m policy --dir in --pol ipsec -m udp --dport l2tp -j ACCEPT
-A INPUT -p udp -m udp --dport l2tp -j REJECT --reject-with icmp-port-unreachable 
-A OUTPUT -p udp -m policy --dir out --pol ipsec -m udp --sport l2tp -j ACCEPT
-A OUTPUT -p udp -m udp --sport l2tp -j REJECT --reject-with icmp-port-unreachable


次に*filter の COMMIT の後に以下を記載.
# nat Table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic from 192.168.222.0/24
-A POSTROUTING -s 10.0.1.0/24 -j MASQUERADE
# don't delete the 'COMMIT' line or these nat table rules won't be processed

COMMIT
# end of nat rules


フォワーディングはデフォルト許可に設定.
sudo vi /etc/default/ufw

以下の設定に変更.
DEFAULT_FORWARD_POLICY="ACCEPT"


ufwを有効化.
sudo ufw enable


IPsec自動起動設定.
sudo update-rc.d ipsec start 90 2 3 4 5 . stop 1 0 1 6 .


あとは,ルーターの設定として,UDP/500とUDP/4500を自分のサーバに転送するように設定してやればOK.


これで完了.
お疲れさまでした.


参考サイト
いっぱいあるけど,特に参考にしたのは以下のサイトです.
Debian GNU/Linux で L2TP / IPsec を使用する VPN サーバを設定する (サーバ側で NAPT しない場合) – Open the Next
○○的な気まぐれ日記 » Androidから自宅サーバー(ubuntu12.04)にアクセスする
VPNでandroidと自宅LANがつながった | 人生崖っぷち

先人に感謝します.

nice!(0)  トラックバック(0) 
共通テーマ:日記・雑感

ダイナミックDNSにieServerを使ってみる [雑記]

以前,ダイナミックDNSのサービスとして「Dynamic DO!.jp」を使った.その時は,無料でずっと使えたんだけど,7月ごろに規約が変わって,今はずっと無料ではなくなってしまった.無料で使い続ける方法もあるんだけど,その条件は,うちだと難しい...

というわけで,別のダイナミックDNSサービスを使ってみる.

いくつか比較して,今回は,ieServer.Netのサービスを使ってみる.もちろん無料だ.

使い方は,とても簡単.
新規ユーザー登録から,ユーザー名とか,希望するドメイン,あとメールアドレスとパスワードを登録する.ここで登録するユーザー名が,サブドメインとして使用されるようになる.

あとは,IPアドレスを自動更新するようにしてやれば,作業は完了.

自動更新のためのツール類は,ieServerで便利ツールとして紹介されている.うちはUbuntuなので,便利ツールのうち,「IPアドレス更新サンプルスクリプト」を利用させてもらうことにする.

では,具体的な作業だが,
まず,そのスクリプトをダウンロードする.
cd ~/
wget http://ieserver.net/ddns-update.txt


そしたら,/usr/local/下にddnsディレクトリを作って,そこにコピー.ファイル名はddns-update.plに変更しておく.
cd /usr/local
sudo mkdir ddns
sudo cp ~/ddns-update.txt /usr/local/ddns/ddns-update.pl


で,そのスクリプトに必要な情報を追記してやる.
sudo vi ddns-update.pl


具体的には,アカウント,ドメイン名,パスワードと,CURRENT_IP_FILE, LOG_FILEのパスを指定しておく.あと,$DDNS_UPDATEはhttpsアクセスにしておく.

念のためファイル全体を示しておこう.
#!/usr/bin/perl

# ieServer.Net 専用 DDNS IP アドレス更新スクリプト - ddns-update.pl
# 作成者:山本恭弘@Agora Inc. 作成日:2004/03/24
#
# 回線割り当てグローバルIPアドレスを確認し、変化があれば新IPアドレスを
# DDNSに登録。当コマンドを一定の間隔で実行し、IPアドレスの変化を監視&
# 更新処理する。利用には perl wget cron が利用可能である必要あり。
#
# 回線に割り当てられた IPアドレス は http://ieserver.net/ipcheck.shtml
# へのアクセスによって確認。
#
# cron にて当コマンドを等間隔で実行し、回線IPを確認。変化があればDDNSに
# IPアドレスを登録。DDNSサーバーへの負荷軽減の点から実行間隔は10分以上と
# すること。
# crontab設定例(/usr/local/ddns/ddns.plにスクリプトを置き10分間隔で実行)
# 5,15,25,35,45,55 * * * * /usr/local/ddns/ddns-update.pl

# 以下2ファイルの配置ディレクトリは好みに応じ設定
# 1. 設定IPアドレスワークファイル
$CURRENT_IP_FILE = "/usr/local/ddns/current_ip";

#  2. 設定状況ログファイル
$LOG_FILE        = "/usr/local/ddns/ip_update.log";

# 回線IP確認ページURL
$REMOTE_ADDR_CHK = "http://ieserver.net/ipcheck.shtml";
# DDNS更新ページURL
# wgetをSSL接続可能でビルドしているなら、https:// での接続を推奨
$DDNS_UPDATE     = "https://ieserver.net/cgi-bin/dip.cgi";

# ieServer.Netにて取得したアカウント(サブドメイン)情報を記入
$ACCOUNT         = "ユーザー登録したユーザー名";     # アカウント(サブドメイン)名設定
$DOMAIN          = "ユーザー登録で選択したドメイン名";     # ドメイン名設定
$PASSWORD        = "ユーザー登録で設定したパスワード";     # パスワード設定

if(!open(FILE,"$CURRENT_IP_FILE")) {
    $CURRENT_IP = '0.0.0.0';
    } else {
    $CURRENT_IP = <FILE>;
    close FILE;
}

$NEW_IP = '0.0.0.0';
$NEW_IP = `wget -q -O - $REMOTE_ADDR_CHK`;

if ($NEW_IP ne "0.0.0.0" and $CURRENT_IP ne $NEW_IP) {

    $STATUS = `wget -q -O - '$DDNS_UPDATE?username=$ACCOUNT&domain=$DOMAIN&password=$PASSWORD&updatehost=1'`;
    
    if ($STATUS =~ m/$NEW_IP/) {    
        open (FILE ,">$CURRENT_IP_FILE");
        print FILE $NEW_IP;
        close FILE;
        $TIME = localtime;
        open (FILE ,">>$LOG_FILE");
        print FILE "$TIME $ACCOUNT.$DOMAIN Updated $CURRENT_IP to $NEW_IP\n";
        close FILE;
    } else {
        $TIME = localtime;
        open (FILE ,">>$LOG_FILE");
        print FILE "$TIME $ACCOUNT.$DOMAIN Update aborted $CURRENT_IP to $NEW_IP\n";
        close FILE;
    }
}
exit;


そしたら,(パスワードが書かれてるので)アクセス権を変更して,
sudo chmod 700 ddns-update.pl


あとは,crontabで定期実行されるようにしておく.
sudo crontab -e
3-58/5 * * * * /usr/local/ddns/ddns-update.pl


これで完了.簡単だ.

なにより,無料で使えるieServer.Netに感謝.
タグ:DDNS ieServer
nice!(0)  トラックバック(0) 
共通テーマ:日記・雑感

BeagleBoard-xMのUbuntuにUSB WiFiのドライバをインストールしてみる [beagleboard]

ずいぶんと前に,BeagleBoard-xMにUbuntu 12.04をインストールして,USB WiFiをつないでみた.
そのときのUSB WiFiは,PLANEXのGW-USValue-EZだ.残念ながらすでに終息製品扱いらしいが... まぁRealtek社のRTL8192CUを使ってるアダプタなら同じだと思うので参考になると思う.

で,以前,使ってみたときはUbuntuに標準で入ってるドライバで動かしてみたんだけど,いくつか気になる点があった.たとえば...
・GW-USValue-EZが恐ろしく熱くなる.
・青のLEDが点灯しっぱなしになってる.
・通信スピードが遅い気がする.
といったところだ.

で,調べたところ,どうやらRealtekのドライバを入れるといいらしいということが分かったのでインストールしてみる.

まずはドライバのダウンロード.ダウンロードはここからできる.
今だと,「RTL8192xC_USB_linux_v3.4.4_4749.20121105.zip」がダウンロードできるようだ.

そしたら,展開して,展開したディレクトリ内にあるインストールスクリプトを実行すればいい.
$ unzip RTL8192xC_USB_linux_v3.4.4_4749.20121105.zip 
$ cd RTL8188C_8192C_USB_linux_v3.4.4_4749.20121105/
$ sudo sh ./install.sh


が,実際はエラーが出てインストールできない.
で,調べてみたら,ここに対処方法が載ってた.kkAyatakaさんに感謝.その手順通りに作業をしてみる.

まずはカーネルのバージョンを確認.
$ uname -a
Linux hogehoge 3.2.0-51-omap #77-Ubuntu Thu Jul 25 00:39:05 UTC 2013 armv7l armv7l armv7l GNU/Linux

どうやら3.2.0-51-omapらしい.

そしたら,対応バージョンのカーネルのヘッダをとってくる.
$ sudo apt-get install linux-headers-3.2.0-51-omap


次にMakefileを修正する.
$ sudo vi /lib/modules/3.2.0-51-omap/build/Makefile

200行目ぐらいにあるSRCARCHを設定しているところにarmを追加してやる
SRCARCH         := $(ARCH)
SRCARCH         := arm


ここまでやったら再度インストール.
$ sudo sh ./install.sh


あとはUbuntu標準のドライバが読み込まれないように設定.
$ sudo vi /etc/modprobe.d/blacklist.conf

以下を追記してやる
blacklist rtl8192cu


そしたらRebootしてやれば,これで完了.

で,そもそもの気になる点がどうなったかというと,
・GW-USValue-EZが恐ろしく熱くなる. ---> ほどほどに熱くなるぐらいになった.
・青のLEDが点灯しっぱなしになってる. ---> 点滅するようになった.
・通信スピードが遅い気がする. ---> んー,よくわからん.
といったところ.

まぁ,前よりはよくなったので良しとしよう.動作は特に問題なく安定しているようだ.
ただ,このインストール作業,カーネルのアップデートをすると再度やらないといけないので注意.

では,お試しあれ.

nice!(0)  トラックバック(0) 
共通テーマ:日記・雑感

RaspbianにXBMCをインストールしてみる [Raspberry Pi]

以前,Raspberry Piをメディアセンターにするために,Raspbmcという専用ディストリビューションをインストールしてみた.これでXBMCが使える.

XBMCを使うだけなら,これで全然問題ないんだけど,Raspberry PiをXBMC専用で使うのももったいないので,(といっても使い道がいま決まってる訳ではないんだけど・・・)RaspbianにXBMCをインストールしてみることにする.

というわけで,RaspbianにXBMCをインストールする方法だ.
ここによると,プレビルド済みのパッケージを使う方法と,ソースからビルドする方法があるようだ.
説明を読むと,ソースからビルドする場合は,「they will take over 12 hours to compile on the Pi.」って書かれてて,12時間以上かかるとある.というわけで迷うことなくプレビルド済みパッケージを使うことにする.

プレビルド済みパッケージを使ったインストール方法の詳細は,ここに記載がある.なので,ここに書かれている通りに作業を進めればいい.
具体的には,次のようになる.

まず,パッケージのダウンロード先を追加.
$ sudo vi /etc/apt/sources.list.d/mene.list
で,以下を書き込む
deb http://archive.mene.za.net/raspbian wheezy contrib


そしたら,公開鍵の登録.
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 5243CDED


あとはパッケージリストを入手して,
$ sudo apt-get update


インストール.
$ sudo apt-get install xbmc


では,起動してみる.CUI上から,
$ xbmc-standalone/code>

としてやると,起動するはずだ.

このままだと,XBMCを起動するのに毎回コマンド入力が必要になる.なので,boot時にXBMCが自動起動するように設定してみる.設定は簡単で,/etc/default/xbmcファイル内のENABLED=0をENABLED=1に変更してやればいい.これで電源投入時に自動的にXBMCが起動するようになる.
ま,これで事実上XBMC専用になるわけで,当初目的と矛盾するのだが・・・.

で,しばらくいろいろ試していると,動画がうまく再生できないことに気がついた.
Raspbmcでは普通に再生できた動画が,Raspbian + XBMCで再生できない.
これにはかなり悩んだが,答えは,「RaspbianにXBMCを導入したときの設定まとめ - @slaypniのまとめも」にあって,ビデオメモリの割当がデフォルトの64MBだとダメということらしい.というわけで,raspi-configからビデオメモリの割当を128に変更.これで動画が再生できるようになった.slaypniさんに感謝.

あと,Idle時のCPU負荷が高い件についても対策が書かれてる.確認してみると確かに何もしてないときでもCPU負荷が高い・・・.というわけで,
Settings - System - Video output - Vertical blank syncをAlways enabled
にしておく.
ちなみにRaspbmcではデフォルトでAlways enabledとなっているようだ.

これで完了.お試しあれ.

タグ:xbmc Raspbian
nice!(0)  トラックバック(0) 
共通テーマ:日記・雑感

Raspbianにhostnameでアクセスできるようにしてみる [Raspberry Pi]

前回,Raspbianをインストールした.
で,SSHを使えるように設定したのだが,SSHで接続するときに,IPアドレスを知る必要がある.たとえば,
ssh pi@<ip-address>
のようにしないといけない.

で,毎回IPアドレスを調べるのは面倒だ.

というわけで,hostnameでアクセスできるようにしてみる.

調べてみると,Avahiというのをインストールするといいらしい.詳細はWikipediaが詳しい.なので説明は省くが,これをインストールすると,
ssh pi@<hostname>.local
で接続できるようになる.
これで,IPアドレスを調べる必要はなくなる.

では,Avahiのインストール方法だが,特に難しいことはなく,
$ sudo apt-get update
$ sudo apt-get install avahi-daemon
でよい.

Macから接続するならこれでOK.
Windowsの場合,Windows側にもAvahiをインストールする必要があるらしい.けど,もしiTunesがインストールされてればBonjourがインストールされてるので,これでOK.BonjourとAvahiの関係は,まぁ調べてくださいな.

ちなみに,Raspbmcではもともとインストールされているようだ.だから,
ssh pi@raspbmc.local
でつながる.

では,お試しあれ.

nice!(0)  トラックバック(0) 
共通テーマ:日記・雑感

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。