ラズベリーパイの購入と

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をコンパイルします。途中、ソースをネットからロードしている途中で以下のエラーが出ます。コンパイルとは関係ないエラーでUSBwlanのエラーです。

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のコネクタの色が違います。


以前、レーザ加工機で作った上パネルを作り直しました。要らない無くして、ラズベリーの位置を調整しました、



back


line