Интернет с 4G-модемом (LTE)

Сейчас второй раз выключил питание, подождал около минуты, потом включил питание и usb0 не поднялся, файл сново занят, лампа GSM мигает.

Мне кажется висит wb-gsm restart_if_broken, так как в последнем случае есть только /sbin/ifup -a --read-environment и скорее всего этот процесс запустил процесс /bin/sh -c wb-gsm restart_if_broken, и последний висит бесконечно.

Запустил wb-gsm restart_if_broken отдельно, сработал как положено.

Но тот который был запущен /sbin/ifup -a --read-environment, все ещё висит.

В итоге я написал небольшую программу https://github.com/mitya-borodin/butler/blob/3b1bce451fe8ede4237d9d8518da338370698c6e/wirenboard/src/infrastructure/external-resource-adapters/ifup.ts#L13-L14 для запуска команд и контроля наличия интернета.

И осталась единственная проблема, почему-то когда эта программа запускается через крон при старте системы зависает wb-gsm restart_if_broken, но если потом запустить из консоли эту программу, то все заводится как положено, может быть действительно все время проблема была в wb-gsm ?

Вот этот случай, моя прога запускается кроном по @reboot, и после запуска ждет 2 минуты.

После чего запускает процесс wb-gsm restart_if_broken, и этот процесс зависает :smile:

Проще говоря, мне нужно, чтобы wb-gsm restart_if_broken гарантированно запускался после off/on питания, команды reboot, команды shutdown -P. Почему он застревает не понятно.

Воспроизвел, копаю к причинам.

1 лайк

Добрый день. В 2207 релизе воспроизводится?

Я не проверял, так как решил при помощи javascript кода запущенного на nodejs, и смонтировал щит.

Как буду делать код для управления отопления, проверю.

у меня тоже подобные проблемы… есть решение?

root@wirenboard-AV3676B6:~# cat /etc/wb-fw-version
202207071506

Как выглядят? Логи?

выглядит это так, что интерфейс usb0 не поднимается после перезагрузки.
какие логи вам предоставить?

root@wirenboard-AV3676B6:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
   pre-up wb-set-mac
   hostname WirenBoard

allow-hotplug eth1
iface eth1 inet dhcp
   pre-up wb-set-mac
   hostname WirenBoard

auto usb0
allow-hotplug usb0
iface usb0 inet dhcp
  pre-up wb-gsm restart_if_broken
  pre-up sleep 10

