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).

Note: This tool has only been tested on Linux. While it may work on other platforms, no guarantees are made for macOS or Windows.

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-1.0.0.tar.gz (31.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-1.0.0-py3-none-any.whl (22.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hw_vx_config-1.0.0.tar.gz
  • Upload date:
  • Size: 31.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-1.0.0.tar.gz
Algorithm Hash digest
SHA256 a928b73196821b62cb43197d2624c61459e4c489504fe80c3e228c4678ed7da2
MD5 9149589e3ce86f7e9e4158bea8a825c7
BLAKE2b-256 22d7202f5c9484fd04aebe001873adb483b4364907b56f0257bef4720951a035

See more details on using hashes here.

Provenance

The following attestation bundles were made for hw_vx_config-1.0.0.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-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: hw_vx_config-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 22.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-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 267f2911287a3f42e1011c7eab8c68992582f398cf6c18ba88c80612b3789154
MD5 7ef25875845a1979b613926b3cdd504f
BLAKE2b-256 23b12ab6babc50e963cf396708d62235d5282d259c5894834b259139c03fcd7f

See more details on using hashes here.

Provenance

The following attestation bundles were made for hw_vx_config-1.0.0-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