{"product_id":"cellular-iot-isbn-9781394329656","title":"Cellular IoT","description":"\u003cp\u003e\u003cb\u003eDetailed, practical guidance for implementing IoT cellular network connectivity solutions for software developers and electrical engineers, and project managers.\u003c\/b\u003e \u003c\/p\u003e\u003cp\u003eFocusing exclusively on using cellular connectivity for IoT devices, \u003ci\u003eCellular IoT\u003c\/i\u003e presents a flexible approach, using algorithms and software designs, to drastically reduce the complexity of interacting with a wide variety of Cellular Communication Modules (CCMs) which lie at the heart of cellular modems. Written in an accessible style, this book is one of the first to cover all practical aspects of cellular network connectivity, from network and SIM selection through to custom algorithms for detecting and recovering from a wide variety of connectivity problems, and an innovative approach to reliably manage AT commands in modern cellular modems. \u003c\/p\u003e\u003cp\u003eThis book explains the factors related to establishing and maintaining cellular connectivity including  geography and topology, population density, SIM card (and connectivity provider) selection, antenna choice and placement, and CCM selection. The book also provides detailed examples and troubleshooting advice, showing how to transfer data using low-level sockets and also using a high-level protocol (HTTP), creating a brief, temporary connection for a primitive IoT device to send a small amount of data, and also establishing and maintaining a continuous cellular connection with full Internet access on powerful IoT devices running Linux. \u003c\/p\u003e\u003cp\u003eWritten by an author with considerable professional expertise and experience with cellular connectivity, \u003ci\u003eCellular IoT\u003c\/i\u003e includes information on: \u003c\/p\u003e\u003cul\u003e \u003cli\u003ePlatforms, tools, and debugging, covering tool-chain selection, computing\/OS platforms, programming language choices, and running IoT connectivity code in a debugger\u003c\/li\u003e \u003cli\u003eCellular network basics, covering base stations, range, cell towers, tracking areas and paging, frequency and modulation, bandwidth and latency, frequency bands, and SIM cards\u003c\/li\u003e \u003cli\u003eSimilarities and differences across CCMs, frequency,  band, Radio Access Technology (RAT), protocol and data representation, selection and consequences\u003c\/li\u003e \u003cli\u003eLow-level communication protocols including transmission control protocol (TCP), user datagram protocol (UDP), point-to-point protocol (PPP), and custom hybrids for cellular IoT\u003c\/li\u003e \u003cli\u003eFull coverage, for the first time, of SMS, GNSS (available in most CCMs), obtaining precise time, and utilizing the power saving functionality of Extended Discontinuous Reception (eDRX) and Power Saving Mode (PSM) available in NB-IoT, LTE Cat M and LTE Cat 1 bis CCMs\u003c\/li\u003e \u003cli\u003eEntirely new and innovative software approach, \u003ci\u003eCommand Independent Processing\u003c\/i\u003e (CIP), to systematically manage and execute AT commands across families of CCMs and integrating standardized (3GPP) AT commands with vendor specific ones to achieve greater software portability across CCMs.\u003c\/li\u003e \u003c\/ul\u003e \u003cp\u003e\u003ci\u003eCellular IoT\u003c\/i\u003e is an essential resource for software developers, hardware engineers, and project managers seeking to avoid connectivity pitfalls and be better able to diagnose and resolve newly encountered challenges in the field while drastically reducing the time required to produce reliable, IoT connectivity solutions. \u003c\/p\u003e\u003cp\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1 – Introduction\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e                1.1  Wireless Connectivity Alternatives\u003c\/p\u003e \u003cp\u003e                1.2  Goals\u003c\/p\u003e \u003cp\u003e                1.3  The Fundamental Problem\u003c\/p\u003e \u003cp\u003e                1.4  Audience\u003c\/p\u003e \u003cp\u003e                1.5  Recommended Reading\u003c\/p\u003e \u003cp\u003e                1.6  Can One Size Fit All?\u003c\/p\u003e \u003cp\u003e                1.7  Hardware History                       \u003c\/p\u003e \u003cp\u003e                1.8  On-the-Move Connectivity Problems\u003c\/p\u003e \u003cp\u003e                1.9  Reference Implementations\u003c\/p\u003e \u003cp\u003e                1.10  Reference Microcontroller\/OS Platform\u003c\/p\u003e \u003cp\u003e                1.11  Reference Cellular Communication Modules (CCMs) Family\u003c\/p\u003e \u003cp\u003e                1.12  A Few Words on Advice, Practices and Efficiency\u003c\/p\u003e \u003cp\u003e                                1.12.1  \u003ci\u003eBest Practice\u003c\/i\u003e or \u003ci\u003eGood Practice\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e                                1.12.2  Efficiency Is a Large Umbrella\u003c\/p\u003e \u003cp\u003e                                                1.12.2.1  Spatial and Temporal Efficiency\u003c\/p\u003e \u003cp\u003e                                                1.12.2.2  Data Efficiency\u003c\/p\u003e \u003cp\u003e                1.12.2.3  Developmental Efficiency\u003c\/p\u003e \u003cp\u003e                1.13  3G, 4G, 5G, 6G\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2 - Platforms, Tools and Debugging\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e                2.1  Importance of Tool-Chain Selection\u003c\/p\u003e \u003cp\u003e                2.2  An Expanded View of the Tool Chain\u003c\/p\u003e \u003cp\u003e                2.3  Computing\/OS Platforms\u003c\/p\u003e \u003cp\u003e                2.4  Programming Language Choices\u003c\/p\u003e \u003cp\u003e                2.5  Running the Same Code on Development Computer and IoT Device\u003c\/p\u003e \u003cp\u003e                2.6  Running IoT Connectivity Code in a Debugger\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3 - Cellular Network Basics\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e                3.1  Standards\u003c\/p\u003e \u003cp\u003e                3.2  What do Cellular Networks do?\u003c\/p\u003e \u003cp\u003e                3.3  Are Cellular Networks Wireless?\u003c\/p\u003e \u003cp\u003e                3.4  What is a Cell? What is a Sector?\u003c\/p\u003e \u003cp\u003e                3.5  Omnidirectional Cellular Coverage\u003c\/p\u003e \u003cp\u003e                3.6  Cell Towers\u003c\/p\u003e \u003cp\u003e                3.7  How are Cellular Networks Identified?\u003c\/p\u003e \u003cp\u003e                3.8  How Are IoT Devices Identified\u003c\/p\u003e \u003cp\u003e                3.9  eNodeB IDs, and Cell IDs\u003c\/p\u003e \u003cp\u003e                3.10  Tracking Areas and Paging\u003c\/p\u003e \u003cp\u003e                3.11  Frequency and Modulation\u003c\/p\u003e \u003cp\u003e                                3.11.1  Modulation\u003c\/p\u003e \u003cp\u003e                                                3.11.1.1  Radio Telegraphy\u003c\/p\u003e \u003cp\u003e                                                3.11.1.2  Amplitude Modulation (AM Radio)\u003c\/p\u003e \u003cp\u003e                                                3.11.1.3  Frequency Modulation (FM Radio)\u003c\/p\u003e \u003cp\u003e                                                3.11.1.4  Phase Modulation\u003c\/p\u003e \u003cp\u003e                3.12  Spectral Efficiency\u003c\/p\u003e \u003cp\u003e                3.13  Error Detection\u003c\/p\u003e \u003cp\u003e                                3.13.1  Luhn Algorithm\u003c\/p\u003e \u003cp\u003e                3.14  Error Correction\u003c\/p\u003e \u003cp\u003e                3.15  LTE Modulation Techniques\u003c\/p\u003e \u003cp\u003e                                3.15.1  Binary Phase Shift Keying (BPSK)\u003c\/p\u003e \u003cp\u003e                                3.15.2  Quadrature Phase Shift Keying (QPSK)\u003c\/p\u003e \u003cp\u003e                                3.15.3  Quadrature Amplitude Modulation (QAM)\u003c\/p\u003e \u003cp\u003e                3.16  Bandwidth and Latency\u003c\/p\u003e \u003cp\u003e                3.17  Range\u003c\/p\u003e \u003cp\u003e                3.18  Frequency Bands\u003c\/p\u003e \u003cp\u003e                                3.18.1  Frequency Affects Range\u003c\/p\u003e \u003cp\u003e                3.19  Radio Access Technologies (RAT) and Categories\u003c\/p\u003e \u003cp\u003e                3.20  SIM Cards\u003c\/p\u003e \u003cp\u003e                3.21  What Happens When a Cellular Modem Switches On?\u003c\/p\u003e \u003cp\u003e                                3.21.1  Network Selection, Cell Selection, Camping, and Cell Reselection\u003c\/p\u003e \u003cp\u003e                                3.21.2  Network Registration\u003c\/p\u003e \u003cp\u003e                3.22  Handoff (also called Handover)\u003c\/p\u003e \u003cp\u003e                                3.22.1  Maintaining Connectivity\u003c\/p\u003e \u003cp\u003e                                3.22.2  Load Balancing\u003c\/p\u003e \u003cp\u003e                3.23  Sharing the Air\u003c\/p\u003e \u003cp\u003e                3.24  Timing Advance\u003c\/p\u003e \u003cp\u003e                                3.24.1  Why is Timing Advance Useful?\u003c\/p\u003e \u003cp\u003e                                3.24.2  How Accurate are Distance Estimates Using Timing Advance?\u003c\/p\u003e \u003cp\u003e                                3.24.3  Timing Advance Band Depth and Maximum Range\u003c\/p\u003e \u003cp\u003e                3.25  Expressing Power\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4 - SIM Card Basics\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e                4.1  Mobile Virtual Network Operators (MVNOs)\u003c\/p\u003e \u003cp\u003e                4.2  Size\u003c\/p\u003e \u003cp\u003e                4.3  Native Versus Multi-SIMs or MNO Versus MVNO\u003c\/p\u003e \u003cp\u003e                4.4  Home Versus Roaming Access\u003c\/p\u003e \u003cp\u003e                4.5  SIM Factors Affecting Price and Coverage\u003c\/p\u003e \u003cp\u003e                                4.5.1  How Much Do SIM Cards Cost?\u003c\/p\u003e \u003cp\u003e                                4.5.2  Is there a Monthly Activation Fee?\u003c\/p\u003e \u003cp\u003e                                4.5.3  Are There Fees for Activating and\/or Deactivating SIM Cards?\u003c\/p\u003e \u003cp\u003e                                4.5.4  How Much Does Data Cost\u003c\/p\u003e \u003cp\u003e                                4.5.5  Is the Monthly Data FPooled”?\u003c\/p\u003e \u003cp\u003e                                4.5.6  Are There Fees for Deactivated (but not Terminated) SIMS Cards?\u003c\/p\u003e \u003cp\u003e                                4.5.7  Is There a Not-Yet-Activated Fee?\u003c\/p\u003e \u003cp\u003e                4.6  Text Messages (SMS)\u003c\/p\u003e \u003cp\u003e                4.7  Usage Limits\u003c\/p\u003e \u003cp\u003e                4.8  Firewalls\u003c\/p\u003e \u003cp\u003e                4.9  Replacing SIMs and\/or Network Providers\u003c\/p\u003e \u003cp\u003e                4.10  Access Point Name (APN)\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5 - Verify Cellular Connectivity\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e                5.1  Preparation\u003c\/p\u003e \u003cp\u003e                                5.1.1  Adequate Power\u003c\/p\u003e \u003cp\u003e                                5.1.2  Activated SIM Card\u003c\/p\u003e \u003cp\u003e                                5.1.3  Base Station in Range\u003c\/p\u003e \u003cp\u003e                                5.1.4  SIM Card Authorization\u003c\/p\u003e \u003cp\u003e                                5.1.5  Band Configuration\u003c\/p\u003e \u003cp\u003e                                5.1.6  RAT Configuration\u003c\/p\u003e \u003cp\u003e                                5.1.7  Automatic Registration\u003c\/p\u003e \u003cp\u003e                5.2  Try to Auto-Register\u003c\/p\u003e \u003cp\u003e                5.3  What Can Go Wrong?\u003c\/p\u003e \u003cp\u003e                                5.3.1  Operating System Interference\u003c\/p\u003e \u003cp\u003e                                5.3.2  Communicating With Modem\u003c\/p\u003e \u003cp\u003e                                5.3.3  Malformed AT commands\u003c\/p\u003e \u003cp\u003e                                5.3.4  Parsing Responses to AT Commands\u003c\/p\u003e \u003cp\u003e                                5.3.5  Timing Problems\u003c\/p\u003e \u003cp\u003e                                5.3.6  Unset or Incorrect Access Point Name (APN)\u003c\/p\u003e \u003cp\u003e                5.4  Modem Configuration for Auto-Registration\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6 - Let’s Move Some Data\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e                6.1  Low-level Sockets or High Level Protocols\u003c\/p\u003e \u003cp\u003e                6.2  Verify \u003ci\u003eServerServer\u003c\/i\u003e is Running\u003c\/p\u003e \u003cp\u003e                6.3  Verify \u003ci\u003eEchoServer\u003c\/i\u003e is Running\u003c\/p\u003e \u003cp\u003e                6.4  USB or UART?\u003c\/p\u003e \u003cp\u003e                6.5  AT Commands — a Troubled Past\u003c\/p\u003e \u003cp\u003e                6.6  Unsolicited Response Codes (URCs)\u003c\/p\u003e \u003cp\u003e                6.7  A Handy \u003ci\u003eModem\u003c\/i\u003e Program\u003c\/p\u003e \u003cp\u003e                6.8  AT Commands Manuals\u003c\/p\u003e \u003cp\u003e                6.9  Communicating with the Cellular Modem\u003c\/p\u003e \u003cp\u003e                6.10  Getting \u003ci\u003eEchoServer\u003c\/i\u003e Information from \u003ci\u003eServerServer\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e                6.11  Bouncing Data off \u003ci\u003eEchoServer\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e                6.12  No Problems is Bad Luck\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 7 - Cellular Connectivity Regions\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e                7.1  How Geography, Topology and Population Density Affect Connectivity\u003c\/p\u003e \u003cp\u003e                                7.1.1  Geography and Topology\u003c\/p\u003e \u003cp\u003e                                7.1.2  Population Density\u003c\/p\u003e \u003cp\u003e                7.2  Region Categories\u003c\/p\u003e \u003cp\u003e                                7.2.1  Rural\u003c\/p\u003e \u003cp\u003e                                7.2.2  Rural Town\u003c\/p\u003e \u003cp\u003e                                7.2.3  Flat Farmland\/Flat Arid\u003c\/p\u003e \u003cp\u003e                                7.2.4  Mountainous\u003c\/p\u003e \u003cp\u003e                                7.2.5  Suburban\u003c\/p\u003e \u003cp\u003e                                7.2.6  Dense City\u003c\/p\u003e \u003cp\u003e                                7.2.7  Interstate Highway\u003c\/p\u003e \u003cp\u003e                                7.2.8  Uninhabited\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 8 - Cellular Communication Modules (CCMs)\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e                8.1  CCM Worldwide Market Share\u003c\/p\u003e \u003cp\u003e                8.2  Frequency Band Usage\u003c\/p\u003e \u003cp\u003e                8.3  Protocol Implementation\u003c\/p\u003e \u003cp\u003e                8.4  Similarities and Differences Across CCMs\u003c\/p\u003e \u003cp\u003e                                8.4.1  Single or Dual AT Command Channels\u003c\/p\u003e \u003cp\u003e                                8.4.2  Different AT command Sets\u003c\/p\u003e \u003cp\u003e                                8.4.3  Different Response Times for Similar or Identical Commands\u003c\/p\u003e \u003cp\u003e                                8.4.4  Differing Response Formats\u003c\/p\u003e \u003cp\u003e                                8.4.5  Differing Responses For Compound Statements\u003c\/p\u003e \u003cp\u003e                                8.4.6  Different Timing Requirements\u003c\/p\u003e \u003cp\u003e                                8.4.7  AT Command are not Thread-Safe\u003c\/p\u003e \u003cp\u003e                                8.4.8  Support For Different Protocols\u003c\/p\u003e \u003cp\u003e                8.5  Consider the Whole CCM Family\u003c\/p\u003e \u003cp\u003e                8.6  CCM Firmware Bugs\u003c\/p\u003e \u003cp\u003e                8.7  CCMs, Are a Lot Like Sensors: Imprecise and not Entirely Reliable\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 9 - AT Commands (a New Approach)\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e                9.1  Purpose of AT Commands\u003c\/p\u003e \u003cp\u003e                9.2  Problems of AT Commands\u003c\/p\u003e \u003cp\u003e                                9.2.1  Maximum Response Time for an AT Command\u003c\/p\u003e \u003cp\u003e                9.3  Traditional Solution to Executing AT Commands and Extracting Responses\u003c\/p\u003e \u003cp\u003e                9.4  Command Independent Processing (CIP)\u003c\/p\u003e \u003cp\u003e                                9.4.1  The Central Observation Underlying CIP\u003c\/p\u003e \u003cp\u003e                                9.4.2 Fundamental Elements of CIP\u003c\/p\u003e \u003cp\u003e                                                9.4.2.1  AtParams\u003c\/p\u003e \u003cp\u003e                                                9.4.2.2  AtCommand\u003c\/p\u003e \u003cp\u003e                                9.4.3  AT Command in CIP\u003c\/p\u003e \u003cp\u003e                                                9.4.3.1  Step 1 – Define a Name for a Command\u003c\/p\u003e \u003cp\u003e                                                9.4.3.2  Step 2 - Create a Set of Parameters for Each Command              \u003c\/p\u003e \u003cp\u003e                                                9.4.3.3  Step 3 - Store the Command Name and AtParams Object in a Map\u003c\/p\u003e \u003cp\u003e                                                9.4.3.4  Step 4 - Create a Command Object\u003c\/p\u003e \u003cp\u003e                                                9.4.3.5  Step 5 - Pass Arguments to the Command Object (if necessary)\u003c\/p\u003e \u003cp\u003e                                                9.4.3.6  Step 6 - Perform the Command\u003c\/p\u003e \u003cp\u003e                                                9.4.3.7  Step 7 – Verify Success or Failure\u003c\/p\u003e \u003cp\u003e                                                9.4.3.8  Step 8 - Extract Response Information\u003c\/p\u003e \u003cp\u003e                                                9.4.3.9  AT Commands with Parameters\u003c\/p\u003e \u003cp\u003e                                                9.4.3.10  Timing Out\u003c\/p\u003e \u003cp\u003e                                9.4.4  Using CIP Across CCM Families and Across Manufacturers\u003c\/p\u003e \u003cp\u003eChapter 10 - CIP Design and Details\u003c\/p\u003e \u003cp\u003e                10.1  Pseudocode Conventions\u003c\/p\u003e \u003cp\u003e                                10.1.1  Identifier Names\u003c\/p\u003e \u003cp\u003e                                10.1.2  Angle Brackets\u003c\/p\u003e \u003cp\u003e                                10.1.3  Constructors\u003c\/p\u003e \u003cp\u003e                                10.1.4  Dot Operator\u003c\/p\u003e \u003cp\u003e                                10.1.5  Unified Modeling Language (UML)\u003c\/p\u003e \u003cp\u003e                10.2  A Note on Objected-Orientation and Threads\u003c\/p\u003e \u003cp\u003e                10.3  AT Command Basics\u003c\/p\u003e \u003cp\u003e                                10.3.1  Echoing\u003c\/p\u003e \u003cp\u003e                                10.3.2  Enable\/Disable Response Codes\u003c\/p\u003e \u003cp\u003e                                10.3.3  Short or Long Response Codes\u003c\/p\u003e \u003cp\u003e                                10.3.4  Line Terminators\u003c\/p\u003e \u003cp\u003e                                10.3.5  Housekeeping\u003c\/p\u003e \u003cp\u003e                10.4  Categories of Responses to AT Commands\u003c\/p\u003e \u003cp\u003e                                10.4.1  OK_ONLY\u003c\/p\u003e \u003cp\u003e                                10.4.2  TEXT_OK\u003c\/p\u003e \u003cp\u003e                                10.4.3  AFTER_COLON\u003c\/p\u003e \u003cp\u003e                                10.4.3  OK_PLUS_AFTER_COLON\u003c\/p\u003e \u003cp\u003e                                10.4.5  MULTI_RECEIVE\u003c\/p\u003e \u003cp\u003e                                10.4.6  MULTI_SEND\u003c\/p\u003e \u003cp\u003e                                10.4.7  MULTI_AFTER_COLON\u003c\/p\u003e \u003cp\u003e                10.5  Details of Command Independent Processing (CIP)\u003c\/p\u003e \u003cp\u003e                                10.5.1  AtStep Purpose\u003c\/p\u003e \u003cp\u003e                                10.5.2  AtStep Attributes\u003c\/p\u003e \u003cp\u003e                10.6  A “Factory Method” for Creating AtCommand Objects\u003c\/p\u003e \u003cp\u003e                10.7  Performing AT Commands\u003c\/p\u003e \u003cp\u003e                                10.7.1  Why AT Commands Fail\u003c\/p\u003e \u003cp\u003e                                10.7.2  Timing Out\u003c\/p\u003e \u003cp\u003e                                10.7.3  Details of the Execute Method\u003c\/p\u003e \u003cp\u003e                                10.7.4  Response Length\u003c\/p\u003e \u003cp\u003e                                10.7.5  Hardware Timing\u003c\/p\u003e \u003cp\u003e                                10.7.6  Combining Parameter Settings - Method Chaining\u003c\/p\u003e \u003cp\u003e                                10.7.7  Assessing Success, and Multiple Tries\u003c\/p\u003e \u003cp\u003e                                10.7.8  Multi-Line AT Commands - AtStep\u003c\/p\u003e \u003cp\u003e                                10.7.9  A Second Example With a Regular Expressions\u003c\/p\u003e \u003cp\u003e                                10.7.10  Integrating AtStep Into the execute Methods\u003c\/p\u003e \u003cp\u003e                10.8  AT Commands For Multiple Modems\u003c\/p\u003e \u003cp\u003e                                10.8.1  The Simplest Case\u003c\/p\u003e \u003cp\u003e                                10.8.2  Connectors\u003c\/p\u003e \u003cp\u003e                                                10.13.2.1  All Connectors Are Also Threads\u003c\/p\u003e \u003cp\u003e                                                10.13.2.2  Connectors Are Created Using a Factory Method\u003c\/p\u003e \u003cp\u003e                                                10.13.2.3  Custom AT Commands are Added In Static Blocks of Connectors\u003c\/p\u003e \u003cp\u003e                                                10.13.2.4  Where to Override Methods or Parts of Methods\u003c\/p\u003e \u003cp\u003e                                10.8.3  An Asymmetrical Case – AtParamsNoOp\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 11 - Geographical Coverage, Signal Strength and Quality\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e                11.1  Radio Technologies (RATs)\u003c\/p\u003e \u003cp\u003e                11.2  Cellular Network Coverage Maps\u003c\/p\u003e \u003cp\u003e                11.3  Signal Strength and Quality: RSSI, RSRP, RSRQ, SINR\u003c\/p\u003e \u003cp\u003e                                11.3.1  RSSI and RSRP\u003c\/p\u003e \u003cp\u003e                                11.3.2  RSRQ\u003c\/p\u003e \u003cp\u003e                                11.3.3  SINR\u003c\/p\u003e \u003cp\u003e                                11.3.4  Using \u003ci\u003eModem\u003c\/i\u003e For to Report Signal Strength and Quality\u003c\/p\u003e \u003cp\u003e                11.4  Antenna Selection and Performance\u003c\/p\u003e \u003cp\u003e                                11.4.1  Antenna Size\u003c\/p\u003e \u003cp\u003e                                11.4.2  Passive Versus Active Antennas\u003c\/p\u003e \u003cp\u003e                                11.4.3  Antenna Connectors\u003c\/p\u003e \u003cp\u003e                                11.4.4  Antenna Placement\u003c\/p\u003e \u003cp\u003e                11.5  Antenna Testing\u003c\/p\u003e \u003cp\u003e                11.6  Geography and Signal Strength Must Be Considered Together\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 12 - Network Selection and Registration\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e                12.1  Network Registration\u003c\/p\u003e \u003cp\u003e                12.2  Radio Access Technology (RAT)\u003c\/p\u003e \u003cp\u003e                12.3  Network Frequency Band Selection\u003c\/p\u003e \u003cp\u003e                12.4  PLMN Selection\u003c\/p\u003e \u003cp\u003e                                12.4.1  Manual PLMN Selection\u003c\/p\u003e \u003cp\u003e                                12.4.2  Automatic PLMN Selection\u003c\/p\u003e \u003cp\u003e                12.5  How to Create Your Own User Preference List\u003c\/p\u003e \u003cp\u003e                                12.5.1  Reading the UPL and OPL\u003c\/p\u003e \u003cp\u003e                                12.5.2  Modifying the UPL\u003c\/p\u003e \u003cp\u003e                12.6  Once a PLMN is Auto-Selected, Is it Always Selected?\u003c\/p\u003e \u003cp\u003e                12.7  Forcing the CCM Back to the PLMN Preference List\u003c\/p\u003e \u003cp\u003e                12.8  A Mysterious PLMN Selection Behavior\u003c\/p\u003e \u003cp\u003e                12.9  Troubleshooting Registration Problems\u003c\/p\u003e \u003cp\u003e                                12.9.1  New Modem, Never Registered\u003c\/p\u003e \u003cp\u003e                                12.9.2  Old Modem, Previously Registered\u003c\/p\u003e \u003cp\u003e                12.10  Anomalous Behavior\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 13 - Communication Protocols: TCP, UDP, PPP and Hybrids\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e                13.1  Internet Protocol (IP)\u003c\/p\u003e \u003cp\u003e                13.2 Transmission Control Protocol (TCP)\u003c\/p\u003e \u003cp\u003e                13.3  Considering Data Consumption\u003c\/p\u003e \u003cp\u003e                13.4  User Datagram Protocol (UDP)\u003c\/p\u003e \u003cp\u003e                13.5  TCP Pros and Cons\u003c\/p\u003e \u003cp\u003e                13.6  Point-to-Point Protocol (PPP)\u003c\/p\u003e \u003cp\u003e                13.7  AT Commands for Data Transfer are Completely Unstandardized\u003c\/p\u003e \u003cp\u003e                13.8  PPP on Linux\u003c\/p\u003e \u003cp\u003e                                13.8.1  Debugging PPP\u003c\/p\u003e \u003cp\u003e                13.9  Alternatives to PPP\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 14 - Thin Air\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e                14.1  A Most Dramatic Case\u003c\/p\u003e \u003cp\u003e                                14.1.1  Watching the Server\u003c\/p\u003e \u003cp\u003e                                14.1.2  Packets Not Getting to the Server\u003c\/p\u003e \u003cp\u003e                14.2  What Was Going On? Thin Air\u003c\/p\u003e \u003cp\u003e                14.3  Why Did Thin Air Persist Over Hundreds of Miles?\u003c\/p\u003e \u003cp\u003e                14.4  How to Detect Thin Air\u003c\/p\u003e \u003cp\u003e                14.5  What to Do About Thin Air\u003c\/p\u003e \u003cp\u003e                14.6  Minimizing the Size of a Thin Air Region\u003c\/p\u003e \u003cp\u003e                14.7  A Hybrid UDP Protocol For Detecting Thin Air\u003c\/p\u003e \u003cp\u003e                14.8  Reducing (or Eliminating) Thin Air by PLMN or Band Selection\u003c\/p\u003e \u003cp\u003e                                14.8.1  The Most Direct Approach\u003c\/p\u003e \u003cp\u003e                14.9  Putting the Hybrid Protocol to a Second Use\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 15 - Time and Location (GNSS)\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e                15.1  Clarifying Terminology\u003c\/p\u003e \u003cp\u003e                15.2  Time\u003c\/p\u003e \u003cp\u003e                15.3  Location\u003c\/p\u003e \u003cp\u003e                15.4  Obtaining Time information\u003c\/p\u003e \u003cp\u003e                                15.4.1  Real-Time Clock (RTC)\u003c\/p\u003e \u003cp\u003e                                15.4.2  Cellular Modem\u003c\/p\u003e \u003cp\u003e                                                15.4.2.1  Additional Configuration\u003c\/p\u003e \u003cp\u003e                                                15.4.2.2  Local Time or UTC\u003c\/p\u003e \u003cp\u003e                                                15.4.2.3  Daylight Saving Time\u003c\/p\u003e \u003cp\u003e                                                15.4.2.4  Using \u003ci\u003eModem\u003c\/i\u003e to Read the Clock\u003c\/p\u003e \u003cp\u003e                                15.4.3  Get Time From a GNSS Receiver\u003c\/p\u003e \u003cp\u003e                                15.4.4  Get Time From a Server\u003c\/p\u003e \u003cp\u003e                15.5  Sources of Location Information\u003c\/p\u003e \u003cp\u003e                15.6  Pros and Cons of CCM’s GNSS Receiver Versus Stand-Alone GNSS Receiver\u003c\/p\u003e \u003cp\u003e                15.7  Cold Start, Warm Start, Hot Start\u003c\/p\u003e \u003cp\u003e                15.8  Assisted GPS (A-GPS)\u003c\/p\u003e \u003cp\u003e                15.9  GNSS Antenna Selection        \u003c\/p\u003e \u003cp\u003e                15.10  GNSS Receiver Placement\u003c\/p\u003e \u003cp\u003e                15.11  GNSS Accuracy and Precision\u003c\/p\u003e \u003cp\u003e                                15.11.1  Improving Accuracy\u003c\/p\u003e \u003cp\u003e                15.12  NMEA Sentences\u003c\/p\u003e \u003cp\u003e                                15.12.1  Using Modem to Read GNSS Sentences\u003c\/p\u003e \u003cp\u003e                15.13  Three Ways to Obtain Location Information\u003c\/p\u003e \u003cp\u003e                15.13.1  Simple AT Command Request for Location\u003c\/p\u003e \u003cp\u003e                15.13.2  Read Streaming Data From \u003ci\u003egpsd\u003c\/i\u003e Daemon\u003c\/p\u003e \u003cp\u003e                15.13.2.1  For a Stand-Alone GNSS Receiver\u003c\/p\u003e \u003cp\u003e                15.13.2.2  For a CCM’s GNSS Receiver\u003c\/p\u003e \u003cp\u003e                15.13.3  Read Streaming Data Directly From CCM’s GNSS receiver\u003c\/p\u003e \u003cp\u003e                15.14  Understanding \u003ci\u003egpsd\u003c\/i\u003e JSON Output\u003c\/p\u003e \u003cp\u003e                15.15  Writing Software To Capture and Process \u003ci\u003egpsd\u003c\/i\u003e Output\u003c\/p\u003e \u003cp\u003e                15.16  GNSS Data Streamed From a CCM\u003c\/p\u003e \u003cp\u003e                15.17  NMEA 0183\u003c\/p\u003e \u003cp\u003e                                15.17.1  Talker Sentence Format\u003c\/p\u003e \u003cp\u003e                                                15.17.1.2  RMC Sentence Format\u003c\/p\u003e \u003cp\u003e                                                15.17.1.3  GSV Sentence Format\u003c\/p\u003e \u003cp\u003e                                15.17.2  NMEA Checksums\u003c\/p\u003e \u003cp\u003e                                15.17.3  CCM GNSS Receivers Only Stream Some NMEA Sentences\u003c\/p\u003e \u003cp\u003e                15.18  Some Additional \u003ci\u003egpsd\u003c\/i\u003e Utilities\u003c\/p\u003e \u003cp\u003e                15.19  Setting System Time From Cellular Network, GNSS Time, or Server\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 16 - Establishing and  Maintaining a Cellular Connection\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e                16.1  Modem Selection\u003c\/p\u003e \u003cp\u003e                16.2  Foundational Tasks\u003c\/p\u003e \u003cp\u003e                                16.2.1  State 1 - Detecting CCM\u003c\/p\u003e \u003cp\u003e                                                16.2.1.1  Using \u003ci\u003eModem\u003c\/i\u003e to Detect a CCM\u003c\/p\u003e \u003cp\u003e                                16.2.2  State 2a - Initializing CMM\u003c\/p\u003e \u003cp\u003e                                                16.2.2.1  Viewing \u003ci\u003eModem’s\u003c\/i\u003e Initializations\u003c\/p\u003e \u003cp\u003e                                16.2.3  State 2b - Waiting to Retry\u003c\/p\u003e \u003cp\u003e                                16.2.4  State 3 - Set MNO\u003c\/p\u003e \u003cp\u003e                                16.2.5  State 4 - Checking Registration Status\u003c\/p\u003e \u003cp\u003e                                                16.2.5.1  Using \u003ci\u003eModem\u003c\/i\u003e to Check Registration Status\u003c\/p\u003e \u003cp\u003e                                16.2.6  State 5 - Connecting\u003c\/p\u003e \u003cp\u003e                                16.2.7  State 6 - Manage Connection\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 17 - Sending and Receiving Text Messages (SMS)\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e                17.1  Why Send\/Receive Text Messages?\u003c\/p\u003e \u003cp\u003e                                17.1.1  Need to “Push” Information to an IoT Device\u003c\/p\u003e \u003cp\u003e                                17.1.2  Serverless IoT Devices That Interact With End-Users\u003c\/p\u003e \u003cp\u003e                17.2  Cost of Text Messaging via Cellular Modem\u003c\/p\u003e \u003cp\u003e                17.3  Application-to-Person (A2P) Messaging is Often Regulated\u003c\/p\u003e \u003cp\u003e                17.4  Overview of Sending\/Receiving Text Messages\u003c\/p\u003e \u003cp\u003e                17.5  Sending Text Messages\u003c\/p\u003e \u003cp\u003e                                17.5.1  Set the Message Format\u003c\/p\u003e \u003cp\u003e                                17.5.2  Set Parameters for Sending\u003c\/p\u003e \u003cp\u003e                                17.5.3  Specify the Destination Phone Number and the Text to Send\u003c\/p\u003e \u003cp\u003e                                17.5.4  What if Sending an SM Fails?\u003c\/p\u003e \u003cp\u003e                                17.5.5  Using \u003ci\u003eModem\u003c\/i\u003e to Send a Text Message\u003c\/p\u003e \u003cp\u003e                17.6  Receiving and Reading a Text Messages\u003c\/p\u003e \u003cp\u003e                                17.6.1  Configure the CCM              \u003c\/p\u003e \u003cp\u003e                                                17.6.1.1  Set the Message Format\u003c\/p\u003e \u003cp\u003e                                                17.6.1.2  Configure SMS Storage\u003c\/p\u003e \u003cp\u003e                                                                Pitfall: Don’t Forget to Align Memory Blocks\u003c\/p\u003e \u003cp\u003e                                                17.6.1.3  Check for a Received Text Messages\u003c\/p\u003e \u003cp\u003e                                                17.6.1.4  Using \u003ci\u003eModem\u003c\/i\u003e to List Text Messages\u003c\/p\u003e \u003cp\u003e                                                17.6.1.5  Delete a Text Messages\u003c\/p\u003e \u003cp\u003e                                                17.6.1.6  Using \u003ci\u003eModem\u003c\/i\u003e to Delete a Text Message\u003c\/p\u003e \u003cp\u003e                17.7  SMS with Constrained Devices\u003c\/p\u003e \u003cp\u003e                                17.7.1  Set the Message Format\u003c\/p\u003e \u003cp\u003e                                17.7.2  Set Parameters for Writing to mem-2\u003c\/p\u003e \u003cp\u003e                                17.7.3  Specify the Destination Phone Number and Text to Store\u003c\/p\u003e \u003cp\u003e                                17.7.4  Send a Text Message Already Stored in mem-2\u003c\/p\u003e \u003cp\u003e                                17.7.5  Verifying a Text Message Was Sent From mem-2\u003c\/p\u003e \u003cp\u003e                17.8  Integrating SMS into CIP\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 18 - Power Saving Modes and Techniques\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e                18.1  What are Low-Power CCMs (LP-CCMs)\u003c\/p\u003e \u003cp\u003e                18.2  Plenty of Power, Most of the Time\u003c\/p\u003e \u003cp\u003e                18.3  Low-Power IoT Devices\u003c\/p\u003e \u003cp\u003e                                18.3.1  Microcontroller Energy Consumption\u003c\/p\u003e \u003cp\u003e                                18.3.2  Temperature Sensor Energy Consumption\u003c\/p\u003e \u003cp\u003e                18.4   Battery Capacity\u003c\/p\u003e \u003cp\u003e                18.5  Transmitter Power\u003c\/p\u003e \u003cp\u003e                18.6  Legacy (GSM) Power Consumption\u003c\/p\u003e \u003cp\u003e                18.7  Cellular Modem Energy Consumption\u003c\/p\u003e \u003cp\u003e                                18.7.1  Additional Energy Consumption\u003c\/p\u003e \u003cp\u003e                18.8  Network Registration States – RRC_CONNECTED and RRC_IDLE\u003c\/p\u003e \u003cp\u003e                                18.8.1  RRC_CONNECTED (without DRX)\u003c\/p\u003e \u003cp\u003e                                                18.8.1.1  Scenario 1 – Sending a Location Packet\u003c\/p\u003e \u003cp\u003e                                                18.8.1.2  Scenario 2 – Fetching an Over the Air Update\u003c\/p\u003e \u003cp\u003e                                18.8.2  RRC_IDLE (without DRX)\u003c\/p\u003e \u003cp\u003e                                18.8.3  Discontinuous Reception (DRX)\u003c\/p\u003e \u003cp\u003e                                                18.8.3.1  Discontinuous Reception in RRC_IDLE (iDRX)\u003c\/p\u003e \u003cp\u003e                                                18.8.3.2  Discontinuous Reception in RRC_CONNECTED (cDRX)\u003c\/p\u003e \u003cp\u003e                                18.8.4  Registration Characteristics Summary\u003c\/p\u003e \u003cp\u003e                18.9  Latency\u003c\/p\u003e \u003cp\u003e                18.10  Using Low-Power CCM – Cat M and NB-IoT and Cat 1 bis\u003c\/p\u003e \u003cp\u003e                18.11  Power Saving Mode (PSM)\u003c\/p\u003e \u003cp\u003e                                18.11.1  How to Enable PSM\u003c\/p\u003e \u003cp\u003e                                                18.11.1.1  Using Modem to Enter PSM\u003c\/p\u003e \u003cp\u003e                                18.11.2  Verifying PSM and Possible Problems or Surprises\u003c\/p\u003e \u003cp\u003e                                                18.11.2.1  Using Modem to Check PSM Status\u003c\/p\u003e \u003cp\u003e                                18.11.3  Actual PSM Cycle Length\u003c\/p\u003e \u003cp\u003e                                18.11.4  Exiting PSM\u003c\/p\u003e \u003cp\u003e                                                18.11.4.1  Using Modem to Exit PSM\u003c\/p\u003e \u003cp\u003e                                18.11.5  Sending Data From PSM Inactive\u003c\/p\u003e \u003cp\u003e                                18.11.6  PSM Effectiveness\u003c\/p\u003e \u003cp\u003e                                18.11.7  Integrating PSM into CIP\u003c\/p\u003e \u003cp\u003e                18.12  Extended Discontinuous Reception (eDRX)\u003c\/p\u003e \u003cp\u003e                                18.12.1  How to Enable eDRX\u003c\/p\u003e \u003cp\u003e                                                18.12.1.1  Using Modem to Enable eDRX\u003c\/p\u003e \u003cp\u003e                                18.12.2  Verifying eDRX Cycle Length\u003c\/p\u003e \u003cp\u003e                                                18.12.2.1  Using Modem to Check eDRX Status\u003c\/p\u003e \u003cp\u003e                                18.12.3  Disabling eDRX\u003c\/p\u003e \u003cp\u003e                                                18.12.3.1  Using Modem to Disable eDRX\u003c\/p\u003e \u003cp\u003e                                18.12.4  Integrating eDRX into CIP\u003c\/p\u003e \u003cp\u003e                18.13  When to Use PSM, eDRX or Both\u003c\/p\u003e \u003cp\u003e                18.14  Don't Trust the Numbers\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix A - A UML Primer\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e                A.1  Assumptions\u003c\/p\u003e \u003cp\u003e                A.2  UML Syntax\u003c\/p\u003e \u003cp\u003e                A.3  Visibility (private, protected, public)\u003c\/p\u003e \u003cp\u003e                A.4  Attribute\/Parameter\/Method Names and Types\u003c\/p\u003e \u003cp\u003e                A.5  Class Attributes and Methods\u003c\/p\u003e \u003cp\u003e                A.6  Aggregation\u003c\/p\u003e \u003cp\u003e                A.7  Multiplicities\u003c\/p\u003e \u003cp\u003e                A.8  Inheritance\u003c\/p\u003e \u003cp\u003e                A.9  Interfaces\u003c\/p\u003e \u003cp\u003e                A.10  Hidden Attributes\u003c\/p\u003e \u003cp\u003e                A.11  Layout \u003cbr\u003e\u003cbr\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eClosing Notes\u003cbr\u003e\u003cbr\u003e\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix B - 3GPP AT Commands Used in This Book\u003cbr\u003e\u003cbr\u003e\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix C - The \u003ci\u003eModem\u003c\/i\u003e Utility\u003cbr\u003e\u003cbr\u003e\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eGlossary\u003c\/b\u003e\u003c\/p\u003e  \u003cp\u003e\u003cb\u003eMatthew A. Brenner,\u003c\/b\u003e President, Singular IoT, VA, USA. Matt manufactures electronic equipment for vehicle tracking and a line of cellular modems and has developed specialized software and hardware tools and custom communication protocols for investigating cellular connectivity anomalies. He has vast experience teaching computer science and software engineering at every level. He offers consulting services to help companies achieve the best cellular connectivity for their IoT devices.\u003c\/p\u003e","brand":"Wiley","offers":[{"title":"Default Title","offer_id":47988896825573,"sku":"NP9781394329656","price":95.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1842\/7735\/files\/9781394329656.jpg?v=1761781965","url":"https:\/\/k12savings.com\/es\/products\/cellular-iot-isbn-9781394329656","provider":"K12savings","version":"1.0","type":"link"}