openwedge

module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 16, 2026 License: GPL-3.0

README

OpenWedge

Go Report Card Go Version GitHub last commit GitHub issues

OpenWedge header (Symbol MC9090, terminal)

OpenWedge is a lightweight server that receives and processes barcode data scanned by Symbol, Motorola, and Zebra data terminals running DataWedge software.

DataWedge can transmit scanned barcodes over TCP or UDP in two formats: standard plaintext ascii or Remote Wedge. While plaintext ascii packets are easily readable, Remote Wedge utilizes a specific, legacy TripleDES (3DES) encryption scheme originally implemented in older C# and .NET frameworks (like in .NET 2.0)

This software acts as a bridge that can accept unencrypted or Remote Wedge encrypted standards over TCP and UDP simultaneously. It converts the incoming data into various standardized terminal output formats, such as JSONL or detailed plaintext. For example, you can output the received barcodes as JSONL and use Unix pipes to pass the data directly into a REST API or another processing pipeline, which may allow you to use legacy data terminals out of the box with modern systems.

It was tested on a Symbol MC9090:

  • OS: Microsoft Windows Mobile Version 5.0 (OS 5.1.70, build 14402.1.1.0)
  • DataWedge v3.7.11 (March 2015)
  • Device part number: MC9090-KU0HJAFA6WR
  • Device processor: PXA270-624MHz

Features

  • Remote Wedge (legacy 3DES encrypted data) and plaintext (unencrypted) packet support
  • Incoming TCP, UDP, or both connections simultaneously
  • Multiple terminal output styles, including JSONL and detailed, human readable summaries for every scanned barcode
  • Custom legacy 3DES keys and initialization vectors (iv)

Getting Started

From a Precompiled Binary

This is the recommended method for most users.

  1. Navigate to the latest release page.
  2. Download the archive for your operating system and architecture (e.g., openwedge-v1.0.0-linux-amd64.tar.gz).
  3. Extract the archive.
    tar -xvzf openwedge-v1.0.0-linux-amd64.tar.gz
    
  4. Run the application. You can verify it's working by checking the version or help output.
    ./openwedge --version
    
From source

Ensure you have a recent version of Go installed.

  1. Clone the repository:
    git clone https://github.com/savalione/openwedge.git
    
  2. Navigate to the project directory:
    cd openwedge
    
  3. Build the project:
    go build -o openwedge ./cmd/main.go
    

Examples

Start TCP and UDP servers on the default (58627) port using Remote Wedge protocol:

./openwedge --style="plaintext-full"

Accept plaintext (not 3DES encrypted) barcodes on a custom (1234) port:

./openwedge --remote-wedge=false --port=1234

Configuration

The application is configured using command-line flags. Run ./openwedge -help to see all available options.

Flag Description Default value
--tcp Accept TCP connections true
--udp Accept UDP connections true
--port The port to listen on (0-65535) 58627
--style Output format: plaintext, plaintext-full, simple, jsonl, or simple-ascii plaintext
--version Print version and exit
--key 3DES (legacy) key in hex 31437400ca26b505cbac727f2de59657408e9f0f193f6360eb59187bf67568fa
--iv 3DES IV (legacy) in hex 31437400ca26b505
--remote-wedge Incoming packets are 3DES (legacy) encrypted true

Contributing

Contributions are welcome! We value a healthy and collaborative community.

Please read our Contributing Guidelines to get started. All participants are expected to follow our Code of Conduct.

Licenses and Acknowledgements

This project is licensed under The GNU General Public License v3.0. See the LICENSE file for the full license text.

Copyright (C) 2026 Savelii Pototskii (savalione.com)

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL