GW16162 Telit CMB100 Cellular Modem
The Gateworks GW16162 is a B-key M.2 form factor modem for use on Gateworks SBCs that uses the Telit CMB100 module.
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 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 below)
- M2.8 W_DISABLE1# (3.3V I/O inverted to CMB_PON) (see 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: Link
Certifications
- ATT Certifications
- CATM1/CAT4: 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): Link
Drivers
All drivers should already be included on Gateworks default Ubuntu builds on Gateworks SBCs.
Drivers:
- qmi_wwan (wwan), option (at commands)
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+GW16FB01 | 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 |
- 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
- toggle GPIO to power on CMB100 in U-Boot:
- 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
- toggle GPIO to power on CMB100 in U-Boot:
- GW730x in any Mini-PCIe socket with a M.2 adapter:
- Note, the WDIS signal from the CPU is routed to all the Mini-PCIe sites. Thus, if there are other radios in the system, they will all receive the WDIS signal at the same time as the GW16162:
setenv preboot "$preboot; gpio clr pci_wdis#.gpio-hog; sleep 6; gpio set pci_wdis#.gpio-hog"
- Note, the WDIS signal from the CPU is routed to all the Mini-PCIe sites. Thus, if there are other radios in the system, they will all receive the WDIS signal at the same time as the GW16162:
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: wireless/modem
Please also contact Gateworks support.
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.