Пользуйтесь для текстов цитированием (```) в начале и в конце текста, иначе движок форума форматирование ест.
Логи - именно включения модема, выдачи адреса.
И, кстати, добавьте перед самим включением паузу на 5 секунд.

вот кусок dmesg

[ 56.678947] 21f0000.serial: ttymxc3 at MMIO 0x21f0000 (irq = 225, base_baud = 5000000) is a IMX
[ 58.561148] 2288000.serial: ttymxc7 at MMIO 0x2288000 (irq = 226, base_baud = 5000000) is a IMX
[ 59.084568] gpio-19 (wbmz2_i2c_0): enforced open drain please flag it properly in DT/ACPI DSDT/board file
[ 59.120143] gpio-18 (wbmz2_i2c_0): enforced open drain please flag it properly in DT/ACPI DSDT/board file
[ 59.699462] i2c-gpio wbmz2_i2c_0: using lines 19 (SDA) and 18 (SCL)
[ 118.260367] usb 2-1.3: new high-speed USB device number 4 using ci_hdrc
[ 118.461195] usb 2-1.3: New USB device found, idVendor=1286, idProduct=812a, bcdDevice= 0.00
[ 118.469614] usb 2-1.3: New USB device strings: Mfr=3, Product=2, SerialNumber=0
[ 118.477032] usb 2-1.3: Product: WUKONG
[ 118.480817] usb 2-1.3: Manufacturer: MARVELL
[ 118.729756] usb 2-1.3: USB disconnect, device number 4
[ 124.910383] usb 2-1.3: new high-speed USB device number 5 using ci_hdrc
[ 125.090913] usb 2-1.3: config 1 has an invalid interface number: 5 but max is 4
[ 125.098305] usb 2-1.3: config 1 has no interface number 3
[ 125.204353] usb 2-1.3: New USB device found, idVendor=1e0e, idProduct=9011, bcdDevice= 1.00
[ 125.212810] usb 2-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 125.220150] usb 2-1.3: Product: Mobile Composite Device Bus
[ 125.225851] usb 2-1.3: Manufacturer: Marvell
[ 125.230130] usb 2-1.3: SerialNumber: 200806006809080000
[ 125.509710] usbcore: registered new interface driver cdc_ether
[ 125.605412] usbcore: registered new interface driver option
[ 125.621718] rndis_host 2-1.3:1.0 usb0: register ‘rndis_host’ at usb-ci_hdrc.1-1.3, RNDIS device, d6:44:1e:ee:25:00
[ 125.660440] usbserial: USB Serial support registered for GSM modem (1-port)
[ 125.693659] usbcore: registered new interface driver rndis_host
[ 125.728986] option 2-1.3:1.2: GSM modem (1-port) converter detected
[ 125.791972] usb 2-1.3: GSM modem (1-port) converter now attached to ttyUSB0
[ 125.803539] option 2-1.3:1.4: GSM modem (1-port) converter detected
[ 125.884866] usb 2-1.3: GSM modem (1-port) converter now attached to ttyUSB1
[ 125.950679] option 2-1.3:1.5: GSM modem (1-port) converter detected
[ 126.015335] usb 2-1.3: GSM modem (1-port) converter now attached to ttyUSB2

Как и куда мне добавить паузу на 5 секунд?

root@wirenboard-AV3676B6:~# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether 80:34:28:11:d5:76 brd ff:ff:ff:ff:ff:ff
3: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether 80:34:28:12:2a:c0 brd ff:ff:ff:ff:ff:ff
4: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/sit 0.0.0.0 brd 0.0.0.0
5: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether f0:c8:14:48:5c:2e brd ff:ff:ff:ff:ff:ff
6: wlan1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether f2:c8:14:48:5c:2e brd ff:ff:ff:ff:ff:ff
7: usb0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether d6:44:1e:ee:25:00 brd ff:ff:ff:ff:ff:ff

root@wirenboard-AV3676B6:~# ifup usb0
ifup: waiting for lock on /run/network/ifstate.usb0
^C
root@wirenboard-AV3676B6:~# fuser /run/network/ifstate.usb0
/run/network/ifstate.usb0:   438  5685

root@wirenboard-AV3676B6:~# ps axl |grep 438
4     0   438     1  20   0   1392   944 wait   Ss   ?          0:00 /sbin/ifup -a --read-environment
0     0  5012   438  20   0   1428   952 wait   S    ?          0:00 /bin/sh -c wb-gsm restart_if_broken
1   112 14930  1153  20   0 194384 11280 epoll_ Ss   ?          0:00 postgres: 9.6/main: sensorclient sensorclient 127.0.0.1(50600) idle
1   112 14995  1153  20   0 194388 11284 epoll_ Ss   ?          0:00 postgres: 9.6/main: sensorclient sensorclient 127.0.0.1(50602) idle
1   112 15000  1153  20   0 194384 11280 epoll_ Ss   ?          0:00 postgres: 9.6/main: sensorclient sensorclient 127.0.0.1(50604) idle
1   112 15001  1153  20   0 194384 11280 epoll_ Ss   ?          0:00 postgres: 9.6/main: sensorclient sensorclient 127.0.0.1(50606) idle
1   112 15016  1153  20   0 194384 11280 epoll_ Ss   ?          0:00 postgres: 9.6/main: sensorclient sensorclient 127.0.0.1(50608) idle
0     0 21261  8355  20   0   5372  1688 pipe_r S+   ttymxc0    0:00 grep 438

root@wirenboard-AV3676B6:~# ps axl |grep gsm
0     0  5012   438  20   0   1428   952 wait   S    ?          0:00 /bin/sh -c wb-gsm restart_if_broken
0     0  5013  5012  20   0   3200  2504 pipe_r S    ?          0:00 /bin/bash /usr/bin/wb-gsm restart_if_broken
1     0  5806  5013  20   0   3200  1764 pipe_r S    ?          0:00 /bin/bash /usr/bin/wb-gsm restart_if_broken
1     0  5856  5806  20   0   3200  1764 wait   S    ?          0:00 /bin/bash /usr/bin/wb-gsm restart_if_broken
0     0 21477  8355  20   0   5372  1668 pipe_r S+   ttymxc0    0:00 grep gsm

если убить процесс 438, то можно поднять usb0

root@wirenboard-AV3676B6:~# kill 438
root@wirenboard-AV3676B6:~# ifup usb0
ifup: interface usb0 already configured
root@wirenboard-AV3676B6:~# ifdown usb0
Internet Systems Consortium DHCP Client 4.3.5
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/usb0/d6:44:1e:ee:25:00
Sending on   LPF/usb0/d6:44:1e:ee:25:00
Sending on   Socket/fallback
DHCPRELEASE on usb0 to 192.168.0.1 port 67
send_packet: Network is unreachable
send_packet: please consult README file regarding broadcast address.
dhclient.c:2733: Failed to send 300 byte long packet over fallback interface.
sudo: unable to resolve host wirenboard-AV3676B6: No such file or directory
root@wirenboard-AV3676B6:~#
root@wirenboard-AV3676B6:~# ifup usb0
Internet Systems Consortium DHCP Client 4.3.5
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/usb0/d6:44:1e:ee:25:00
Sending on   LPF/usb0/d6:44:1e:ee:25:00
Sending on   Socket/fallback
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 5
DHCPREQUEST of 192.168.0.100 on usb0 to 255.255.255.255 port 67
DHCPOFFER of 192.168.0.100 from 192.168.0.1
DHCPACK of 192.168.0.100 from 192.168.0.1
bound to 192.168.0.100 -- renewal in 35987 seconds.
sudo: unable to resolve host wirenboard-AV3676B6: No such file or directory
root@wirenboard-AV3676B6:~#

Перед вызовом

pre-up wb-gsm restart_if_broken

еще паузу

pre-up sleep 5

Да, гонка в процессе запуска. Думаю, с переходом на новую систему управления сетью (уже в тестинге) будет проще.

то есть конфиг должен выглядеть так?

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
   pre-up wb-set-mac
   hostname WirenBoard

allow-hotplug eth1
iface eth1 inet dhcp
   pre-up wb-set-mac
   hostname WirenBoard

auto usb0
allow-hotplug usb0
iface usb0 inet dhcp
  pre-up sleep 5
  pre-up wb-gsm restart_if_broken
  pre-up sleep 10

это не сработало

1 лайк

Попробуйте для теста еще больше поставить:

auto usb0
allow-hotplug usb0
iface usb0 inet dhcp
  pre-up sleep 30
  pre-up wb-gsm restart_if_broken
  pre-up sleep 10
1 лайк

На сколько я понял, заводского решения ещё нет ?