SORACOM アドベントカレンダー 2025、アンカーの松下(Max)です。
最終日当日の午後から書き始めるという生活も、7年目に突入しました。そろそろアンカーを誰かに譲りたいと思っていますが、今年も賜ったので 15:30 頃から書き始めています。
今回は LTE USB ドングル SORACOM Onyx を Raspberry Pi OS の NetworkManager で動かす手順を紹介します。
ぶっちゃけ、それ自体は一瞬で解説が終わるのですが、その背景には「AWS re:Invent 2025 での登壇(YouTubeで公開中)」がありまして、そのお話の方が長いのですが、まあ、読み物としてご覧いただければ!
手順
Debian 12 (bookworm) 以降をベースにした Raspberry Pi OS では NetworkManager が使えます。コマンドは nmcli です。これで設定できます。
sudo nmcli connection add type gsm ifname "cdc-wdm0" \
con-name "soracom-onyx" apn soracom.io user sora password sora \
connection.autoconnect yes ipv4.route-metric 500
これで、全トラフィックが LTE インターフェイス経由で通信されるようになります。また、再起動時や USB 接続時にも自動接続されます。
パラメータの解説
SORACOM Onyx を構成する Quectel EG25-G が cdc-wdm0 で見えるので、それを type gsm として ifname に指定します。
$ dmesg | grep cdc-wdm
[ 1439.969231] qmi_wwan 1-2:1.4: cdc-wdm0: USB WDM device
conn-name は nmcli connection up 等のコマンドで指定する名前です。わかりやすければ何でもいいでしょう。
apn の user と pass は SORACOM が提示している情報を指定します。
connection.autoconnect は、再起動や USB 接続時の自動接続フラグです。 true で 自動接続するようになります。デフォルトは true のようなので指定は不要かもしれません。
false の場合は nmcli conn up (後述) することで使えるようになります。
ipv4.route-metric は、トラフィック制御です(metric 自体は IP ネットワークで学べます)。
Wi-Fi や有線 LAN が有効な状態で SORACOM Onyx をつなげると、デフォルトゲートウェイが複数になります。そしてだいたい Wi-Fi や有線 LAN の metric の方が小さいので、SORACOM Onyx のインターフェイスを通ることはありません。
$ ip route show | grep default
default via 192.168.0.1 dev wlan0 proto dhcp src 192.168.0.6 metric 600
default via 10.200.34.113 dev wwan0 proto static metric 700
これを SORACOM Onyx 側から通信させたいなら metric 値を Wi-Fi より小さくする必要がありますが、それをインターフェース有効化時に同時に設定するのが ipv4.route-metric (該当ドキュメント) です。ip route show を見ながら、だいたい 500 くらいを指定しておけばいいかも(雑でゴメン)。
その他、運用向けコマンド
$ sudo nmcli connection up soracom-onyx
$ sudo nmcli connection down soracom-onyx
$ nmcli -g general.state,ip4.address connection show soracom-onyx
activated
10.200.34.114/30
$ ping pong.soracom.io
PING pong.soracom.io (100.127.100.127) 56(84) bytes of data.
64 bytes from 100.127.100.127: icmp_seq=1 ttl=64 time=32.1 ms
64 bytes from 100.127.100.127: icmp_seq=2 ttl=64 time=50.3 ms
^C
--- pong.soracom.io ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 32.062/41.186/50.310/9.124 ms
$ sudo nmcli connection delete soracom-onyx
(読み物)マニュアルにはなんて書いてあるのか?
実は SORACOM Onyx のページに Raspberry Pi OS の設定 があります。ここでは PPP を利用する方法が目立つのですが、実は...
Debian 12 (bookworm) 以降、およびそれをベースにした Raspberry Pi OS では、NetworkManager を使用することを推奨します。
という一文があるんですね!
しかし、この具体的な方法が無かったので、メモ代わりに書いてあります。
てか、私がドキュメントをアップデートすればいいのですが (^^;;;;;;;;;(がんばります)
(読み物2)AWS re:Invent 2025 での登壇で SORACOM Onyx を使ったのです
ここからは、完全に別の読み物です m(__)m
登壇内容は「Designing local GenAI inference with AWS IoT Greengrass」
要するに「エッジデバイスで 生成 AI を動かす」というテーマで登壇してきました。
その時、ライブデモで使ったのがロボットアームなんですが、このコントローラーに Raspberry Pi 5 を使い、ネットワークに SORACOM Onyx + SORACOM Air for セルラーを使ったのです。

ホテルに着いた直後、速攻で機材チェックしている様子です。黒いのが SORACOM Onyx、その下の銀色のデバイスが Raspberry Pi 5 です。日本から持ち込んだんですよ。

なぜネットワーク...?
テレオペレーション(アームの同期動作)なら、USB to USB なのでネットワークは不要です。
ではネットワークを何に使ったのかというと、クラウドを折り返す通信をした場合の遅延を見てもらうためです。

socat で USB/ttyACM を TCP で飛ばすという 、なんとも無謀な 構成です。ここはまた、別の機会に解説しますね。
セッション会場には、登壇者用の Wi-Fi と有線 LAN が用意されており、これを使うという手もありました。が、ライブデモには魔が潜んでいます。特に現場での確認は、セッション切り替えの15分間しかないため、この時間で接続確認は危険な匂いしかありません。そして、つながらないというのは、このデモの見せどころがなくなってしまうこともあり、絶対条件でした。
そこで、LTE で「つながってる状態」でステージに持ち込み、ネットワークの不安を解消するという戦術で挑んだわけです。結果、大勝利だったわけですが (^^)v
登壇45分前
登壇45分前には、待機場所とは別のところで電源 ON。それをそのままステージに持っていきました。
ちなみに電源は、AC100Vのコンセントで出力できるモバイルバッテリーを使い、ロボットアーム・Raspberry Pi 5 それぞれに電源供給しています。試したところ、このバッテリーで20時間くらい動いたので、60分セッションなんか余裕でいけるから、心が平穏でした!

下図の右側がバッテリー、左側に銀色の Raspberry Pi 5(見えるかな...?)

そして、ステージはこんな感じでした。結構ごちゃごちゃしてますね (^q^)

改めて SORACOM Air for セルラー
SORACOM Air for セルラーは日本を含めた、世界213の国と地域でつながります。もちろん US もつながります。そして SORACOM Onyx は TELEC/JETA(日本) だけでなく FCC/PTCRB(米国)、CE(EU)、UKCA(英国)、KC(韓国) の認証を持っているため、ばっちり利用できます。
以下が、当時のセッション履歴です。日本時間の12/4 午前10時はラスベガス(PT)の12/3 午後5時です。

実はセッション会場でつながるか自体も不安だったので、初日に同じステージでお話しされている方のセッションにお邪魔して、そこで接続テストしてました(スピーカーの方、ごめんなさい!でも、3rd SaaS 空 AWS Glue でデータを取り込むパイプラインのお話は面白かったです!)。
こういった現地調査は欠かせませんね (^^)
いくらかかったの?
SORACOM Onyx は、約 12,000円。そして通信関連は...
- 基本料 3.60 USD (planX2 を載せてる plan01s の SIM なんです)
- データ通信量 0.97 USD
- SORACOM Napter (オンデマンドリモートアクセス/SSHに使った) 3.00 USD
- でも、無料枠になってるんだけどね!
ということで、無料枠を考慮せずに全額で 7.57 USD (約1180円/156円換算)でした。
※他のは別の用途です
本筋とは異なるところで困ってた(パソコンが調子悪くなってさ)
なんと、セットアップをし始めた45分前頃から、急にパソコンの調子が悪くなってきました。
最初はスリープからの復帰ができなくなり、電源 OFF/ON しないと立ち上がらない。そして、しばらく作業をするとブルースクリーン(今は黒いからブラックスクリーンか)が発生。しかもまともに起動せず、回復モードに突入。

からの…?

これだよ。
登壇45分前くらいは、こんな感じのところからAWS Heroes による Daily re:Capをお送りいただいてたのですが

この時、ほんとに「やべぇ、まじどうしよう」ってなってました (^^||
ハードウェア的なリセット(Mac の NVRAM や SMC リセットのようなもの)をして、BitLocker 回復キーの長い呪文を入れたりと、いろいろやってたら「スリープしなければ、大丈夫そう」という障害切り分けができたのが30分前。
で、準備のために Restroom 行くんですけど、パソコン起動しっぱなしでお手洗いに行く(ワルイコトしてるわけじゃない、ごめん!)という恥ずかしい思いをしつつ、15分前にはステージで準備して、なんとか乗り切りました。
ってか、ホント直前でトラブるなんて。。。と思ったんですけど、実は変な緊張は解けたってのも正直なところです。ちなみに、日本に帰ってきたらブルースクリーンは出てこなくなったので、もしかするとパソコンなりに気を使ってくれたのかも?と思ってたりもします(そんな気配りはいやだ)。
登壇を終えて。
ライブデモは、SPOF 要素が多いです。
もちろん全部に動画を用意してあるので、最悪それでいいんですが、やっぱりライブで見せたいですよね。
そうなると、ステージでの再現性が重要になります。
こまかい話ですが、コマンドラインも Makefile に書いて make hogehoge として、実行できるようにするなど、ミスを減らしつつ、でもコマンドを見せる(make は何が実行されたか、実コマンドラインが表示される) というのも見せ方になるなーと思っています。
このあたりのノウハウも、そのうちまとめますね。技術書典に当たったらドリブンで書きます (^q^
それでは、よいクリスマス、そして、よい年末を!
EoT
