OpenWedge


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.
- Navigate to the latest release page.
- Download the archive for your operating system and architecture (e.g.,
openwedge-v1.0.0-linux-amd64.tar.gz).
- Extract the archive.
tar -xvzf openwedge-v1.0.0-linux-amd64.tar.gz
- 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.
- Clone the repository:
git clone https://github.com/savalione/openwedge.git
- Navigate to the project directory:
cd openwedge
- 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)