Raspberry Pi 3 には、有線 LAN と 無線 LAN の 両方が搭載されています. これの両方を活用して 有線 LAN を 既存ネットワークへ接続し、無線 LAN を アクセスポイント化してみたいと思います. 今回は 有線 LAN を 接続する側 の 既存ネットワーク(光ルーターとか)で DHCP などを提供しているものとして、ブリッジ接続の形にしたいと思います.
作業環境
Raspberry Pi 3 Model B
Raspbian Jessie Lite
ネットワーク・インターフェース の ブリッジ作成
Raspberry Pi 3 に 搭載されている 無線 LAN と 有線 LAN を つなぐブリッジを作成します. これによって 無線 LAN を アクセス・ポイント化した際に、そのまま 有線 LAN 側のネットワークに接続することができます.
pi@raspberrypi:~ $ sudo hostapd /etc/hostapd/hostapd.conf Configuration file: /etc/hostapd/hostapd.conf Failed to create interface mon.wlan0: -95 (Operation not supported) wlan0: interface state UNINITIALIZED->COUNTRY_UPDATE wlan0: Could not connect to kernel driver Using interface wlan0 with hwaddr f9:15:ac:e4:XX:XX and ssid "[SSID]" wlan0: interface state COUNTRY_UPDATE->ENABLED wlan0: AP-ENABLED
Raspberry Pi Zero で USB 機器を使う場合に、マイクロ USB の 製品があると便利ですが、上記 WiFi モジュール のように マイクロ USB ではない場合は、この製品が便利です. なんと USB の コネクタ内に入ってしまうので、通常の変換製品より圧倒的に出っ張りが少ないです!
Raspberry Pi の SD 延命化対策もでき、だいぶ設定ができました. 最後に細かい設定をしておきたいと思います.
作業環境
Raspbian Jessie Lite
不要なパッケージの削除
今回は Raspbian Jessie Lite なので X Window System などは入っていないので もともと軽量ですが、使っていないパッケージが入っているとアップデート時に時間がかかったりするので、不要なパッケージは削除しておきます… が、あんまり不要なパッケージがなかったです. 一応メモ.
現在入っているパッケージの一覧を取得するには dpkg -l コマンドを使用します.
1 2 3 4 5 6 7 8 9 10
pi@raspberrypi:~ $ dpkg -l 要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持 | 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留 |/ エラー?=(空欄)無/(R)要再インストール (状態,エラーの大文字=異常) ||/ 名前 バージョン アーキ 説明 +++-=============-=============-========-======================================== ii acl 2.2.52-2 armhf Access control list utilities ii adduser 3.113+nmu3 all add and remove users and groups ii alsa-utils 1.0.28-1 armhf Utilities for configuring and using ALSA ...(省略)
pi@raspberrypi:~ $ systemctl | grep running avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack bluetooth.service loaded active running Bluetooth service cron.service loaded active running Regular background program processing daemon dbus.service loaded active running D-Bus System Message Bus dhcpcd.service loaded active running dhcpcd on all interfaces getty@tty1.service loaded active running Getty on tty1 hciuart.service loaded active running Configure Bluetooth Modems connected by UART ntp.service loaded active running LSB: Start NTP daemon rsyslog.service loaded active running System Logging Service ssh.service loaded active running OpenBSD Secure Shell server systemd-journald.service loaded active running Journal Service systemd-logind.service loaded active running Login Service systemd-udevd.service loaded active running udev Kernel Device Manager triggerhappy.service loaded active running LSB: triggerhappy hotkey daemon avahi-daemon.socket loaded active running Avahi mDNS/DNS-SD Stack Activation Socket dbus.socket loaded active running D-Bus System Message Bus Socket syslog.socket loaded active running Syslog Socket systemd-journald-dev-log.socket loaded active running Journal Socket (/dev/log) systemd-journald.socket loaded active running Journal Socket systemd-udevd-control.socket loaded active running udev Control Socket systemd-udevd-kernel.socket loaded active running udev Kernel Socket
pi@raspberrypi:~ $ nano ~/.bashrc alias ls='ls --color=auto' alias ll='ls --color=auto --format=verbose' alias la='ls --color=auto --format=verbose --all' alias cp='cp --interactive' alias mv='mv --interactive' alias rm='rm --interactive' alias free='free -h' alias grep='grep --color=auto'
c:\> ssh-keygen -t ed25519 -C "" Generating public/private ed25519 key pair. Enter file in which to save the key (C:\Users\[username]/.ssh/id_ed25519): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in C:\Users\[username]/.ssh/id_ed25519. Your public key has been saved in C:\Users\[username]/.ssh/id_ed25519.pub. The key fingerprint is: SHA256:T69X1O58qiKv7Sp/aPJTI+PpzUdOZDO+EcD5ldc8ON8 The key's randomart image is: +--[ED25519 256]--+ | . . .o.| | + oo.+| | o .ooo| | B ..E| | S .+ = . | | ooo.= . .| | . *.=.+ o | | o B+o.= +| | B*OB+...XX| +----[SHA256]-----+
user@host:/tmp$ git clone git@github.com:[username]/[repository].git Cloning into '[repository]'... The authenticity of host 'github.com (192.30.253.113)' can't be established. RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. Are you sure you want to continue connecting (yes/no)?
user@host:/tmp/[repository]$ git push origin master ERROR: The key you are authenticating with has been marked as read only. fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
リポジトリに Push したところ marked as read only と言ってエラーが返るので Read-only に なっているようです.
Initializing Botkit v0.5.1 info: ** No persistent storage method specified! Data may be lost when process shuts down. info: ** Setting up custom handlers for processing Slack messages info: ** API CALL: https://slack.com/api/rtm.start notice: ** BOT ID: bot ...attempting to connect to RTM! notice: RTM websocket opened start: Fri Mar 03 2017 13:15:21 GMT+0000 (UTC)
それはさておき、肝心の内容ですが、どうもコネクションを維持するための Ping/Pong の 処理が正しく行えていないことについて改善のプルリクに思われます. ただプルリクの書き出で “A LOT of work that was maxing out CPU” と CPU 負荷をかけたケースであることや、最後 jonchurch さん の コメントで “weird edge case” と あるので、今回のように無通信が続いたことによる自動切断とは関連があるとは思えないのですが “the node process wasn’t processing the pong response” が どうしても気になります.
v0.4.2 を 使っていた時も、ほぼ暇なボットで会話の通信も少なかったので CPU 負荷はかかってなかったとは思うので、説明からすると関係はなさそうではあるのですが、他のコード変更が影響しているとは思えないですし. なんだろう…
diff を 確認したいと思います.
pingIntervalId = setInterval((...), 5000) が pingTimeoutId = setTimeout((...), 5000); に 変わったところが大きい違いでしょうか. setInterval による繰り返しから、setTimeout の 遅延処理にして処理内で setTimeout を 再呼び出しに変わっています. プルリクでも “replace the use of an interval with a timeout” と言っているので、そう変更したのでしょう.
Crystal Signal Pi が 届いた ので、さっそく Raspbian を セットアップし、Crystal Signal Pi の ソフトウェアを入れて発光色を変えてみたいと思ったところ、まさかの SSH ログインができないというトラブルがあり、意外とはまったのでメモしておきます.
作業環境
Windows 7
Raspbian Jessie Lite (Release date: 2017-03-02)
トラブルの状況
新規に Raspbian Jessie Lite を SD カードに焼いて(いや、SD だから焼かないですがイメージとして…)、Crystal Signal Pi を 搭載した Raspberry Pi 3 Model B を 起動しました. そして初期設定のために SSH を したところ、どうしてもつながらないという状況が発生.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
c:\Temp> ssh pi@raspberrypi.local ssh: connect to host raspberrypi.local port 22: Unknown error
c:\Temp> ssh -v pi@raspberrypi.local OpenSSH_7.3p1 Microsoft_Win32_port_with_VS, OpenSSL 1.0.2d 9 Jul 2015 debug1: Connecting to raspberrypi.local [ea13::2f1:0d1:adXX:dab%10] port 22. debug1: socket:444, io:000000000030EE60, fd:3 debug1: finish_connect - ERROR: async io completed with error: 107, io:000000000030EE60 debug1: connect to address ea13::2f1:0d1:adXX:dab%10 port 22: Unknown error debug1: close - io:000000000030EE60, type:1, fd:3, table_index:3 debug1: Connecting to raspberrypi.local [192.168.0.1XX] port 22. debug1: socket:404, io:000000000030EE60, fd:3 debug1: finish_connect - ERROR: async io completed with error: 107, io:000000000030EE60 debug1: connect to address 192.168.0.1XX port 22: Unknown error debug1: close - io:000000000030EE60, type:1, fd:3, table_index:3 ssh: connect to host raspberrypi.local port 22: Unknown error
2017-03-02: * Updated kernel and firmware (final Pi Zero W support) 2017-02-16: * Chromium browser updated to version 56 * Adobe Flash Player updated to version 24.0.0.221 * RealVNC Server and Viewer updated to version 6.0.2 (RealVNC Connect) * Sonic Pi updated to version 2.11 * Node-RED updated to version 0.15.3 * Scratch updated to version 120117 * Detection of SSH enabled with default password moved into PAM * Updated desktop GL driver to support use of fake KMS option * Raspberry Pi Configuration and raspi-config allow setting of fixed HDMI resolution * raspi-config allows enabling of serial hardware independent of serial terminal * Updates to kernel and firmware * Various minor bug fixes and usability and appearance tweaks 2017-01-11: * Re-release of the 2016-11-25 image with a FAT32-formatted boot partition 2016-11-25: * SSH disabled by default; can be enabled by creating a file with name "ssh" in boot partition * Prompt for password change at boot when SSH enabled with default password unchanged * Adobe Flash Player included * Updates to hardware video acceleration in Chromium browser * Greeter now uses background image from last set in Appearance Settings rather than pi user * Updated version of Scratch * Rastrack option removed from raspi-config and Raspberry Pi Configuration * Ability to disable graphical boot splash screen added to raspi-config and Raspberry Pi Configuration * Appearance Settings dialog made tabbed to work better on small screens * Raspberry Pi Configuration now requires current password to change password * Various small bug fixes * Updated firmware and kernel
Raspberry Pi に 約 7cm ぐらいの 四角柱 を 立て、マルチカラー の LED を で光らせることができるモジュール Crystal Signal Pi が 届き、ようやく組み立てができました. 本来はサーバなどの監視を行い、警告をわかりやすく表示してくれるものですが、いろいろな使い方に挑戦してみたいと思います. まずは、早速組み立てから.
作業環境
Raspberry Pi 3 Model B
Crystal Signal Pi
Crystal Signal Pi とは?
Crystal Signal Pi は、Raspberry Pi に 約 7cm ぐらいの 四角柱 を 立て、マルチカラー の LED を で光らせることができるモジュールです. クラウド・ファンディングで購入者を募集されていることを知って、興味を持ち応募しました. クラウド・ファンディングの仕組みを使っていたとはいえ、製造は確定していたので普通に購入する形です.
説明書があるので、そう迷わず組立できました. 今回は Raspberry Pi 3 Model B を 使いました. なお組み立ての説明書 は PDF で 公開 されています. PDF は カラーなのでイメージがつかみやすいかもしれません. まずケースのアクリルにネジとスペーサー入れ、ラズパイを載せ、続いてラズパイとCrystal Signal Pi 基盤の間用のスペーサーで留めます. ネジ穴が切ってあるのでクルクルして簡単に仮留めできます.
続いて Crystal Signal Pi の 基盤を載せます. GPIO に合わせたソケットが取り付けられているので、そのまま差し込みます.