Skip to main content

Network configuration tool for HW-VX6330K / HW-VX6346KL serial-to-Ethernet modules

Project description

hw-vx-config

PyPI version Python License: MIT CI

Network configuration tool for HW-VX6330K / HW-VX6346KL serial-to-Ethernet modules on Linux. Sends UDP packets directly to the device — no DLLs, no runtime dependencies, pure stdlib.

Accepts a device IP or discovers via broadcast; reads and writes all network, serial, and advanced settings over the HW-VX UDP protocol (port 65535).

Table of Contents

Requirements

  • Python 3.10 or later
  • Linux (uses SO_BROADCAST; port 65535 requires no root)
  • Device reachable on the local network (same subnet or routed UDP)

Quick Start

pip install hw-vx-config

# Discover all readers on the network
hw-vx-config search

Or install with pipx for isolated CLI usage:

pipx install hw-vx-config

CLI Reference

All operations take the current device IP as the first positional argument.

# Discover all readers via broadcast
hw-vx-config search

# Print full configuration for a device
hw-vx-config config <ip>

# Change static IP and reboot
hw-vx-config set-ip <current-ip> <new-ip>

# Enable or disable DHCP and reboot
hw-vx-config dhcp <ip> on|off

# Send reboot command
hw-vx-config reboot <ip>

# Launch interactive menu
hw-vx-config interactive
hw-vx-config              # same — interactive is the default

RFID Reader Commands

These commands use the UHF RFID binary protocol (UHFReader18) over TCP. The <port> is the device's configured TCP port (from network settings).

# Get reader information (address, firmware, power, etc.)
hw-vx-config reader-info <ip> <port>

# Set reader address from 0 to 1
hw-vx-config set-reader-addr <ip> <port> 1

# Set reader address when current address is not 0
hw-vx-config set-reader-addr <ip> <port> 5 --adr 1

Interactive Menu

The interactive menu (hw-vx-config with no arguments) provides a numbered prompt:

  ╔══════════════════════════════════════════════════════╗
  ║  HW-VX6330K / HW-VX6346KL  Network Config Tool       ║
  ║  Linux Edition — ported from C# Demo v2.11           ║
  ╚══════════════════════════════════════════════════════╝

  ╔══════════════════════════════════════════════════════╗
  ║  1. Search for readers                               ║  ← broadcast discovery, select from results
  ║  2. Connect to specific IP                           ║  ← skip discovery, target a known address
  ╠══════════════════════════════════════════════════════╣
  ║  3. Show current configuration                       ║
  ║  4. Change IP address                                ║
  ║  5. Enable/Disable DHCP                              ║
  ║  6. Change remote server                             ║  ← Remote IP, Remote Port, Work Mode
  ╠══════════════════════════════════════════════════════╣
  ║  7. Edit & save full configuration                   ║  ← field-by-field editor, confirm before write
  ║  8. Reboot reader                                    ║
  ╠══════════════════════════════════════════════════════╣
  ║  9. RFID reader info                                 ║  ← address, firmware, power (TCP binary)
  ║  10. Set RFID reader address                         ║  ← change reader Adr (0–254)
  ╠══════════════════════════════════════════════════════╣
  ║  q. Quit   l. List menu                              ║
  ╚══════════════════════════════════════════════════════╝

Option 2 is useful when the device is on a different subnet and broadcast cannot reach it.

Examples

The examples/ directory contains companion scripts.

File Description
server_uhf.py TCP server that receives RFID tag data from the reader on port 2077. Run this alongside the reader when Work Mode is set to Client and Remote Port is 2077.
library_usage.py Shows how to use HwVxDevice and HwVxNetworking directly in Python code — discover, read config, change settings, and quick operations.
rfid_usage.py Shows how to use RfidClient to get reader info and change the reader address via the binary protocol.
python examples/server_uhf.py
# Listening on 0.0.0.0:2077

Troubleshooting

Problem Possible cause Fix
search returns nothing Firewall blocks UDP 65535 Open UDP 65535 inbound/outbound (sudo ufw allow 65535/udp)
Device on a different subnet Use hw-vx-config interactive → option 2 (connect by IP)
Broadcast not reaching device Ensure host and device share the same L2 network / VLAN
Timeout on config / set-ip Device IP changed or unreachable Verify with ping <ip>; re-discover with search
Permission denied on socket Rare kernel policy Run with sudo or check sysctl net.ipv4.ip_unprivileged_port_start

Development

Install with dev extras, then use the standard toolchain:

pip install -e ".[dev]"

# Lint and format
ruff check --fix src/ tests/
ruff format src/ tests/

# Type check
mypy src/

# Run tests
pytest

# Tests with coverage
pytest --cov=hw_vx_config --cov-report=term-missing

Tests live in tests/ and mock the UDP socket — no device needed to run them.

Protocol

UDP port 65535 (device config) and TCP port 2077 (RFID tag push). Full details → docs/api/protocol.md and docs/DOCUMENTATION.md.

Further Reading

  • docs/api/ — per-module API reference and RFID binary protocol
  • docs/DOCUMENTATION.md — full UHFReader18 manual (EPC C1G2 / ISO18000-6B command set, status codes, tag memory)

Uninstall

pip uninstall hw-vx-config
# or if installed with pipx:
pipx uninstall hw-vx-config

Tested with

  • Hardware: HW-VX6330K, HW-VX6346KL
  • Protocol: UDP port 65535, ASCII request/reply
  • OS: Linux (Ubuntu 22.04+)

License

MIT — see PyPI page for the published package.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hw_vx_config-0.1.2.tar.gz (26.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hw_vx_config-0.1.2-py3-none-any.whl (20.8 kB view details)

Uploaded Python 3

File details

Details for the file hw_vx_config-0.1.2.tar.gz.

File metadata

  • Download URL: hw_vx_config-0.1.2.tar.gz
  • Upload date:
  • Size: 26.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for hw_vx_config-0.1.2.tar.gz
Algorithm Hash digest
SHA256 3eb19694782a10bb8e3a944bee1175f8d867e87f948e4059d9392c608eb3a31c
MD5 e6b5bb8a27ff3021603574edf32eceeb
BLAKE2b-256 f5db3d935fd5a11414c79dac8fd01850eab0b11a998a5891451dbdc613fa8108

See more details on using hashes here.

Provenance

The following attestation bundles were made for hw_vx_config-0.1.2.tar.gz:

Publisher: publish.yml on xynogen/hw-vx-config

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hw_vx_config-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: hw_vx_config-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 20.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for hw_vx_config-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 df615c30f0a5d8a7c8d0d3e8ee0ec8cd65273f6336ac1fa04ad4967c2844944d
MD5 8d64d10e21b61f2119b83268d9044a62
BLAKE2b-256 93679d18ab68b5fc34d399be38b181ff95ed8ecc8c44ba6f897b106ecf97add0

See more details on using hashes here.

Provenance

The following attestation bundles were made for hw_vx_config-0.1.2-py3-none-any.whl:

Publisher: publish.yml on xynogen/hw-vx-config

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page