Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revisionBoth sides next revision
docs:guide-user:network:wan:wwan:ethernetoverusb_ncm [2023/12/02 12:36] – [Installation] andrewzdocs:guide-user:network:wan:wwan:ethernetoverusb_ncm [2024/11/17 11:17] – [Network configuration] andrewz
Line 1: Line 1:
 ====== Use NCM USB Dongle for WAN connection ====== ====== Use NCM USB Dongle for WAN connection ======
  
-{{section>meta:infobox:howto_links#config-network-device&noheader&nofooter&noeditbutton}}+[[http://www.mcci.com/mcci-v5/hostside/ncm_drivers.html|NCM]] (Network Control Model) is [[https://en.wikipedia.org/wiki/Ethernet_over_USB|Ethernet over USB]] protocol used by some USB modems.
  
-[[http://www.mcci.com/mcci-v5/hostside/ncm_drivers.html|NCM]] (Network Control Modelis [[https://en.wikipedia.org/wiki/Ethernet_over_USB|ethernet over USB]] protocol used by some fast speed USB modems/dongles.+The same applies to external modems connected to USB ports ("dongles") and internal models installed into M.2(NGFFor mPCIe slots.
  
-For more information about different protocols used:+For more information about other protocols commonly used:
   * **PPP**, see [[docs:guide-user:network:wan:wwan:3gdongle|How to use 3g/UMTS USB Dongle for WAN connection]]   * **PPP**, see [[docs:guide-user:network:wan:wwan:3gdongle|How to use 3g/UMTS USB Dongle for WAN connection]]
   * **QMI** and **MBIM**, see [[docs:guide-user:network:wan:wwan:ltedongle|How to use LTE modem in QMI mode for WAN connection]]   * **QMI** and **MBIM**, see [[docs:guide-user:network:wan:wwan:ltedongle|How to use LTE modem in QMI mode for WAN connection]]
 +  * **ECM**, see [[docs:guide-user:network:wan:wwan:ethernetoverusb_cdc|Use cdc_ether driver based dongles for WAN connection]]
   * **RNDIS**, see [[docs:guide-user:network:wan:wwan:ethernetoverusb_rndis|How to use LTE modem in RNDIS mode for WAN connection]]   * **RNDIS**, see [[docs:guide-user:network:wan:wwan:ethernetoverusb_rndis|How to use LTE modem in RNDIS mode for WAN connection]]
  
Line 25: Line 26:
  
 ==== Required Packages ==== ==== Required Packages ====
-To make use of NCM protocol, packages ''kmod-usb-net-huawei-cdc-ncm'' and ''comgt-ncm'' are needed.+To make use of NCM protocol, packages ''kmod-usb-net-huawei-cdc-ncm'' and ''comgt-ncm'' are needed (for Huawei modems). Other modems may require different ''kmod-*'' packages.
  
-To access the PC UI Interface (AT Command port) package ''kmod-usb-serial-option'' is typically needed.+To access the PC UI Interface (AT Command port) package ''kmod-usb-serial-option'' is typically needed. Some modems may need ''kmod-usb-acm'' driver instead.
  
 ==== Optional Packages ==== ==== Optional Packages ====
Line 37: Line 38:
  
 ===== Installation ===== ===== Installation =====
-1. Install all the needed packages+1. Install all the needed packages either in Luci → System → Software or via command line: 
 + 
 +  * For Huawei modems: 
 <code> <code>
-opkg update +root@OpenWrt:~# opkg update 
-opkg install kmod-usb-net-huawei-cdc-ncm kmod-usb-serial-option comgt-ncm luci-proto-ncm picocom+root@OpenWrt:~# opkg install kmod-usb-net-huawei-cdc-ncm luci-proto-ncm picocom
 </code> </code>
  
-:!: If your have not enough space on your device - think of installing [[docs:guide-user:additional-software:extroot_configuration|Rootfs on External Storage (extroot)]]+  * other modems may require different packages, this is an example for Mikrotik modems:
  
-:!: Another option is Hardware memory upgrade. Refer to your router Forum thread for possibility and instructions. 
- 
-2. Reboot the router 
 <code> <code>
-reboot+root@OpenWrt:~# opkg update 
 +root@OpenWrt:~# opkg install kmod-usb-net-rndis kmod-usb-acm luci-proto-ncm picocom
 </code> </code>
  
-3. Check that everything is OK and you got new device: +Additional packages will be automatically installed as //dependencies//.
-<code> +
-ls -l /dev/cdc-wdm0+
  
-crw-r--r--    1 root     root      180, 176 Oct  1 12:03 /dev/cdc-wdm0 +You can also add the necessary packages when building a new image with [[https://firmware-selector.openwrt.org/|Firmware Selector]].
-</code>+
  
-If you have no such device - try to find out what went wrong:+:!: If your have not enough space on your device - think about upgrading your hardware or installing [[docs:guide-user:additional-software:extroot_configuration|Rootfs on External Storage (extroot)]]. Refer to your router wiki page or forum thread for possibility and instructions.
  
-try **dmesg** to read kernel logs on USB init+2. Reboot the router by executing ''reboot'' on the console. 
 + 
 +3. Check if you got a new //device//:
 <code> <code>
-dmesg+root@OpenWrt:~# ls -l /dev/cdc* 
 + 
 +crw-r--r--    1 root     root      180, 176 Oct  1 12:03 /dev/cdc-wdm0
 </code> </code>
-or look info about USB devices and interfaces present in the system: 
-<code> 
-cat /sys/kernel/debug/usb/devices 
  
-...+If there is no such device found, there is a possibility that completely different name is in use by the device driver, like ''usb0'' or ''eth1''Try to get more details: 
 +  * Open System Log from Luci web interface and see what it shows regarding newly discovered USB device(s) 
 +  * execute ''dmesg'' on the console and see if any relevant information is present in the kernel log 
 +  * check the details about USB devices detected by the system by running ''cat /sys/kernel/debug/usb/devices'' on the console: 
 +<code> 
 +[...]
 T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0 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 D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
Line 95: Line 100:
 E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
 E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=125us E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=125us
- 
-... 
 </code> </code>
  
Line 105: Line 108:
 [[docs:guide-user:base-system:uci|UCI]] is supporting **NCM** network protocol configuration.  [[docs:guide-user:base-system:uci|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                                                                                                                  
-^Name  ^Type  ^Required  ^Default  ^Description^ +| device    | file path  | yes       | (none)           | NCM device node, usually ''/dev/ttyUSBx'' or ''/dev/ttyACMx''                                                                
-|device  |file path  |yes  |(none)  |NCM device node, typically **/dev/cdc-wdm0** or **/dev/ttyUSB#**+| apn       | string     | yes       | (none)           | APN to use                                                                                                                   
-|apn  |string  |yes  |(none)  |Used APN| +| pincode   | number     | no        | (none)           | PIN code to unlock SIM card                                                                                                  
-|pincode  |number  |no  |(none)  |PIN code to unlock SIM card| +| username  | string     | no        | (none)           | Username for PAP/CHAP authentication                                                                                         
-|username  |string  |no  |(none)  |Username for PAP/CHAP authentication| +| password  | string     | no        | (none)           | Password for PAP/CHAP authentication                                                                                         
-|password  |string  |no  |(none)  |Password for PAP/CHAP authentication| +| auth      | string     | no        | (none)           | Authentication type: **pap**, **chap**, **both**, **none**                                                                   
-|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**  
-|mode  |string  |no  |(modem default)  |Used network mode, not every device support every mode: **preferlte**, **preferumts**, **lte**, **umts**, **gsm**, **auto**| +| pdptype   | string     | no        IP               PDP Context Type, **IP** (for IPv4), **IPV6** (for IPv6) or **IPV4V6** (for dual-stack)                                      | 
-|pdptype  |string  |no  |IPV4V6 |Used IP-stack mode, **IP** (for IPv4), **IPV6** (for IPv6) or **IPV4V6** (for dual-stack) | +| profile   | number     | no        | 1                | PDP Context Identifier                                                                                                       
-|delay  |number  |no  |0  |Seconds to wait before trying to interact with the modem (some modems require up to 30 s.)|+| 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 [[docs:techref:uci|uci command line]] or [[docs:guide-user:base-system:user.beginner.cli#editing.files| text editor]] or with [[docs:techref:luci| Luci]] package **luci-proto-ncm**.+You can configure the interface manually using [[docs:techref:uci|uci command line]] or [[docs:guide-user:base-system:user.beginner.cli#editing.files| text editor]] or with [[docs:techref:luci| 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 required mode is set once.+ :!: If option "mode" is setthe corresponding AT command is sent to the modem on every connection attempt. 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 not use this option after the required mode is set once.
              
 ==== Network configuration ===== ==== Network configuration =====
-Now you should add new **Interface** to /etc/config/network+ 
 +Using Luci web interface: navigate to Network → Interfaces → Add new interface… → Protocol : NCM, Interface: "ttyUSB1" 
 + 
 +The interface selected above is the "AT Command Port" or "PCUI" in Huawei terms, ''ttyUSB1'' is shown here as an example only, different modems have different port assignments like ''/dev/ttyUSBx'' or ''/dev/ttyACMx''. The //data// interface like ''wwan0'' and corresponding device like ''/dev/cdc-wdm0'' will be discovered by the connection script automatically. 
 + 
 +Enter your APN and select the 'IP Protocol' as instructed by the carrier. 
 + 
 +Assign the firewall zone (wan) on 'Firewall Settings' tab.\\  
 +\\  
 +Alternatively you can edit the configuration files with any text editor like ''vi'' or ''nano'': 
 + 
 +  * add new **Interface** in ''/etc/config/network'':
 <code> <code>
 config interface 'wwan' config interface 'wwan'
         option proto 'ncm'         option proto 'ncm'
-        option ifname 'wwan0+        option device '/dev/ttyUSB1
-        option device '/dev/cdc-wdm0'+        option pdptype 'IP'
         option apn 'internet'         option apn 'internet'
-        option mode 'preferlte' 
-        option pincode '0000' 
-        option delay '5' 
 </code>  </code> 
  
-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. +  * add the same interface name to the "wan" firewall zone in ''/etc/config/firewall'': 
- +<code
-Write **wwan** as the name of the interface and make it cover the **wwan0** interfaceChoose **ncm** as the protocol. +config zone 
- +    option name 'wan' 
-FIXME Insert a screenshot of LUCI add Interface+    [...] 
- +    list network 'wwan' 
-==== Firewall configuration ===== +</code
-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**+
  
-FIXME Insert a Screen Shot from LUCI. 
  
 ==== Additional Info ===== ==== Additional Info =====
Line 164: Line 169:
  
 ===== Troubleshooting ===== ===== Troubleshooting =====
-==== My router is not detecting the dongle. What should I do? ====+==== My router is not detecting the modem. What should I do? ====
  
-Try the following commands: +Get the information about  USB devices with ''cat /sys/kernel/debug/usb/devices''
-<code> +
-usbmode -l +
-</code> +
-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. +
-<code> +
-usbmode -s +
-</code> +
-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? ====+Find a section for your device, look for "Manufacturer" and/or "Product" lines corresponding to your modem, for example:
  
-Include the following codes into ///etc/rc.local// just before //exit 0//+  S Manufacturer=HUAWEI_MOBILE 
-<code> +  S:  Product=HUAWEI_MOBILE 
-/sbin/usbmode -l + 
-/bin/sleep +See if necessary drivers are loaded for your device: 
-/sbin/usbmode -s + 
-</code>+  I:* If#= 1 Alt= 0 #EPs= Cls=ff(vend.) Sub=03 Prot=12 Driver=option 
 +  [...] 
 +  I:  If#= 2 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=03 Prot=16 Driver=huawei_cdc_ncm 
 + 
 +If the drivers are missing, install the missing packages and/or change the operating mode of the modem to expose the necessary interfaces. 
  
 +Finally, ask in the forum.
 ==== My modem doesn't reconnect after it loses the connection ==== ==== My modem doesn't reconnect after it loses the connection ====
  
  • Last modified: 2024/11/20 12:02
  • by andrewz