====== LTE ====== to test the EM7455 Card (+ NGFF Key-B Adapter) on the BPI-R3 (mPCIe Slot) https://www.bipom.com/documents/sierra/4117727%20AirPrime%20EM-MC74xx%20AT%20Command%20Reference%20r4.pdf Kernel-Options: CONFIG_USB_USBNET=m CONFIG_USB_SERIAL_OPTION=m CONFIG_USB_SERIAL_QUALCOMM=m CONFIG_USB_NET_CDC_MBIM=m CONFIG_USB_NET_QMI_WWAN=m Needed tools: root@bpi-r3:~# apt install libqmi-utils libmbim-utils i'm using a Congstar-SIM APN-settings: https://forum.congstar.de/thread/46325-mobil-surfen-mit-congstar-manuelle-einstellungen-zum-mobilen-internet-apn/ Some information of different interface modes and which modules are required on Openwrt: https://forum.banana-pi.org/t/bpi-r3-information/12897/83?u=frank-w Openwrt: luci-proto-qmi (recommended) or even luci-proto-modemmanager ===== QMI-Mode ===== Step-by-step guide with qmicli: https://techship.com/faq/how-to-step-by-step-set-up-a-data-connection-over-qmi-interface-using-qmicli-and-in-kernel-driver-qmi-wwan-in-linux/ root@bpi-r3:~# qmicli --device=/dev/cdc-wdm0 --get-expected-data-format 802-3 root@bpi-r3:~# qmicli --device=/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' root@bpi-r3:~# ip link set dev wwan0 down root@bpi-r3:~# echo Y > /sys/class/net/wwan0/qmi/raw_ip root@bpi-r3:~# ip link set dev wwan0 up root@bpi-r3:~# qmicli --device=/dev/cdc-wdm0 -p --uim-verify-pin=PIN1,1234 [/dev/cdc-wdm0] PIN verified successfully root@bpi-r3:~# qmicli --device=/dev/cdc-wdm0 -p --uim-get-card-status [/dev/cdc-wdm0] Successfully got card status Provisioning applications: Primary GW: slot '1', application '1' Primary 1X: session doesn't exist Secondary GW: session doesn't exist Secondary 1X: session doesn't exist Slot [1]: Card state: 'present' UPIN state: 'not-initialized' UPIN retries: '0' UPUK retries: '0' Application [1]: Application type: 'usim (2)' Application state: 'ready' Application ID: A0:00:00:00:87:10:02:FF:49:94:20:89:03:10:00:00 Personalization state: 'ready' UPIN replaces PIN1: 'no' PIN1 state: 'enabled-verified' PIN1 retries: '3' PUK1 retries: '10' PIN2 state: 'enabled-not-verified' PIN2 retries: '3' PUK2 retries: '10' root@bpi-r3:~# qmicli -p -v -d /dev/cdc-wdm0 --wds-stop-network=disable-autoconnect --client-cid=37 qmicli -v -p --device=/dev/cdc-wdm0 --wds-set-ip-family=6 qmicli -d /dev/cdc-wdm0 --wds-get-profile-list=3gpp qmicli -d /dev/cdc-wdm0 --wds-get-channel-rates qmicli -d /dev/cdc-wdm0 --dms-set-fcc-authentication qmicli -d /dev/cdc-wdm0 --dms-get-operating-mode ===== MBIM-Mode ===== https://gist.github.com/Juul/e42c5b6ec71ce11923526b36d3f1cb2c#connecting-using-mbim qmicli -d /dev/cdc-wdm0 --dms-set-fcc-authentication --device-open-mbim mbimcli --device=/dev/cdc-wdm0 -p --enter-pin=$PIN1 mbim-network /dev/cdc-wdm0 start mbimcli -d /dev/cdc-wdm0 -p --query-ip-configuration ip addr add 10.22.186.x/30 dev wwan0 ip link set wwan0 up ip route add default via 10.22.186.y ping 8.8.8.8 mbim-network /dev/cdc-wdm0 stop ==== first Test ==== root@bpi-r3:~# modprobe cdc_mbim /etc/mbim-network.conf: APN=internet.v6.telekom PROXY=yes root@bpi-r3:~# mbimcli --device=/dev/cdc-wdm0 --query-device-caps [/dev/cdc-wdm0] Device capabilities retrieved: Device type: 'remote' Cellular class: 'gsm' Voice class: 'no-voice' SIM class: 'removable' Data class: 'umts, hsdpa, hsupa, lte' SMS caps: 'pdu-receive, pdu-send' Ctrl caps: 'reg-manual' Max sessions: '8' Custom data class: 'unknown' Device ID: '352733105743066' Firmware info: 'SWI9X30C_02.24.03.00' Hardware info: 'EM7455' root@bpi-r3:~# mbim-network /dev/cdc-wdm0 start Loading profile at /etc/mbim-network.conf... APN: internet.v6.telekom APN auth protocol: unset APN user: unset APN password: unset mbim-proxy: yes Querying subscriber ready status 'mbimcli -d /dev/cdc-wdm0 --query-subscriber-ready-status --no-close --device-open-proxy'... [/dev/cdc-wdm0] Subscriber ready status retrieved: Ready state: 'device-locked' Subscriber ID: 'unknown' SIM ICCID: '89490200001355851497' Ready info: 'none' Telephone numbers: (0) 'unknown' [/dev/cdc-wdm0] Session not closed: TRID: '4' Saving state at /tmp/mbim-network-state-cdc-wdm0... (TRID: 4) Querying registration state 'mbimcli -d /dev/cdc-wdm0 --query-registration-state --no-open=4 --no-close --device-open-proxy'... [/dev/cdc-wdm0] Registration status: Network error: 'unknown' Register state: 'deregistered' Register mode: 'automatic' Available data classes: 'unknown' Curren t cellular class: 'gsm' Provider ID: 'unknown' Provider name: 'unknown' Roaming text: 'unknown' Registration flags: 'packet-service-automatic-attach' [/dev/cdc-wdm0] Session not closed: TRID: '6' Saving state at /tmp/mbim-network-state-cdc-wdm0... (TRID: 6) Attaching to packet service with 'mbimcli -d /dev/cdc-wdm0 --attach-packet-service --no-open=6 --no-close --device-open-proxy'... error: operation failed: PinRequired Saving state at /tmp/mbim-network-state-cdc-wdm0... (TRID: 8) Starting network with 'mbimcli -d /dev/cdc-wdm0 --connect=apn='internet.v6.telekom' --no-open=8 --no-close --device-open-proxy'... error: operation failed: PinRequired Network start failed [/dev/cdc-wdm0] Session not closed: TRID: '10' Saving state at /tmp/mbim-network-state-cdc-wdm0... (TRID: 10) root@bpi-r3:~# so it looks like pin-problem and i tried this: root@bpi-r3:~# mbimcli --device=/dev/cdc-wdm0 -p --enter-pin=1234 [/dev/cdc-wdm0] PIN operation successful [/dev/cdc-wdm0] PIN info: PIN state: 'locked' PIN type: 'pin2' Remaining attempts: '3' root@bpi-r3:~# mbim-network /dev/cdc-wdm0 start Loading profile at /etc/mbim-network.conf... APN: internet.v6.telekom APN auth protocol: unset APN user: unset APN password: unset mbim-proxy: yes Loading previous state from /tmp/mbim-network-state-cdc-wdm0... Previous Transaction ID: 10 error: no actions specified Clearing state at /tmp/mbim-network-state-cdc-wdm0... Querying subscriber ready status 'mbimcli -d /dev/cdc-wdm0 --query-subscriber-ready-status --no-close --device-open-proxy'... [/dev/cdc-wdm0] Subscriber ready status retrieved: Ready state: 'initialized' Subscriber ID: '26201704168zzzz' SIM ICCID: '8949020000135585yyyy' Ready info: 'none' Telephone numbers: (1) '+491512025xxxx' [/dev/cdc-wdm0] Session not closed: TRID: '4' Saving state at /tmp/mbim-network-state-cdc-wdm0... (TRID: 4) Querying registration state 'mbimcli -d /dev/cdc-wdm0 --query-registration-state --no-open=4 --no-close --device-open-proxy'... [/dev/cdc-wdm0] Registration status: Network error: 'unknown' Register state: 'deregistered' Register mode: 'automatic' Available data classes: 'unknown' Current cellular class: 'gsm' Provider ID: 'unknown' Provider name: 'unknown' Roaming text: 'unknown' Registration flags: 'packet-service-automatic-attach' [/dev/cdc-wdm0] Session not closed: TRID: '6' Saving state at /tmp/mbim-network-state-cdc-wdm0... (TRID: 6) Attaching to packet service with 'mbimcli -d /dev/cdc-wdm0 --attach-packet-service --no-open=6 --no-close --device-open-proxy'... error: operation failed: RadioPowerOff Saving state at /tmp/mbim-network-state-cdc-wdm0... (TRID: 8) Starting network with 'mbimcli -d /dev/cdc-wdm0 --connect=apn='internet.v6.telekom' --no-open=8 --no-close --device-open-proxy'... error: operation failed: RadioPowerOff Network start failed [/dev/cdc-wdm0] Session not closed: TRID: '10' Saving state at /tmp/mbim-network-state-cdc-wdm0... (TRID: 10) root@bpi-r3:~# got a connection in MBIM-Mode: root@bpi-r3:~# qmicli -d /dev/cdc-wdm0 --dms-set-fcc-authentication --device-open-mbim [/dev/cdc-wdm0] Successfully set FCC authentication root@bpi-r3:~# mbimcli --device=/dev/cdc-wdm0 -p --enter-pin=1234 [/dev/cdc-wdm0] PIN operation successful [/dev/cdc-wdm0] PIN info: PIN state: 'locked' PIN type: 'pin2' Remaining attempts: '3' root@bpi-r3:~# mbim-network /dev/cdc-wdm0 start Loading profile at /etc/mbim-network.conf... APN: internet.telekom APN auth protocol: PAP APN user: congstar APN password: cs mbim-proxy: yes Querying subscriber ready status 'mbimcli -d /dev/cdc-wdm0 --query-subscriber-ready-status --no-close --device-open-proxy'... [/dev/cdc-wdm0] Subscriber ready status retrieved: Ready state: 'initialized' Subscriber ID: '262017041684242' SIM ICCID: '89490200001355851497' Ready info: 'none' Telephone numbers: (1) '+4915120251510' [/dev/cdc-wdm0] Session not closed: TRID: '4' Saving state at /tmp/mbim-network-state-cdc-wdm0... (TRID: 4) Querying registration state 'mbimcli -d /dev/cdc-wdm0 --query-registration-state --no-open=4 --no-close --device-open-proxy'... [/dev/cdc-wdm0] Registration status: Network error: 'unknown' Register state: 'home' Register mode: 'automatic' Available data classes: 'lte' Current cellular class: 'gsm' Provider ID: '26201' Provider name: 'congstar' Roaming text: 'unknown' Registration flags: 'packet-service-automatic-attach' [/dev/cdc-wdm0] Session not closed: TRID: '6' Saving state at /tmp/mbim-network-state-cdc-wdm0... (TRID: 6) Attaching to packet service with 'mbimcli -d /dev/cdc-wdm0 --attach-packet-service --no-open=6 --no-close --device-open-proxy'... Saving state at /tmp/mbim-network-state-cdc-wdm0... (TRID: 8) Starting network with 'mbimcli -d /dev/cdc-wdm0 --connect=apn='internet.telekom',auth='PAP',username='congstar',password='cs' --no-open=8 --no-close --device-open-proxy'... Network started successfully Saving state at /tmp/mbim-network-state-cdc-wdm0... (TRID: 11) root@bpi-r3:~# ip a s wwan0 11: wwan0: mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 3e:06:6b:05:0a:17 brd ff:ff:ff:ff:ff:ff root@bpi-r3:~# mbimcli -d /dev/cdc-wdm0 -p --query-ip-configuration [/dev/cdc-wdm0] IPv4 configuration available: 'address, gateway, dns, mtu' IP [0]: '10.153.121.ip/29' Gateway: '10.153.121.gw' DNS [0]: '10.74.210.210' DNS [1]: '10.74.210.211' MTU: '1500' [/dev/cdc-wdm0] IPv6 configuration available: 'address, gateway, dns, mtu' IP [0]: '2a01:598:808c:ba9c:c4e4:7a88:29ea:xxxx/64' Gateway: '2a01:598:808c:ba9c:93d:409b:3ddb:ee7' DNS [0]: '2a01:598:7ff:0:10:74:210:210' DNS [1]: '2a01:598:7ff:0:10:74:210:211' MTU: '1500' root@bpi-r3:~# ip a s wwan0 11: wwan0: mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 3e:06:6b:05:0a:17 brd ff:ff:ff:ff:ff:ff root@bpi-r3:~# ip addr add 10.153.121.ip/29 dev wwan0 root@bpi-r3:~# ip link set wwan0 up [ 357.976946] 8021q: adding VLAN 0 to HW filter on device wwan0 root@bpi-r3:~# ip route add default via 10.153.121.gw root@bpi-r3:~# ip r default via 10.153.121.gw dev wwan0 10.153.121.net/29 dev wwan0 proto kernel scope link src 10.153.121.ip root@bpi-r3:~# ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=113 time=210 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=113 time=30.6 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=113 time=83.7 ms ^C --- 8.8.8.8 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 30.566/108.191/210.347/75.416 ms root@bpi-r3:~# ===== change Mode ===== Caution this may break functionality! Make sure all known modules are loaded: root@bpi-r3:~# modprobe qmi_wwan root@bpi-r3:~# modprobe qcserial root@bpi-r3:~# modprobe cdc_mbim Get and switch mode (device open param should match your current Mode): root@bpi-r3:~# qmicli -d /dev/cdc-wdm0 --device-open-mbim --dms-swi-get-usb-composition [/dev/cdc-wdm0] Successfully retrieved USB compositions: USB composition 6: DM, NMEA, AT, QMI [*] USB composition 8: DM, NMEA, AT, MBIM USB composition 9: MBIM root@bpi-r3:~# qmicli -d /dev/cdc-wdm0 --device-open-qmi --dms-swi-get-usb-composition [/dev/cdc-wdm0] Successfully retrieved USB compositions: [*] USB composition 6: DM, NMEA, AT, QMI USB composition 8: DM, NMEA, AT, MBIM USB composition 9: MBIM root@bpi-r3:~# qmicli -d /dev/cdc-wdm0 --device-open-mbim --dms-swi-set-usb-composition 6 root@bpi-r3:~# qmicli -d /dev/cdc-wdm0 --device-open-qmi --dms-swi-set-usb-composition 8 After that you will be prompted to set device offline and do reset. qmicli ... --dms-set-operating-mode=offline qmicli ... --dms-set-operating-mode=reset and you should see unregister of current devices and register of new, here switch from QMI to MBIM: [ 435.846807] usb 1-1.1: USB disconnect, device number 4 [ 435.852478] qcserial ttyUSB0: Qualcomm USB modem converter now disconnected from ttyUSB0 [ 435.860767] qcserial 1-1.1:1.0: device disconnected [ 435.866377] qcserial ttyUSB1: Qualcomm USB modem converter now disconnected from ttyUSB1 [ 435.874650] qcserial 1-1.1:1.2: device disconnected [ 435.880265] qcserial ttyUSB2: Qualcomm USB modem converter now disconnected from ttyUSB2 [ 435.888540] qcserial 1-1.1:1.3: device disconnected [ 435.893721] qmi_wwan 1-1.1:1.8 wwx269b6469dbbd: unregister 'qmi_wwan' usb-11200000.usb-1.1, WWAN/QMI device [ 443.533425] usb 1-1.1: new high-speed USB device number 5 using xhci-mtk [ 443.763963] usb 1-1.1: config 1 has an invalid interface number: 12 but max is 4 [ 443.771366] usb 1-1.1: config 1 has an invalid interface number: 13 but max is 4 [ 443.778764] usb 1-1.1: config 1 has an invalid interface number: 13 but max is 4 [ 443.786158] usb 1-1.1: config 1 has no interface number 1 [ 443.791544] usb 1-1.1: config 1 has no interface number 4 [ 443.799669] qcserial 1-1.1:1.0: Qualcomm USB modem converter detected [ 443.806455] usb 1-1.1: Qualcomm USB modem converter now attached to ttyUSB0 [ 443.814219] qcserial 1-1.1:1.2: Qualcomm USB modem converter detected [ 443.820906] usb 1-1.1: Qualcomm USB modem converter now attached to ttyUSB1 [ 443.828921] qcserial 1-1.1:1.3: Qualcomm USB modem converter detected [ 443.835728] usb 1-1.1: Qualcomm USB modem converter now attached to ttyUSB2 [ 443.898553] usbcore: registered new interface driver cdc_ether [ 443.964054] usbcore: registered new interface driver cdc_ncm [ 444.034077] cdc_mbim 1-1.1:1.12: cdc-wdm0: USB WDM device [ 444.040007] cdc_mbim 1-1.1:1.12 wwan0: register 'cdc_mbim' at usb-11200000.usb-1.1, CDC MBIM, 66:9b:64:69:db:bd [ 444.050308] usbcore: registered new interface driver cdc_mbim ==== troubleshooting ==== In my case no device is recognized by driver (no serial ttyUSBx too). Fixed this by adding usb-id in qcserial and qmi_wwan driver. But before i tried these steps: i saw in dmesg only this (also after cold-reset): [ 3.592655] usb 1-1.1: new high-speed USB device number 4 using xhci-mtk [ 3.823392] usb 1-1.1: config 1 has an invalid interface number: 8 but max is 3 [ 3.830719] usb 1-1.1: config 1 has no interface number 1 with this i have got access to the AT-Interface: lsusb: Bus 001 Device 004: ID 413c:81c2 Dell Computer Corp. DW5811e Snapdragon™ X7 LTE unlock ttyUSBx with option-module: root@bpi-r3:~# modprobe option [ 229.747728] usbcore: registered new interface driver option [ 229.753429] usbserial: USB Serial support registered for GSM modem (1-port) root@bpi-r3:~# echo 413c 81c2 >/sys/bus/usb-serial/drivers/option1/new_id [ 300.293186] option 1-1.1:1.0: GSM modem (1-port) converter detected [ 300.299755] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB0 [ 300.307011] option 1-1.1:1.2: GSM modem (1-port) converter detected [ 300.313657] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB1 [ 300.320968] option 1-1.1:1.3: GSM modem (1-port) converter detected [ 300.327741] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB2 [ 300.336533] option 1-1.1:1.8: GSM modem (1-port) converter detected [ 300.343262] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB3 now only with “minicom -D /dev/ttyUSB2”. (commandmode with Ctrl+AA, because already via Minicom on the R3) ATE1 OK AT!ENTERCND="A710" OK AT!CUSTOM? !CUSTOM: GPSENABLE 0x04 GPSSEL 0x01 IPV6ENABLE 0x01 SIMLPM 0x01 USBSERIALENABLE 0x01 SINGLEAPNSWITCH 0x01 OK AT!USBCOMP? Config Index: 1 Config Type: 1 (Generic) Interface bitmask: 0020010D (diag,nmea,modem,rmnet0,ubist) OK AT!USBCOMP=? !USBCOMP: AT!USBCOMP=,, - configuration index to which the composition applies, s - 1:Generic, 2:USBIF-MBIM, 3:RNDIS config type 2/3 should only be used for specific Sierra customized VID/PID should use config type 1 - DIAG - 0x00000001, NMEA - 0x00000004, MODEM - 0x00000008, RMNET0 - 0x00000100, RMNET1 - 0x00000400, MBIM - 0x00001000, e.g. 10D - diag, nmea, modem, rmnet interfaces enabled 1009 - diag, modem, mbim interfaces enabled The default configuration is: at!usbcomp=1,1,10F OK can't set default-mode, but the following fixes it and go back to mbim-mode after a cold-boot (ttyUSB accessible via options-module too) AT!USBCOMP=1,1,100D OK AT!RESET OK