Debian bullseye ベースの Raspberry Pi OS で SORACOM Air を使うときの注意点
Posted by: otsuka
2021年11月8日、待望の
Debian bullseye (Debian 11) ベースの Raspberry Pi OS
がリリースされました。
2021年10月30日リリース版です。
Raspberry Pi OS with desktop (2021-10-30-raspios-bullseye-armhf.zip)
Raspberry Pi OS Lite (2021-10-30-raspios-bullseye-armhf-lite.zip)
Firmware や libcamera などに課題があってまだ正式版にはならないようですが、64bit 版もあります。
Raspberry Pi OS with desktop 64bit (2021-10-30-raspios-bullseye-arm64.zip)
Raspberry Pi OS Lite 64bit (2021-10-30-raspios-bullseye-arm64-lite.zip)
Raspberry Pi は IoT のゲートウェイやエッジデバイスとしてもよく利用されており、そういった IoT 機器などにコネクティビティを提供するサービスとして
SORACOM Air
https://soracom.jp/services/air/
があります。
Raspberry Pi で利用する場合は USB モデムを接続して通信することになりますが、
3G の USB モデムである Abit AK-020 を使う場合のガイド
LTE の USB モデムである SORACOM Onyx LTE USB ドングル を使う場合のガイド
が用意されており、setup_air.sh というスクリプトを実行するだけで一通り全ての設定が完了し接続できるようになります。
ところが、2021年11月10日現在このスクリプトを2021年10月30日リリース版の Raspberry Pi OS でそのまま使用したところ接続できませんでした。
syslog を確認して理由が判明しました。
Nov 10 15:45:47 raspberrypi pppd[1070]: pppd 2.4.9 started by root, uid 0
Nov 10 15:45:47 raspberrypi pppd[1070]: Using interface ppp0
Nov 10 15:45:47 raspberrypi pppd[1070]: Connect: ppp0 <--> /dev/ttyUSB0
Nov 10 15:45:47 raspberrypi pppd[1070]: PAP authentication succeeded
Nov 10 15:45:50 raspberrypi pppd[1070]: Could not determine remote IP address: defaulting to 10.64.64.64
Nov 10 15:45:50 raspberrypi pppd[1070]: replacing old default route to eth0 [192.168.0.254]
Nov 10 15:45:50 raspberrypi pppd[1070]: del old default route ioctl(SIOCDELRT): No such process(3)
Nov 10 15:45:50 raspberrypi pppd[1070]: local IP address 10.132.50.79
Nov 10 15:45:50 raspberrypi pppd[1070]: remote IP address 10.64.64.64
Nov 10 15:45:50 raspberrypi pppd[1070]: primary DNS address 100.127.0.53
Nov 10 15:45:50 raspberrypi pppd[1070]: secondary DNS address 100.127.1.53
Nov 10 15:45:50 raspberrypi avahi-daemon[401]: Got SIGHUP, reloading.
Nov 10 15:45:50 raspberrypi avahi-daemon[401]: No service file found in /etc/avahi/services.
Nov 10 15:45:50 raspberrypi pppd[1070]: local LL address fe80::8887:1e84:7084:b768
Nov 10 15:45:50 raspberrypi pppd[1070]: remote LL address fe80::05c8:7d8d:8106:562b
Nov 10 15:45:55 raspberrypi pppd[1070]: LCP terminated by peer
Nov 10 15:45:55 raspberrypi pppd[1070]: Connect time 0.1 minutes.
Nov 10 15:45:55 raspberrypi pppd[1070]: Sent 170 bytes, received 74 bytes.
setup_air.sh では /etc/network/interfaces に wwan0 のエントリーを追加し、これが wvdial を実行して PPP 接続を行います。
Raspberry Pi OS では default で avahi-daemon も動作しているのですが、これは IPv6 でも自動接続のためのローカル端末探索を行います。
すると 2.4.9 から default で IPv6 対応に変更になった pppd が IPv6 アドレスも要求してしまい、対応していない SORACOM の peer 側から接続を切られてしまうのです。
これを避けるためには、以下のいずれかを行う必要があります。
1. system 全体で IPv6 を止める。
/etc/sysctl.conf に
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
を追記するか
/boot/cmdline.txt
に
ipv6.disable=1
を追記して IPv6 を無効化する。
2. avahi-daemon を止める。
$ sudo systemctl disable-avahi-daemon
で avahi-daemon の IPv6 ローカル端末探索を止めてしまう。
3. pppd で IPv6 を止める。
/etc/ppp/peers/wvdial に noipv6 を追記し、pppd の IPv6 対応を無効にする。
上記のいずれかを行えば、setup_air.sh の想定通りに USB モデムを挿すだけで接続され、起動時から挿してあれば自動で接続します。
2021年10月30日版 Raspberry Pi OS を起動後 AK-020 を挿して正常に SORACOM に接続できた時の syslog は以下のようになります。
Nov 10 17:42:27 raspberrypi kernel: [ 328.982121] usb 1-1.1: new high-speed USB device number 3 using xhci_hcd
Nov 10 17:42:27 raspberrypi kernel: [ 329.083914] usb 1-1.1: New USB device found, idVendor=15eb, idProduct=a403, bcdDevice= 3.00
Nov 10 17:42:27 raspberrypi kernel: [ 329.083934] usb 1-1.1: New USB device strings: Mfr=2, Product=3, SerialNumber=4
Nov 10 17:42:27 raspberrypi kernel: [ 329.083947] usb 1-1.1: Product: AK-020
Nov 10 17:42:27 raspberrypi kernel: [ 329.083960] usb 1-1.1: Manufacturer: ABIT Corporation
Nov 10 17:42:27 raspberrypi kernel: [ 329.083972] usb 1-1.1: SerialNumber: 536957704082150
Nov 10 17:42:27 raspberrypi kernel: [ 329.086706] usb-storage 1-1.1:1.0: USB Mass Storage device detected
Nov 10 17:42:27 raspberrypi kernel: [ 329.087484] scsi host0: usb-storage 1-1.1:1.0
Nov 10 17:42:27 raspberrypi mtp-probe: checking bus 1, device 3: "/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1"
Nov 10 17:42:27 raspberrypi mtp-probe: bus: 1, device: 3 was not an MTP device
Nov 10 17:42:27 raspberrypi systemd[1]: Created slice system-usb_modeswitch.slice.
Nov 10 17:42:27 raspberrypi systemd[1]: Starting USB_ModeSwitch_1-1.1...
Nov 10 17:42:28 raspberrypi mtp-probe: checking bus 1, device 3: "/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1"
Nov 10 17:42:28 raspberrypi mtp-probe: bus: 1, device: 3 was not an MTP device
Nov 10 17:42:28 raspberrypi kernel: [ 329.416444] usb 1-1.1: USB disconnect, device number 3
Nov 10 17:42:28 raspberrypi kernel: [ 329.986195] usb 1-1.1: new high-speed USB device number 4 using xhci_hcd
Nov 10 17:42:28 raspberrypi kernel: [ 330.087242] usb 1-1.1: New USB device found, idVendor=15eb, idProduct=7d0e, bcdDevice= 3.00
Nov 10 17:42:28 raspberrypi kernel: [ 330.087260] usb 1-1.1: New USB device strings: Mfr=9, Product=10, SerialNumber=0
Nov 10 17:42:28 raspberrypi kernel: [ 330.087274] usb 1-1.1: Product: AK-020
Nov 10 17:42:28 raspberrypi kernel: [ 330.087288] usb 1-1.1: Manufacturer: ABIT Corporation
Nov 10 17:42:28 raspberrypi kernel: [ 330.103690] usb-storage 1-1.1:1.6: USB Mass Storage device detected
Nov 10 17:42:28 raspberrypi kernel: [ 330.104372] scsi host0: usb-storage 1-1.1:1.6
Nov 10 17:42:28 raspberrypi systemd[1]: usb_modeswitch@1-1.1.service: Succeeded.
Nov 10 17:42:28 raspberrypi systemd[1]: Finished USB_ModeSwitch_1-1.1.
Nov 10 17:42:28 raspberrypi mtp-probe: checking bus 1, device 4: "/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1"
Nov 10 17:42:28 raspberrypi mtp-probe: bus: 1, device: 4 was not an MTP device
Nov 10 17:42:28 raspberrypi kernel: [ 330.182184] usbcore: registered new interface driver usbserial_generic
Nov 10 17:42:28 raspberrypi kernel: [ 330.182301] usbserial: USB Serial support registered for generic
Nov 10 17:42:28 raspberrypi kernel: [ 330.182424] usbserial_generic 1-1.1:1.0: The "generic" usb-serial driver is only for testing and one-off prototypes.
Nov 10 17:42:28 raspberrypi kernel: [ 330.182438] usbserial_generic 1-1.1:1.0: Tell linux-usb@vger.kernel.org to add your device to a proper driver.
Nov 10 17:42:28 raspberrypi kernel: [ 330.182456] usbserial_generic 1-1.1:1.0: device has no bulk endpoints
Nov 10 17:42:28 raspberrypi kernel: [ 330.182558] usbserial_generic 1-1.1:1.1: The "generic" usb-serial driver is only for testing and one-off prototypes.
Nov 10 17:42:28 raspberrypi kernel: [ 330.182572] usbserial_generic 1-1.1:1.1: Tell linux-usb@vger.kernel.org to add your device to a proper driver.
Nov 10 17:42:28 raspberrypi kernel: [ 330.182585] usbserial_generic 1-1.1:1.1: device has no bulk endpoints
Nov 10 17:42:28 raspberrypi kernel: [ 330.182672] usbserial_generic 1-1.1:1.2: The "generic" usb-serial driver is only for testing and one-off prototypes.
Nov 10 17:42:28 raspberrypi kernel: [ 330.182685] usbserial_generic 1-1.1:1.2: Tell linux-usb@vger.kernel.org to add your device to a proper driver.
Nov 10 17:42:28 raspberrypi kernel: [ 330.182699] usbserial_generic 1-1.1:1.2: generic converter detected
Nov 10 17:42:28 raspberrypi kernel: [ 330.183129] usb 1-1.1: generic converter now attached to ttyUSB0
Nov 10 17:42:28 raspberrypi kernel: [ 330.183402] usbserial_generic 1-1.1:1.3: The "generic" usb-serial driver is only for testing and one-off prototypes.
Nov 10 17:42:28 raspberrypi kernel: [ 330.183419] usbserial_generic 1-1.1:1.3: Tell linux-usb@vger.kernel.org to add your device to a proper driver.
Nov 10 17:42:28 raspberrypi kernel: [ 330.183437] usbserial_generic 1-1.1:1.3: generic converter detected
Nov 10 17:42:28 raspberrypi kernel: [ 330.183790] usb 1-1.1: generic converter now attached to ttyUSB1
Nov 10 17:42:28 raspberrypi kernel: [ 330.184051] usbserial_generic 1-1.1:1.4: The "generic" usb-serial driver is only for testing and one-off prototypes.
Nov 10 17:42:28 raspberrypi kernel: [ 330.184066] usbserial_generic 1-1.1:1.4: Tell linux-usb@vger.kernel.org to add your device to a proper driver.
Nov 10 17:42:28 raspberrypi kernel: [ 330.184080] usbserial_generic 1-1.1:1.4: generic converter detected
Nov 10 17:42:28 raspberrypi kernel: [ 330.184405] usb 1-1.1: generic converter now attached to ttyUSB2
Nov 10 17:42:28 raspberrypi kernel: [ 330.184632] usbserial_generic 1-1.1:1.5: The "generic" usb-serial driver is only for testing and one-off prototypes.
Nov 10 17:42:28 raspberrypi kernel: [ 330.184645] usbserial_generic 1-1.1:1.5: Tell linux-usb@vger.kernel.org to add your device to a proper driver.
Nov 10 17:42:28 raspberrypi kernel: [ 330.184659] usbserial_generic 1-1.1:1.5: generic converter detected
Nov 10 17:42:28 raspberrypi kernel: [ 330.184975] usb 1-1.1: generic converter now attached to ttyUSB3
Nov 10 17:42:28 raspberrypi kernel: [ 330.223042] usbcore: registered new interface driver cdc_ether
Nov 10 17:42:28 raspberrypi kernel: [ 330.227659] usbcore: registered new interface driver cdc_ncm
Nov 10 17:42:28 raspberrypi kernel: [ 330.231389] usbcore: registered new interface driver cdc_wdm
Nov 10 17:42:28 raspberrypi kernel: [ 330.255866] cdc_mbim 1-1.1:1.0: cdc-wdm0: USB WDM device
Nov 10 17:42:28 raspberrypi kernel: [ 330.256872] cdc_mbim 1-1.1:1.0 wwan0: register 'cdc_mbim' at usb-0000:01:00.0-1.1, CDC MBIM, d2:c7:27:8d:79:d2
Nov 10 17:42:28 raspberrypi kernel: [ 330.257308] usbcore: registered new interface driver cdc_mbim
Nov 10 17:42:29 raspberrypi mtp-probe: checking bus 1, device 4: "/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1"
Nov 10 17:42:29 raspberrypi dhcpcd[647]: wwan0: waiting for carrier
Nov 10 17:42:29 raspberrypi dhcpcd[647]: wwan0: carrier acquired
Nov 10 17:42:29 raspberrypi kernel: [ 330.276229] 8021q: adding VLAN 0 to HW filter on device wwan0
Nov 10 17:42:29 raspberrypi mtp-probe: bus: 1, device: 4 was not an MTP device
Nov 10 17:42:29 raspberrypi dhcpcd[647]: wwan0: IAID 27:8d:79:d2
Nov 10 17:42:29 raspberrypi dhcpcd[647]: wwan0: adding address fe80::db72:7251:163d:fde8
Nov 10 17:42:29 raspberrypi avahi-daemon[408]: Joining mDNS multicast group on interface wwan0.IPv6 with address fe80::db72:7251:163d:fde8.
Nov 10 17:42:29 raspberrypi avahi-daemon[408]: New relevant interface wwan0.IPv6 for mDNS.
Nov 10 17:42:29 raspberrypi avahi-daemon[408]: Registering new address record for fe80::db72:7251:163d:fde8 on wwan0.*.
Nov 10 17:42:29 raspberrypi systemd-udevd[721]: Using default interface naming scheme 'v247'.
Nov 10 17:42:29 raspberrypi systemd[1]: Unnecessary job for /sys/subsystem/net/devices/wwan0 was removed.
Nov 10 17:42:29 raspberrypi systemd[1]: Started ifup for wwan0.
Nov 10 17:42:29 raspberrypi systemd[1]: Unnecessary job for /sys/subsystem/net/devices/wwan0 was removed.
Nov 10 17:42:29 raspberrypi dhcpcd[647]: wwan0: soliciting an IPv6 router
Nov 10 17:42:29 raspberrypi dhcpcd[647]: wwan0: soliciting a DHCP lease
Nov 10 17:42:29 raspberrypi kernel: [ 331.135437] scsi 0:0:0:0: Direct-Access HSPA_USB SCSI CD-ROM 622 PQ: 0 ANSI: 0 CCS
Nov 10 17:42:29 raspberrypi kernel: [ 331.158479] sd 0:0:0:0: [sda] 0 512-byte logical blocks: (0 B/0 B)
Nov 10 17:42:29 raspberrypi kernel: [ 331.158495] sd 0:0:0:0: [sda] 0-byte physical blocks
Nov 10 17:42:29 raspberrypi kernel: [ 331.158906] sd 0:0:0:0: [sda] Test WP failed, assume Write Enabled
Nov 10 17:42:29 raspberrypi kernel: [ 331.159281] sd 0:0:0:0: [sda] Asking for cache data failed
Nov 10 17:42:29 raspberrypi kernel: [ 331.159288] sd 0:0:0:0: [sda] Assuming drive cache: write through
Nov 10 17:42:29 raspberrypi kernel: [ 331.160060] sd 0:0:0:0: Attached scsi generic sg0 type 0
Nov 10 17:42:29 raspberrypi kernel: [ 331.183158] sd 0:0:0:0: [sda] Attached SCSI removable disk
Nov 10 17:42:34 raspberrypi sh[860]: wwan0=wwan0
Nov 10 17:42:34 raspberrypi dhcpcd[647]: wwan0: probing for an IPv4LL address
Nov 10 17:42:34 raspberrypi kernel: [ 336.201139] PPP generic driver version 2.4.2
Nov 10 17:42:34 raspberrypi pppd[862]: pppd 2.4.9 started by root, uid 0
Nov 10 17:42:34 raspberrypi pppd[862]: Using interface ppp0
Nov 10 17:42:34 raspberrypi pppd[862]: Connect: ppp0 <--> /dev/ttyUSB0
Nov 10 17:42:34 raspberrypi pppd[862]: PAP authentication succeeded
Nov 10 17:42:34 raspberrypi kernel: [ 336.223453] PPP BSD Compression module registered
Nov 10 17:42:34 raspberrypi kernel: [ 336.229833] PPP Deflate Compression module registered
Nov 10 17:42:34 raspberrypi pppd[862]: LCP terminated by peer
Nov 10 17:42:37 raspberrypi pppd[862]: Connection terminated.
Nov 10 17:42:38 raspberrypi pppd[862]: Modem hangup
Nov 10 17:42:38 raspberrypi pppd[862]: Exit.
Nov 10 17:42:40 raspberrypi dhcpcd[647]: wwan0: using IPv4LL address 169.254.243.78
Nov 10 17:42:40 raspberrypi avahi-daemon[408]: Joining mDNS multicast group on interface wwan0.IPv4 with address 169.254.243.78.
Nov 10 17:42:40 raspberrypi avahi-daemon[408]: New relevant interface wwan0.IPv4 for mDNS.
Nov 10 17:42:40 raspberrypi avahi-daemon[408]: Registering new address record for 169.254.243.78 on wwan0.IPv4.
Nov 10 17:42:40 raspberrypi dhcpcd[647]: wwan0: adding route to 169.254.0.0/16
Nov 10 17:42:41 raspberrypi dhcpcd[647]: wwan0: no IPv6 Routers available
Nov 10 17:42:43 raspberrypi pppd[879]: pppd 2.4.9 started by root, uid 0
Nov 10 17:42:43 raspberrypi pppd[879]: Using interface ppp0
Nov 10 17:42:43 raspberrypi pppd[879]: Connect: ppp0 <--> /dev/ttyUSB0
Nov 10 17:42:43 raspberrypi pppd[879]: PAP authentication succeeded
Nov 10 17:42:46 raspberrypi pppd[879]: Could not determine remote IP address: defaulting to 10.64.64.64
Nov 10 17:42:46 raspberrypi pppd[879]: replacing old default route to eth0 [192.168.0.254]
Nov 10 17:42:46 raspberrypi pppd[879]: del old default route ioctl(SIOCDELRT): No such process(3)
Nov 10 17:42:46 raspberrypi pppd[879]: local IP address 10.132.50.79
Nov 10 17:42:46 raspberrypi pppd[879]: remote IP address 10.64.64.64
Nov 10 17:42:46 raspberrypi pppd[879]: primary DNS address 100.127.0.53
Nov 10 17:42:46 raspberrypi pppd[879]: secondary DNS address 100.127.1.53
Nov 10 17:42:46 raspberrypi avahi-daemon[408]: Got SIGHUP, reloading.
Nov 10 17:42:46 raspberrypi avahi-daemon[408]: No service file found in /etc/avahi/services.
近いうちに setup_air.sh に対応修正が入るのではないかと思いますが、今のところ上記の対応が必要です。