RFID System
U300 Reader

U300 Reader

The Chainway U300 is a multi-port UHF RFID reader that communicates over a local HTTP API (port 5000 by default). Parlevel talks to it through the U300 Relay APK — the app never calls the reader directly.

Specifications

SpecValue
Frequency860–960 MHz (UHF, EPC Gen 2)
Antenna portsUp to 8 (model dependent)
Antenna power1–30 dBm (configurable per port)
APIHTTP REST on port 5000
Bank readsEPC, TID, User, Reserved

RF Link profiles

The RF link profile controls the modulation, encoding, and backscatter frequency. Parlevel defaults to profile 1.

ProfileModeEncodingFrequencyNotes
0DSB ASKFM040 kHzFast, short range
1PR ASKMiller4250 kHzDefault — stable for sensor reads
2PR ASKMiller4300 kHz
5PR ASKMiller8250 kHz
1025VariousVariousVariousSee U300 docs

For AZN3120-AFR moisture tags, profile 1 gives the most reliable Reserved bank reads.

Antenna power

Power is set per antenna port (1–30 dBm). Higher power = longer range but more interference.

  • 20 dBm — safe default, works for most bar layouts
  • 30 dBm — maximum, use when tags are far from the reader or behind glass

Set via the RFID settings UI or U300_ANTENNA_POWER env var.

Relay APK endpoints used

Parlevel uses these U300 relay endpoints:

MethodPathPurpose
GET/statusReader status, scanning state, configured antennas
GET/inventoryLive tag list (EPC + RSSI)
POST/ingest/startStart polling and forwarding events
POST/ingest/stopStop polling
POST/antennas/maskSet which antenna ports are active
POST/antennas/powerSet TX power for a port
GET/antennas/statusCurrently configured antenna ports
POST/rflinkSet RF link profile
POST/banks/read/batchRead a memory bank from multiple tags in one cycle
POST/buzzer/muteMute the reader buzzer
POST/buzzer/unmuteUnmute the reader buzzer

bankReadLock — new APK requirement

Older relay APK builds allowed concurrent bank reads which could crash the inventory cycle (scanning: false). The new APK serializes all bank reads behind a ReentrantLock (fair queue). Always use the latest APK for reliable bank reads.

If bank reads cause issues on an older APK, set skipTidReads: true in the location RFID config — this skips TID reads entirely and treats all tags as the configured family.