Arduino Yun cheat sheet: Difference between revisions

 
(192 intermediate revisions by the same user not shown)
Line 19: Line 19:
  [https://www.arduino.cc/en/uploads/Main/arduino-Yun-schematic.pdf Schematics]
  [https://www.arduino.cc/en/uploads/Main/arduino-Yun-schematic.pdf Schematics]


私がスイッチサイエンス社から購入した Yun は製造は SRL 、Atheros AR9331 に組み込まれていたのが Linino ではなく OpenWrt-Yun なので LLC 。
私がスイッチサイエンス社から購入した Yun は製造は SRL。Atheros AR9331 に組み込まれていたのが Linino ではなく OpenWrt-Yun なので LLC 。


実際 github 上の動きをみても LLC のほうが好ましい。  
実際 github 上の動きをみても LLC のほうが好ましい。  
:IDE も LLC 版は Java8 に上がっている。
:IDE も LLC 版は Java8 に上がっている。
::ウェブサイトも LLC は https だし。
::ウェブサイトも LLC は https だし。
ソフトウェアは LLC を信頼したほうが良いと思われる。
ソフトウェアは LLC を信頼したほうが良いと思われる。(最近 SRL の github が活発になってきた。stay, tuned)


回路図も微妙に違うような...
回路図も微妙に違うような...
'''朗報! Two Arduinos Become One [http://www.arduino.org/blog/two-arduinos-become-one http://www.arduino.org/blog/two-arduinos-become-one]'''
'''おや! LLC 版の Yún が変わった [https://www.arduino.cc/en/Main/ArduinoBoardYun Arduino Yún LininoOS]'''
:2016年12月2日にウェブサイトが更新された模様。SRL と LLC 和解の成果か。
::2014年10月以降に出荷された Yún は LininoOS だったと。(歴史改ざんしてる気がするwww)
::おそらく(大人の事情で) LLC で Yún の出荷がとまった(Web から消えた)のが 2014年10月ごろか...
::その後 LLC では Yún Shield なる製品が出荷されて LininoOS ではなく OpenWrt-Yun が載ってたはず。
::この Yún Shield も(大人の事情で)出荷がとまった(Web から消えた)が、現在は出荷されている。技適とれてないので日本では触れない。
:::なので'''本サイトの以下↓の情報は古い'''です。(LEDE + Arduino-OS + Ciao のファーム作るか...)
::::[[#Arduino_Y.C3.BAn_LininoOS_.E5.B7.AE.E5.88.86|差分を追っかけてみる]]


== 諸注意 ==
== 諸注意 ==
Line 36: Line 47:
ソフトウェアの情報は LLC に合わせている。
ソフトウェアの情報は LLC に合わせている。


Arduino Yun の面白さ(逆に難しさ)はマイコン屋の知識と、UNIX屋・ネットワーク屋の知識と、Web屋の知識がすべて必要なところ。それぞれの専門家からみたら他方はブラックボックスに見えて理解に妨げになっているようだ。Arduino Yun の使い方・付き合い方は多方面から見てあげることが大切。
Arduino Yun の面白さ(逆に難しさ)はマイコン屋の知識と、UNIX屋・ネットワーク屋の知識と、Web屋の知識がすべて必要なところ。それぞれの専門家からみたら他方はブラックボックスに見えて理解の妨げになっているようだ。Arduino Yun の使い方・付き合い方は多方面から見てあげることが大切だ。


= 導入 =
= 導入 =
Line 42: Line 53:
Uno では(ACアダプターからの)DC入力ジャック(5.5mm/2.1mm Center Plus | 7~12V) があったが Yun には無い。
Uno では(ACアダプターからの)DC入力ジャック(5.5mm/2.1mm Center Plus | 7~12V) があったが Yun には無い。


micro-USB から 5V 供給するのが推奨。(びみょうに斜めに付く) PoE モジュールをつければ Ethernet RJ45ジャックから給電も可。VIN pin に定電圧レギュレータの5Vをいれるのも可。
#micro-USB から 5V 供給するのが推奨。
#(びみょうに斜めに付く) PoE モジュールをつければ Ethernet RJ45ジャックから給電も可。
#VIN pin に定電圧レギュレータの5Vをいれるのも可。


== USB Serial ==
== USB Serial ==
Line 49: Line 62:
micro-USB ケーブルには充電専用というのが紛れ込んでいるので要注意。
micro-USB ケーブルには充電専用というのが紛れ込んでいるので要注意。


紐をほどくために Arduino Leonardo ガイドの日本語訳
紐ほどくために Arduino Leonardo ガイドの日本語訳
  [http://trac.switch-science.com/wiki/Guide/ArduinoLeonardo Guide/ArduinoLeonardo – スイッチサイエンス]
  [http://trac.switch-science.com/wiki/Guide/ArduinoLeonardo Guide/ArduinoLeonardo – スイッチサイエンス]


ハードウェアの構成が異なるので微妙に Leonardo とも異なってるが、ほぼ同様とはいえる。
ハードウェア構成が違うので Leonardo とも微妙な差異があるが、ほぼ同様とはいえる。


== OpenWrt WiFi 設定 ==
== OpenWrt WiFi 設定 ==
Line 72: Line 85:
  [http://www.eleki-jack.com/FC/2015/11/arduino-yun5.html Arduino YUNを使ってみる(5) - フィジカル・コンピューティング]
  [http://www.eleki-jack.com/FC/2015/11/arduino-yun5.html Arduino YUNを使ってみる(5) - フィジカル・コンピューティング]


'''メモ''' : 初期パスワードは '''arduino'''
'''メモ''': 初期パスワードは '''arduino''' (ちなみに Linino の場合は '''doghunter''')


'''注意''':開発環境が Windows の場合は [https://support.apple.com/kb/DL999?viewlocale=ja_JP&locale=ja_JP Apple から Bonjour のドライバー]をとってきてインストールしておく。
'''注意''': 開発環境が Windows の場合は [https://support.apple.com/kb/DL999?viewlocale=ja_JP&locale=ja_JP Apple から Bonjour のドライバー]をとってきてインストールしておく。


'''注意''':WiFi ルーターが「アイソレーション」「ネットワーク分離機能」「プライバシーセパレータ」等の名前の端末間通信を拒否する設定になっていると同一ネットワークに有る機器は Yun (OpenWrt) に接続できない。WiFi ルーターの該当を機能を解除する事。
'''注意''': WiFi ルーターが「アイソレーション」「ネットワーク分離機能」「プライバシーセパレータ」等の名前の端末間通信を拒否する設定になっていると同一ネットワークに有る機器は Yun (OpenWrt) に接続できない。WiFi ルーターの該当を機能を解除する事。


'''重要''': '''TIMEZONE は正しく設定する事(Asia/Tokyo)。'''でないと技適的にまずいはず...
=== ネットワーク設定に失敗したら ===
=== ネットワーク設定に失敗したら ===
AR9331 OpenWrt のシリアルコンソールを使って設定を修正する。
AR9331 OpenWrt のシリアルコンソールを使って設定を修正する。
Line 90: Line 104:
<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash" enclose="div">
picocom -b 115200 /dev/ttyS4
picocom -b 115200 /dev/ttyS4
# for Emacsian
picocom -b 115200 -e t /dev/ttyS4
</syntaxhighlight>
</syntaxhighlight>
:(それぞれの開発環境でのお好きなシリアルターミナルソフトでそれぞれのシリアルポート名で。ボーレートは 115200 bps)
:(それぞれの開発環境でのお好きなシリアルターミナルソフトでそれぞれのシリアルポート名で。ボーレートは 115200 bps)
Line 106: Line 123:
  [http://xx-prime.hatenablog.com/entry/2015/04/06/222321 Arduino Yún(OpenWRTYun)の設定情報書き出しには注意 - XX-Prime's blog]
  [http://xx-prime.hatenablog.com/entry/2015/04/06/222321 Arduino Yún(OpenWRTYun)の設定情報書き出しには注意 - XX-Prime's blog]


== OpenWrt-yun のアップデート ==
=== 細かな設定は LuCI で ===
WiFi の設定を解除して有線に変えるとか、PPPoE とかの詳細設定は LuCI とよばれる GUI で行う。
 
Arduino Webpanel にログインして、上部にある "CONFIGURE" ボタンを押して次のページに遷移し、そのページの上部にある、
advanced configuration panel (luci)
のリンクをクリックする。OpenWrt の LuCI で設定する。
 
 
Yun は WiFi ルータでよくつかわれている AR9331 を使用しており、かつ OpenWrt なので、WiFi ルータとしても十分つかえる。
 
== OpenWrt-Yun のアップデート ==
Arduino LLC 純正システムイメージ: [https://www.arduino.cc/en/Main/Software Other Software, ARDUINO YÚN LINUX OS OPENWRT-YÚN]
 
<syntaxhighlight lang="text" enclose="div">
Remember that updating the OpenWrt-Yun image will cause the loss of all files and configurations you previously saved on the flash memory of the Yún.
</syntaxhighlight>
 
'''注意''' : '''すべての設定やデータが消えます。'''(luci の backup / restore を使う方法もあり)
 
'''注意''' : '''アップデート後、もういちどWiFiの設定を最初からやり直す事。'''
 
'''注意''' : '''μSD カードや USB 装置は抜いておく事。'''
 
'''注意''' : '''/tmp (tmpfs) に大きなファイルを置くので、空きメモリーが少ない場合は不要なプロセスを落とす事。'''
 
導入後最初にやったほうがよさそう。(私が購入した Yun はそのままでは opkg の整合性が合わなかった)
導入後最初にやったほうがよさそう。(私が購入した Yun はそのままでは opkg の整合性が合わなかった)


Line 131: Line 172:
いろいろ echo されるが無視して(キーを叩かず)待ち続けること。ひたすら待つと自動的にリブートする。
いろいろ echo されるが無視して(キーを叩かず)待ち続けること。ひたすら待つと自動的にリブートする。
:boot 時のコンソール出力(さまざまなログ)が落ち着いたところ(WiFi のログ wlan0: associated がでたところぐらい)でリターンキーを押すとプロンプトが出る。
:boot 時のコンソール出力(さまざまなログ)が落ち着いたところ(WiFi のログ wlan0: associated がでたところぐらい)でリターンキーを押すとプロンプトが出る。
'''注意''' : アップデート後、もういちどWiFiの設定を最初からやり直す事。


'''心配''' : OpenWrt-yun も opkg のパッケージもアップデートが遅い。[http://www.egrep.jp/wiki/index.php/Arduino_Yun_cheat_sheet#Security すでにいろいろヤバい]
'''心配''' : OpenWrt-yun も opkg のパッケージもアップデートが遅い。[http://www.egrep.jp/wiki/index.php/Arduino_Yun_cheat_sheet#Security すでにいろいろヤバい]
Line 142: Line 181:
:を参考に
:を参考に
::Overlayfs がポイント
::Overlayfs がポイント
:::[https://wiki.openwrt.org/doc/howto/extroot Rootfs on External Storage (extroot)]


Yun は 32GB までは対応している。できたら class 10 の micro SD カードを準備して挿入する。
Yun は 32GB までは対応している。できたら class 10 の micro SD カードを準備して挿入する。
:Alcor Micro AU6350-MGL USB2.0 Hub-Reader Controller が AR9331 につながっており、これがμSDのインタフェースになっている。


('''OpenWrt側で''')
('''OpenWrt側で''')
Line 156: Line 197:
(echo o; echo n; echo p; echo 1; echo; echo +15G; echo n; echo p; echo 2; echo; echo; echo t; echo 1; echo c; echo w) | fdisk /dev/sda
(echo o; echo n; echo p; echo 1; echo; echo +15G; echo n; echo p; echo 2; echo; echo; echo t; echo 1; echo c; echo w) | fdisk /dev/sda
mkfs.vfat /dev/sda1
mkfs.vfat /dev/sda1
# mkfs.fat /dev/sda1
mkfs.ext4 /dev/sda2
mkfs.ext4 /dev/sda2
mkdir -p /mnt/sda2
mkdir -p /mnt/sda2
Line 219: Line 261:
#WiFi ボードをリセットするには、USB-A ポートの横にある "WLAN RST" を押す。
#WiFi ボードをリセットするには、USB-A ポートの横にある "WLAN RST" を押す。
#WiFi 設定を初期化するには、"WLAN RST" を 5 秒以上かつ 30 秒以下押し続ける。AR9331 がリスタートして 初期のWiFi設定モードになる。
#WiFi 設定を初期化するには、"WLAN RST" を 5 秒以上かつ 30 秒以下押し続ける。AR9331 がリスタートして 初期のWiFi設定モードになる。
#OpenWrt-Yun を工場出荷の状態に戻すには、"WLAN RST"を 30 秒以上押し続ける。この場合すべての設定が初期化される。
#OpenWrt-Yun を工場出荷の状態(正確には最後に導入した OpenWrt-Yun)に戻すには、"WLAN RST"を 30 秒以上押し続ける。この場合すべての設定が初期化される。
#:micro SD を使って Overlayfs で拡張している場合は micro SD を安全に抜いておく。
#:micro SD を使って Overlayfs で拡張している場合は micro SD を安全に抜いておく。
#::/etc/config/fstab の 該当の config 'mount' セクションを削除して micro-SD のファイルシステムを umount し micro-SD カードを抜く。
#::/etc/config/fstab の 該当の config 'mount' セクションを削除して micro-SD のファイルシステムを umount し micro-SD カードを抜く。
Line 258: Line 300:


例の 1200bps でリセットするところでこける。
例の 1200bps でリセットするところでこける。
:私の作業環境が Windows の Cygwin なので、新しく接続された USB デバイスを Cygwin 側からは認識しないという事情によるものだった。
:私の開発環境が Windows の Cygwin なので、新しく接続された USB デバイスを Cygwin 側からは認識しないという事情によるものだった。
:あとは 上記と同様な理由で、割り込み禁止にしているか、SLEEP_MODE_PWR_DOWN 等では USB シリアルは使えない。TCP/IP ネットワーク経由(AR9331 OpenWrt を AVR ライタとして使う)で使う方法/パッチ探すことにする...
:あとは 上記と同様な理由で、割り込み禁止にしているか、SLEEP_MODE_PWR_DOWN 等では USB シリアルは使えない。TCP/IP ネットワーク経由(AR9331 OpenWrt を AVR ライタとして使う)で使う方法/パッチ探すことにする...


Line 364: Line 406:
:/etc/rc.local の boot-complete-notify 実行直前は brightness は 0 である。boot-complete-notify 実行後に 255 である。
:/etc/rc.local の boot-complete-notify 実行直前は brightness は 0 である。boot-complete-notify 実行後に 255 である。
:白色 LED を消灯するために trigger に none を入力後も brightness は 255 である。
:白色 LED を消灯するために trigger に none を入力後も brightness は 255 である。
::'''どうもバグと認識されたようで最新の OpenWrt では none を設定すると brightness は 0 になる。'''


('''Leonardo側で''')
('''Leonardo側で''')
Line 394: Line 437:
=== NTP 時刻同期完了確認 ===
=== NTP 時刻同期完了確認 ===
OpenWrt 起動直後は、ネットワークの設定処理が終わっていないことや、NTP で時刻同期がまだできていない状態で、Leonardo 側の処理が動く場合がある。
OpenWrt 起動直後は、ネットワークの設定処理が終わっていないことや、NTP で時刻同期がまだできていない状態で、Leonardo 側の処理が動く場合がある。
:ちなみに OpenWrt 側のマイコンには RTC がなく、ブート直後は、時刻が大幅に違っている。(前回 poweroff コマンド実行時の時刻)
:ちなみに OpenWrt 側のマイコンには RTC がなく、ブート直後は、時刻が大幅に違っている。(/etc ディレクトリにあるファイルの最新日付を boot 時に設定している)
上記の関数で OpenWrt のブートシーケンス完了確認後、NTP (BusyBox sysntpd) の同期を待つ(25秒ほどで同期する)処理を配置しておく。もちろん、OpenWrt 稼働済みの状態で Leonardo が起動する場合は待つ必要は無い。
上記の関数で OpenWrt のブートシーケンス完了確認後、NTP (BusyBox sysntpd) の同期を待つ(25秒ほどで同期する)処理を配置しておく。もちろん、OpenWrt 稼働済みの状態で Leonardo が起動する場合は待つ必要は無い。


Line 477: Line 520:
</syntaxhighlight>
</syntaxhighlight>
:OpenWrt 側から ポート 6571 に接続するまで待つための Leonardo 側プログラム処理。
:OpenWrt 側から ポート 6571 に接続するまで待つための Leonardo 側プログラム処理。
'''注意: loop で待っているので OpenWrt 側の bridge.py が OpenWrt 側の CPU を食う。早い目に OpenWrt 側で yun console に繋げて、この loop を抜けるようにしてあげる事。'''


== Process ==
== Process ==
Line 484: Line 528:


  [http://xx-prime.hatenablog.com/entry/2015/04/26/224618 Arduino yunで放射線センサのデータをxivelyとM2Xにアップロードする - XX-Prime's blog]
  [http://xx-prime.hatenablog.com/entry/2015/04/26/224618 Arduino yunで放射線センサのデータをxivelyとM2Xにアップロードする - XX-Prime's blog]
  [http://qiita.com/kassy_kz/items/ebeda9bcda444cf401a0 IFTTTを用いてArduinoからツイートする - Qiita]
  [http://qiita.com/kassy_kz/items/ebeda9bcda444cf401a0 IFTTTを用いてArduinoからツイートする]
  [https://github.com/itman83/ArduinoYun https://github.com/itman83/ArduinoYun]
  [https://github.com/itman83/ArduinoYun https://github.com/itman83/ArduinoYun]


Line 531: Line 575:
{
{
   uint8_t sreg = SREG;
   uint8_t sreg = SREG;
   noInterrupts(); // Protect from a scheduler and prevent transactionBegin                                                  
   noInterrupts(); // Protect from a scheduler and prevent transactionBegin
   if (!initialized) {
   if (!initialized) {
     // Set SS to high so a connected chip will be "deselected" by default                                                    
     // Set SS to high so a connected chip will be "deselected" by default
     uint8_t port = digitalPinToPort(SS);
     uint8_t port = digitalPinToPort(SS);
     uint8_t bit = digitalPinToBitMask(SS);
     uint8_t bit = digitalPinToBitMask(SS);
     volatile uint8_t *reg = portModeRegister(port);
     volatile uint8_t *reg = portModeRegister(port);


     // if the SS pin is not already configured as an output                                                                  
     // if the SS pin is not already configured as an output
     // then set it high (to enable the internal pull-up resistor)                                                            
     // then set it high (to enable the internal pull-up resistor)
     if(!(*reg & bit)){
     if(!(*reg & bit)){
       digitalWrite(SS, HIGH);
       digitalWrite(SS, HIGH);
     }
     }


     // When the SS pin is set as OUTPUT, it can be used as                                                                  
     // When the SS pin is set as OUTPUT, it can be used as
     // a general purpose output port (it doesn't influence                                                                  
     // a general purpose output port (it doesn't influence
     // SPI operations).                                                                                                      
     // SPI operations).
     pinMode(SS, OUTPUT);
     pinMode(SS, OUTPUT);


     // Warning: if the SS pin ever becomes a LOW INPUT then SPI                                                              
     // Warning: if the SS pin ever becomes a LOW INPUT then SPI
     // automatically switches to Slave, so the data direction of                                                            
     // automatically switches to Slave, so the data direction of
     // the SS pin MUST be kept as OUTPUT.                                                                                    
     // the SS pin MUST be kept as OUTPUT.
     SPCR |= _BV(MSTR);
     SPCR |= _BV(MSTR);
     SPCR |= _BV(SPE);
     SPCR |= _BV(SPE);
Line 563: Line 607:
</syntaxhighlight>
</syntaxhighlight>
で RX LED が付きっぱなしの条件でも RX LED は消灯することができる。
で RX LED が付きっぱなしの条件でも RX LED は消灯することができる。
ちなみに、複数の SPI デバイスを使う場合は、SPI Library で初期化する前に、すべての SPI デバイスの CS を必ず HIGH にしておくこと。
<syntaxhighlight lang="cpp" enclose="div">
/* Prepare for using multiple SPI devices */
pinMode(SPI1_CS, OUTPUT);
digitalWrite(SPI1_CS, HIGH);
pinMode(SPI2_CS, OUTPUT);
digitalWrite(SPI2_CS, HIGH);
/* Init SPI lib */
SPI.begin();
</syntaxhighlight>


== DS3234 の SQW と Alarm ==
== DS3234 の SQW と Alarm ==
Line 764: Line 820:
### なになあればそれを upgrade
### なになあればそれを upgrade
### opkg upgrade temboo
### opkg upgrade temboo
opkg install ca-certificates
opkg install unzip
opkg install unzip
opkg install screen
opkg install screen
opkg install logrotate
opkg install logrotate
opkg install diffutils
</syntaxhighlight>
<syntaxhighlight lang="bash" enclose="div">
opkg install dosfsck
# opkg install dosfstools
umount /dev/sdb1
dosfsck -t -a -w /dev/sdb1
# fsck.fat -t -a -w /dev/sda1
/sbin/block mount
</syntaxhighlight>
</syntaxhighlight>


Line 845: Line 912:


== python beaver ==
== python beaver ==
logstash に計測データを送るために、軽量 shipper beaver を導入。
ELK stack / Elastic Stack (Logstash + Elasticsearch + Kibana) に計測データを送るために、軽量 shipper beaver を導入。もちろん経路の安全性や接続先の厳密化のために '''SSH Tunneling''' を使用する。
:本当は filebeat が良いのだが、Golang が MIPS に対応してない。
:本当は filebeat が良いのだが、Golang が MIPS に対応してない。
導入する前に micro-SD でディスク容量を増やしておく事。
導入する前に micro-SD でディスク容量を増やしておく事。
Line 855: Line 922:
easy_install pip
easy_install pip
opkg install python-sqlite3
opkg install python-sqlite3
pip install beaver==34.1.0
pip install beaver==36.2.0
</syntaxhighlight>
</syntaxhighlight>


SSH Tunneling したいので OpenWrt-Yun の 軽量 ssh である Dropbear SSH のための key 変換ツール。これで Dropbear 用に変換する。
SSH Tunneling の設定するため OpenWrt-Yun の 軽量 ssh である Dropbear SSH のための key 変換ツール。これで Dropbear 用に変換する。
<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash" enclose="div">
opkg install dropbearconvert
opkg install dropbearconvert
Line 879: Line 946:


いろいろ設定して意外とさっくり supervisord 配下で beaver が動いた。
いろいろ設定して意外とさっくり supervisord 配下で beaver が動いた。
:ついでに ssh tunnel も稼働中...
:ついでに、外部からの接続用 ssh tunnel も稼働中...


init script で ssh を起動する場合、 HOME が設定されていないので、ssh 関連のファイルの操作ができない。
init script で ssh を起動する場合、 HOME が設定されていないので、ssh 関連のファイルの操作ができない。
Line 894: Line 961:
python supervisor と beaver を稼働させるともちろんメモリーは圧迫されるので無駄をなくす事が重要。
python supervisor と beaver を稼働させるともちろんメモリーは圧迫されるので無駄をなくす事が重要。
本当は OpenSSH client インストールして ssh tunnel のいろんなオプションつけたいのだけど我慢。ntpd も同様。
本当は OpenSSH client インストールして ssh tunnel のいろんなオプションつけたいのだけど我慢。ntpd も同様。
:最終的に OpenSSH-client は入れた。
:(最終的には、ExitOnForwardFailure=yes が必要だったので OpenSSH-client は入れた。)


<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash" enclose="div">
Line 904: Line 971:
</syntaxhighlight>
</syntaxhighlight>
python supervisor と beaver を稼働させた状態。
python supervisor と beaver を稼働させた状態。
ちなみに、AR9331 は MIPS 24Kc で FPU は無し。


== メンテ用トンネル ==
== メンテ用トンネル ==
Line 914: Line 983:


ssh tunnel サービス は python supervisord 配下で稼働させた。
ssh tunnel サービス は python supervisord 配下で稼働させた。
:shell script を supervisord で管理する場合、最終的なプログラム(この場合は ssh)は exec 付きで起動すること。でないと supervisord が ssh のプロセス追えない。


dropbear の client dbclient のオプションを調査したが、 -o は無視するようだ。
dropbear の client dbclient のオプションを調査したが、 -o は無視するようだ。
Line 954: Line 1,024:


自分の公開キーを書いておく。
自分の公開キーを書いておく。
= Yun を 無線(Wi-Fi) 有線(Ethernet) コンバータとして使う =
[https://lede-project.org/docs/user-guide/relay_configuration Wifi Extender or Repeater or Bridge Configuration]
[https://wiki.openwrt.org/doc/recipes/relayclient Routed Client with relayd (Pseudobridge)]
[http://ultimania.org/trac/yuna/wiki/linux/OpenWrt2 http://ultimania.org/trac/yuna/wiki/linux/OpenWrt2]
<syntaxhighlight lang="bash" enclose="div">
opkg update
opkg install relayd
opkg install luci-proto-relay
/etc/init.d/relayd enable
/etc/init.d/relayd start
</syntaxhighlight>
Luci 使えば簡単だった。
↓は LEDE 公式資料なので IF 名が Yun と違うので注意。(Yun は wan が eth1、lan が wifi)
[https://lede-project.org/_media/docs/guide-user/wifirepeater_interfaces_lan.png https://lede-project.org/_media/docs/user-guide/wifirepeater_interfaces_lan.png]
[https://lede-project.org/_media/docs/guide-user/wifirepeater_newinterface.png https://lede-project.org/_media/docs/user-guide/wifirepeater_newinterface.png]
[https://lede-project.org/_media/docs/guide-user/wifirepeater_relaybridge1.png https://lede-project.org/_media/docs/user-guide/wifirepeater_relaybridge1.png]
[https://lede-project.org/_media/docs/guide-user/wifirepeater_relaybridge2.png https://lede-project.org/_media/docs/user-guide/wifirepeater_relaybridge2.png]
[https://lede-project.org/_media/docs/guide-user/wifirepeater_firewall.png https://lede-project.org/_media/docs/user-guide/wifirepeater_firewall.png]
↓を再度確認のこと。(Yun は wan が eth1)
eth1 に ダミーの IP を振る。
<syntaxhighlight lang="text" enclose="div">
config interface 'wan'
        option ifname 'eth1'
        option proto 'static'
        option ipaddr '192.168.2.1'
        option netmask '255.255.255.0'
       
config interface 'repeater_bridge'
        option proto 'relay'
        list network 'lan'
        list network 'wan'
</syntaxhighlight>
最後に relayd を restart
<syntaxhighlight lang="bash" enclose="div">
/etc/init.d/relayd restart
</syntaxhighlight>
relayd の '-I' オプションは ARP cache を頻繁に行うようで気持ち悪い '-i' に変えてみた。が、動かなかった。'-I' に戻した。
最終的に ARP storm 問題が気になったので、いろいろ試したが解決せず、relayd を使わずに、静的な bridge 構成にした。
bridge しているインターフェースには proxy_arp を有効にすること。


= Security =
= Security =
[http://hackaday.com/2016/11/11/arduworm-a-malware-for-your-arduino-yun/ ArduWorm: A Malware for Your Arduino Yun]
:あーーー出てしまった...
::ATmega32u4に侵入して、bridge でお好きに的...
Arduino Yun の OpenWrt と AVR の脆弱性(要 Flash Plugin):
Arduino Yun の OpenWrt と AVR の脆弱性(要 Flash Plugin):
  [https://prezi.com/ufthiwidvb_0/tfm-arduino-yun-security-iot/ TFM - Arduino Yun - Security IoT]
  [https://prezi.com/ufthiwidvb_0/tfm-arduino-yun-security-iot/ TFM - Arduino Yun - Security IoT]
Line 982: Line 1,105:
・No memory controls (Heap Overflow & Stack Overflow)
・No memory controls (Heap Overflow & Stack Overflow)
</syntaxhighlight>
</syntaxhighlight>
Arduino の性質上しかたのないものもあるが、ネットワークからの侵入や使用不能攻撃はさけたい。


Compromised firmware:
Compromised firmware:
  [http://fabytes.com/fab/?p=486 Are your devices secure? Firmware hacking | Fabytes.com]
  [http://fabytes.com/fab/?p=486 Are your devices secure? Firmware hacking | Fabytes.com]


OpenWrt-yun 野良ビルド:
Update ヲタクとして作業中: [http://www.egrep.jp/wiki/index.php/OpenWrt_for_Arduino_Yun_cheat_sheet OpenWrt for Arduino Yun Security Upgrade]
[https://github.com/RedSnake64/openwrt-yun/releases ChaosCalmer_v1.2]
 
:人柱で導入してみた。mDNSがつかえず .local でアクセスできなかった。IP 指定で設定まではいけたがいったん実験終了。
= Arduino Yún LininoOS 差分 =
 
*Arduino LLC 版 Arduino IDE で「ライブラリを管理...」から MCU 側の Ciao Library がインストールできるようになっていた。
 
*Bridge Library か Ciao Library かは選択可能のように記述されている。(どちらか推奨があるわけではないみたい)
 
*luci-app-arduino-webpanel (Linino 版) と Arduino-OS (arduinoos) かはこれも様子見っぽい。Arduino-OS は野心的なので安定するまでは様子見したほうがよさげ。
 
*LininoIO はまだ水面下っぽい。(MCUIO driver 系) コンセプトは素晴らしいが、vanilla kernel に取り込まれる勢いで OpenWrt / LEDE に入らないと将来はあやしい。
**こんなのあるんだ。これを拡張するのかな [https://www.kernel.org/doc/html/latest/driver-api/iio/index.html Industrial I/O (IIO)]
 
*公式版 LininoOS (LininoIO 版) は Barrier Breaker(14.07) ベース。 (/etc/linino_version には attitude_adjustment とあるが)(あかん..)
 
*Chaos Calmer(15.05) ベースの LininoOS もあることはある。


= link =
= link =
Filebeat を動かための情報:
Documenting the Yún:
[http://codesnippets.altervista.org/documentation/yun/index.html http://codesnippets.altervista.org/documentation/yun/index.html]
 
ibuyopenwrt:
[http://www.ibuyopenwrt.com/index.php http://www.ibuyopenwrt.com/index.php]
 
Filebeat を動かすための mips Golang 情報:
  [http://akagi201.org/blog/golang-on-openwrt/ Golang on OpenWrt · Akagi201]
  [http://akagi201.org/blog/golang-on-openwrt/ Golang on OpenWrt · Akagi201]


Yun 濃い議論:
Yun 濃い議論:
  [http://hackaday.com/2015/02/24/is-the-arduino-yun-open-hardware/ Is The Arduino Yun Open Hardware? | Hackaday]
  [http://hackaday.com/2015/02/24/is-the-arduino-yun-open-hardware/ Is The Arduino Yun Open Hardware? | Hackaday]
linux USB RTC:
[https://code.google.com/p/mist-board/wiki/UsbRtc USB Real Time Clock (USBRTC)]


= ToDo メモ =
= ToDo メモ =
<syntaxhighlight lang="bash" enclose="div">
uci delete fstab.@mount[0]
uci commit
</syntaxhighlight>
  [http://akizukidenshi.com/catalog/g/gK-09833/ 秋月 006P安定化電源モジュールキット]
  [http://akizukidenshi.com/catalog/g/gK-09833/ 秋月 006P安定化電源モジュールキット]
:電流足りないね。