OpenWrt for Arduino Yun cheat sheet

From misc notes
Jump to navigation Jump to search

Arduino Yun の Atheros AR9331 で稼働する OpenWrt が、LLC 版 OpenWrt-yun も Linino もカーネルやパッケージが古くていろいろ残念なので OpenWrt の最新版との同期がとれるかをメモ。

すでにあるポーティング版 OpenWrt-yun

Arduino Yun フォーラムで発見した RedSnake64 さんの実装。

RedSnake64版 OpenWrt-yun:

https://github.com/RedSnake64/openwrt-yun
ChaosCalmer_v1.2
人柱で導入してみた。mDNS がつかえず .local でアクセスできなかった。IP 指定で設定まではいけたがいったん実験終了。
avahi-daemon 確認する事。

本家 OpenWrt の Yun Profile を調査する

OpenWrt Project ですでに Arduino Yun の Profile がある。

target/linux/ar71xx/generic/profiles/arduino.mk
ar71xx: add Arduino Yun
https://github.com/openwrt/packages/tree/master/utils/yunbridge
yunbridge
Arduino YUN bridge library が取り込まれている。

OpenWrt snapshot images:

https://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/
https://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/packages/
openwrt-ar71xx-generic-yun-16M-squashfs-sysupgrade.bin
時々ビルドに失敗して snapshots から消えてしまうようだ。一週間ぐらい気長に待つ。
次はこれで実験する予定。
git.openwrt.org Git - openwrt trunk tree
OpenWrt 本体とコアなパッケージのレポジトリ。
https://github.com/openwrt/packages
本家のオプションパッケージは github で管理するようになっている。
Where to get packages OpenWrt Wiki


OpenWrt-Yun で必要なもの

Arduino OpenWrt Yún packages:

avrdude *
cpu-mcu-bridge *
cwiid
luci-app-arduino-webpanel
node-bleno
node-noble
node-socket.io
node-socket.io-client
node-socket.io-client-legacy
node-socket.io-legacy
node-sqlite3
node-ws
rng-tools *
spacebrew
temboo
uSDaemon
v8m-rb
yun-conf
yun-scripts
avrdude は "packages/utils/avrdude" に純正パッケージがあるが、Yun 用の avrdude.conf をもつこのパッケージを使用する。
cpu-mcu-bridge は純正パッケージの yunbridge と重なるが互換性をかんがえるとこっちにする。
rng-tools は純正パッケージでいいかも。
#DELETE PACKAGES                                                                                                              
rm -rf ./package/feeds/packages/avrdude
rm -rf ./package/feeds/arduino/rng-tools

#LINK CUSTOM PACKAGES                                                                                                         
ln -s ../../../feeds/arduino/avrdude ./package/feeds/packages/avrdude

OpenWrt build メモ

RedSnake64 さん版を野良ビルド中...できるだけ本家の HEAD に近いように工夫する実験中...

Ubuntu 14.04 環境でクロスコンパイル。

git clone --depth=1 --branch 15.05 --single-branch https://github.com/RedSnake64/openwrt-yun.git
git clone --depth=1 --branch master --single-branch https://github.com/openwrt/openwrt.git
次はこっちで実験
apt-get update
apt-get install -y git subversion build-essential asciidoc \
	fastjar flex gawk libgtk2.0-dev intltool zlib1g-dev \
	genisoimage libncurses5-dev libssl-dev ruby sdcc unzip \
	bison libboost-dev libxml-parser-perl libusb-dev bin86 \
	bcc sharutils openjdk-7-jdk mercurial cvs bzr \
	nodejs-legacy curl
apt-get install g++-multilib
Installing Node.js via package manager | Node.js
Ubuntu 純正パッケージの nodejs, npm 使うとビルドこける。
https://downloads.openwrt.org/sources/
パッケージのソースの取得に失敗する場合はここからとって ./dl/ 配下に置いておく。
wget http://pkgs.fedoraproject.org/repo/pkgs/libconfuse/confuse-2.7.tar.gz/45932fdeeccbb9ef4228f1c1a25e9c8f/confuse-2.7.tar.gz
v8m-rb の patch に '-fno-strict-overflow'. 追加

feeds.conf.default:

src-git packages https://github.com/openwrt/packages.git
src-git luci https://github.com/openwrt/luci.git
src-git routing https://github.com/openwrt-routing/packages.git
src-git telephony https://github.com/openwrt/telephony.git
src-git management https://github.com/openwrt-management/packages.git
##src-git targets https://github.com/openwrt/targets.git                                                                      
#src-git oldpackages http://git.openwrt.org/packages.git                                                                      
#src-svn xwrt http://x-wrt.googlecode.com/svn/trunk/package                                                                   
#src-svn phone svn://svn.openwrt.org/openwrt/feeds/phone                                                                      
#src-svn efl svn://svn.openwrt.org/openwrt/feeds/efl                                                                          
#src-svn xorg svn://svn.openwrt.org/openwrt/feeds/xorg                                                                        
#src-svn desktop svn://svn.openwrt.org/openwrt/feeds/desktop                                                                  
#src-svn xfce svn://svn.openwrt.org/openwrt/feeds/xfce                                                                        
#src-svn lxde svn://svn.openwrt.org/openwrt/feeds/lxde                                                                        
#src-link custom /usr/src/openwrt/custom-feed                                                                                 
src-git arduino https://github.com/RedSnake64/openwrt-arduino-packages.git;for-15.05
これでビルド実験中...

LLC 版 OpenWrt-yun の(古い) .config の avahi 系の設定は

CONFIG_PACKAGE_avahi-autoipd=m
CONFIG_PACKAGE_avahi-daemon=y
CONFIG_PACKAGE_avahi-dnsconfd=y
CONFIG_PACKAGE_avahi-utils=y

RedSnake64 さん版に avahi を設定するのは

CONFIG_PACKAGE_avahi-autoipd=m
CONFIG_PACKAGE_avahi-daemon-service-http=y
# CONFIG_PACKAGE_avahi-daemon-service-ssh is not set                                                                          
CONFIG_PACKAGE_avahi-dbus-daemon=y
CONFIG_PACKAGE_avahi-dnsconfd=y
# CONFIG_PACKAGE_avahi-nodbus-daemon is not set

RedSnake64 さん版の build.sh を変更して menuconfig でいろいろ試せるようにする

初めてなら (.config がない時) RedSnake64 さん版の config.default を Load してから作業する。
#!/bin/bash -ex

#FEEDS
./scripts/feeds uninstall -a
rm -rf feeds
./scripts/feeds update -a
./scripts/feeds install -a

#DELETE PACKAGES
rm -rf ./package/feeds/packages/avrdude
rm -rf ./package/feeds/arduino/rng-tools

#LINK CUSTOM PACKAGES
ln -s ../../../feeds/arduino/avrdude ./package/feeds/packages/avrdude

make menuconfig