Edited at

mac で BeagleBoneBlack(BBB) に Debian(8.8) をのせて WiFi (WN-G300UA)だけで運用するまで

More than 1 year has passed since last update.


WiFiデバイスについて

色々と試したのですが、今のところ

Debian8.8 (Linux beaglebone 4.4.54-ti-r93 #1 SMP Fri Mar 17 13:08:22 UTC 2017 armv7l GNU/Linux)

では

I/O DATA WN-G300UA

で動作しています。

ELECOM WDC-150SU2MBK

は安定して動作しません。

BUFFALO WLI-UC-GNM2S

は特別にドライバを入れることなく動作しますが

とても熱くなるのでオススメできません。

以上からWiFiデバイスとしてはI/O DATA WN-G300UAをドライバを入れて使うのが良いです。

p.s.

I/O DATA WN-G300UAでも長時間セッションを張ったままだとセッションが切れるようです。WiFiの暗号鍵の更新時にそれが起こるようです。

ConnManでの暗号鍵更新時間の変更はどうやるのか、わかる方、教えてください。


下記、最新ドライバーインストールの部分で

# cp ./rtl8192cu-fixes/8192cu-disable-power-management.conf /etc/modprobe.d/

を追加したらセッションが切れなくなったようです。

しばらく様子見です。


BeagleBone Black用のDebianイメージの取得

https://beagleboard.org/latest-images



Jessie IoT (non-GUI) for BeagleBone via microSD card

にあるリンク先からイメージをダウンロードし展開してマイクロSDに入れます。

まずmacにunxzコマンドが入っていない場合はmacのターミナルから

$ brew install xz

として取得します。

そして、

$ wget https://debian.beagleboard.org/images/bone-debian-8.7-iot-armhf-2017-03-19-4gb.img.xz

$ unxz bone-debian-8.7-iot-armhf-2017-03-19-4gb.img.xz

で展開されたイメージが出来上がります。


マイクロSDカード(クラス10の4G以上のもの)をmacに挿入

ここらあたりのものを使いました。

http://amzn.asia/d14dMgl

普通に挿入


マイクロSDカードのフォーマット(必要なら)

ディスクユーティリティ.appを使う。

APPLE SD Card Reader Mediaのメディアを選択

消去をクリックしてから名前を適当に、フォーマットをMS-DOS(FAT)にして消去ボタンをクリック


SD書き込みソフトをmacにインストール

http://etcher.io/


展開したイメージをマイクロSDカードに書き込む

上記のアプリを使います。(アプリケーションフォルダー内のEtcher.app)

まず書き込むimgファイルを選択、

次にSDカードを選択、

そして書き込み実行です。

終了時にmacがSDカードをマウントしようと試みますがフォーマットが違うので失敗しますが、これは正常です。

SDカードを抜き取ります。


BBBを最新Debianで起動

電源off状態のBBBにイメージの書き込まれたマイクロSDカードを挿入し、有線LANケーブルも接続、BBBのブートボタン(SDカードの近くの黒いボタン)を押した状態でMACとBBBをUSBで接続しBBBを起動します。ユーザーLEDが点滅したらブートボタンを離します。

これはSDカード内のイメージを使った起動です。(まだBBB内蔵フラッシュには書き込まれません)

しばらくしてからmacターミナルから次のコマンドを実行しシリアル接続用のデバイスを確認します。(tty.Bluetooth〜の方ではありません!)

$ ls -al /dev/tty.*

crw-rw-rw- 1 root wheel 20, 0 7 12 03:06 /dev/tty.Bluetooth-Incoming-Port
crw-rw-rw- 1 root wheel 20, 70 7 22 21:33 /dev/tty.usbmodem1425

そしてそのデバイス名を使ってscreenコマンドでシリアル接続をします。

$ screen /dev/tty.usbmodem1425

ログイン名はdebian

パスワードはtemppwd

です。

次にvim等のエディタで/boot/uEnv.txtを編集($ sudo vim /boot/uEnv.txt)しSDカードからブートした場合に内蔵フラッシュにシステムが書き込まれるように

##enable BBB: eMMC Flasher:

#cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh

##enable BBB: eMMC Flasher:

cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh

に変更します。そして、

# shutdown -h now

でシステムを停止します。


内蔵フラッシュ(eMMC)への書き込み

停止確認後に電源ボタンを押します。

今度はシステムが立ち上がった後に自動的にシステムを内蔵フラッシュに書き込みます。

しばらくの間、ユーザーLEDが左右に揺れるように点滅し、最後に4つ共に光った後に自動的にシステムが停止します。

それを確認してマイクロSDを抜きます。


内蔵フラッシュからの起動(通常の起動)

そして、LANケーブルを接続し電源ボタンを押します。

起動後にはLAN経由でアクセスできるようになっていますが、DHCPでの割り当てのためにIPアドレスが確認できませんので、一旦、screenコマンドで接続します。

接続後、

$ ifconfig

で割り当てられたIPアドレスを確認します。(eth0の部分)

ここで、一旦ログアウトして、LAN経由で接続しなおしても良いです。

その場合は、割り当てられたIPアドレス(例えば192.168.0.152だとします)で

macのターミナルから、

$ slogin debian@192.168.0.152

です。このIPを使う接続が初めての場合、sshによるメッセージが最初に表示されますので、yesと答えてから続けます。


ここからDebianの設定


ホスト名の確認と変更(例えばbbb01に変える)

$ sudo hostname

beaglebone
$ sudo hostname bbb01

/etc/hostname を次のように編集する

bbb01

/etc/hosts の127.0.1.1の行を次のように編集する

127.0.1.1 bbb01

ホスト名が設定されたことを確認

$ sudo hostname

bbb01


ローカル時間の設定(Asia/Tokyo)

$ sudo dpkg-reconfigure tzdata


アップデート(時間がかかりますので気長に待ちます)

sudo apt-get update

sudo apt-get upgrade


node-redのアップデート(これも時間がかかります。実験中なのでオススメしません。飛ばしてください。)

$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -

$ sudo apt-get install -y build-essential nodejs
$ hash -r
$ sudo npm i -g --unsafe-perm node-red
$ sudo npm install -g --unsafe-perm node-red-node-beaglebone


WN-G300UA の場合

まず安定したドライバに変更する(必須)

参考:https://adamscheller.com/systems-administration/rtl8192cu-fix-wifi/

参考:https://github.com/pvaret/rtl8192cu-fixes

$ sudo apt-get install --reinstall linux-headers-$(uname -r) build-essential dkms git

$ git clone https://github.com/pvaret/rtl8192cu-fixes.git
$ sudo su
# dkms add ./rtl8192cu-fixes
# dkms install 8192cu/1.10
# depmod -a
# cp ./rtl8192cu-fixes/blacklist-native-rtl8192.conf /etc/modprobe.d/
# cp ./rtl8192cu-fixes/8192cu-disable-power-management.conf /etc/modprobe.d/
# modprobe 8192cu


WLI-UC-GNM2S の場合

特にドライバをインストールする必要はないようですが、とても熱くなります。

現時点ではオススメできません。


WDC-150SU2MBK の場合

安定して動作するドライバが見つかりません。

諦めて他のデバイスを使いましょう!


WiFiの設定(固定ローカルIP)

WiFiデバイスをボードのUSBに挿入する。

iwconfigを実行して次のようにデバイスが認識できていることを確認する。

# iwconfig

wlan0 unassociated Nickname:"<WIFI@REALTEK>"
Mode:Managed Frequency=2.412 GHz Access Point: Not-Associated
Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Power Management:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

connmanctlを実行して次のように入力(connmanctl>の行)

servicesを入力すると自分の環境から使えるssid(この例ではlaksmi-mac-net)とそのサービス名であるwifi_bc5c4c88ea50_6c616b736d692d6d61632d6e6574_managed_pskが表示される。以降の設定ではこの長いサービス名を指定して設定することになる。

この例では最後の2つのコマンドconfig...でWiFiの固定IP、mask,gatewayとnameserversを設定している。以下の例ではIPが192.168.0.30, maskが255.255.255.0, gatewayが192.168.0.1でnameserversを192.168.0.20に設定した。

設定が終わったらexitでconnmanctlから抜ける。

# connmanctl

connmanctl> tether wifi disable
Error disabling wifi tethering: Already disabled
connmanctl> enable wifi
Error wifi: Already enabled
connmanctl> scan wifi
Scan completed for wifi
connmanctl> services
*AO Wired ethernet_544a16ee3115_cable
laksmi-mac-net wifi_bc5c4c88ea50_6c616b736d692d6d61632d6e6574_managed_psk
connmanctl> agent on
Agent registered
connmanctl> connect wifi_bc5c4c88ea50_6c616b736d692d6d61632d6e6574_managed_psk
Agent RequestInput wifi_bc5c4c88ea50_6c616b736d692d6d61632d6e6574_managed_psk
Passphrase = [ Type=psk, Requirement=mandatory ]
Passphrase? ここでパスフレーズを入力
Connected wifi_bc5c4c88ea50_6c616b736d692d6d61632d6e6574_managed_psk
connmanctl> config wifi_bc5c4c88ea50_6c616b736d692d6d61632d6e6574_managed_psk --ipv4 manual 192.168.0.30 255.255.255.0 192.168.0.1
connmanctl> config wifi_bc5c4c88ea50_6c616b736d692d6d61632d6e6574_managed_psk --nameservers 192.168.0.20
connmanctl> exit

次のコマンドでWiFiが接続されていることを確認する

# iwconfig wlan0

wlan0 IEEE 802.11bgn ESSID:"laksmi-mac-net" Nickname:"<WIFI@REALTEK>"
Mode:Managed Frequency:2.412 GHz Access Point: 80:EA:96:EF:F8:CC
Bit Rate:144.4 Mb/s Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Power Management:off
Link Quality=100/100 Signal level=-45 dBm Noise level=0 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

# ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 34:76:c5:8e:ac:8b
inet addr:192.168.0.30 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::3676:c5ff:fe8e:ac8b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST DYNAMIC MTU:1500 Metric:1
RX packets:4213 errors:0 dropped:12 overruns:0 frame:0
TX packets:13766 errors:0 dropped:1 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:554275 (541.2 KiB) TX bytes:18624957 (17.7 MiB)

ここまで確認できたら以下のようにシャットダウンします。

# sudo shutdown -h now

停止を確認して有線LANケーブルを抜いて電源ボタン(NICコネクタすぐ横の黒いボタン)を押して再び起動させる。

電源を入れてしばらくするとWiFiデバイスの青色LEDが点滅し、さらに時間が経つとWiFi経由でmacのターミナルからWiFi経由でログインすることができるようになっているはずです。


WiFi経由でのログイン

$ slogin debian@192.168.0.30


WiFi経由で外部から色々と

まずはmacのsafariからWeb接続してみよう。

このページではBeageBone Blackの端子情報等が書かれています。

ブラウザで192.168.0.30を指定して接続してみる。

最初の起動は多少の時間がかかるかもしれない。

スクリーンショット 2017-07-18 21.46.41.png

次にnode-redを開いてみよう。

最近のDebianではあらかじめポートを指定した接続でnode-redが起動するようにあらかじめ設定されている。

ブラウザで192.168.0.30:1880を指定して接続してみる。

起動は多少の時間がかかる。

スクリーンショット 2017-07-18 21.49.30.png


その他、Debianの設定など


ユーザー追加してSUDO可能に

$ sudo adduser <username>

$ sudo gpasswd -a <username> sudo

一旦ログアウトして、新しく作ったユーザーでログインしてみましょう!

そして、そろそろユーザーdebianのパスワードのtemppwdも変更しておきましょう。

$ sudo passwd debian


emacs24

$ sudo apt-get install emacs24-nox emacs24-el


zsh

$ sudo apt-get install zsh

各ユーザー毎に

$ wget http://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh

$ chsh

シェルは/bin/zshを指定

~/.zshrcを編集して最後に



alias ll="ls -al"



などと書いておくと嬉しいかも。

一旦ログアウトして再びログインするとzshになっています。