Raspberry Pi Zero W

Maker Faire Tokyo 2017 で KSY のブースでようやく手に入れた。ちゃんと技適マークが刻印されている。

いろいろメモメモ

(Raspbian Jessie Lite July 2017)

Etcher で書き込まないとハマる

Serial Console

秋月電子で FTDI の USB シリアル変換ケーブル(TTL-232R-3V3)を入手。

黒 GND <-> GND (6)
黄 RxD <-> TxD (8)
橙 TxD <-> RxD (10)

駄菓子菓子。これだけでは繋がらない。

firmware イメージをインストールした SD カードを PC/Mac でマウントして /boot/config.txt に追記。

もしくは、HDMI にモニター、USB にキーボード を繋げて(これがフツーか) /boot/config.txt に追記。
これをやりたく無いので Serial Console を活性させたいのだ。
enable_uart=1

おなじく Bluetooth を装備した Pi 3 はいろいろオマジナイがいるらしいが Zero W はこれだけで良い。

First Step

sudo raspi-config
1 Change User Password Change password for the default user
2 Hostname             Set the visible name for this Pi on a network
4 Localisation Options Set up language and regional settings to match your location
5 Interfacing Options  Configure connections to peripherals
必ず上記を確認して必要なら変更を行う。
ユーザ pi のパスワードは必ず変更する事
ホスト名は必要なら変更
ロケーション、特に I4 Change Wi-fi CountryJP にする事。技適に関わる。
CLI でのみ使うので、ロケールは ja_JP にはしたくないので、といって en_US もどっちでもいいので 女王陛下に敬意を評して GB のままにしておく;)
Serial COnsole や SSH でしか触らないので keyboard layout は気にしない。
時刻はUTCではしんどいのでローカルタイム JST-9 にする。
インターフェースは必要な物を有効にする。たぶん SPI, I2C, {Serial は、すでに設定済みのはず} ぐらい。
github raspi-config

パッケージの更新

sudo apt-get update
sudo apt-get upgrade

起動されているサービスを確認する

systemctl list-unit-files | fgrep enabled
systemctl | fgrep running

systemd のログを確認

sudo journalctl --no-pager

オプショナル: unstable, testing kernel への更新

sudo rpi-update
github rpi-update
https://github.com/raspberrypi/firmware

オプショナル: 必要なら他のパッケージを削除しながらインストール済みパッケージの候補バージョンをインストール

sudo apt-get dist-upgrade

いったん再起動

sudo shutdown -r now

おまけ : 最低限の初期設定をコマンドラインで実行するには

passwd
echo "Asia/Tokyo" | sudo tee /etc/timezone
sudo dpkg-reconfigure --frontend noninteractive tzdata
sudo systemctl restart rsyslog
sudo systemctl restart cron
sudo apt-get update
sudo apt-get -y upgrade
sudo sed -i --follow-symlinks "s/^country=.*/country=JP/g" /etc/wpa_supplicant/wpa_supplicant.conf
sudo shutdown -r now

Devise Tree

Devise Tree を後でさわるツールがある (Dynamic Device Tree)

dtoverlay
dtparam
詳しくは これ の下の方を読む
/boot/overlays/README も確認する
memo : dtoverlay=i2c-rtc,ds1307

とはいえ overlay せずに /boot/config.txt に書くのが良い。

dtparam=i2c_arm=on
dtparam=spi=on
enable_uart=1
これだけは /boot/config.txt に書いておく。

I2C

sudo apt-get install i2c-tools
MAKEDEV のエラーは無視してよい /dev/i2c-1 がすでにあるはず。

WiFi Settings

WPA2-PSK:AES

wpa_passphrase [YOUR_SSID] [YOUR_ACCESS_KEY]

sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="YOUR_SSID"
    psk=HASH(256-bit pre-shared WPA key generated by wpa_passphrase utility)
    scan_ssid=0
    proto=RSN
    key_mgmt=WPA-PSK
    pairwise=CCMP
    group=CCMP
}
電波法を遵守するために "country=JP" は忘れずに
sudo ifdown wlan0
sudo ifup wlan0

CPU Temperature

cat /sys/class/thermal/thermal_zone0/temp
vcgencmd measure_temp

Node.js

sudo apt-get install build-essential libncurses5-dev gawk git subversion libssl-dev gettext unzip zlib1g-dev file python
./configure --dest-cpu=arm --dest-os=linux --without-snapshot --shared-zlib --with-intl=none --with-arm-fpu=vfp --prefix=/usr

むちゃくちゃ時間かかるので、https://nodejs.org/ja/download/ の Linux Binaries (ARM) ARMv6 を /opt 配下に展開しよう。

cd /opt
sudo wget https://nodejs.org/dist/v6.11.2/node-v6.11.2-linux-armv6l.tar.xz
sudo tar xfJ node-v6.11.2-linux-armv6l.tar.xz
sudo ln -s /opt/node-v6.11.2-linux-armv6l /opt/node
sudo ln -s /opt/node/bin/* /usr/bin/
sudo ln -s /opt/node/include/* /usr/include/
sudo ln -s /opt/node/lib/* /usr/lib/


n とか nvm とか使うのが良いそうだ

sudo aptitude -y install libavahi-compat-libdnssd-dev
sudo npm install -g --unsafe-perm homebridge

irMagician 買うぞ!

FileBeat

Golang のパッケージがあるぞ。

本家スタティックリンク版発見

https://beats-nightlies.s3.amazonaws.com/index.html?prefix=jenkins/filebeat/
filebeat-linux-arm がそれだが、完全に head の build だった
INFO Setup Beat: filebeat; Version: 7.0.0-alpha1-git23d9fe6
動いてはいる ;)

memo

git clone https://github.com/tsg/go-daemon.git
cd go-daemon
make
mv god filebeat-god
dpkg-deb -x filebeat-5.5.1-amd64.deb ./
#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

ssh tunnel

python supervisord で管理する。

apt-get -y install supervisor