Show pagesourceOld revisionsBacklinksBack to top × Table of Contents Use NCM USB Dongle for WAN connection Modem Preparation Router Preparation Required Packages Optional Packages Installation Configuration Protocol Configuration Network configuration Firewall configuration Additional Info Troubleshooting My router is not detecting the dongle. What should I do? I have to issue //usbmode -l// and //usbmode -s// every time I reboot my router to detect my USB device. How can I automate it? My modem doesn't reconnect after it loses the connection I am using 'huawei_cdc_ncm' module and the /dev/cdc-wdm0 does not respond. What do I do? Use NCM USB Dongle for WAN connection This article may contain network configuration that is version dependent post 2021-06 ifname@interface has been moved to device and device sections while legacy ifname syntax may work on 21.02 or recent master it is recommended that you migrate to device usage More Information DSA Wiki 21.02 Release Notes Mini tutorial for DSA network config NCM (Network Control Model) is ethernet over USB protocol used by some fast speed USB modems/dongles. For more information about different protocols used: ppp, see How to use 3g/UMTS USB Dongle for WAN connection qmi and mbim, see How to use LTE modem in QMI mode for WAN connection rndis, see How to use LTE modem in RNDIS mode for WAN connection Modem Preparation You need to switch modem to provide native NCM interface instead of Modem interface. Please read about AT commands for your modem. Once you've done - you can disconnect modem from the PC and connect it to the router. Router Preparation 1. Install OpenWRT 2. Complete steps OpenWrt Configuration Router should be turned on and connected to the Internet to get the needed packages. Please refer to: Internet Connection. Required Packages To make use of NCM protocol, package kmod-usb-net-huawei-cdc-ncm and comgt-ncm are needed. usb-modeswitch - It will automatically issue a “special” command to the modem for switching it into the “Working” state opkg update opkg install comgt-ncm kmod-usb-net-huawei-cdc-ncm usb-modeswitch Optional Packages 1. Add support for PC Interface (ttyUSB0) kmod-usb-serial kmod-usb-serial-option kmod-usb-serial-wwan opkg update opkg install kmod-usb-serial kmod-usb-serial-option kmod-usb-serial-wwan 3. Add support for FlashCard of your dongle - refer to: USB Storage Installation 1. Install all the needed packages opkg update opkg install comgt-ncm luci-proto-3g luci-proto-ncm luci-proto-qmi kmod-usb-net-huawei-cdc-ncm usb-modeswitch If your have not enough space on your device - think of installing Rootfs on External Storage (extroot) Another option is Hardware memory upgrade. Refer to your router Forum thread for possibility and instructions. 2. Reboot the router reboot 3. Check that everything is OK and you got new device: ls -l /dev/cdc-wdm0 crw-r--r-- 1 root root 180, 176 Oct 1 12:03 /dev/cdc-wdm0 If you have no such device - try to find out what went wrong: try dmesg to read kernel logs on USB init dmesg or look info about USB devices and interfaces present in the system: cat /sys/kernel/debug/usb/devices ... T: Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 0 D: Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=12d1 ProdID=1506 Rev= 1.02 S: Manufacturer=HUAWEI_MOBILE S: Product=HUAWEI_MOBILE C:* #Ifs= 5 Cfg#= 1 Atr=80 MxPwr= 2mA I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=03 Prot=10 Driver=(none) E: Ad=82(I) Atr=03(Int.) MxPS= 10 Ivl=32ms E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=03 Prot=12 Driver=option E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I: If#= 2 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=03 Prot=16 Driver=huawei_cdc_ncm E: Ad=85(I) Atr=03(Int.) MxPS= 16 Ivl=2ms I:* If#= 2 Alt= 1 #EPs= 3 Cls=ff(vend.) Sub=03 Prot=16 Driver=huawei_cdc_ncm E: Ad=85(I) Atr=03(Int.) MxPS= 16 Ivl=2ms E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 3 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=125us I:* If#= 4 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=125us ... See Troubleshooting Section of this page for more information. Configuration Protocol Configuration UCI is supporting NCM network protocol configuration. The package comgt-ncm + modem specific driver must be installed to use NCM. Name Type Required Default Description device file path yes (none) NCM device node, typically /dev/cdc-wdm0 or /dev/ttyUSB# apn string yes (none) Used APN pincode number no (none) PIN code to unlock SIM card username string no (none) Username for PAP/CHAP authentication password string no (none) Password for PAP/CHAP authentication auth string no (none) Authentication type: pap, chap, both, none mode string no (modem default) Used network mode, not every device support every mode: preferlte, preferumts, lte, umts, gsm, auto pdptype string no IPV4V6 Used IP-stack mode, IP (for IPv4), IPV6 (for IPv6) or IPV4V6 (for dual-stack) delay number no 0 Seconds to wait before trying to interact with the modem (some modems require up to 30 s.) You can configure UCI manually using uci command line or text editor or with Luci package luci-proto-ncm. If you are using option mode, an AT command setting the mode is sent to modem on every connection. Most of modems (at least all Huawei models) store this setting in internal flash. So on each connection Openwrt writes to modem flash. It is recommended to remove this option after a required mode is set once. Network configuration Now you should add new Interface to /etc/config/network config interface 'wwan' option proto 'ncm' option ifname 'wwan0' option device '/dev/cdc-wdm0' option apn 'internet' option mode 'preferlte' option pincode '0000' option delay '5' You can do this using the vi text editor, but if you're not comfortable with that, point your browser to 192.168.1.1 again, choose Network → Interfaces and click Add new interface. Write wwan as the name of the interface and make it cover the wwan0 interface. Choose ncm as the protocol. Insert a screenshot of LUCI add Interface. Firewall configuration The only thing that is left - Add wwan interface to WAN zone Using LUCI: go to Network → Firewall, scroll down to wan and click the Edit button add a checkmark to the wwan box under Covered networks heading, click Save & Apply Insert a Screen Shot from LUCI. Additional Info Some providers of the cellular internet use redirection to their pages for access activation, when you are connected first time. I.e. YOTA in Russia. Normally this would be blocked by dnsmasq: Jan 18 14:36:49 OpenWrt daemon.warn dnsmasq[1325]: possible DNS-rebind attack detected: my.yota.ru You have 2 options: Allow rebind responses RFC1918 (In LUCI goto Network → DHCP and DNS and uncheck Rebind protection checkmark) Add Yota.ru domain to Whitelist (In LUCI goto Network → DHCP and DNS and type in “yota.ru” without quotes to the Domain whitelist field. Save & apply Troubleshooting My router is not detecting the dongle. What should I do? Try the following commands: usbmode -l It should respond with a message about your USB device is detected. If it does, issue the next command. If it doesn't, you might want to get help from the forum. usbmode -s Then wait for the dongle to get issued an IP from your ISP. I have to issue //usbmode -l// and //usbmode -s// every time I reboot my router to detect my USB device. How can I automate it? Include the following codes into /etc/rc.local just before exit 0: /sbin/usbmode -l /bin/sleep 2 /sbin/usbmode -s My modem doesn't reconnect after it loses the connection This script GitHub oilervoss will check the connection pinging a public IP and, under failure, it will send AT commands to the serial interface of the modem restarting it. To achieve continuous monitoring of the connection, it must be called recurrently through a cron job as: #/etc/crontabs/root #min h day mon week command */20 * * * * /etc/init.d/ncm-fix start I am using 'huawei_cdc_ncm' module and the /dev/cdc-wdm0 does not respond. What do I do? This is probably related to ticket #18673 (https://dev.openwrt.org/ticket/18673). You should be able to use the modem by starting ndis manually by sending the following to /dev/ttyUSB1 AT^NDISDUP=1,1,"your_apn_address" It is possible to automate this task using hotplug. Below are some scripts fetched from http://forum.ixbt.com/post.cgi?id=print:14:59307&page=4. Do not forget to modify them to your needs. The scripts are for Huawei modems obviously. /etc/init.d/ncm-network: #!/bin/sh /etc/rc.common # DEVICE='/dev/ttyUSB1' # Interface name from /etc/config/network IFNAME='WWAN' # Your APN: APN='your_apn_here' START=70 STOP=90 start() { if [ -e ${DEVICE} ]; then echo -ne "AT^NDISDUP=1,0\r\n" > ${DEVICE} sleep 3 echo -ne "AT^NDISDUP=1,1,\"${APN}\"\r\n" > ${DEVICE} sleep 3 ifup $IFNAME else echo "No such device ${DEVICE}" | logger -t "ncm-network[$$]" -p info fi } stop() { if [ -e ${DEVICE} ]; then ifdown $IFNAME sleep 3 echo -ne "AT^NDISDUP=1,0\r\n" > ${DEVICE} else echo "No such device ${DEVICE}" | logger -t "ncm-network[$$]" -p info fi } /etc/hotplug.d/usb/70-ncm-network #!/bin/sh # Uncomment set line below and check your modalias I from tmp file MODEM_ID='usb:v12D1p1506d0102dc00dsc00dp00ic08isc06ip50in05' PAUSE=10 PAUSE_FOR_HOTPLUG=5 #set >> /tmp/ncm-network.debug if [ "${MODALIAS}" != "${MODEM_ID}" ]; then exit 0 fi case "$ACTION" in add) SYSTEM_UPTIME=$(cat /proc/uptime | awk -F"\." '{ print $1 }') if [ "${SYSTEM_UPTIME}" -gt 60 ]; then PAUSE=$PAUSE_FOR_HOTPLUG fi { sleep ${PAUSE} && \ echo "Start modem ${MODEM_ID}" | logger -t "hotplug[$$]" -p info && \ /etc/init.d/ncm-network start } & ;; remove) echo "Stop modem ${MODEM_ID}" | logger -t "hotplug[$$]" -p info /etc/init.d/ncm-network stop ;; esac Some modems does not reconnect after losing connection. Here is a connection check sh script which checks if it can ping remote servers with time intervals. If all pings fail, it tries to start the network by executing /etc/init.d/ncm-network start #!/bin/sh # Enter the FQDNs you want to check with ping (space separated) # Script does nothing if any tries to any FQDN succeeds FQDN="www.google.com" FQDN="$FQDN www.amd.com" FQDN="$FQDN www.juniper.net" # Sleep between ping checks of a FQDN (seconds between pings) SLEEP=3 # Sleep time between each retry RETRY=3 # Retry each FQDN $RETRY times SLEEP_MAIN=60 # Main loop sleep time check_connection() { for NAME in $FQDN; do for i in $(seq 1 $RETRY); do ping -c 1 $NAME > /dev/null 2>&1 if [ $? -eq 0 ]; then return 0 fi sleep $SLEEP done done # If we are here, it means all failed return 1 } while true; do check_connection if [ $? -ne 0 ]; then /etc/init.d/ncm-network start fi sleep $SLEEP_MAIN done If your SIM receives a voice call. It will downgrade to CS network which means you will downgrade into 3G mode. To avoid this, set the stick to use only PS network by creating `/etc/hotplug.d/iface/99-ifupwwan` file with following code. Make sure to modify it to use correct serial interface and correct AT command for your device. [ "$ACTION" = "ifup" -a "$INTERFACE" = "wwan" ] && { logger "iface wwan up detected..." # We need to set this to stop the card from receiving phone calls # This is for EC-25 #echo -ne "\r\nAT+QCFG=\"servicedomain\",1,1\r\n" > /dev/ttyUSB2 # This is for Huawei echo -ne "\r\nAT^SYSCFGEX=\"00\",3FFFFFFF,1,1,7FFFFFFFFFFFFFFF,,\r\n" > /dev/ttyUSB2 } This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.OKMore information about cookies Last modified: 2021/07/24 01:45by someothertime