= GW16162 Telit CMB100 Cellular Modem [[PageOutline]] The Gateworks GW16162 is a B-key M.2 form factor modem for use on Gateworks SBCs that uses the Telit CMB100 module. * Review the CMB100 module [https://www.telit.com/wp-content/uploads/2025/04/TC_CMB100_Product_Brief.pdf here] * Review the GW16162 product page and ordering options [https://www.gateworks.com/products/mini-pcie-expansion-cards/gw16162-cellular-modem-m2-card/ here] This is M.2 Cellular Modem that Gateworks sells with a variety of different Telit CMB100 modules. * GW16162-1-A - LTE CAT4 * GW16162-2-A - 5G NR !RedCap * GW16162-3-A - LTE CATM1/NB2 * GW16162-4-A - CAT1 BIS Note, Use [https://www.gateworks.com/products/mini-pcie-expansion-cards/gw1614x-mini-pcie-to-m2-adapter-card/ GW16140] M.2 Adapter on Mini-PCIe slots. == M.2 B-Key pins The following pins are connected on the GW16162: - M2.7 USB_DP - M2.9 USB_DM - M2.6 FULL_CARD_POWER_OFF# (3.3V I/O inverted to CMB_EOFF) (see [#cmb100-ponoff below]) - M2.8 W_DISABLE1# (3.3V I/O inverted to CMB_PON) (see [#cmb100-ponoff below]) - M2.2,4,70,72,74 VDD_3P3 - M2.3,5,11,27,33,39,45,51,57,71 GND == Antenna The following antenna was used for all certifications. Other antennas can be used if they meet the same requirements. Certified Antenna: Atel-Cab T-AT305, antenna gain all bands 2.14dBi. See more info here: [https://www.atel-antennas.eu/wp-content/uploads/2017/01/T-AT305.pdf Link] == Certifications * Verizon Certifications * CATM1: [https://opendevelopment.verizonwireless.com/device-showcase/device/31073 Link] * CAT4: [https://opendevelopment.verizonwireless.com/device-showcase/device/31072 Link] * ATT Certifications * CATM1/CAT4: [https://trac.gateworks.com/attachment/wiki/wireless/modem/ATT_Approval.pdf Link] More information on certification requirements including antenna guidelines can be found in the CMB100 Hardware Users Guide which is available through the Telit Download Zone (account required): [https://www.telit.com/cmb100-download-zone/ Link] == Drivers All drivers should already be included on Gateworks default Ubuntu builds on Gateworks SBCs. Drivers: * qmi_wwan (wwan), option (at commands) [=#cmb100-ponoff] == Modem Power On sequence '''The CMB100 will not power on by default by design without toggling a the pOnOff pin''' To turn on the CMB100 the pOnOff input on connector pin 19 must be pulled high for at least 6 seconds then released. The pOnOff pin is connected to the M.2 B-Key pin 8 W_DISABLE1# signal though an inverter. Because this signal is an active-low wireless disable it is usually driven high by default by the board/firmware on Gateworks boards so you need to drive it low for 6 seconds then high to get the CMB100 to power on. To power off the CMB100 gracefully drive W_DISABLE1# signal high for at least 3 seconds. To unconditionally shut down the CMB100 drive FULL_CARD_POWER_OFF# low. The following table shows the GPIO mapping for these two signals on various Gateworks products with an M.2 B-Key sockets: ||= board =||= socket =||= signal name =||= uboot gpio =||= linux gpio =||= GW16162 pin =||= CMB100 M.2 pin =||= Notes =|| || GW820x+GW16FB0^^^1^^^ || FSA1 || wdisable1# || fsa1_wdisable1# || || 8 W_DISABLE1# || !PonOff || inverted || || || FSA1 || crdpwroff# || fsa1_crdpwroff# || || 6 FULL_CARD_POWER_OFF# || EM_OFF || inverted || || || FSA2 || fsa_wdisable1# || fsa2_wdisable1# || || 8 W_DISABLE1# ||!PonOff || inverted || || || FSA2 || crdpwroff# || fsa2_crdpwroff# || || 6 FULL_CARD_POWER_OFF# || EM_OFF || inverted || || GW740x || M2 J13 || M2SKT_WDIS# || m2skt_wdis1#.gpio-hog GPIO4_18 || gpio-114 || 8 W_DISABLE1# ||!PonOff || inverted || || || M2 J13 || M2SKT_OFF# || m2skt_off#.gpio-hog GPIO4_2 || gpio-98 || 6 FULL_CARD_POWER_OFF# ||EM_OFF || inverted || || GW740x+GW1614{0,1,7} || J10 PCIE1 || M2SKT_WDIS# || pcie3_wdis#.gpio-hog GPIO2_14 || gpio-46 || 8 W_DISABLE1# ||!PonOff || inverted || || || J12 PCIE2 || M2SKT_WDIS# || pcie2_wdis#.gpio-hog GPIO2_18 || gpio-50 || 8 W_DISABLE1# ||!PonOff || inverted || || || J11 PCIE3 || M2SKT_WDIS# || pcie3_wdis#.gpio-hog GPIO2_13 || gpio-45 || 8 W_DISABLE1# ||!PonOff || inverted || 1. On the GW16FB0 make sure that SW1.7-10 are in the 'off' position to configure the w_disable1# and full_card_power_off# signals to be driven and at 3.3V Examples: * GW820x+GW16FB0 in FSA1: - toggle GPIO to power on CMB100 in U-Boot: {{{ setenv preboot "$preboot; gpio clr fsa1_wdisable1#; sleep 6; gpio set fsa1_wdisable1#" saveenv }}} * GW740x in J13 M.2 socket: - toggle GPIO to power on CMB100 in U-Boot: {{{ setenv preboot "$preboot; gpio clr m2_wdis1#.gpio-hog; sleep 6; gpio set m2_wdis1#.gpio-hog" saveenv }}} == Software / Getting Started lsusb should show: (may change depending on variant) {{{ ID 1bc7:110b Telit Wireless Solutions Telit ME910 }}} Verify the modem is detected with the lsusb command. Then use modem manager to bring the modem up with the following example: {{{ mmcli -m 0 # Look for a large output of information about the modem mmcli -m 0 --enable mmcli --modem 0 --simple-connect="apn=hologram" #replace hologram with actual APN for SIM used dhclient wwan0 }}} * apt-get update * apt-get install isc-dhcp-client A fully connected modem shown below with mmcli -m 0 as an example: {{{ root@noble-venice:~# mmcli -m 0 ---------------------------------- General | path: /org/freedesktop/ModemManager1/Modem/0 | device id: 0f4dfb041510f387acb25f63b3c13ad3379b96c6 ---------------------------------- Hardware | manufacturer: Telit | model: LE910C4-WWXD | firmware revision: 25.30.608 1 [Nov 14 2023 07:00:00] | carrier config: default | h/w revision: 1.00 | supported: gsm-umts, lte | current: gsm-umts, lte | equipment id: xx559662xxx82 ---------------------------------- System | device: /sys/devices/platform/soc@0/32f10108.usb/38200000.usb/xhci-hcd.0.auto/usb1/1-1/1-1.1 | physdev: /sys/devices/platform/soc@0/32f10108.usb/38200000.usb/xhci-hcd.0.auto/usb1/1-1/1-1.1 | drivers: qmi_wwan, option | plugin: telit | primary port: cdc-wdm0 | ports: cdc-wdm0 (qmi), ttyUSB0 (ignored), ttyUSB1 (at), | ttyUSB2 (at), wwan0 (net) ---------------------------------- Status | lock: sim-pin2 | unlock retries: sim-pin (3), sim-puk (10), sim-pin2 (3), sim-puk2 (10) | state: connected | power state: on | access tech: lte | signal quality: 91% (recent) ---------------------------------- Modes | supported: allowed: 2g; preferred: none | allowed: 3g; preferred: none | allowed: 4g; preferred: none | allowed: 2g, 3g; preferred: 3g | allowed: 2g, 3g; preferred: 2g | allowed: 2g, 4g; preferred: 4g | allowed: 2g, 4g; preferred: 2g | allowed: 3g, 4g; preferred: 4g | allowed: 3g, 4g; preferred: 3g | allowed: 2g, 3g, 4g; preferred: 4g | allowed: 2g, 3g, 4g; preferred: 3g | allowed: 2g, 3g, 4g; preferred: 2g | current: allowed: 2g, 3g, 4g; preferred: 4g ---------------------------------- Bands | supported: egsm, dcs, pcs, g850, utran-1, utran-4, utran-6, utran-5, | utran-8, utran-2, eutran-1, eutran-2, eutran-3, eutran-4, eutran-5, | eutran-7, eutran-8, eutran-9, eutran-12, eutran-13, eutran-14, | eutran-18, eutran-19, eutran-20, eutran-25, eutran-26, eutran-28, | utran-19 | current: egsm, dcs, pcs, g850, utran-1, utran-4, utran-6, utran-5, | utran-8, utran-2, eutran-1, eutran-2, eutran-3, eutran-4, eutran-5, | eutran-7, eutran-8, eutran-9, eutran-12, eutran-13, eutran-14, | eutran-18, eutran-19, eutran-20, eutran-25, eutran-26, eutran-28, | utran-19 ---------------------------------- IP | supported: ipv4, ipv6, ipv4v6 ---------------------------------- 3GPP | imei: 355596620004182 | enabled locks: fixed-dialing | operator id: 310260 | operator name: T-Mobile | registration: roaming | packet service state: attached ---------------------------------- 3GPP EPS | ue mode of operation: csps-2 | initial bearer path: /org/freedesktop/ModemManager1/Bearer/0 | initial bearer ip type: ipv4 ---------------------------------- SIM | primary sim path: /org/freedesktop/ModemManager1/SIM/0 | sim slot paths: slot 1: /org/freedesktop/ModemManager1/SIM/0 (active) | slot 2: none ---------------------------------- Bearer | paths: /org/freedesktop/ModemManager1/Bearer/1 root@noble-venice:~# root@noble-venice:~# mmcli -m 0 -b 1 ------------------------------------ General | path: /org/freedesktop/ModemManager1/Bearer/1 | type: default ------------------------------------ Status | connected: yes | suspended: no | multiplexed: no | interface: wwan0 | ip timeout: 20 ------------------------------------ Properties | apn: hologram | roaming: allowed ------------------------------------ IPv4 configuration | method: static | address: 10.300.185.109 | prefix: 30 | gateway: 10.300.185.111 | dns: 8.8.8.8, 8.8.4.4 | mtu: 1500 ------------------------------------ Statistics | start date: 2025-08-08T22:56:19Z | duration: 240 | attempts: 1 | total-duration: 240 }}} If the DHCP dhclient command doesn't auto-populate wwan0, it may be required to manually configure the IP address and routing of wwan0, an example is below: {{{ ifconfig wwan0 100.77.130.8/30 route add default gw 100.77.130.9 wwan0 echo "nameserver 8.8.8.8" > /etc/resolv.conf root@jammy-venice:~# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 100.77.130.9 0.0.0.0 UG 0 0 0 wwan0 100.77.130.0 0.0.0.0 255.255.255.240 U 0 0 0 wwan0 }}} == Troubleshooting View more troubleshooting steps on the main Gateworks modem wiki here: [wiki:wireless/modem] Please also contact Gateworks support. [=#cmb100-usbmode] ==== Modem Mode The modem can be configured to be in different USB modes. Consult the AT command guide for all the modes. Mode 0 should be fine which should be the default. Mode shown: {{{ AT#USBCFG? }}} Another modem configuration that may need to be looked at is called FWAUTOSIM, which is automatic carrier switching by SIM. For this example, FWAUTOSIM was 0, meaning no automatic switching.