- Modify Kernel code a. drivers/usb/serial/option.coption.c
b. drivers/net/usb/qmi_wwan.c
c. drivers/net/usb/cdc_mbim.c
...
/* Telit LN920 */
{
USB_DEVICE_AND_INTERFACE_INFO(0x1bc7, 0x1061, USB_CLASS_COMM,
USB_CDC_SUBCLASS_MBIM,
USB_CDC_PROTO_NONE),
.driver_info =
(unsigned long)&cdc_mbim_info_avoid_altsetting_toggle,
},
/* Telit FN920 */
{
USB_DEVICE_AND_INTERFACE_INFO(0x1bc7, 0x10a0, USB_CLASS_COMM,
USB_CDC_SUBCLASS_MBIM,
USB_CDC_PROTO_NONE),
.driver_info =
(unsigned long)&cdc_mbim_info_avoid_altsetting_toggle,
},
...
- FN920C04 FW version
at#swpkgv
49.00.000-B015-P0V.060000
M0V.060000-B015
P0V.060000
A0V.000000-B015
- qmicli+udhcpc, 但系統無法取得IP
#write profile in /etc/qmi-network.conf
APN=INTERNET #CHT
APN_USER=
APN_PASS=
PROXY=yes
sudo echo -e "APN=$APN\n" \
"APN_USER=$APN_USER\n" \
"APN_PASS=$APN_PASS\n" \
"PROXY=$PROXY" >/etc/qmi-network.conf
$ qmicli -V
qmicli 1.32.0
$ sudo qmicli -d /dev/cdc-wdm0 --dms-set-operating-mode='online'
[/dev/cdc-wdm0] Operating mode set successfully
$ sudo ip link set wwan0 down
$ sudo echo 'Y' | sudo tee /sys/class/net/wwan0/qmi/raw_ip
Y
$ sudo ip link set $wwan0 up
$ sudo qmicli -d /dev/cdc-wdm0 --wda-get-data-format
[/dev/cdc-wdm0] Successfully got data format
QoS flow header: no
Link layer protocol: 'raw-ip'
Uplink data aggregation protocol: 'disabled'
Downlink data aggregation protocol: 'disabled'
NDP signature: '0'
Downlink data aggregation max datagrams: '0'
Downlink data aggregation max size: '0'
$ sudo qmi-network /dev/cdc-wdm0 start
Loading profile at /etc/qmi-network.conf...
APN: INTERNET
APN user: unset
APN password: unset
qmi-proxy: yes
IP_TYPE: unset
PROFILE: unset
Checking data format with 'qmicli -d /dev/cdc-wdm0 --wda-get-data-format --device-open-proxy'...
Device link layer protocol retrieved: raw-ip
Getting expected data format with 'qmicli -d /dev/cdc-wdm0 --get-expected-data-format'...
Expected link layer protocol retrieved: raw-ip
Device and kernel link layer protocol match: raw-ip
Starting network with 'qmicli -d /dev/cdc-wdm0 --wds-start-network=apn='INTERNET' --client-no-release-cid --device-open-proxy'...
Saving state at /tmp/qmi-network-state-cdc-wdm0... (CID: 11)
Saving state at /tmp/qmi-network-state-cdc-wdm0... (PDH: 3767611824)
Network started successfully
$ sudo qmicli -d /dev/cdc-wdm0 --wds-get-current-settings
[/dev/cdc-wdm0] Current settings retrieved:
IP Family: IPv4
IPv4 address: 25.116.123.173
IPv4 subnet mask: 255.255.255.252
IPv4 gateway address: 25.116.123.174
IPv4 primary DNS: 168.95.1.1
IPv4 secondary DNS: 168.95.192.1
MTU: 1500
Domains: none
$ sudo udhcpc -i wwan0
udhcpc: started, v1.30.1
udhcpc: sending discover
udhcpc: sending discover
udhcpc: sending discover
udhcpc: sending discover
...
...
...
- ModemManager 用ModemManager,也不順利,但又說simple connect state 有跑完
ifconfig沒有看到wwan0
$ journalctl -xe | grep ModemManager
or
$ journalctl -u ModemManager
Jan 15 05:42:31 tegra-ubuntu ModemManager[564]: <warn> [modem0] couldn't load supported assistance data types: LOC service: general failure
Jan 15 05:42:31 tegra-ubuntu ModemManager[564]: <info> [modem0] state changed (unknown -> disabled)
Jan 15 05:42:31 tegra-ubuntu ModemManager[564]: <info> [modem0] state changed (disabled -> enabling)
Jan 15 05:42:31 tegra-ubuntu ModemManager[564]: <info> [modem0] power state updated: on
Jan 15 05:42:32 tegra-ubuntu ModemManager[564]: <info> [modem0] 3GPP registration state changed (unknown -> idle)
Jan 15 05:42:32 tegra-ubuntu ModemManager[564]: <info> [modem0] state changed (enabling -> enabled)
Jan 15 05:42:32 tegra-ubuntu ModemManager[564]: <info> [modem0] 3GPP registration state changed (idle -> registering)
Jan 15 05:42:32 tegra-ubuntu ModemManager[564]: <info> [modem0] 3GPP registration state changed (registering -> home)
Jan 15 05:42:32 tegra-ubuntu ModemManager[564]: <info> [modem0] state changed (enabled -> registered)
Jan 15 05:43:26 tegra-ubuntu ModemManager[564]: <info> [modem0] simple connect started...
Jan 15 05:43:26 tegra-ubuntu ModemManager[564]: <info> [modem0] simple connect state (6/10): register
Jan 15 05:43:26 tegra-ubuntu ModemManager[564]: <info> [modem0] simple connect state (7/10): wait to get packet service state attached
Jan 15 05:43:26 tegra-ubuntu ModemManager[564]: <info> [modem0] simple connect state (8/10): bearer
Jan 15 05:43:26 tegra-ubuntu ModemManager[564]: <info> [modem0] simple connect state (9/10): connect
Jan 15 05:43:26 tegra-ubuntu ModemManager[564]: <info> [modem0] state changed (registered -> connecting)
Jan 15 05:43:26 tegra-ubuntu ModemManager[564]: <info> [modem0/bearer1] QMI IPv4 Settings:
Jan 15 05:43:26 tegra-ubuntu ModemManager[564]: <info> [modem0/bearer1] address: 10.235.147.133/30
Jan 15 05:43:26 tegra-ubuntu ModemManager[564]: <info> [modem0/bearer1] gateway: 10.235.147.134
Jan 15 05:43:26 tegra-ubuntu ModemManager[564]: <info> [modem0/bearer1] DNS #1: 168.95.1.1
Jan 15 05:43:26 tegra-ubuntu ModemManager[564]: <info> [modem0/bearer1] DNS #2: 168.95.192.1
Jan 15 05:43:26 tegra-ubuntu ModemManager[564]: <info> [modem0/bearer1] MTU: 1500
Jan 15 05:43:26 tegra-ubuntu ModemManager[564]: <error> mm_utils_bin2hexstr: assertion 'bin != NULL' failed
Jan 15 05:43:26 tegra-ubuntu ModemManager[564]: <info> [modem0/bearer1] couldn't start network: QMI protocol error (14): 'CallFailed'
Jan 15 05:43:26 tegra-ubuntu ModemManager[564]: <info> [modem0/bearer1] verbose call end reason (2,231): [internal] ip-version-mismatch
Jan 15 05:43:27 tegra-ubuntu ModemManager[564]: <info> [modem0/bearer1] reloading stats is supported by the device
Jan 15 05:43:27 tegra-ubuntu ModemManager[564]: <info> [modem0] state changed (connecting -> connected)
Jan 15 05:43:27 tegra-ubuntu ModemManager[564]: <info> [modem0] simple connect state (10/10): all done
- nmcli 最後用nmcli,把APN加入NetworManager,系統才能拿到IP
系統reboot後,ModemManager也能拿到IP了(直接ifconfig就有了)
$ sudo nmcli c add type gsm ifname '*' con-name wwan0 apn internet
Connection 'wwan0' (8f4ab2a8-d44b-4b57-bb44-dfc9128a9088) successfully added.