Raspberry Pi Zero W: Difference between revisions

 
(78 intermediate revisions by the same user not shown)
Line 162: Line 162:


おおぉ
おおぉ
<syntaxhighlight lang="bask" enclose="div">
<syntaxhighlight lang="bash" enclose="div">
pi@raspberrypi:~ $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
pi@raspberrypi:~ $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
1000000
1000000
Line 234: Line 234:
<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash" enclose="div">
cd /opt
cd /opt
sudo wget https://nodejs.org/dist/v6.11.2/node-v6.11.2-linux-armv6l.tar.xz
sudo wget https://nodejs.org/dist/v10.16.0/node-v10.16.0-linux-armv6l.tar.xz
sudo tar xfJ node-v6.11.2-linux-armv6l.tar.xz
sudo tar xfJ node-v10.16.0-linux-armv6l.tar.xz
sudo ln -s /opt/node-v6.11.2-linux-armv6l /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 246: Line 247:


<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash" enclose="div">
sudo aptitude -y install libavahi-compat-libdnssd-dev
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>
'''libavahi-compat-libdnssd-dev'''は不要になった。(node.js module が mdns から bonjour-hap に変わった)
n
<syntaxhighlight lang="bash" enclose="div">
n list
n lts
systemctl stop homebridge
n prune
systemctl start homebridge
</syntaxhighlight>
</syntaxhighlight>


Line 265: Line 277:




この現象は、移動している iPhone が homebridge を稼働している家のネットワークに出入りする場合に起こることが分かった。
= HomeBridge, HomeKit, Home Hub, Apple TV =
つまり、iPhone が家のネットワークにつながった場合、homebridge が稼働しているサーバが iPhone を見つけられないのが原因であった。
Multicast 攻撃で、自宅のホームルータが死ぬ。ルータ再起動で復活はする。Apple AirMac にするのがよさそう。原因がうっすら判明。
実際、接続した iPhone から homebridge サーバに ping を送った場合、エラーになる。この挙動は通常ではないので、homebridge が稼働する raspbian の問題か iPhone の問題か arp がうまく機能していないように思う。詳しく調査する。


結局、ルータ(ホームWiFiルータ)で IP address - Hardware ID(MAC) 固定設定をしてあげたらうまくいくようになった。iOS10の場合はこの設定もなしでも問題はなかったのですが。
IGMP 系が関連ありそうなので調べた結果、家の環境では、IGMP querier (IGMP クエリア機能) を投げる機器がないのが問題らしい。
https://bitbucket.org/marc_culler/querierd/


少し時間が経つとダメだ。単純にルーターをリセットすることで一時的に解消するという事だ。 IGMP Snooping だと思うが、今使ってるルータが簡易設定のみしか見えないでのダメだ。ルータ変えるのが吉かも。
この設定で様子を見る。今の所問題なし。解決といっていい。


むむ
 
あとは
<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">
<syntaxhighlight lang="bash" enclose="div">
sudo iw wlan0 set power_save off
sudo iw wlan0 set power_save off
Line 279: Line 302:


  brcmfmac: power management disabled
  brcmfmac: power management disabled
:ちゃんと boot 時にメッセージが出ているのだが...
:boot 時にメッセージが出ていたらOK
 
 
結局、いろいろ考察した結果、Apple TV の Home hub と iCloud のコネクションが落ちているのが原因ぽいので、デバイスの状態を iCloud に通知すればイケるかもしれないで、(ダミーの) device の'''状態を変化させて'''定期的に送信する処理を homebridge-cmdswitch2 の polling 機能で実装した。
以前よりはマシになった(気がする)が、やはり「応答しません」は出る。


これが必須かも
<syntaxhighlight lang="text" enclose="div">
<syntaxhighlight lang="text" enclose="div">
net.ipv4.conf.all.arp_ignore=1
        {
net.ipv4.conf.all.arp_announce=2
            "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>
</syntaxhighlight>


あとは IPv6 を殺しておいた方がよさそう。
"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 に追加
/boot/cmdline.txt に追加
Line 317: Line 375:
  [http://www.omiya-giken.com/?page_id=2100 irMagicianをSiriから使う | 大宮技研 合同会社]
  [http://www.omiya-giken.com/?page_id=2100 irMagicianをSiriから使う | 大宮技研 合同会社]
  [https://itdecoboconikki.com/2017/05/01/raspberry-pi-irmagician/ raspberry piとirMagicianを使って赤外線で家電を操作]
  [https://itdecoboconikki.com/2017/05/01/raspberry-pi-irmagician/ raspberry piとirMagicianを使って赤外線で家電を操作]
  [http://qiita.com/PonDad/items/a17d8b7d0be59f4c7f18 iOS10「ホーム」アプリと「Raspberry Pi + irMagician」でお手軽家電操作。 - Qiita]
  [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://yosuke403.hatenablog.com/entry/2017/01/07/220619 irMagician + Raspberry Pi + HomeKitで家電を遠隔&音声制御する - YSNHatenaBlog]
  [http://netbuffalo.doorblog.jp/archives/4872290.html 小型赤外線(IR)リモコン irMagician ファースト・インプレッション]
  [http://netbuffalo.doorblog.jp/archives/4872290.html 小型赤外線(IR)リモコン irMagician ファースト・インプレッション]
Line 351: Line 409:
  [http://www.mcmajan.com/mcmajanwpr/blog/2013/10/21/ir-daikin-decodificare-protocolli-infrarossi-complessi/ IR Daikin: decodificare protocolli infrarossi complessi. | McMajan]
  [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 413: Line 477:
= HDMI & CEC =
= HDMI & CEC =
  consoleblank=0
  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


= らずぱい怪談 =
= らずぱい怪談 =
Line 445: Line 522:
  [https://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.ja.html 第4章 Debian 8 (jessie) からのアップグレード]
  [https://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.ja.html 第4章 Debian 8 (jessie) からのアップグレード]


アップデード後、ネットワークの状態がなんだかおかしい。


/etc/network/interfaces
/etc/network/interfaces