저는 Yocto Dunfell의 Linux와 ModemManager 및 NetworkManager를 사용하여 임베디드 시스템에서 USB 모뎀을 작동시키려고 합니다.
아래와 같이 네트워크의 모뎀에 연결할 수는 있지만 연결을 생성하고 인터페이스를 열 수는 없습니다.
다음은 다양한 명령의 출력입니다.
root@rpi-cm3:/# mmcli -L
/org/freedesktop/ModemManager1/Modem/2 [Telit] LE910-EU V2
root@rpi-cm3:/# mmcli -m 2
--------------------------------
General | dbus path: /org/freedesktop/ModemManager1/Modem/2
| device id: d522cda0f436245296a7a9e47c981e9601af3bc7
--------------------------------
Hardware | manufacturer: Telit
| model: LE910-EU V2
| firmware revision: 20.00.402
| supported: gsm-umts, lte
| current: gsm-umts, lte
| equipment id: 351622072422039
--------------------------------
System | device: /sys/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5
| drivers: cdc_acm, cdc_ncm
| plugin: Telit
| primary port: ttyACM0
| ports: ttyACM1 (unknown), ttyACM3 (at), ttyACM5 (unknown),
| wwan0 (net), ttyACM0 (at), ttyACM4 (unknown), ttyACM2 (unknown)
--------------------------------
Status | state: registered
| power state: on
| access tech: umts
| signal quality: 57% (recent)
--------------------------------
Modes | supported: allowed: 2g; preferred: none
| allowed: 3g; preferred: none
| allowed: 2g, 3g; preferred: none
| allowed: 4g; preferred: none
| allowed: 2g, 4g; preferred: none
| allowed: 3g, 4g; preferred: none
| allowed: 2g, 3g, 4g; preferred: none
| current: allowed: 2g, 3g, 4g; preferred: none
--------------------------------
Bands | supported: egsm, dcs, utran-1, utran-8, eutran-1, eutran-3, eutran-7,
| eutran-8, eutran-20
| current: egsm, dcs, utran-1, eutran-1
--------------------------------
IP | supported: ipv4, ipv6, ipv4v6
--------------------------------
3GPP | imei: 351622072422039
| registration: home
--------------------------------
3GPP EPS | ue mode of operation: csps-2
--------------------------------
SIM | dbus path: /org/freedesktop/ModemManager1/SIM/2
--------------------------------
Bearer | dbus path: /org/freedesktop/ModemManager1/Bearer/1
root@rpi-cm3:/# mmcli -b 1
------------------------
General | dbus path: /org/freedesktop/ModemManager1/Bearer/1
| type: default
------------------------
Status | connected: no
| suspended: no
| ip timeout: 20
------------------------
Properties | apn: gprs.swisscom.ch
| roaming: allowed
root@rpi-cm3:/# nmcli device show
GENERAL.DEVICE: wwan0
GENERAL.TYPE: wwan
GENERAL.HWADDR: 00:00:11:12:13:14
GENERAL.MTU: 1500
GENERAL.STATE: 20 (unavailable)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
GENERAL.DEVICE: eth0
GENERAL.TYPE: ethernet
GENERAL.HWADDR: B8:27:EB:F7:A1:B3
GENERAL.MTU: 1500
GENERAL.STATE: 10 (unmanaged)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
WIRED-PROPERTIES.CARRIER: off
IP4.GATEWAY: --
IP6.GATEWAY: --
GENERAL.DEVICE: lo
GENERAL.TYPE: loopback
GENERAL.HWADDR: 00:00:00:00:00:00
GENERAL.MTU: 65536
GENERAL.STATE: 10 (unmanaged)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
IP4.ADDRESS[1]: 127.0.0.1/8
IP4.GATEWAY: --
IP6.ADDRESS[1]: ::1/128
IP6.GATEWAY: --
root@rpi-cm3:/# nmcli c show
NAME UUID TYPE DEVICE
modem e7482093-2d4c-47fa-b52b-e6e282902453 gsm --
root@rpi-cm3:/# nmcli c up modem
Error: Connection activation failed: No suitable device found for this connection (device lo not available because device is strictly unmanaged).
여기서 멈춰서 연결을 만드는 방법에 대한 정보를 찾을 수 없습니다.
이상한 점은 WWAN 인터페이스를 자동으로 관리하도록 NetworkManager를 구성할 수 없다는 것입니다. 이를 강제하기 위해 다음 명령을 추가했습니다.
nmcli dev set wwan0 managed yes
당신의 도움을 주셔서 감사합니다
감사합니다
답변1
흥미롭게도 저는 오늘 저녁에도 비슷한 구성을 사용하고 있습니다(Telit LE910 NA가 있는 am335x 기반 임베디드 시스템에서 yocto dunfell 사용). 아직 cdc_ncm(wwan0) 컨텍스트를 작동시킬 수 없지만 ppp를 사용하여 네트워크를 시작할 수 있습니다.
nmcli c add type gsm ifname '*' con-name {connectionname} apn {apnname}
이를 위해서는 네트워크 관리자에 ppp 지원을 추가해야 한다는 점에 유의하십시오.기본 패키지에 없음. 그러기 위해서는 보장이 필요합니다.
만들다 networkmanager_%.bbappend
:
# Based on https://github.com/digi-embedded/meta-digi/blob/morty/meta-digi-dey/recipes-connectivity/networkmanager/networkmanager_%25.bbappend
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
SRC_URI += " \
file://att.nmconnection \
"
# Adjust other compile time options
PACKAGECONFIG_append = " gnutls modemmanager ppp"
do_install_append() {
install -m 0600 ${WORKDIR}/att.nmconnection ${D}${sysconfdir}/NetworkManager/system-connections/
}
그런 다음 연결 정보를 예를 들어 att.nmconnection
. uuid를 새 uuid로 바꾸고 apn 이름을 입력합니다.
[connection]
id=att
uuid=88cd70ea-6501-11eb-ae93-0242ac130002
type=gsm
permissions=
autoconnect=true
[gsm]
apn=NXTGENPHONE
[ipv4]
dns-search=
method=auto
[proxy]
부팅 시 모뎀이 보이면 ppp를 통해 자동으로 연결되어야 합니다.
ifconfig ppp0
ppp0 Link encap:Point-to-Point Protocol
inet addr:10.55.27.182 P-t-P:10.55.27.182 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1428 Metric:1
RX packets:65110 errors:0 dropped:0 overruns:0 frame:0
TX packets:24635 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:53163224 (50.7 MiB) TX bytes:1670291 (1.5 MiB)
또한 cdc_ncm 인터페이스를 사용하고 싶지만 아직 작동하게 할 수 없습니다. 드라이버는 괜찮은데 모뎀에 제대로 연결이 안되고 통신사에서 주소를 못얻네요.
ifconfig wwan0
wwan0 Link encap:Ethernet HWaddr 00:00:11:12:13:14
BROADCAST NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
어쩌면 우리는 이 문제를 함께 해결할 수 있을 것 같아요.