2025年1月21日 星期二

FN920C04 on Nvidia AGX Orin R36.3

Kernel: 5.15
  • 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.
    

沒有留言:

張貼留言