2021/12/08(水)の回です。
前日は、@mnishiguchi さんによる「Elixir Circuits.I2CをMoxする」でした。
私が見てみぬふりをして、避けて通ってきてしまったBehavioursをしっかり理解されています。
すごい![]()
@mnishiguchiの背中を追います。
はじめに
Elixirを楽しんでいますか![]()
Nervesを楽しんでいますか![]()
の続きです。
SORACOMさん with Nervesを楽しむためには、3つの方法があります。
- SORACOM Air for セルラーのSIM + ドングルを使う(ただし、Nerves Systemをカスタマイズする必要がある)
- WiFiルータにSORACOM Air for セルラーを差し込み、NervesアプリはふつうのWiFi接続でイゴかす1
- SORACOM Arcを利用する(SIMやドングルは不要。ただし、Nerves Systemをカスタマイズする必要がある。WireGuardさえ追加できればいいはず)
3番を推していきたいです。
SIMやドングルなしにSORACOM Arcさんと接続して、いろいろなサービスを楽しんでいくことができます。
推していきたいのですが、私のBuildroot力ではビルドができませんでした![]()
できませんでした、エラーログ貼っておくから、あとはだれか俺の屍を無駄にしないでくれ、よろしゅうたのんます みたいな〜記事です。
本当によろしくお願いたします!
SORACOM Arc
SORACOM Arc は任意の IP ネットワークから SORACOM プラットフォームへのセキュアなリンクを提供するサービスです。 お客様は SORACOM Air だけでなく、WiFi や有線通信、衛星通信といったあらゆる IP ネットワークから SORACOM の各種プラットフォームサービスをセキュアにご利用いただけます。
1 アカウントあたりバーチャル SIM/Subscriber 1契約分の基本使用料(月額)、1GB 分のデータ通信料を無料枠としてご提供いたします。
なお、1 アカウントあたり 1 回に限り、バーチャル SIM/Subscriber の初期費用が無料となります。
(https://soracom.jp/services/arc/ ![]()
![]()
![]()
![]()
![]()
)
https://users.soracom.io/ja-jp/docs/arc/
に詳しく書いてあります。
SORACOMさん with Nervesを楽しむ3つの方法
1. SORACOM Air for セルラーのSIM + ドングルを使う(ただし、Nerves Systemをカスタマイズする必要がある)
をご参照ください ![]()
![]()
![]()
![]()
![]()
![]()
上記の記事のサマリです。
まずNervesの基礎知識を身につけた上で、
の2つをよく読んで進めればやっていることはだいたい理解できます。
Nervesの基礎知識
以下のコマンドの意味がわかれば十分です。
プロジェクトつくって、ビルドして焼いているだけです。
$ mix nerves.new hello_nerves
$ cd hello_nerves
$ export MIX_TARGET=rpi4
$ mix deps.get
$ mix firmware
$ mix burn
mix burnでmicroSDカードにファームウェアを焼き込んでいます![]()
![]()
![]()
そのこんがり焼き上がったmicroSDカードをRaspberry Pi 4にでも差し込んで電源ONするだけです。
簡単です![]()
![]()
![]()
![]()
![]()
2. WiFiルータにSORACOM Air for セルラーを差し込み、NervesアプリはふつうのWiFi接続でイゴかす1
をご参照ください ![]()
![]()
![]()
![]()
![]()
![]()
3. SORACOM Arcを利用する(SIMやドングルは不要。ただし、Nerves Systemをカスタマイズする必要がある。WireGuardさえ追加できればいいはず)
私にはできませんでした。
どなたか私の屍を踏みつけにして「できたよ〜」記事を書いてください![]()
![]()
![]()
![]()
![]()
まずNervesでやる前に、基本?のRaspberry Pi OSにてSORACOM Arcを試してみました。
これはできました![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
の記事の通りに進めるとよいです。
あとは
の通りにやればよいはずです。
はずです。
私にはできませんでした![]()
![]()
![]()
![]()
![]()
![]()
![]()
やったことの詳細
の通りに進めます。
SORACOMさんからもらった接続情報(wg0.conf)は以下のように配置しておけばいいはずです。(あくまでもはずです)
~/projects
├── custom_rpi4
│ └── nerves_defconfig ※ WireGuard追加してみた
└── your_project
│ └── etc
│ ├── iex.exs
│ └── wireguard
│ └── wg0.conf
**custom_rpi4**は、ビルドできないもの
で情けないですが参考になるかもしれないので醜態をさらしておきます。
update-wireguardというなぞのブランチ名がこれまたにくいです。
てな感じにして
$ export MIX_TARGET=custom_rpi4
$ mix deps.get
$ mix firmware
です。
マシンスペックにもよるとおもいますが丸1日くらいかかるとみておいたほうがいいです。
必要なのは覚悟です。
途中、こんなログがでていたので期待大です!
>>> rpi-firmware 1.20211007 Downloading.....
>>> rpi-userland 97bc8180ad682b004ea224d1db7b8e108eda4397 Downloading.
>>> uboot-tools 2021.07 Downloading..
>>> wireguard-linux-compat 1.0.20210606 Downloading
ですが、最終結果は失敗でした。
>>> wireguard-linux-compat 1.0.20210606 Extracting
>>> wireguard-linux-compat 1.0.20210606 Patching
>>> wireguard-linux-compat 1.0.20210606 Configuring
>>> wireguard-linux-compat 1.0.20210606 Building
>>> wireguard-linux-compat 1.0.20210606 Building kernel module(s)could not compile dependency :custom_rpi4, "mix compile" failed. You can recompile this dependency with "mix deps.compile custom_rpi4", update it with "mix deps.update custom_rpi4" or clean it with "mix deps.clean custom_rpi4"
==> your_project
** (Mix) The Nerves Docker build_runner encountered an error while building:
-----
| ^~~~~
In file included from <command-line>:
/nerves/build/build/wireguard-linux-compat-1.0.20210606/src/compat/compat.h:43:2: error: #error "WireGuard has been merged into Linux >= 5.6 and therefore this compatibility module is no longer required."
43 | #error "WireGuard has been merged into Linux >= 5.6 and therefore this compatibility module is no longer required."
| ^~~~~
In file included from <command-line>:
/nerves/build/build/wireguard-linux-compat-1.0.20210606/src/compat/compat.h:43:2: error: #error "WireGuard has been merged into Linux >= 5.6 and therefore this compatibility module is no longer required."
43 | #error "WireGuard has been merged into Linux >= 5.6 and therefore this compatibility module is no longer required."
| ^~~~~
make[3]: *** [scripts/Makefile.build:280: /nerves/build/build/wireguard-linux-compat-1.0.20210606/src/main.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: *** [scripts/Makefile.build:280: /nerves/build/build/wireguard-linux-compat-1.0.20210606/src/device.o] Error 1
make[3]: *** [scripts/Makefile.build:280: /nerves/build/build/wireguard-linux-compat-1.0.20210606/src/noise.o] Error 1
make[2]: *** [Makefile:1825: /nerves/build/build/wireguard-linux-compat-1.0.20210606/src] Error 2
make[1]: *** [package/pkg-generic.mk:271: /nerves/build/build/wireguard-linux-compat-1.0.20210606/.stamp_built] Error 2
make: *** [Makefile:23: _all] Error 2
-----
See /Users/yamauchi/nervesProjects/soracom/custom_rpi4/build.log.
失敗している![]()
![]()
![]()
![]()
![]()
Buildroot力が無さすぎてググろうにもググれないです。
人は想像力の範囲内で生きています。
知らないことには想像力が及ばないのです。
だから謙虚に誰からも教えを乞う、そういう姿勢で処世していけば大方誤りは少ないものです。
@Yametaro さんの「ググって解決しづらかったこと」カレンダーへの投稿が一瞬頭をよぎったのですが、私は解決できていないので#NervesJPが空いていたし、こちらに投稿しました。
エラーログをもう一度、よ〜く眺めてみると、
"WireGuard has been merged into Linux >= 5.6 and therefore this compatibility module is no longer required."
えっ、まさか最初から入っているの? と期待をして、Nervesにsshで入って以下のようにしてwg-quickコマンドがあるのか調べてみました。
期待した私が馬鹿でした。
当然そんなシロモノは入っていませんでした。
$ ssh nerves.local
iex> System.find_executable("wg-quick")
nil
iex> System.find_executable("wg")
nil
System.find_executable("ip")
"/sbin/ip"
Wrapping up 



SORACOMさん with Nervesを楽しむためには、3つの方法があります。
- SORACOM Air for セルラーのSIM + ドングルを使う(ただし、Nerves Systemをカスタマイズする必要がある)
- WiFiルータにSORACOM Air for セルラーを差し込み、NervesアプリはふつうのWiFi接続でイゴかす1
- SORACOM Arcを利用する(ただし、Nerves Systemをカスタマイズする必要がある。WireGuardさえ追加できればいいはず)
私には解決できませんでしたが、
俺、わたし、Buildrootバリバリっす。Nerves楽しそうですね! ってな具合でスゴイ人が解決してくださることを祈って、筆をおきます。
このイベントがすんごく楽しみです。
NervesJP
最後にNervesJPコミュニティをご紹介します。
NervesJPのSlackワークスペースにご参加ください。
IoTやNervesのことが好きな愉快なfolksたちがあなたの訪れを熱烈歓迎します!!!
$\huge{れっつじょいなす}$
朗報です。
#NervesJPアドベントカレンダーにはまだ若干の空きがございます。
ぶっちゃけNerves関係ないけど,こんなんやってみたよ! (ElixirかIoTくらいは絡んでいればおけ
ですので、みなさま奮ってご参加ください。
ネタがかぶったとか全然おけ
です。
2番煎じ、3番煎じ、N番煎じ万歳です。
そんな細かいことは気にしなくていいです。
その積み重ねは発展です。進展です。![]()
![]()
![]()
そうやって人類は進化を続けているのです。
-
「イゴかす」の意。おそらく西日本の方言、たぶん。NervesJPではおなじみ。少し古いオートレースの映像ですが、実況アナウンサーが「針2イゴきます」とはっきり言っています。https://autorace.jp/netstadium/SearchMovie/Movie/iizuka?date=2017-01-04&p=5&race_number=11&pg= ↩ ↩2 ↩3 ↩4
-
大時計の針のこと。針がイゴいてある地点まで到達すると選手はスタートを切って良い発走の合図。針がイゴきはじめると(おそらく)選手は緊張するし、スタートはその後のレース展開に大きく影響するので、車券を握りしめている観客たちがもっとも緊張する瞬間であるため、先の尖った鋭いものを連想させる針は緊張の暗喩としても言い得て妙。 ↩

