Zebra FX9600 RFID Reader¶
What It Is¶
The Zebra FX9600 is a fixed RFID reader that continuously reads RFID tags on cases as they pass on the conveyor. It stores tags in a cache that the validation system checks when a case is scanned by the camera. The FX9600 supports up to 4 antennas and provides configurable transmit power and RSSI (signal strength) filtering.
Which Sites Use It¶
- Cargill St. Clair
- Cargill Oil - Sidney
- Cargill Oil - Gainesville
- Cargill Oil - Fullerton
Connection Details¶
| Detail | Value |
|---|---|
| Protocol | TCP/IP |
| Default port | 5084 |
| Connection string format | READER_IP:5084 (e.g., 192.168.100.125:5084) |
| SDK | Zebra RFID SDK for .NET |
How to Tell If It Is Working¶
- Diagnostics panel: RFID reader shows "Connected" with a green indicator.
- Tag cache viewer: In diagnostics, the RFID tag cache shows recently read tags with their EPCs and RSSI values.
- Log messages:
Connected to Zebra RFID reader.-- successful connectionAsynchronous reading started.-- RFID polling is active[RFID-DIAG] TAGS FOUND - Processed {X} tags-- tags are being read
How It Works¶
- GateKeeper connects to the FX9600 on startup and begins continuous reading.
- The reader constantly scans for RFID tags in the antenna field.
- Each tag read includes the EPC (Electronic Product Code) and RSSI (signal strength).
- Tags are stored in a cache with a configurable expiration time (default: 17 seconds).
- When a camera triggers validation, the system searches the cache for a matching tag.
- If found, the RFID data is used in validation. If not found, validation fails with "No matching RFID data."
RSSI Tuning Guide¶
What Is RSSI?¶
RSSI (Received Signal Strength Indicator) measures how strong the RFID tag signal is, in decibels-milliwatt (dBm). The range is from -127 dBm (weakest possible) to 0 dBm (strongest possible).
Key concept: More negative = weaker signal. Less negative = stronger signal.
- -50 dBm is a STRONG signal (tag is close to antenna)
- -70 dBm is a MODERATE signal (normal operating range)
- -80 dBm is a WEAK signal (tag is far from antenna or obstructed)
Why RSSI Filtering Matters¶
Without RSSI filtering, the reader may pick up tags from: - Adjacent conveyor lanes - Cases stacked nearby but not on the active line - Tags that are far from the antenna
With RSSI filtering, only tags with a strong enough signal are accepted, ensuring the system reads only the tag on the case currently being validated.
RSSI Threshold Values¶
| Threshold | Level | When to Use |
|---|---|---|
| -127 dBm | Disabled (all tags accepted) | Testing, development, initial setup |
| -80 dBm | Very permissive | Long-range outdoor reading |
| -70 dBm | Recommended for production | Standard indoor conveyor line |
| -60 dBm | Moderate | Multi-lane conveyors, prevent cross-lane reads |
| -50 dBm | Strict | Close-range precision reading |
How to Adjust RSSI Threshold¶
- Stop the GateKeeper application.
- Edit
appsettings.jsonon the production machine. - Find the RFID reader entry in
HardwareSettings. - Update the
RssiThresholdvalue in theConfigurationJSON string: - Save the file and restart the application.
- Verify in logs:
RFID Reader configured with RSSI threshold: -70 dBm (ENABLED)
Reading RSSI Values in Logs¶
Enable Debug logging to see per-tag RSSI values:
Tag accepted (signal strong enough):
Tag filtered (signal too weak):
Summary per read cycle:
This means: 5 tags accepted, 0 filtered by EPC prefix, 3 filtered for weak signal. Total tags seen: 8.Tuning Process¶
Follow this process to find the right RSSI threshold for a site:
- Start with filtering disabled (
RssiThreshold: -127). - Enable Debug logging in
appsettings.json. - Run the conveyor with normal production cases.
- Check the logs for
[RSSI PASS]entries. Note the typical RSSI values. - Identify the normal range: Most valid reads should be between -50 and -70 dBm.
- Set the threshold about 10 dBm below the typical value. For example, if most reads are around -55 to -65 dBm, set the threshold to -70 dBm.
- Test and adjust:
- Too many
[RSSI FILTERED]messages? Lower the threshold (more negative). - Unwanted tags from other areas? Raise the threshold (less negative).
- Once tuned, disable Debug logging to prevent large log files.
Antenna Configuration¶
| Setting | Range | Default | Description |
|---|---|---|---|
AntennaCount |
1-4 | 1 | Number of antennas to activate |
PowerLevel |
10.0-30.0 dBm | 27.0 | Transmit power |
Antenna Tips¶
- More antennas = wider read zone but more potential for unwanted reads
- Lower power = smaller read zone but more precise (good for multi-lane)
- Higher power = larger read zone (good for single lane with variable tag position)
- Antenna position should be as close to the conveyor tag path as practical
Tag Cache¶
| Setting | Default | Description |
|---|---|---|
TagExpirationSeconds |
17 | How long tags stay in cache before expiring |
Tags expire from the cache after the configured time. If a case moves slowly and the tag expires before the camera triggers, validation will fail with "No matching RFID data."
If TagExpirationSeconds is set to 0, the cache operates in bypass mode and returns synthetic data. This is for testing only and should never be used in production.
Common Problems and Solutions¶
| Problem | Symptoms | Solution |
|---|---|---|
| Reader disconnected | Log shows "Reader disconnected unexpectedly" | Check network cable, power cycle reader, restart application |
| No tags being read | Tag cache empty, validation fails with "No matching RFID data" | Verify RFID polling is started (check log for "Asynchronous reading started"), check antenna connection |
| Too many tags filtered | Lots of [RSSI FILTERED] entries |
Lower RSSI threshold (more negative) or increase transmit power |
| Unwanted tags from other areas | Wrong tags appearing in validation | Raise RSSI threshold (less negative) or reduce transmit power |
| Buffer full warning | Log shows "Buffer full - consider reading tags faster" | Reader is overwhelmed -- reduce antenna count or power |
| Antenna disconnected | Log shows "Antenna {id} disconnected" | Check physical antenna cable connection |
| Tags expire before validation | "No matching RFID data" for cases that have tags | Increase TagExpirationSeconds or check conveyor speed |
Error Messages¶
| Error Message | What It Means |
|---|---|
Connection failed: {error}. {details} |
Cannot connect to reader -- network or power issue |
Not connected to reader. |
Operation attempted while reader is offline |
Reader disconnected unexpectedly. |
Connection lost during operation |
Antenna {id} connected/disconnected. |
Antenna cable plugged in or removed |
Buffer full - consider reading tags faster. |
Reader internal buffer is full |
Inventory error: {message} |
Error during tag reading cycle |
Reader antenna configuration is unavailable. |
Cannot read antenna settings from reader |
Transmit power must be between 10 and 30 dBm. |
Invalid power level in configuration |
Antenna ID {id} is out of range; value must be 1 to {max}. |
Invalid antenna number in configuration |
Failed to set antenna configuration: {message} |
Could not apply antenna settings |
Read Rate Optimization¶
To maximize reliable tag reads:
- Antenna placement: Position the antenna so cases pass within 6-12 inches.
- Tag orientation: RFID tags read best when the tag face is parallel to the antenna face. Perpendicular orientation may cause weak reads.
- Metal interference: Metal near the antenna or tag reduces read range. Use spacers or reposition if needed.
- Tag-to-tag interference: Dense tag environments (many cases close together) can cause interference. RSSI filtering helps select the closest tag.
- Conveyor speed: Faster conveyors give less time for reads. Ensure the tag is in the antenna field long enough for a reliable read.
When to Escalate¶
- Reader cannot connect after power cycle and network verification
- Antenna shows disconnected but cable is physically connected
- RSSI values are consistently very weak (-80 or worse) despite correct positioning
- Reader firmware needs updating
- Tag cache bypass mode is enabled in production (should never be)