7,166
edits
(177 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Maker Faire Tokyo 2017 | Maker Faire Tokyo 2017 の KSY ブースでようやく手に入れた。ちゃんと技適マークが刻印されている。 | ||
いろいろメモメモ | いろいろメモメモ | ||
Line 43: | Line 43: | ||
::ホスト名は必要なら変更 | ::ホスト名は必要なら変更 | ||
::ロケーション、特に '''I4 Change Wi-fi Country''' は '''JP''' にする事。技適に関わる。 | ::ロケーション、特に '''I4 Change Wi-fi Country''' は '''JP''' にする事。技適に関わる。 | ||
:::CLI でのみ使うので、ロケールは ja_JP | :::CLI でのみ使うので、ロケールは ja_JP にはしたくない。とはいってもわざわざ en_US する必要も無いので 女王陛下に敬意を評して GB のままにしておく;) | ||
:::Serial | :::Serial Console や SSH でしか触らないので keyboard layout は気にしない。 | ||
::: | :::時刻は UTC ではしんどいのでローカルタイム JST-9 にする。もちろん hardware clock は UTC のまま。 | ||
::インターフェースは必要な物を有効にする。たぶん SPI, I2C, {Serial は、すでに設定済みのはず} ぐらい。 | ::インターフェースは必要な物を有効にする。たぶん SPI, I2C, {Serial は、すでに設定済みのはず} ぐらい。 | ||
:[https://github.com/RPi-Distro/raspi-config/blob/master/raspi-config github raspi-config] | :[https://github.com/RPi-Distro/raspi-config/blob/master/raspi-config github raspi-config] | ||
== WiFi Settings == | |||
WPA2-PSK:AES | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
wpa_passphrase "YOUR_SSID" "YOUR_ACCESS_KEY" | |||
</syntaxhighlight> | |||
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf | |||
<syntaxhighlight lang="text" enclose="div"> | |||
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 | |||
} | |||
</syntaxhighlight> | |||
:電波法を遵守するために "country=JP" は忘れずに | |||
wpa-supplicant が自動的に wlan0 を UP する。もし UP しなければ下記のコマンドを使う | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
sudo wpa_cli reconfigure | |||
</syntaxhighlight> | |||
== OS Settings == | |||
パッケージの更新 | パッケージの更新 | ||
<syntaxhighlight lang="bash" enclose="div"> | <syntaxhighlight lang="bash" enclose="div"> | ||
Line 88: | Line 119: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
おまけ : 最低限の初期設定をコマンドラインで実行するには | おまけ : (ネットワークが無い環境で)最低限の初期設定をコマンドラインで実行するには | ||
<syntaxhighlight lang="bash" enclose="div"> | <syntaxhighlight lang="bash" enclose="div"> | ||
passwd | passwd | ||
Line 95: | Line 126: | ||
sudo systemctl restart rsyslog | sudo systemctl restart rsyslog | ||
sudo systemctl restart cron | sudo systemctl restart cron | ||
sudo sed -i --follow-symlinks "s/^country=.*/country=JP/g" /etc/wpa_supplicant/wpa_supplicant.conf | sudo sed -i --follow-symlinks "s/^country=.*/country=JP/g" /etc/wpa_supplicant/wpa_supplicant.conf | ||
sudo rm /etc/ssh/ssh_host_* && sudo dpkg-reconfigure openssh-server | sudo rm /etc/ssh/ssh_host_* && sudo dpkg-reconfigure openssh-server | ||
sudo shutdown -r now | sudo shutdown -r now | ||
</syntaxhighlight> | </syntaxhighlight> | ||
= UART = | |||
Zero W の UART は BROADCOM BCM2835 SoC に実装されている PL011 と mini-UART がある。 | |||
PL011 は ARM core 実装の UART。 mini-UART は低スループットの第2番目の UART という位置付け。 | |||
[https://www.raspberrypi.org/documentation/configuration/uart.md The Raspberry Pi UARTs] | |||
<syntaxhighlight lang="text" enclose="div"> | |||
uart-pl011 (PL011) | |||
bcm2835-aux-uart (mini UART) | |||
</syntaxhighlight> | |||
= Over Clock = | |||
<syntaxhighlight lang="text" enclose="div"> | |||
bcm2835-cpufreq: min=700000 max=1000000 | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
pi@raspberrypi:/boot $ vcgencmd measure_clock arm | |||
frequency(45)=700000000 | |||
</syntaxhighlight> | |||
Zero W で Over Clock が出来るか試してみた。raspi-config では "This Pi cannot be overclocked." と弾かれる。 | |||
/boot/config.txt で | |||
<syntaxhighlight lang="text" enclose="div"> | |||
arm_freq=1000 | |||
</syntaxhighlight> | |||
としてみたが変化なし。 Zero W では Over Clock はできないっぽい。 | |||
おおぉ | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
pi@raspberrypi:~ $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq | |||
1000000 | |||
| | |||
pi@raspberrypi:~ $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq | |||
700000 | |||
</syntaxhighlight> | |||
なるほど 動的に変更してるようだ。 | |||
デフォルトが | |||
<syntaxhighlight lang="text" enclose="div"> | |||
arm_freq=1000 | |||
</syntaxhighlight> | |||
だった。 | |||
[https://www.raspberrypi.org/documentation/configuration/config-txt/overclocking.md config.txt - Overclocking options] | |||
<syntaxhighlight lang="text" enclose="div"> | |||
force_turbo=1 | |||
</syntaxhighlight> | |||
にしたら常時 1GHz になるとおもわれるが無駄なので標準のままにする。逆に arm_freq_min を下げてもいいぐらいだ。 | |||
= Devise Tree = | = Devise Tree = | ||
Line 130: | Line 211: | ||
:MAKEDEV のエラーは無視してよい /dev/i2c-1 がすでにあるはず。 | :MAKEDEV のエラーは無視してよい /dev/i2c-1 がすでにあるはず。 | ||
= CPU Temperature = | = CPU Temperature = | ||
Line 182: | Line 234: | ||
<syntaxhighlight lang="bash" enclose="div"> | <syntaxhighlight lang="bash" enclose="div"> | ||
cd /opt | cd /opt | ||
sudo wget https://nodejs.org/dist/ | sudo wget https://nodejs.org/dist/v10.16.0/node-v10.16.0-linux-armv6l.tar.xz | ||
sudo tar xfJ node- | sudo tar xfJ node-v10.16.0-linux-armv6l.tar.xz | ||
sudo ln -s /opt/node- | sudo chown -R root: node-v10.16.0-linux-armv6l | ||
sudo ln -s /opt/node-v10.16.0-linux-armv6l /opt/node | |||
sudo ln -s /opt/node/bin/* /usr/bin/ | sudo ln -s /opt/node/bin/* /usr/bin/ | ||
sudo ln -s /opt/node/include/* /usr/include/ | sudo ln -s /opt/node/include/* /usr/include/ | ||
Line 194: | Line 247: | ||
<syntaxhighlight lang="bash" enclose="div"> | <syntaxhighlight lang="bash" enclose="div"> | ||
sudo npm install -g --unsafe-perm homebridge | sudo npm install -g --unsafe-perm homebridge | ||
sudo npm install -g homebridge-cmdswitch2 | |||
sudo npm install -g --unsafe-perm homebridge-config-ui-x | |||
</syntaxhighlight> | </syntaxhighlight> | ||
'''libavahi-compat-libdnssd-dev'''は不要になった。(node.js module が mdns から bonjour-hap に変わった) | |||
[http://www.omiya-giken.com/?page_id=837 irMagician] | n | ||
<syntaxhighlight lang="bash" enclose="div"> | |||
n list | |||
n lts | |||
systemctl stop homebridge | |||
n prune | |||
systemctl start homebridge | |||
</syntaxhighlight> | |||
= HomeBridge with iOS11 = | |||
[https://github.com/nfarina/homebridge/issues/1501 Not working with IOS11] | |||
* Upgrade homebridge to newest version: npm install -g homebridge | |||
* Stop homebridge service | |||
* rm -rf ~/.homebridge/persist | |||
* rm -rf ~/.homebridge/accessories | |||
* Under ~/.homebridge/config.json, change your "username": "11:22:33:44:55:66" to something else | |||
* Start homebridge service | |||
* Delete homebridge accessory from home app | |||
* Add homebridge accessory to home app and enter pin etc | |||
= HomeBridge, HomeKit, Home Hub, Apple TV = | |||
Multicast 攻撃で、自宅のホームルータが死ぬ。ルータ再起動で復活はする。Apple AirMac にするのがよさそう。原因がうっすら判明。 | |||
IGMP 系が関連ありそうなので調べた結果、家の環境では、IGMP querier (IGMP クエリア機能) を投げる機器がないのが問題らしい。 | |||
https://bitbucket.org/marc_culler/querierd/ | |||
この設定で様子を見る。今の所問題なし。解決といっていい。 | |||
あとは | |||
<syntaxhighlight lang="text" enclose="div"> | |||
net.ipv4.icmp_echo_ignore_broadcasts=0 | |||
</syntaxhighlight> | |||
これは必要らしい。 | |||
:セキュリティ的には DoS の可能性があるのだが許容した。 | |||
= Home.app で頻繁に "Apple TVが応答しません。" がでる = | |||
Raspiで wlan0 のパワーセービング機能をオフになっていることを確認。 | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
sudo iw wlan0 set power_save off | |||
</syntaxhighlight> | |||
brcmfmac: power management disabled | |||
:boot 時にメッセージが出ていたらOK | |||
結局、いろいろ考察した結果、Apple TV の Home hub と iCloud のコネクションが落ちているのが原因ぽいので、デバイスの状態を iCloud に通知すればイケるかもしれないで、(ダミーの) device の'''状態を変化させて'''定期的に送信する処理を homebridge-cmdswitch2 の polling 機能で実装した。 | |||
以前よりはマシになった(気がする)が、やはり「応答しません」は出る。 | |||
<syntaxhighlight lang="text" enclose="div"> | |||
{ | |||
"name": "DUMMY-STATUS", | |||
"on_cmd": "/bin/true", | |||
"off_cmd": "/bin/true", | |||
"state_cmd": "/usr/local/bin/status-toggle.sh", | |||
"polling": true, | |||
"interval": 600 | |||
} | |||
</syntaxhighlight> | |||
ステータスをトグルさせて返すスクリプト (/usr/local/bin/status-toggle.sh) | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
#!/bin/bash | |||
LOCKFILE=/tmp/status-toggle.lock | |||
STATUSFILE=/tmp/status-toggle.dat | |||
( | |||
flock -n 201 || exit 1 | |||
status=$((`cat ${STATUSFILE}`==0)) | |||
echo ${status} > ${STATUSFILE} | |||
exit ${status} | |||
) 201>"${LOCKFILE}" | |||
</syntaxhighlight> | |||
"Apple TVが応答しません。" の場合に mDNS でサービスをブラウズしたら、IP address が IPv6 を返していた。これが怪しい。当面定期的の AppleTV の IP に IPv4 アドレスで定期的に arp + icmp を送って様子みる。 | |||
"Apple TVが応答しません。" 問題は解決不能として諦める。 | |||
Raspberry Pi 3 B+ に変えて、有線接続にしたら解消しました。まーそーだろーなー | |||
= disable IPv6 = | |||
業界的にはよろしくないが、IPv6 を殺した。インターネットの接続先プロバイダーが IPv4 Only なので... | |||
/boot/cmdline.txt に追加 | |||
<syntaxhighlight lang="text" enclose="div"> | |||
ipv6.disable=1 | |||
</syntaxhighlight> | |||
パラノイアならw | |||
/etc/sysctl.conf | |||
<syntaxhighlight lang="text" enclose="div"> | |||
net.ipv6.conf.all.disable_ipv6=1 | |||
net.ipv6.conf.default.disable_ipv6=1 | |||
net.ipv6.conf.lo.disable_ipv6=1 | |||
net.ipv6.conf.wlan0.disable_ipv6=1 | |||
</syntaxhighlight> | |||
/etc/modprobe.d/ipv6.conf | |||
<syntaxhighlight lang="text" enclose="div"> | |||
alias net-pf-10 off | |||
alias ipv6 off | |||
options ipv6 disable_ipv6=1 | |||
blacklist ipv6 | |||
</syntaxhighlight> | |||
= irMagician = | |||
[http://www.omiya-giken.com/?page_id=837 irMagician] 買うぞ!。。。買った :) | |||
[http://www.omiya-giken.com/?page_id=2100 irMagicianをSiriから使う | 大宮技研 合同会社] | |||
[https://itdecoboconikki.com/2017/05/01/raspberry-pi-irmagician/ raspberry piとirMagicianを使って赤外線で家電を操作] | |||
[http://qiita.com/PonDad/items/a17d8b7d0be59f4c7f18 iOS10「ホーム」アプリと「Raspberry Pi + irMagician」でお手軽家電操作。] | |||
[http://yosuke403.hatenablog.com/entry/2017/01/07/220619 irMagician + Raspberry Pi + HomeKitで家電を遠隔&音声制御する - YSNHatenaBlog] | |||
[http://netbuffalo.doorblog.jp/archives/4872290.html 小型赤外線(IR)リモコン irMagician ファースト・インプレッション] | |||
[https://pondad.net/iot/2016/09/10/siri-irmagician.html Siriさんに電気をつけてもらう。 - ポンダッドの日記] | |||
[http://www.omiya-giken.com/?page_id=1344 赤外線リモコンデータ | 大宮技研 合同会社] | |||
[http://blog.maripara.org/entry/2017/02/14/012619 赤外線リモコン irMagician を組み立てました - まりぱらおーぐ] | |||
ダイキンのエアコンの操作は単純には成功しなかった。(リモコン型番 ARC446A3) | |||
[http://blog.fchiba.net/archives/172484.html Raspberry Piでエアコンを操作できる赤外線リモコンを作った] | |||
:ここ↑が一番役にたった。 | |||
<syntaxhighlight lang="text" enclose="div"> | |||
1) “bit 0”×5回+ストップ信号+ギャップスペース | |||
2) リーダー信号+データ信号(64bit)+ストップ信号+ギャップスペース | |||
3) リーダー信号+データ信号(64bit)+ストップ信号+ギャップスペース | |||
4) リーダー信号+データ信号(152bit)+ストップ信号 | |||
</syntaxhighlight> | |||
どうも 2, 3 のストップ信号のあとの長いギャップ(赤外線を照射していない部分)が正しくキャプチャーできていないようだ。その部分を修正したら動くようになる。 | |||
どうもキャプチャーで桁あふれか変換ミスをしてるっぽい。いろいろ調べた結果 unsigned char に収まらないのが原因。オーバーフローしてもエラーとして扱っていないのでわからないのも問題。 | |||
K (Set Post scaler) を 255 に設定してから キャプチャー すれば ダイキン エアコン の問題点はクリアできた。 | |||
[http://akizukidenshi.com/download/k4174_format.pdf ■家電協フォーマット■] | |||
HomeKit の Home Hub としての Apple TV が欲しくなってきた... | |||
[https://github.com/zasf/IRdaikinARC466 https://github.com/zasf/IRdaikinARC466] | |||
[http://www.mcmajan.com/mcmajanwpr/blog/2013/10/21/ir-daikin-decodificare-protocolli-infrarossi-complessi/ IR Daikin: decodificare protocolli infrarossi complessi. | McMajan] | |||
:フォーマットがわかってきたので発見できた情報 | |||
homebridge-cmd 等で呼び出す場合は、ちゃんと排他処理しましょう。 | |||
次は [https://github.com/luisiam/homebridge-cmdswitch2 homebridge-cmdswitch2] というのを試そう。 | |||
:homebridge-cmdswitch2 の方が出来が良いので書き換えた。 | |||
= FileBeat = | = FileBeat = | ||
Line 205: | Line 421: | ||
本家スタティックリンク版発見 | 本家スタティックリンク版発見 | ||
[https://beats-nightlies.s3.amazonaws.com/index.html?prefix=jenkins/filebeat/ https://beats-nightlies.s3.amazonaws.com/index.html?prefix=jenkins/filebeat/] | [https://beats-nightlies.s3.amazonaws.com/index.html?prefix=jenkins/filebeat/ https://beats-nightlies.s3.amazonaws.com/index.html?prefix=jenkins/filebeat/] | ||
:filebeat-linux-arm がそれだが、完全に | :filebeat-linux-arm がそれだが、完全に HEAD の build だった | ||
INFO Setup Beat: filebeat; Version: 7.0.0-alpha1-git23d9fe6 | INFO Setup Beat: filebeat; Version: 7.0.0-alpha1-git23d9fe6 | ||
:動いてはいる ;) | :動いてはいる ;) | ||
Line 228: | Line 444: | ||
[https://learn.adafruit.com/adding-a-real-time-clock-to-raspberry-pi/overview Adding a Real Time Clock to Raspberry Pi] | [https://learn.adafruit.com/adding-a-real-time-clock-to-raspberry-pi/overview Adding a Real Time Clock to Raspberry Pi] | ||
さっくり動いた。 | |||
<syntaxhighlight lang="text" enclose="div"> | |||
[ 11.054531] rtc-ds1307 1-0068: rtc core: registered ds1307 as rtc0 | |||
[ 11.054577] rtc-ds1307 1-0068: 56 bytes nvram | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="text" enclose="div"> | <syntaxhighlight lang="text" enclose="div"> | ||
pi@raspberrypi:~ $ sudo hwclock -D -r | |||
hwclock from util-linux 2.25.2 | |||
Using the /dev interface to the clock. | |||
Last drift adjustment done at 1502281575 seconds after 1969 | |||
Last calibration done at 1502281575 seconds after 1969 | |||
Hardware clock is on UTC time | |||
Assuming hardware clock is kept in UTC time. | |||
Waiting for clock tick... | |||
/dev/rtc does not have interrupt functions. Waiting in loop for time from /dev/rtc to change | |||
...got clock tick | |||
Time read from Hardware Clock: 2017/08/10 00:33:36 | |||
Hw clock time : 2017/08/10 00:33:36 = 1502325216 seconds since 1969 | |||
Thu 10 Aug 2017 09:33:36 JST -0.290283 seconds | |||
</syntaxhighlight> | </syntaxhighlight> | ||
= AirPlay = | |||
[https://github.com/mikebrady/shairport-sync https://github.com/mikebrady/shairport-sync] | |||
= AirPlay video streaming = | |||
[https://osmc.tv/ https://osmc.tv/] | |||
iOS10 ではダメだそうだ (中古の AppleTV 買うか...) | |||
= HDMI & CEC = | |||
consoleblank=0 | |||
echo "scan" | cec-client -d 1 -s | |||
http://www.cec-o-matic.com/ | |||
cec-client -m -d 8 -b -r | |||
= 純正ケース問題 = | |||
純正ケースをつかっていると、コネクター類が深くささらない。どうも掃除とかで意図せずうごかして HDMI-CEC の信号が突然来なくなる事象がふえたので、結局これを買った。(在庫切れかもしれず) | |||
https://www.amazon.co.jp/Goliton%C2%AE-FPV-HDTV%E3%83%9E%E3%83%AB%E3%83%81%E3%82%AB%E3%83%A1%E3%83%A9%E7%A9%BA%E4%B8%AD%E6%92%AE%E5%BD%B1%E7%94%A8-20cm-%E3%83%95%E3%83%A9%E3%83%83%E3%83%88%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB-%E4%B8%8A%E5%90%91%E3%81%8D-90%E5%BA%A6-FPV-Mini-FPC-%E5%A4%89%E6%8F%9B%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB/dp/B075GT2MGJ | |||
この L 型コネクターはしっかりささる。ボッタクリの値段がついたのももあるので注意すること。千円前後ならOK | |||
= らずぱい怪談 = | |||
誰もいない部屋のテレビがついた。しかも入力切替までしてラズパイの画面が出ていた... | |||
<syntaxhighlight lang="text" enclose="div"> | |||
hdmi_ignore_cec_init=1 | |||
</syntaxhighlight> | |||
:この呪文を /boot/config.txt に書くと治るらしいwww | |||
この機能があるなら、IR 経由でなくても homebridge で TV がコントロールできそうだ。 | |||
<syntaxhighlight lang="bash" enclose="div"> | |||
sudo apt-get install cec-utils | |||
</syntaxhighlight> | |||
homebridge-cec-accessory, homebridge-cec, homebridge-platform-cec, homebridge-hdmi 等 | |||
[http://tsaitoh.net/~t-saitoh/mt/2016/11/cec-client-homebridge.php cec-clientをhomebridgeから制御 - T-Saitoh's Diary] | |||
[https://www.npmjs.com/package/homebridge-cec-accessory homebridge-cec-accessory] | |||
:これを使ってみる | |||
::[http://libcec.pulse-eight.com/Vendor/Support メーカーにより使える機能に制限がある]のでけっしてバラ色ではない。 | |||
= Raspbian Jessie to Raspbian 9 Stretch = | |||
[https://www.raspberrypi.org/blog/raspbian-stretch/ Raspbian Stretch has arrived for Raspberry Pi] | |||
なぬ。メジャーバージョンアップだ。すでにラズパイの download page も新しいのを推してる | |||
[https://linuxconfig.org/raspbian-gnu-linux-upgrade-from-jessie-to-raspbian-stretch-9 Raspbian GNU/Linux upgrade from Jessie to Raspbian Stretch 9] | |||
[https://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.ja.html 第4章 Debian 8 (jessie) からのアップグレード] | |||
/etc/network/interfaces | |||
<syntaxhighlight lang="diff" enclose="div"> | |||
--- interfaces.dpkg-old 2017-07-05 19:55:26.182496782 +0900 | |||
+++ interfaces 2017-09-01 22:30:58.645695819 +0900 | |||
@@ -5,16 +5,3 @@ | |||
# Include files from /etc/network/interfaces.d: | |||
source-directory /etc/network/interfaces.d | |||
- | |||
-auto lo | |||
-iface lo inet loopback | |||
- | |||
-iface eth0 inet manual | |||
- | |||
-allow-hotplug wlan0 | |||
-iface wlan0 inet manual | |||
- wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf | |||
- | |||
-allow-hotplug wlan1 | |||
-iface wlan1 inet manual | |||
- wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf | |||
</syntaxhighlight> | |||
かといって /etc/network/interfaces.d/ には何もない。 |