= 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: * option (at commands), cdc_ether (wwan) [=#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 }}} [=#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 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. == 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: 0808c95a84d6f32e2b0d9cxxxb1172028c28460 -------------------------------- Hardware | manufacturer: Telit | model: ME910G1-WW | firmware revision: 37.00.417-P0C.410001 | supported: gsm-umts, lte | current: gsm-umts, lte | equipment id: xx7219xxxxx780 -------------------------------- System | device: /sys/devices/platform/soc@0/32c00000.bus/32e50000.usb/ci_hdrc.1/usb1/1-1/1-1.1 | physdev: /sys/devices/platform/soc@0/32c00000.bus/32e50000.usb/ci_hdrc.1/usb1/1-1/1-1.1 | drivers: option, cdc_ether | plugin: telit | primary port: ttyUSB2 | ports: ttyUSB1 (at), ttyUSB2 (at), wwan0 (net) -------------------------------- Status | unlock retries: sim-pin (3), sim-puk (10), sim-pin2 (3), sim-puk2 (10) | state: connected | power state: on | access tech: lte-cat-m | signal quality: 100% (recent) -------------------------------- Modes | supported: allowed: 2g; preferred: none | allowed: 4g; preferred: none | allowed: 2g, 4g; preferred: none | current: allowed: 2g, 4g; preferred: none -------------------------------- Bands | supported: egsm, dcs, pcs, g850, eutran-1, eutran-2, eutran-3, | eutran-4, eutran-5, eutran-8, eutran-12, eutran-13, eutran-18, | eutran-19, eutran-20, eutran-25, eutran-26, eutran-27, eutran-28 | current: egsm, dcs, pcs, g850, eutran-1, eutran-2, eutran-3, | eutran-4, eutran-5, eutran-8, eutran-12, eutran-13, eutran-18, | eutran-19, eutran-20, eutran-25, eutran-26, eutran-27, eutran-28 -------------------------------- IP | supported: ipv4, ipv6, ipv4v6, non-ip -------------------------------- 3GPP | imei: 357219xxxxxx80 | operator id: 310410 | operator name: AT&T | registration: roaming | packet service state: attached -------------------------------- 3GPP EPS | ue mode of operation: csps-2 -------------------------------- SIM | primary sim path: /org/freedesktop/ModemManager1/SIM/0 -------------------------------- Bearer | paths: /org/freedesktop/ModemManager1/Bearer/0 root@jammy-venice:~# mmcli -m 0 -b 0 ------------------------------------ General | path: /org/freedesktop/ModemManager1/Bearer/0 | type: default ------------------------------------ Status | connected: yes | suspended: no | multiplexed: no | interface: wwan0 | ip timeout: 20 ------------------------------------ Properties | apn: hologram | roaming: allowed ------------------------------------ IPv4 configuration | method: static | address: 100.77.130.8 | prefix: 28 | gateway: 100.77.130.9 | dns: 8.8.8.8, 8.8.4.4 | mtu: 1430 ------------------------------------ Statistics | start date: 2025-05-16T16:30:05Z | duration: 210 | bytes rx: 746 | bytes tx: 588 | attempts: 1 | total-duration: 210 | total-bytes rx: 746 | total-bytes tx: 588 root@jammy-venice:~# }}} 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/28 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.