A Hardware Development Notebook for Field Engineers
In industrial IoT (IIoT) projects, field technicians often need a reliable handheld debugging tool to configure remote sensor nodes, smart meters, or industrial controllers, read data, and diagnose faults. Such tools typically take the form of a USB dongle that plugs into a laptop or tablet, communicating with target devices through dedicated software.
This article documents the design process of a multi‑band (433/868/915 MHz) Sub‑1GHz USB dongle based on the TI CC1310. It covers hardware design, matching network tuning, firmware development, test verification, and field application experiences, with the hope of providing a useful reference for engineers working on similar projects.
Keywords: CC1310, Sub‑1GHz, USB Dongle, matching network, commissioning tool
The CC1310 was chosen as the core RF SoC for the following reasons:
High integration: Cortex‑M3 core + RF transceiver simplifies the BOM and layout
Low power consumption: 5.4 mA RX, 13.4 mA TX @ +10 dBm – ideal for battery‑powered nodes; for a USB‑powered dongle, low power translates to less heat and better stability
Software ecosystem: TI provides a complete SDK, SmartRF Studio configuration tool, and extensive application notes
Multi‑band support: With matching network adjustments, the design can cover 433/868/915 MHz, making it easy to address different regional markets
RF Section (based on TI application note AN122):
The RF_P and RF_N pins of the CC1310 are routed to a balun that converts the differential signal to a single‑ended 50 Ω line
A π‑network (C1, L1, C2) is reserved at the output for impedance tuning
An SMA connector is used to allow external high‑gain antennas or test cables
Power Supply:
5 V from USB is stepped down to 3.3 V by an LDO (TI TPS7A20) to power the CC1310
A 10 μF + 0.1 μF filter capacitor is placed at the LDO output to reduce ripple and its impact on receiver sensitivity
USB Interface:
Since the CC1310 does not have a built‑in USB controller, a USB‑to‑UART bridge (CP2102N) is added
The TX/RX pins of the CP2102N connect to UART0 of the CC1310; the DTR signal is used to control reset during firmware updates
Debug Interface:
A 10‑pin Tag‑Connect footprint is reserved for code download and debugging
The complete schematic is open‑sourced in the GitHub repository.
RF performance is highly dependent on PCB layout. The following points were validated through repeated testing:
Ground Plane Integrity
A continuous, uninterrupted ground plane must exist under the CC1310 and the RF front‑end. No signal traces should run through this area. Dense vias between the top and bottom layers ensure a low‑impedance return path.
RF Traces
The differential traces from the CC1310 to the balun should be equal in length, parallel, and have a controlled impedance of 100 Ω
The single‑ended trace from the balun to the SMA connector must be 50 Ω (trace width determined by stack‑up and reference layer distance)
Traces should be kept as short as possible; avoid sharp corners – use arcs or 135° bends
π‑Network Placement
The π‑network (C1, L1, C2) should be placed immediately after the balun output to minimize additional parasitic effects. Capacitors and inductors use 0402 packages for easy swapping during tuning.
Crystal Layout
The 24 MHz crystal should be placed as close as possible to the CC1310. Load capacitors should be positioned near the crystal, and no traces should run underneath it.
USB Bridge
The CP2102N should be placed close to the USB connector, with the differential data lines (D+/D‑) routed as a matched pair with 90 Ω impedance.
The PCB is a four‑layer board: top signal, second layer solid ground, third layer power, bottom signal. RF traces reference the second‑layer ground plane.
Antenna port return loss S11 < –10 dB (at the target frequency)
Conducted output power ≥ +13 dBm (typical for the CC1310 internal PA)
Second harmonic < –30 dBm (to meet CE/FCC requirements)
Vector network analyzer: Keysight E5061B, calibrated to the SMA connector plane
Spectrum analyzer: Keysight N9020A
Test cables: Low‑loss phase‑stable cables
Components: 0402‑package capacitors and inductors (0.5 pF – 10 pF, 1 nH – 27 nH)
Step 1: Measure Initial Impedance
Connect the SMA port of the dongle to the calibrated network analyzer and measure S11 at 433, 868, and 915 MHz. The initial design often shows an impedance point far from 50 Ω due to differences between the reference design stack‑up and the actual layout.
Step 2: Adjust the π‑Network
Taking 433 MHz as an example: the initial matching network uses reference values C1=1.2 pF, L1=3.3 nH, C2=1.8 pF. Measured S11 is –5.2 dB at 433 MHz, with the impedance slightly capacitive.
Tuning steps:
Increase C1 to 1.8 pF → S11 improves to –7.1 dB
Reduce L1 to 2.7 nH → S11 reaches –9.8 dB
Fine‑tune C2 to 2.2 pF → S11 stabilizes at –12.3 dB
Step 3: Verify Across Bands
Because the dongle is designed to support multiple bands, tuning must be performed at 433, 868, and 915 MHz. In practice, a single set of π‑network components cannot achieve S11 < –10 dB simultaneously on all three bands. Therefore, a “frequency‑band jumper” approach was adopted: two sets of matching network pads are reserved, and the appropriate components are populated depending on the target market.
Step 4: Harmonic Testing
Place the dongle in continuous‑wave transmission mode (+14 dBm output) and observe the second harmonic with a spectrum analyzer. At 868 MHz, the second harmonic (1736 MHz) measured –28 dBm, slightly above the –30 dBm target. Increasing the series inductance from 2.2 nH to 3.3 nH lowered the harmonic to –34 dBm, with a 0.5 dB loss in fundamental power – an acceptable trade‑off.
Tuning Results Summary:
| Band | Final Matching Network | S11 | Conducted Power | 2nd Harmonic |
|---|---|---|---|---|
| 433 MHz | C1=1.8p, L1=2.7n, C2=2.2p | –12.3 dB | +14.2 dBm | –36 dBm |
| 868 MHz | C1=0.8p, L1=3.9n, C2=1.5p | –11.8 dB | +14.0 dBm | –34 dBm |
| 915 MHz | C1=0.5p, L1=4.7n, C2=1.2p | –10.5 dB | +13.8 dBm | –32 dBm |
SDK: TI SimpleLink SDK 4.40
IDE: IAR Embedded Workbench for ARM 8.50
Configuration tool: SmartRF Studio 7
The configuration code was generated using SmartRF Studio 7. Key parameters are:
| Parameter | Value |
|---|---|
| Center frequency | 433.92 / 868.3 / 915.0 MHz (software‑selectable) |
| Data rate | 50 kbps |
| Modulation | 2‑GFSK |
| Frequency deviation | 25 kHz |
| RX bandwidth | 100 kHz |
| Output power | +14 dBm (register value 0x6E) |
| PA ramp time | 10 μs |
The generated configuration structure is integrated into the firmware and called via RF_open() and RF_postCmd().
A simple frame format was defined to enable communication between the PC software and the dongle:
| Byte | Field | Description |
|---|---|---|
| 0 | STX (0xAA) | Start of frame |
| 1 | CMD | Command type |
| 2 | LEN | Data length |
| 3 … N | DATA | Command parameters |
| N+1 | CRC8 | Checksum |
Supported commands:
CMD_SET_FREQ: Switch frequency band
CMD_SET_TX: Transmit a custom packet
CMD_SET_RX: Enter receive mode
CMD_GET_RSSI: Read current RSSI
CMD_FW_UPDATE: Enter firmware update mode
A DFU (Device Firmware Upgrade) mechanism is implemented:
On power‑up, if the USB‑UART DTR signal is pulled low, the device enters bootloader mode
The bootloader receives the new firmware via XMODEM and writes it to internal flash
After completion, a soft reset jumps to the application
This approach eliminates the need for an external programmer; field technicians can upgrade the dongle firmware directly from the PC software.
Although the dongle is USB‑powered, power consumption was still optimized for cases where it might be used with a portable battery pack:
When idle, the CC1310 enters Standby mode (~1 μA)
It wakes up every 200 ms to check for new commands from the PC
After transmission, it immediately returns to Standby
Measured average current is less than 2 mA, allowing continuous operation for days even with a standard power bank.
Output power measured at the SMA port using a spectrum analyzer and attenuator (CC1310 internal PA set to +14 dBm):
| Band | Conducted Power | EVM | Frequency Error |
|---|---|---|---|
| 433 MHz | +14.2 dBm | 4.2% | < 2 kHz |
| 868 MHz | +14.0 dBm | 4.5% | < 1.5 kHz |
| 915 MHz | +13.8 dBm | 4.8% | < 2 kHz |
Outdoor range testing was conducted on an open field:
Antenna: SMA 1/4‑wave whip (approx. 17 cm for 433 MHz)
Transmit power: +14 dBm
Receiver: Same dongle model, sensitivity –110 dBm @ 50 kbps
Result: Reliable communication > 1.2 km (line‑of‑sight), packet error rate < 1%
In an urban environment (streets, scattered trees), the usable range decreased to 300–500 meters, still sufficient for most industrial applications.
Using a signal generator injecting a –110 dBm 2‑GFSK signal (50 kbps), the measured PER was < 1%. When the input level was reduced to –115 dBm, the PER rose to 8%, though the link remained functional.
| State | Current |
|---|---|
| TX (+14 dBm) | 13.8 mA |
| RX | 5.5 mA |
| Standby | 1.2 μA |
| Average (polling mode) | 1.8 mA |
In a smart water meter project, technicians used this dongle with a Windows tablet to commission and configure over 200 meters distributed across a residential area (approximately 500 m range).
Encountered issues and solutions:
Issue 1: Some meters located in basements had weak signal reception
Solution: Used an external 5 dBi high‑gain antenna placed near a window, connected to the tablet via a USB extension cable.
Issue 2: Severe 2.4 GHz interference caused high network join failures during initial commissioning
Solution: Leveraged the dongle’s spectrum scanning feature (implemented in firmware) to select the least‑congested channel (the 915 MHz band offers 10 channels at 1 MHz spacing) and manually configured the meters to that channel.
Issue 3: Some meters had outdated firmware that could not parse the new commands
Solution: Used the dongle’s DFU capability to batch‑upgrade the meter firmware, completing the task in about 15 minutes.
Field feedback: The dongle was easy to use, the software interface was clear, and commissioning efficiency improved by approximately 3× compared to previous handheld terminals.
Several factors contributed to the success of this project:
Respect the reference design, but don’t follow it blindly
TI’s reference design is an excellent starting point, but differences in actual layout inevitably require re‑tuning the matching network. Reserving a π‑network proved to be a wise decision.
Proficiency with test equipment
A network analyzer and spectrum analyzer are essential tools for RF debugging. Investing time in learning Smith chart analysis and harmonic suppression techniques pays off significantly.
Co‑design hardware and firmware
Defining the command protocol and DFU mechanism early prevented late‑stage rework. Giving field users the ability to update firmware greatly reduced maintenance costs.
Iterate based on field feedback
After delivering the first batch of prototypes, feedback from field engineers led to improvements such as more intuitive channel selection and a more robust antenna connector.
The value of open source
After open‑sourcing the project, we received valuable suggestions from engineers in Europe, North America, and Southeast Asia, including adding LoRa modulation support and improving bootloader stability. These suggestions have been incorporated into the next revision.
If you are developing a similar Sub‑1GHz commissioning tool, I hope these notes help you avoid some common pitfalls. Feel free to submit issues or pull requests on GitHub – contributions are welcome.