Skip to content

Repository files navigation

OpenWedge

License: GPL v3 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)

About

A lightweight server that receives and processes barcode data scanned by Symbol, Motorola, and Zebra

Topics

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages