ラズベリーパイの購入と
FreeBSDの開発環境の構築
2015年
8月29日
秋月でラズベリーパイ2を購入しました。16GのSDカードも一緒に購入。会社のPCのvmwareでFreeBSD11 currentでここを参考に開発環境を構築しました。参考ページはラズベリーパイ1の情報ですが、カーネルのコンパイル時にボード名をRPI2にすればラズベリーパイ2用が作れます。
9月5日
デフォルトではHDMIとUSBキーボードでが必要です。アマゾンで英語のUSBミニキーボードを購入しました。
会社でビルドしたイメージをSDカードに書き込んで、100円ショップの400円のHDMIケーブルとUSBキーボードを繋いで、立ち上げてみます。このdmesgです。すんなり立ち上がり、viで簡単テストプログラムを作り、コンパイル、実行してみます。コンパイラはclangです。16GのSDなんですが、なにか小さいパーティション1G?しか使われていないようです。swapも無いな〜、これは後でサイズの変更をする必要があります。PCがそばにあればHDMIとUSBキーボードでなく、シリアルコンソールの方が便利です。アマゾンで購入したUART−USB変換ケーブル(電
源供給機能付き)は納期を確認しないで買ってしまい、海外の会社だったようで、まだ届いてません。右は母屋のテレビのviの画面。画面が枠いっぱいに使わ
れるため、端が筐体に移り込んでみにくいです。このテレビではDotByDotにならないのでフォントがつぶれます。アパートのテレビならきれいに映りま
す。
9月8日
ここを参考に16Gのうち、少ししか使われていないSDのパーティションを拡張しました。/を拡張しました。
9月9日
アパートで/usr/portsをインストール。約半日かかりました。
9月11日
同じく、アパートで/usr/srcをインストール。こちらも約半日かかりました。ここを参考にwlanのデバイスを追加して、セルフでカーネルがコンパイルできるようになりました。この時点でのdfの結果です。
9月13日
UART−USB変換ケーブルが来ました。マレーシアから送られてたようで、安かったけど時間がかかりました。
早速、ガレージ(母屋)でいろいろと実験。
ガレージはネット環境が無いのでスマートフォンをモデムに外に繋げられるといろいろと嬉しいので、まず、スマートフォンに有償版がインストールしてあるEasyTetherを試してみま
した。ここにarmのドライバがあります。FreeBSD11−CURRENT:armv6をPCにダウンロードして、USBメモリでラズベリーパイにコピーし、/usr/local/binに解凍、以下のオペレーションを行ってみました。
# kldload if_tap
モジュールをロード
# easytether-usb
プログラムを実行
スマートフォン側アプリを立ち上げてUSBにチェックを入れます。
"waition for connections from host"となり待機状態になります。
ケーブル接続すると
"Connection established"となり、繋がります。
# ifconfig tap0
tap0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=80000<LINKSTATE>
ether 00:bd:34:43:ff:00
inet 192.168.117.2 netmask 0xffffff00 broadcast 192.168.117.255
groups: tap
media: Ethernet autoselect
status: active
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
Opened by PID 684
ラズベリーパイは192.168.117.2番、スマートフォンは192.168.117.1番になります。
# ping 192.168.117.1
パケットがスマートフォンに通ります。
# ping 210.135.90.6 ドルフィンインターネットにピン
PING 210.135.90.6 (210.135.90.6): 56 data bytes
^C
--- 210.135.90.6 ping statistics ---
8 packets transmitted, 0 packets received, 100.0% packet loss
外とは繋がらない。当然、名前解決もできない。惜しいところまで行っているんですが〜
FAQに以下のような記述があります。
Phone-side application shows "Connection established" but Internet does not work.
Make sure the tapX network interface is properly configured
(i.e. "ping 192.168.117.1" receives replies, name resolution works).
次にスマートフォンのwlanテザリングを試してみます。wlanアダプタは手持ちの古いバッファローのWLI−U2−KG54−AIです。
walnアダプタをUSBコネクタに挿すと以下のように認識されます。
ugen0.4: <Buffalo> at usbus0
ural0: <Buffalo WLI-U2-KG54-AI, class 0/0, rev 2.00/0.01, addr 4> on usbus0
ural0: MAC/BBP RT2570 (rev 0x05), RF RT2526
wlan0: Ethernet address: 00:0d:0b:9f:78:38
wlanテザリング中のWin7で現在の設定を確認します。
WPA2 PSKWi-Fi AP
IP:
192.168.43.123
MASK:
255.255.255.0
ゲートウェイ:
192.168.43.1
DHCP
192.168.43.1
DNS
192.168.43.1
SSID:
XXXXXXXX <−SSIDを確認
セキュリティ種類:
WAP2-パーソナル
暗号化種類:
AES
セキュリティキー:
yyyyyyyy <−パスワードを確認
ここを参考に設定ファイルを変更します。
SSIDとパスワードを指定して暗号化ファイルを作ります。
# wpa_passphrase XXXXXXXX yyyyyyyy >> /etc/wpa_supplicant.conf
作ったファイルを以下のように修正します。
# cat wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
network={
ssid="XXXXXXXX"
key_mgmt=WPA-PSK
proto=WPA WPA2
#psk="yyyyyyyy"
psk=ec83b37a3a86409a3e998cd1fb0302be5cc3e24a40da3b606b48cc6b3654f3f8
}
rc.confに以下の3行を追加します。
wlans_ural0="wlan0"
ifconfig_wlan0="country JP WPA SYNCDHCP"
defaultrouter="192.168.43.1"
resolv.confは以下のようになります。
# Generated by resolvconf
nameserver 192.168.43.1
# ifconfig wlan0 list scan
SSID/MESH
ID
BSSID
CHAN RATE S:N INT CAPS
XXXXXXXX 00:2d:29:c1:67:eb 1 54M -77:-95 100 EPS RSN HTCAP WME
スキャンするとスマートフォンが見えます。
# ping 210.135.90.6 ドルフィンインターネットにピン
PING 210.135.90.6 (210.135.90.6): 56 data bytes
64 bytes from 210.135.90.6: icmp_seq=7 ttl=243 time=207.904 ms
64 bytes from 210.135.90.6: icmp_seq=8 ttl=243 time=33.874 ms
外に出られます。
# ping www.din.or.jp
PING www.din.or.jp (210.135.90.8): 56 data bytes
64 bytes from 210.135.90.8: icmp_seq=0 ttl=243 time=37.024 ms
64 bytes from 210.135.90.8: icmp_seq=1 ttl=242 time=42.166 ms
64 bytes from 210.135.90.8: icmp_seq=2 ttl=243 time=33.279 ms
名前解決できます。
早速、コンソール接続に便利な/usr/ports/sysutil/screen-leacyをコンパイルします。途中、ソースをネットからロードしている途中で以下のエラーが出ます。コンパイルとは関係ないエラーでUSBとwlanのエラーです。
ural0: could not read MAC register: USB_ERR_TIMEOUT
ugen0.2: <vendor 0x0424> at usbus0 (disconnected)
uhub1: at uhub0, port 1, addr 2 (disconnected)
ugen0.3: <vendor 0x0424> at usbus0 (disconnected)
smsc0: at uhub1, port 1, addr 3 (disconnected)
ukphy0: detached
miibus0: detached
ugen0.4: <Buffalo> at usbus0 (disconnected)
ural0: at uhub1, port 3, addr 4 (disconnected)
ural0: need multicast update callback
ural0: could not write MAC register: USB_ERR_NOT_CONFIGURED
"ural0: could not read MAC register:"をネットで調べると、ここがヒット。電源が弱いのか?UART−USBからの電源をやめてマイクロUSBの専用電源にACアダプタを繋ぐと、エラーが出なくなります。ひとまず安心。UART−USBからGPIOコネクタに電源を供給すると電流が足らないみたいです。
screenはコンパイルが通り、動作しました。これはシリアル一本でもマルチウインドになる優れものです。
9月19日
先週、wlanテザリングでネットに繋がったのですが、アダプタが大きく、ケーブルもいまいち邪魔なので、小さいアダプタをヤフオクで購入しました。送料込で1000円弱。今度のはuralではなくrunデバイスです。動作良好です。
9月20日
レーザ加工機で上下パネルを作ります。ネットで寸法図を見つけて、QCADで図面を書きます。せっかくなので上側はラズベリーを入れました。ネット上で良さそうなロゴを見つけてー>2値化ー>autotraceでベクター化ー>DXFでファイル作成。
3mm厚のアクリルをレーザ加工機で切り取ります。ラズベリーの外周はレーザ出力を小さくして移動速度を早くして抜けないようにします。葉っぱの部分は細くなり過ぎました。作成過程はここを参照のこと。
早速、組立。これでUSBを挿したりした時に間違ってマイクロSDが抜けることもなくなりました。上側に基板の固定穴はいりませんでした。それ以外はいい感じです。
2016年
7月30日
予備のラズベリーパイ2を購入しました。エレメント14です。FPCのコネクタの色が違います。
以前、レーザ加工機で作った上パネルを作り直しました。要らない穴を無くして、ラズベリーの位置を調整しました、