1

Temat: OpenWRT w LXC & przekazanie modemu USB & strace na procesie połączenia

Panowie,

potrzebuję pomocy ze zdiagnozowaniem braku w mojej konfiguracji LXC.

Pacjent: OpenWRT na LXC na hoście z Proxmoxem.

Problem:

Fri Feb 16 17:38:12 2024 daemon.notice netifd: Interface 'T_Mobile' is setting up now
Fri Feb 16 17:38:12 2024 daemon.notice netifd: T_Mobile (925): The interface could not be found.
Fri Feb 16 17:38:12 2024 daemon.notice netifd: T_Mobile (1007): Stopping network T_Mobile
Fri Feb 16 17:38:12 2024 daemon.notice netifd: T_Mobile (1007): Command failed: ubus call network.interface notify_proto { "action": 0, "link-up": false, "keep": false, "interface": "T_Mobile" } (Permission denied)
Fri Feb 16 17:38:12 2024 daemon.notice netifd: Interface 'T_Mobile' is now down

Moja konfiguracja kontenera na Proxmoxie:

arch: amd64
cores: 2
features: mknod=1
hostname: openwrt
memory: 1024
net0: name=eth0,bridge=vmbr0,hwaddr=BC:24:11:0E:D1:B1,type=veth
ostype: unmanaged
rootfs: local-lvm:vm-666-disk-0,size=8G
swap: 0
tty: 1
unprivileged: 1
lxc.idmap: u 0 100000 65536
lxc.idmap: g 0 100000 65536
lxc.mount.auto: proc:mixed sys:rw cgroup:mixed
lxc.cgroup2.devices.allow: c 180:* rwm
lxc.cgroup2.devices.allow: c 188:* rwm
lxc.mount.entry: /dev/bus/usb dev/bus/usb none bind,optional,create=dir
lxc.mount.entry: /dev/ttyUSB0 dev/ttyUSB0 none bind,optional,create=file
lxc.mount.entry: /dev/ttyUSB1 dev/ttyUSB1 none bind,optional,create=file
lxc.mount.entry: /dev/ttyUSB2 dev/ttyUSB2 none bind,optional,create=file
lxc.mount.entry: /dev/ttyUSB3 dev/ttyUSB3 none bind,optional,create=file
lxc.mount.entry: /dev/cdc-wdm0 dev/cdc-wdm0 none bind,optional,create=file
lxc.mount.entry: /sys/devices/pci0000:00/0000:00:13.0/ sys/devices/pci0000:00/0000:00:13.0/ none bind,optional,create=dir
lxc.net.1.name: wwan0
lxc.net.1.type: phys
lxc.net.1.link: wwan0

