Zebra FX Configuration
Part of: Devices — detailed configuration reference for Zebra FX series readers
This guide covers the configuration options available for Zebra FX series RFID readers (FX7500, FX9600 and FXR90). The ATR7000 array reader has its own guide, Zebra ATR7000 Directionality. If Discover doesn't find your reader when you add it, see Reader Discovery. These settings control how the reader operates, which antennas are active, how tags are filtered, and how data is reported back to Tagnet.
Configuration lives in the Reader configuration section of a reader's edit page (Devices, open the reader, then Edit). Settings are grouped down that section, and each group appears only when the selected operating mode uses it: Operating mode, Antennas, and Tag ID filtering are always shown, and the rest are revealed by the mode you pick.
Changes are saved to Tagnet immediately, but they only reach the reader on the next deployment. Click Update and Tagnet offers to deploy right away; see Deploying Reader Configuration for the prompt, background deploys, and how to tell whether a reader is running what's saved here.
Operating Modes
The operating mode determines the fundamental behavior of the reader. Select a mode that matches your deployment scenario.
| Mode | Description | Best For |
|---|---|---|
| Simple | Read and report all unique tags in the field of view | General-purpose reading, workstations |
| Conveyor | Read and report all unique tags for each antenna | Conveyor belts, assembly lines |
| Inventory | Periodically report unique tags with metadata (peak RSSI, read counts per antenna) | Periodic stock checks, shelf monitoring |
| Portal | GPI-triggered reading that stops after no new unique tags are detected | Doorways, dock doors with motion sensors |
| Custom | Full low-level control over all radio settings | Advanced deployments requiring fine-tuned behavior |
Simple Mode
The radio reads and reports all unique tags across all enabled antennas. This is the most straightforward mode: the reader continuously scans and reports what it sees.
- Tags are reported once (per the default report filter)
- Antenna selection and tag filtering can be customized
Conveyor Mode
The radio reads and reports all unique tags for each antenna. Similar to Simple mode but optimized for scenarios where items pass by antennas sequentially.
- Tags are reported once per antenna
- Tag filtering can be customized
Inventory Mode
The radio reads tags and reports all unique tags on a periodic interval. Each report includes additional metadata: peak RSSI and read count per antenna during the interval.
- Tags are reported once per interval
- The reporting interval is configurable (see Inventory Settings)
- Tag filtering can be customized
Portal Mode
The radio waits for a GPI (General Purpose Input) event, typically from a motion sensor or photo eye, then reads until no new unique tags are detected for a configurable stop interval.
- FX7500, FX9600 and FXR90 only
- Requires a GPI trigger (see Portal Settings)
- Default: waits for a LOW signal on GPI port 1
- Default stop interval: 3 seconds after the last new unique tag
Custom Mode
Provides full access to all low-level radio configuration options. This mode is designed for advanced users who need precise control over start/stop conditions, antenna cycling, GPI triggers, and reporting behavior.
Custom mode reveals additional groups: Environment and RSSI filtering, Report filtering, Events, and Radio control.
Antennas
The Antennas group controls which antenna ports are active and their transmit power. The meter beside each port shows the level at a glance: every bar is a 3 dB step, which is a doubling of conducted power.
| Setting | Description |
|---|---|
| Enable/Disable | Toggle individual antennas on or off. At least one antenna must remain enabled. |
| Antenna Name | Optional label for each port (defaults to "Antenna-1", "Antenna-2", etc.) |
| Power | Transmit power in dBm for each antenna |
| Bulk Power | Set the same power level across all enabled antennas at once. Shows "Mixed" when antennas have different power levels. |
The range starts at 0 dBm and ends at the reader's own limit.
The reader's true maximum comes from its region configuration, not from its model: an FX9600 is rated to 33 dBm, but a reader whose region does not permit that rejects the setting, and a rejected configuration is discarded whole rather than clamped. So Tagnet asks the reader. Every full deployment, and every start, stop or status refresh from the Reader Control tab, ends with a Reader Status Sync that reads the reader's region, regulatory standard and supported power range and stores them on the device. The power slider and the save-time check then stop at the reported maximum. The caption under the Antennas title says which limit is in force: "Reader reports 30.0 dBm maximum for US FCC 15" once the reader has been read, or the model default until then. An operating-mode-only deployment does not run the sync, so it does not refresh these values.
Until a reader has been deployed or synced once, Tagnet offers the model default, 30 dBm on the FX7500, FX9600 and FXR90, which every region accepts. A reader whose region permits more raises the limit after its first deployment; a reader whose region permits less lowers it, and a saved power above the new limit is flagged at save time instead of failing the whole configuration at the reader. The region and regulatory standard appear with the reader's details on the device page, and the raw values are in the Connection Info tab. A cloud reader cannot be read from Tagnet, so it keeps the model default.
An FXR90's ceiling also depends on how it is powered. On the DC power brick it reaches 33 dBm; on PoE and PoE+ the reader limits its output to less (a lab FXR90 on a PoE+ injector reports 30.0 dBm). The device page shows the power source as POE, POE+ or DC, and the first status sync records the ceiling that source allows. If you move an FXR90 to a different power source, run a status sync from the Reader Control tab so the limit follows.
0 dBm is legal and the radio accepts it, but it transmits nothing, so Tagnet warns when an enabled antenna is left there rather than refusing to save it.
Cable loss compensation
Every foot of coax between the reader port and the antenna eats some of the configured power. Tell the reader about each port's cable and it makes up the difference: it computes the loss and adds it to the power configured for the port, so the power reaching the antenna is what you set. Per the FX Series Integrator Guide, "the calculated cable loss is internally added to the power level configured on the read point."
Each antenna row carries a chip between its power slider and its power reading. A port with no cable loss shows Cable; click it to set one. A port with cable loss shows the computed loss, for example +1.9 dB. On the device page, hovering the same chip spells out the arithmetic and what the reader does with it: "25 ft × 7.6 dB per 100 ft = 1.9 dB. The reader drives the port at 31.9 dBm so 30.0 dBm reaches the antenna." The power slider stays at the configured value; the extra is the reader's compensation, not something you set.
Clicking the chip opens the cable loss dialog for that port:
| Field | Description |
|---|---|
| Cable length (ft) | The length of the coax run from the reader port to the antenna, jumpers included. Chips above the field fill in the lengths cable vendors stock (6, 10, 20, 25, 50 ft); type any other length. |
| Loss per 100 ft (dB) | The cable's attenuation at the reader's operating frequency. Chips above the field fill in typical values for common cable types (table below); the cable's specification sheet has the exact figure. |
Apply needs both values. Clear removes both, which hands the port back to the reader's own value. The All antennas header row has the same chip: it shows the value the enabled antennas share, or Mixed when they differ, and its dialog sets or clears every enabled antenna at once, like the bulk power slider beside it. The typical values behind the cable type chips, at 900 MHz:
| Cable | Loss per 100 ft |
|---|---|
| LMR-195 | 11.1 dB |
| LMR-240 | 7.6 dB |
| LMR-400 | 3.9 dB |
| LMR-600 | 2.5 dB |
These are manufacturer figures for the genuine cable; "LMR-240 equivalent" cables from other makers can differ by a few tenths, and each connector adds around 0.1 to 0.2 dB that the per-100 ft figure does not include. Neither matters much: an error of half a dB at the antenna is below anything a tag read will show, but a long run of the wrong cable type is worth correcting from the datasheet.
Cable loss is reader configuration rather than operating mode, so it shows in every mode, and it only reaches the reader on a full deployment (a Cable Loss Compensation step runs after Reader Configuration). The step writes the values and then commits them, because the reader only stages a read-point change until it is committed: until then the radio keeps running the previous values, the staged ones are lost on a power cycle, and a reboot is refused with "Changes not committed". The Commit button in the reader's own web console does the same thing. Reader Status Sync warns when a reader is holding uncommitted changes, whatever put them there. Leave a port without cable loss and Tagnet does not manage that port: the deploy skips it, and the reader keeps whatever is set on it. If an installer already set cable loss in the reader's own admin console, Import cable loss from reader on the edit page adopts those values so they do not have to be retyped. The button appears while no port has cable loss in Tagnet.
This is also how an FX9600 reaches its 33 dBm hardware maximum: the configured power stops at the regional cap, and the compensation is added on top of it at the port. A large portal with long coax runs is exactly where that pays.
Filtering
Tag ID Filtering
Tag ID filters let you include or exclude tags based on their EPC identifier. You can filter by prefix, suffix, or regular expression.
| Setting | Description |
|---|---|
| Filter Match Type | The segment of the tag ID to match: Prefix, Suffix, or Regex |
| Filter Operation | Whether to include only matching tags or exclude matching tags |
| Filter Value | The value to match against |
Value format by match type:
| Match Type | Format | Example |
|---|---|---|
| Prefix | Hex digits only, even number of digits | e280, 3008 |
| Suffix | Hex digits only, even number of digits | e280, 3008 |
| Regex | C++ STL regex format | ^e280.* |
Filter values must be lowercase
The reader compares filters against a lowercase EPC, so uppercase hex never matches. A pattern like ^E280.* matches nothing, and it fails silently: an include filter reports no tags at all, and an exclude filter excludes nothing. This regex flavor has no case-insensitive option, so lowercase is the only way to write it.
Tagnet flags uppercase hex in the filter value and offers a one-click conversion. Note that Tagnet displays EPCs in uppercase everywhere else, so this is the one place where the casing you type has to differ from the casing you read.
Regex examples
A regex filter can express what prefix and suffix filters cannot: more than one prefix, a prefix and a suffix together, or a length check. The patterns below are written as whole-EPC matches, in lowercase hex, and assume a 96-bit EPC, which is 24 hex characters. Adjust the counts for other tag lengths (a 128-bit EPC is 32 characters).
Prefix. EPCs that start with a or with cab, of any length:
(a|cab)[0-9a-f]+
The same, but only when the EPC is exactly 24 characters long:
(a[0-9a-f]{23}|cab[0-9a-f]{21})
Suffix. EPCs that end with d8 or with 92, of any length:
[0-9a-f]+(d8|92)
The same, but only when the EPC is exactly 24 characters long:
([0-9a-f]{22}d8|[0-9a-f]{22}92)
Prefix and suffix. EPCs that start with c and end with d8, or start with ad1 and end with 92, of any length:
(c[0-9a-f]*d8|ad1[0-9a-f]*92)
The same, but only when the EPC is exactly 24 characters long:
(c[0-9a-f]{21}d8|ad1[0-9a-f]{19}92)
How the pieces fit:
[0-9a-f]is one hex character.+means one or more of them,*means zero or more, and{21}means exactly 21.(a|cab)is an alternation: eitheraorcab. The whole filter is wrapped in parentheses when it has alternatives, so the choice applies to the entire EPC rather than to the last character before the bar.- In the length-constrained forms, the count in braces is 24 minus the characters already spelled out:
aplus 23,cabplus 21,candd8plus 21,ad1and92plus 19.
Choose the length-constrained form when tags of other lengths can be in range and share the prefix or suffix. A yard with 96-bit asset tags next to 128-bit case tags that happen to start with the same company prefix is the usual case: the unconstrained pattern reads both, the constrained one reads only the asset tags. When every tag in range is the same length, the simpler pattern is easier to read and maintain.
If a pattern reads more than you expect, anchor it: ^ at the start and $ at the end restrict it to the whole EPC on every regex engine.
The reader does not accept a prefix filter together with session control settings. If you need both, write the filter as a regex (^e280.* matches the same tags as the prefix e280) or address the tags with a Select command instead.
Environment and RSSI Filtering
Available in Custom mode only.
| Setting | Description |
|---|---|
| Operating Environment | The RF environment the reader operates in |
| RSSI Filter | A single slider running from Off through the reader's cutoff range, -88.0 to -26.0 dBm. Reads weaker than the cutoff are discarded before the reader reports them. FX9600 and FXR90 only, see below. |
The RSSI filter is implemented on the FX9600 and FXR90, which report that they support it. On an FX7500 the setting is hidden, because the reader rejects the entire configuration if one is sent: a deployment carrying an RSSI filter fails with "RSSI filter not supported" and none of the other settings apply either.
The RSSI slider is monotonic: the further right you drag it, the more the reader throws away. The far-left position is Off, which removes the filter entirely rather than setting a cutoff at the floor. Just right of Off, -88.0 dBm filters the least; -26.0 dBm filters the most, keeping only strong, nearby reads.
The bar beside the slider shows the split: the hatched portion is the part of the reader's range being discarded, and the solid portion is what still gets reported. Distant and poorly-oriented tags are the first to drop out as the cutoff rises, so raise it gradually and watch your read counts.
Operating environment options:
| Environment | Description |
|---|---|
| Low Interference | Single interrogator environment: no other reader, or one that interferes only briefly |
| High Interference | Multi-interrogator environment (the reader default) |
| Very High Interference | More readers than available channels, or readers operating close together |
| Auto Detect | Reader assesses the environment and adjusts automatically |
| Demo | Maximum performance (fastest read rate), assumes no other readers nearby |
What the environment changes: modulation and speed
The environment is not just a label. Zebra documents that, together with the reader's region, it sets the link profile the radio runs (the tag-to-reader modulation, backscatter link frequency and Tari) and the receiver dynamic range, which is the reader's tolerance of other transmitters. You cannot pick a link profile directly on an FX reader; the environment is the knob.
The profiles the FX7500, FX9600 and FXR90 can run (Zebra's FX Series Integrator Guide, RF Air Link Configuration appendix, FCC readers) fall into four families, named by how many subcarrier cycles encode each tag bit:
| Tag modulation | Tag data rate | Trade |
|---|---|---|
| FM0 | 640 kbps (6.25 microsecond Tari) or 320 kbps | Fastest. Least tolerant of noise and of other readers. |
| Miller 2 | 120 to 160 kbps | |
| Miller 4 | 60 to 80 kbps | |
| Miller 8 | 30 to 40 kbps | Slowest. Most sensitive and most tolerant of interference. |
Each step down the table roughly halves the data rate and buys a few dB of receive sensitivity, so a slower profile reads a weaker tag the faster one cannot hear. The reader also has an automatic profile that varies these parameters itself, and it is the factory default air-link setting.
Zebra does not publish which profile each environment selects, so treat the following as the direction each setting leans rather than a specification: Demo runs the fastest profile with the least interference immunity; Low Interference a fast profile with some; High Interference a dense-reader profile that gives up speed for immunity; Very High Interference the slowest and most sensitive; Auto Detect the reader's own automatic profile.
Two things follow for choosing one:
- Speed is rarely the limit for a moving read. A vehicle at 10 mph crosses a 3 m read zone in under a second. Even at Miller 8 a single tag is singulated in a few milliseconds, so a truck carrying tens of tags gets many inventory rounds per pass at any profile. What usually decides whether the far side of the load is read is sensitivity and shadowing, which the slower profiles help with, not the data rate. Reach for Demo or Low Interference when the population per pass is in the hundreds, or when the tags are close and strong and you are counting reads per second; otherwise start from High Interference or Auto Detect and compare.
- Demo trades sensitivity for speed. Its reduced receiver dynamic range makes it the first profile to lose weak tags when transmit power is high and the reflections are strong, which is exactly a bench full of static tags a few feet from the antenna. Use it for demonstrations and for small, strong populations, and verify with a real pass before leaving it on a portal.
Report Filtering
Available in Custom mode only. Cannot be used in Inventory mode.
Report filtering controls how frequently unique tags are reported, reducing the volume of data sent by the reader.
| Setting | Description |
|---|---|
| Report Filter Duration | Time in seconds to wait before reporting a tag again after it has already been reported. As long as the tag is being read, it will not be reported again until this duration has elapsed since the previous report on the same antenna. Defaults to 1 second on a new configuration. |
| Report Filter Type | Whether the timeout applies per antenna or across the entire radio |
Report filter type options:
| Type | Description |
|---|---|
| Radio Wide | A single timer applies across all antennas |
| Per Antenna | Each antenna maintains its own report timer |
Default behavior when no report filter is set:
| Mode | Default Behavior |
|---|---|
| Simple | Report each tag read once |
| Portal / Conveyor | Report each tag the first time it is read on each antenna |
Report filtering and motion detection
Any report filter duration above 0 makes the reader send one summary per tag instead of reporting every individual read, and a summary carries no phase or channel data. Tagnet's tag motion detection depends on per-read phase to tell a tag moving through a portal apart from one sitting stationary nearby. Without it, every tag resolves to unknown motion, so a movement rule with a motion filter never matches and Live Reads shows no direction.
This is the default state, not an edge case you have to configure your way into. The report filter duration defaults to 1 second, and Inventory mode has no report filter at all, so a reader left on either default never reports motion. If a reader's tag motion state matters, set its report filter duration to 0 in Custom mode. Inventory mode can't supply phase no matter how it's configured.
Storage cost of reporting every read
At a report filter duration of 0 the reader posts every read of every tag it sees, and Tagnet stores each one. That is what motion detection needs, and it is fine where tags pass through in bursts: a portal, a dock door, or any reading started by a GPI trigger. In a read zone that sees tags constantly, such as a staging lane or an antenna facing stored stock, it fills the database fast. On a test system, one FX7500 in Custom mode at 0 posted about 4.7 million reads of 33 tags in under six hours (about 220 reads a second) and grew the database to 6.8 GB. Plan on roughly 1 GB of database an hour for each busy reader at this setting, until retention removes the old reads.
The session decides how often a resting tag answers. In S0 or S1 (the reader default), or with target AB, a tag sitting in front of the antenna is read round after round, and at report filter 0 every one of those reads is reported. S2 or S3 with target A reads a resting tag once and keeps it quiet while it stays in the field. That cuts the repeats, but it also stops a stationary tag from reporting again until it leaves the field.
Tagnet shows a warning in the configuration editor and on the reader's detail page whenever the report filter duration is 0 outside Inventory mode. If the reader does not need motion detection, set the duration to 1 second or more.
Session Control
Session control sets how the reader runs the Gen2 inventory round: which persistence flag it uses, which tags take part, and how many tags it expects. The group is shown in every operating mode. Every field starts at Reader default, which leaves the reader's own setting in place, so a reader you never touch here behaves exactly as it did before.
The defaults suit a desk or a small shelf. A dock door, a drive-through portal, a dense pallet, or two readers covering the same area usually want something else; Reader Setup Recipes has starting points for each.
| Setting | Reader default | What it does |
|---|---|---|
| Session | S1 | Which of the tag's four inventory flags the round uses. The flag's persistence decides how soon a tag answers again after it has been read (see below). |
| Target | A | Reads tags whose flag is in state A, and flips each one to B as it is read. AB alternates, so tags keep answering round after round. |
| Select option | All | Which tags take part, by their SL flag. SL reads only tags a Select command asserted; Not SL the rest. Only meaningful with a Select command. |
| Tag population | 1 | How many tags the reader should expect in the field at once. Seeds the Q algorithm, which sizes the inventory round. |
Choosing a session
Each session flag persists for a different time once a tag has been read. That persistence is the whole difference between them.
| Session | Flag persists | Use it for |
|---|---|---|
| S0 | Only while the tag is powered; resets the instant it leaves the field | Portals and conveyors where every pass must be a fresh read |
| S1 | About half a second to five seconds, then reverts on its own | Steady streams where tags in view should be re-read continuously |
| S2 | For as long as the tag stays powered, typically a minute or more after it leaves | Dense populations and exhaustive sweeps: each tag is read once, then goes quiet so weaker tags get their turn |
| S3 | Same as S2, on a separate flag | A second reader covering the same area, so the two do not interfere |
With S2 or S3 and target A, a tag that has been read stays silent until it leaves the field. That is what you want for a dense load that moves slowly past a portal: the loud tags drop out after one read and the shadowed ones get air time. It is not what you want if the same tags sit in front of the reader and should keep reporting; use S0 or S1, or target AB, for that. It is also a risk on a fast pass, because a tag goes quiet when the reader acknowledges it, not when the reader has decoded its EPC, so one lost reply silences that tag for the rest of the pass. Session choice for a moving load in the recipes weighs S2 with A against S1 with AB for that case.
Tag population
The reader's anti-collision algorithm starts each round sized for the expected number of tags and adjusts from there. With the default of 1, a vehicle carrying a hundred tags opens every round with a burst of collisions before the reader catches up. Set it close to the number of tags typically in the field at once. Too high wastes time on empty slots; too low costs a few rounds of collisions. Either is recoverable, so an estimate is fine.
Select commands
A Select command is sent before each inventory round and sets or clears a flag on the tags whose memory matches a mask. The usual use is to read only one family of tags, such as those whose EPC starts with a given company prefix, by asserting the SL flag on matching tags and deasserting it on the rest, then setting Select option to SL.
| Field | Description |
|---|---|
| Flag | Which flag the command acts on: SL, or one of the session flags S0 to S3 |
| Action | What happens to matching tags, then to non-matching tags. The default, assert SL / deassert SL, marks the matching tags and unmarks everyone else. |
| Memory bank | EPC, TID, User, or Reserved |
| Pointer | Bit offset into the bank where the comparison starts. The EPC itself begins at bit 32, after the CRC and PC words. |
| Length | How many bits to compare. Tagnet fills this to cover the mask you type until you edit it by hand. |
| Mask | The value to match, in hex, an even number of digits. The reader expects lowercase; Tagnet lowercases the mask when it saves, so either case can be typed. |
| Truncate | Leave at 0 unless you know the Gen2 truncation rules |
Several commands run in the order listed. Delay after selects adds a pause, 0 to 65 ms, between the last Select and the query; leave it empty for the reader's minimum.
When to use a Select instead of a tag ID filter
A tag ID filter is applied after the tag has been read: every tag still answers, the reader just does not report the ones that fail the filter. A Select is applied over the air before the round starts: tags that fail the mask never answer, so they take no air time at all. That difference does not matter at a desk. It matters when the population in range is large and most of it is not yours, because every foreign tag that answers is a slot your own tags did not get.
Masks compare raw memory bits, so you need to know how your tags are encoded. The EPC bank starts with a 16-bit CRC and a 16-bit PC word, which is why the EPC itself begins at bit 32. A mask is written as the hex you would see in the EPC, starting at the pointer.
| Goal | Memory bank | Pointer | Length | Mask | Action | Select option |
|---|---|---|---|---|---|---|
Read only your own tags, whose EPCs all start with 3034 | EPC | 32 | 16 | 3034 | Assert SL / deassert SL | SL |
Read only GS1 SGTIN-96 tags (header 30), ignoring everything else in the yard | EPC | 32 | 8 | 30 | Assert SL / deassert SL | SL |
Ignore a neighbor's tags that start with e2c0 and read all the rest | EPC | 32 | 16 | e2c0 | Deassert SL / assert SL | SL |
Read only tags from one chip family, for example Impinj Monza (TID begins e2801) | TID | 0 | 20 | e2801 (write as e28010, length 20) | Assert SL / deassert SL | SL |
Read only items a customer process has marked in user memory, for example byte 0 set to 01 | User | 0 | 8 | 01 | Assert SL / deassert SL | SL |
Typical situations:
- A portal in a shared yard. Trailers from another company pass the same gate, or a neighboring tenant's inventory sits within range. A Select on your company prefix keeps those tags silent instead of letting them fill every inventory round.
- A retail back room next to the sales floor. Hundreds of item tags on the floor are in range of a receiving reader. A Select on the case-level header, or on a user-memory marker written at receiving, keeps the floor out of the round.
- Mixed tag hardware. A deployment that mixes an older tag family with a new one can address one family by TID while the other is phased out.
- Returnable assets among consumables. Totes, racks, and pallets carry a marker in user memory; a Select on that byte lets a dock reader count assets without inventorying everything on them.
Two cautions. A Select is only as good as the encoding behind it: if some of your tags were commissioned with a different header or prefix, they vanish from the reads with no error anywhere, so check the mask against a known tag before relying on it. And a Select with Select option left at All does nothing useful; the round still reads every tag, the flag just gets set.
A prefix tag ID filter cannot be combined with session control (see Tag ID Filtering). Tagnet refuses the save and says which filter to change.
GPS Position
Available in every operating mode. FXR90 only: the FX7500 and FX9600 have no GPS, hide the setting, and reject a configuration that asks for it.
The FXR90 has a built-in GPS receiver. Turn on Include GPS position and every tag read the reader reports carries the reader's own position. That turns a fixed reader's reads into a record of where they happened, which is useful when the reader moves: mounted on a forklift, a yard truck or a delivery vehicle, or carried between sites. Tagnet shows the position on the read, on the device and on the inventory items the reader reads (see Where positions appear).
Switching it on adds the READERLOCATION tag metadata value to the reader's operating mode. Like the rest of the configuration, it reaches the reader on the next deployment.
What the reader needs
GPS does not work from a bare reader. Check both of these before you rely on positions:
- DC power. Run the FXR90 on its DC power supply. On PoE or PoE+ the reader turns its GPS off at boot (along with cellular, WLAN and Bluetooth), so reads arrive with no position. When the reader's last heartbeat reported PoE power, the editor shows a warning under the switch.
- A GPS antenna with a view of the sky. Connect Zebra's 4G/5G/GPS antenna (P/N ANT-4G5GGPS010-SMA) to the WWAN ports. Indoors, behind metal roofing or inside a trailer, the reader may never get a fix. After power-up, a first fix can take several minutes.
Without a fix the reads still arrive normally, just without a position. Nothing is lost or delayed while the reader searches for satellites.
Where positions appear
Wherever coordinates appear, select them to open the spot on a map in Tagnet. The map also has an Open in OpenStreetMap link, for directions or to share the spot outside Tagnet. The map needs internet access, as the location map does.
| Place | What you see |
|---|---|
| Tag read detail | A GPS Position section with the coordinates. Select them to see the spot on a map. See Tag Read Details |
| Device page, Ingest data tab | A GPS column on the reader's tag reads. See Devices |
| Live Reads | Each tag row shows the position of its latest read that had a fix. See Live Reads |
| Device page | A GPS position section with the reader's last known position and when it was reported. See Devices |
| Inventory item page | Last seen position for items whose tag the reader read. See Inventory |
Tagnet ignores invalid positions: a missing coordinate, a value outside the valid latitude or longitude range, and exactly 0,0 are all ignored, so a bad reading never overwrites a good one.
Privacy
A position is where the reader was, and on a vehicle-mounted reader that can indirectly show where a driver went. Treat it as location data about people when you decide who can see device and inventory pages. Each tag read keeps its own position for as long as the TagRead retention policy keeps the read. The device and each inventory item keep only their latest position.
What this does not do
Positions are an observation about where a reader was. They do not appear on inventory transactions, and Tagnet does not turn a position into a Tagnet location or trigger anything when a reader enters or leaves an area (geofencing). To move an item between locations, use the Move Inventory workflow action.
Inventory Settings
Available in Inventory mode only.
| Setting | Description |
|---|---|
| Interval Value | How often to report each tag |
| Interval Unit | Time unit: Seconds, Minutes, Hours, or Days |
Each interval, the reader reports all unique tags seen during that period along with per-antenna metadata (peak RSSI, read count).
Portal Settings
Available in Portal mode only.
Portal mode requires a start trigger: a GPI (General Purpose Input) signal that tells the reader to begin scanning. Typically, a motion sensor, photo eye, or similar input device is wired to a GPI port on the reader.
| Setting | Description |
|---|---|
| GPI Port | Which GPI port to monitor (1 to 2) |
| Signal Level | Trigger on HIGH or LOW signal |
| Stop Interval | Seconds to continue reading after the last unique tag is detected (default: 3) |
The reader waits for the configured GPI signal, begins scanning, and continues until no new unique tags have been read for the stop interval duration. It then waits for the next GPI event.
Events Settings
Available in Custom mode only.
Telemetry
| Setting | Description |
|---|---|
| Heartbeat Interval | How frequently the reader sends heartbeat/telemetry data (in seconds) |
Tag Data Batching
Batching groups multiple tag data events into a single network payload, reducing network and CPU usage.
| Setting | Default | Description |
|---|---|---|
| Max Payload Size | 256,000 bytes | Maximum batch size in bytes |
| Reporting Interval | 2,000 ms | How often batched data is sent |
Set both values to 0 to disable batching.
Tag Data Retention
The reader can buffer tag events locally during network outages or server failures, then replay them when connectivity is restored.
| Setting | Default | Description |
|---|---|---|
| Max Retention Time | None | Maximum time window in minutes to retain events. Set to 0 to retain indefinitely. |
| Max Events | 150,000 | Maximum number of events to buffer. Set to 0 to disable retention. |
| Throttle | 500 tags/sec | Rate at which retained events are replayed after reconnection |
Note: Retained messages are lost on reader reboot.
If the reader replays retained reads after Tagnet was stopped (for example during an upgrade), they reach Tagnet as new reads and Tagnet runs workflows for them normally. Tagnet does not yet filter stale buffered reads. If a site only acts on current reads, set Max Events to 0 to disable retention. See Reads while the service is stopped.
Radio Control Settings
Available in Custom mode only.
Radio Start Conditions
Controls when the radio begins inventorying tags after a "start" command is issued. If no start condition is configured, the radio begins immediately on start.
Start condition types:
| Type | Description |
|---|---|
| GPI with restart | The radio re-arms when a run ends, so every GPI transition starts another read. This is the default and is what a permanently installed reader normally wants. |
| GPI | The radio arms once. It reads until the stop condition is met, and then further GPI transitions are ignored. |
The difference matters more than it looks. With plain GPI, once that first run finishes the trigger is dead: you can activate the sensor as many times as you like and nothing happens. The radio only arms again when it is stopped and started (from the reader's Reader Control tab, or by whatever software drives the IoT Connector) or when the reader reboots. Plain GPI is for a session an external system controls, where exactly one read per session is wanted and a second trigger must not silently start another. For a dock door, portal, or any standing installation, use GPI with restart.
Note that Portal mode's start trigger behaves differently again: it re-arms on its own after each read period, so it does not have this distinction.
When using a GPI start condition:
| Setting | Description |
|---|---|
| GPI Port | Which GPI port to monitor (1 to 2) |
| Signal Level | Trigger on High or Low signal |
| Debounce Time | How long the signal must hold before it counts as a transition, in milliseconds. See below. |
Debounce time
Debounce filters a signal that flickers on its way between states, so one physical event does not register as several.
| Sensor type | Suggested debounce |
|---|---|
| Photo eye, proximity sensor, or any solid-state output | 0 ms. These switch cleanly and do not bounce. |
| Relay, limit switch, push button, or any mechanical contact | 10 to 50 ms. Contacts chatter for a few milliseconds as they close. |
Two things worth knowing before you raise it:
- The reader already applies its own debounce filter of 50 ms per pin, separately from this setting, so 0 here does not mean the signal is unfiltered.
- Debounce delays the trigger by the time you set. That is harmless at a dock door, where a few tens of milliseconds is nothing next to how fast a pallet moves, but it is real if you are timing something tightly.
Start at 0. If a single physical event produces more reads than it should, raise the debounce until it does not.
Radio Stop Conditions
Controls when an ongoing inventory operation completes. If no stop condition is configured, the radio continues until a manual "stop" is issued. Multiple conditions can be set; the radio stops when any condition is met.
Time-based conditions:
| Setting | Description |
|---|---|
| Duration | Time in seconds to run before stopping |
| Antenna Cycles | Number of complete cycles through all antennas before stopping |
Tag-based conditions:
| Setting | Description |
|---|---|
| Tag Count | Stop after inventorying this many tags |
| Duration After No Unique Tags | Stop after this many seconds with no new unique tags |
Note: Tag Count and Duration After No Unique Tags cannot be used at the same time.
GPI stop trigger (optional):
| Setting | Description |
|---|---|
| GPI Port | Which GPI port to monitor (1 to 2) |
| Signal Level | Stop on High or Low signal |
| Debounce Time | Debounce duration in milliseconds. See Debounce time for how to choose one. |
Antenna Stop Conditions
Controls when the reader moves from one antenna to the next during inventory. If not configured, the default is a single inventory round for no longer than 1/N seconds (where N is the number of enabled antennas).
| Stop Condition Type | Description |
|---|---|
| Duration | Run each antenna for a fixed number of milliseconds |
| Inventory Count | Run each antenna until a specific number of tags are inventoried |
| Single Inventory Limited Duration | Run a single inventory round per antenna with a maximum duration in milliseconds |
| GPI Trigger | Switch antennas on a GPI event (port, signal level, and debounce configurable) |
Delay Between Antenna Cycles
Introduces a delay between antenna cycles when no tags are detected, allowing the reader to share the RF spectrum with nearby readers.
| Setting | Description |
|---|---|
| Delay Condition Type | When to introduce the delay |
| Delay Duration | Delay in milliseconds (0 to 255, default: 75 ms) |
Delay condition types:
| Type | Description |
|---|---|
| Disabled | No delay between cycles |
| No Tags | Delay when no tags are read in a cycle |
| No Unique Tags | Delay when no new unique tags are read in a cycle |
Defaults by reader model:
| Reader | Default Condition | Default Duration |
|---|---|---|
| FX9600 / ATR7000 | No Unique Tags | 75 ms |
| FX7500 | No Tags | 75 ms |