Napisałem na forum linuxcontainers, odpisał Stephane Graber himself (https://ubuntu.com/blog/author/stgraber) ale nie mam pojęcia jak się zabrać do stracowania procesu odpowiedzialnego za sieć w OpenWRT, bo nigdy nie zestawiałem połaczenia ręcznie, tylko przez uci/luci.

https://discuss.linuxcontainers.org/t/h … iner/19090

Jakbyście mogli zasugerować jak się za to zabrać, to będę wdzięczny.

2

Odp: OpenWRT w LXC & przekazanie modemu USB & strace na procesie połączenia

Pokaż

uci show network.T_Mobile

PS. Jeżeli to qmi to /sys/class/usbmisc musi być także dostępny.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3 (edytowany przez rhqq 2024-02-20 19:18:31)

Odp: OpenWRT w LXC & przekazanie modemu USB & strace na procesie połączenia

Cezary napisał/a:

Pokaż

uci show network.T_Mobile

PS. Jeżeli to qmi to /sys/class/usbmisc musi być także dostępny.

root@openwrt:/# uci show network.T_Mobile
network.T_Mobile=interface
network.T_Mobile.proto='qmi'
network.T_Mobile.device='/dev/cdc-wdm0'
network.T_Mobile.apn='internet'
network.T_Mobile.auth='none'
network.T_Mobile.pdptype='ipv4'

dodałem do LXC też `/sys/class/usbmisc` ale wciąż:

root@openwrt:~# logread | grep -i t_mo
Tue Feb 20 18:14:09 2024 daemon.notice netifd: Interface 'T_Mobile' is setting up now
Tue Feb 20 18:14:09 2024 daemon.notice netifd: T_Mobile (898): The interface could not be found.
Tue Feb 20 18:14:09 2024 daemon.notice netifd: T_Mobile (970): Stopping network T_Mobile
Tue Feb 20 18:14:09 2024 daemon.notice netifd: T_Mobile (970): Command failed: ubus call network.interface notify_proto { "action": 0, "link-up": false, "keep": false, "interface": "T_Mobile" } (Permission denied)
Tue Feb 20 18:14:09 2024 daemon.notice netifd: Interface 'T_Mobile' is now down

a w luci mam "Error: Network device is not present"

4

Odp: OpenWRT w LXC & przekazanie modemu USB & strace na procesie połączenia

Okej. na hoście proxmoxa mam:

root@swarog:/sys/class/usbmisc/cdc-wdm0# ls -alh
total 0
drwxr-xr-x 3 root root    0 Feb 20 18:10 .
drwxr-xr-x 3 root root    0 Feb 20 18:10 ..
-r--r--r-- 1 root root 4.0K Feb 20 18:14 dev
lrwxrwxrwx 1 root root    0 Feb 20 18:14 device -> ../../../2-1.2:1.4
drwxr-xr-x 2 root root    0 Feb 20 18:19 power
lrwxrwxrwx 1 root root    0 Feb 20 18:19 subsystem -> ../../../../../../../../../class/usbmisc
-rw-r--r-- 1 root root 4.0K Feb 20 18:10 uevent

ale wewnątrz LXC już:

root@openwrt:/sys/class/usbmisc/cdc-wdm0# ls -alh
drwxr-xr-x    3 nobody   nogroup        0 Feb 20 18:10 .
drwxr-xr-x    3 nobody   nogroup        0 Feb 20 18:10 ..
-r--r--r--    1 nobody   nogroup     4.0K Feb 20 18:14 dev
lrwxrwxrwx    1 nobody   nogroup        0 Feb 20 18:14 device -> ../../../2-1.2:1.4
drwxr-xr-x    2 nobody   nogroup        0 Feb 20 18:19 power
lrwxrwxrwx    1 nobody   nogroup        0 Feb 20 18:19 subsystem -> ../../../../../../../../../class/usbmisc
-rw-r--r--    1 nobody   nogroup     4.0K Feb 20 18:10 uevent

ależ to podłe. nie wiem czemu zrzuca ownership

5

Odp: OpenWRT w LXC & przekazanie modemu USB & strace na procesie połączenia

Musisz doprowadzić to do jednolitej postaci, bo openwrt przez readlinka

devpath="$(readlink -f /sys/class/usbmisc/$devname/device/)"

czyta odpowiednie interfjesy. bez tego będzie się cały czas buntował że czegoś nie ma.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

6

Odp: OpenWRT w LXC & przekazanie modemu USB & strace na procesie połączenia

Cezary napisał/a:

Musisz doprowadzić to do jednolitej postaci, bo openwrt przez readlinka

devpath="$(readlink -f /sys/class/usbmisc/$devname/device/)"

czyta odpowiednie interfjesy. bez tego będzie się cały czas buntował że czegoś nie ma.

wszystko jest, co więcej, nie ma tam ani jednego pliku/"pliku" który nie ma o+r, więc wszystko powinien móc czytać - pytanie czy on tam musi pisać?

root@openwrt:~# readlink -f /sys/class/usbmisc/cdc-wdm0/device
/sys/devices/pci0000:00/0000:00:13.0/usb2/2-1/2-1.2/2-1.2:1.4
root@openwrt:~# cd /sys/devices/pci0000:00/0000:00:13.0/usb2/2-1/2-1.2/2-1.2:1.4
root@openwrt:/sys/devices/pci0000:00/0000:00:13.0/usb2/2-1/2-1.2/2-1.2:1.4# ls -lah
drwxr-xr-x    8 nobody   nogroup        0 Feb 19 22:47 .
drwxr-xr-x    9 nobody   nogroup        0 Feb 19 22:47 ..
-rw-r--r--    1 nobody   nogroup     4.0K Feb 20 18:42 authorized
-r--r--r--    1 nobody   nogroup     4.0K Feb 20 18:42 bAlternateSetting
-r--r--r--    1 nobody   nogroup     4.0K Feb 19 22:47 bInterfaceClass
-r--r--r--    1 nobody   nogroup     4.0K Feb 19 22:47 bInterfaceNumber
-r--r--r--    1 nobody   nogroup     4.0K Feb 20 18:42 bInterfaceProtocol
-r--r--r--    1 nobody   nogroup     4.0K Feb 20 18:42 bInterfaceSubClass
-r--r--r--    1 nobody   nogroup     4.0K Feb 20 18:42 bNumEndpoints
lrwxrwxrwx    1 nobody   nogroup        0 Feb 20 18:10 driver -> ../../../../../../../bus/usb/drivers/qmi_wwan
drwxr-xr-x    3 nobody   nogroup        0 Feb 20 18:42 ep_0f
drwxr-xr-x    3 nobody   nogroup        0 Feb 20 18:42 ep_88
drwxr-xr-x    3 nobody   nogroup        0 Feb 20 18:42 ep_8e
-r--r--r--    1 nobody   nogroup     4.0K Feb 20 18:42 interface
-r--r--r--    1 nobody   nogroup     4.0K Feb 20 18:42 modalias
drwxr-xr-x    3 nobody   nogroup        0 Feb 20 18:10 net
drwxr-xr-x    2 nobody   nogroup        0 Feb 20 18:42 power
lrwxrwxrwx    1 nobody   nogroup        0 Feb 19 22:47 subsystem -> ../../../../../../../bus/usb
-r--r--r--    1 nobody   nogroup     4.0K Feb 20 18:42 supports_autosuspend
-rw-r--r--    1 nobody   nogroup     4.0K Feb 19 22:47 uevent
drwxr-xr-x    3 nobody   nogroup        0 Feb 20 18:10 usbmisc

7

Odp: OpenWRT w LXC & przekazanie modemu USB & strace na procesie połączenia

On czyta to tylko że znaleźć interfejsy.

    [ -n "$device" ] || {
        echo "No control device specified"
        proto_notify_error "$interface" NO_DEVICE
        proto_set_available "$interface" 0
        return 1
    }

    [ -n "$delay" ] && sleep "$delay"

    device="$(readlink -f $device)"
    [ -c "$device" ] || {
        echo "The specified control device does not exist"
        proto_notify_error "$interface" NO_DEVICE
        proto_set_available "$interface" 0
        return 1
    }

    devname="$(basename "$device")"
    devpath="$(readlink -f /sys/class/usbmisc/$devname/device/)"
    ifname="$( ls "$devpath"/net )"
    [ -n "$ifname" ] || {
        echo "The interface could not be found."
        proto_notify_error "$interface" NO_IFACE
        proto_set_available "$interface" 0
        return 1
    }
Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

8 (edytowany przez rhqq 2024-02-20 19:50:31)

Odp: OpenWRT w LXC & przekazanie modemu USB & strace na procesie połączenia

No to ten element działa. pod luci widzę /dev/cdc-wdm0, plug od Ice4 do wydłubywania danych z modemu też działa. pytanie co jest kolejne? jak ręcznie zawołać zestawianie interfejsów? jest do tego jakiś dodatkowy debug? głupi set -x ? cokolwiek?

9

Odp: OpenWRT w LXC & przekazanie modemu USB & strace na procesie połączenia

Co teraz zwraca ifstatus T_Mobile ?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

10 (edytowany przez rhqq 2024-02-20 19:51:18)

Odp: OpenWRT w LXC & przekazanie modemu USB & strace na procesie połączenia

Cezary napisał/a:

Co teraz zwraca ifstatus T_Mobile ?

root@openwrt:~# ifstatus T_Mobile
{
    "up": false,
    "pending": false,
    "available": false,
    "autostart": true,
    "dynamic": false,
    "proto": "qmi",
    "data": {
        
    },
    "errors": [
        {
            "subsystem": "interface",
            "code": "NO_DEVICE"
        }
    ]
}

11

Odp: OpenWRT w LXC & przekazanie modemu USB & strace na procesie połączenia

No to device="$(readlink -f $device)" nie działa lub nie zwraca tego co trzeba.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

12

Odp: OpenWRT w LXC & przekazanie modemu USB & strace na procesie połączenia

A co jest w zmiennej $device? bo tego nie ma w Twoim kodzie

13

Odp: OpenWRT w LXC & przekazanie modemu USB & strace na procesie połączenia

/dev/cdc-wdm0. To coś to w /lib/netifd/proto/qmi.sh, to robi za rozpoznawanie i nawiązywanie połączenia.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

14

Odp: OpenWRT w LXC & przekazanie modemu USB & strace na procesie połączenia

O, dzieki, poczytam skrypt, zobaczę w którym momencie spada z rowerka