# Honeywell Barcode Reader Config Tool ## What? A Linux tool for configuring Honeywell barcode scanners via USB. ## Why? I had obtained a used Honeywell Hyperion 1300G scanner, however it was locked down and secured with a password, and the password was unknown. There is a Windows-only configuration tool from Honeywell called "EZconfig" with which the barcode scanners can be configured via USB, even when locked down. To not rely on a Windows VM for configuring the scanner, I sniffed the USB traffic using Wireshark and extracted the relevant messages, and wrapped them in this tool. ## Usage First of all, compile the program using `make`. It depends only on `libusb-1.0`. The configuration strings need to be provided as command line arguments. You can provide multiple: ``` ./honeywell-config [... ] ``` The commands sent to the scanner are prefixed with `>`, the (tokenized) responses from the scanner with `<`. In general, please refer to your scanner's manual for configuration strings. Here are some examples. ### Factory Reset ``` $ ./honeywell-config DEFOVR. DEFALT. > DEFOVR. < DEFOVR. > DEFALT. < DEFALT. ``` ### Factory Reset - In one command ``` $ ./honeywell-config "DEFOVR;DEFALT." > DEFOVR;DEFALT. < DEFOVR. < DEFALT. ``` ### Switch Operation Mode USBHID: ``` $ ./honeywell-config PAP131. > PAP131. < PAP131. ``` Keyboard: ``` $ ./honeywell-config PAP124. > PAP124. < PAP124. ``` ### Add Prefix to Output The following adds the string `FCKAFD ` (ASCII hex `46 43 4B 41 46 44 20`) in front of every scanned barcode: ``` $ ./honeywell-config PREBK246434B41464420. > PREBK246434B41464420. < PREBK246434B41464420. ``` Note how this behaves differently from if you were to configure the scanner in-band via scanning config barcodes. There you would scan a lot of individual codes from the manual: 1. `PREBK2.` 1. `K4K.` 1. `K6K.` 1. ... 1. `K2K.` 1. `K0K.` 1. `MNUSAV.` On the USB config interface, all of that goes into a single string instead. ### Query Current Beeper Settings ``` $ ./honeywell-config 'BEP?.' > BEP?. < BEPFQ12550,FQ2100,RPT1,ERR1,BEP1,BIP0,LVL0,EXZ,GRX,EXE,DFT,LED1. ``` ### List all Settings and Their Possible Values ``` $ ./honeywell-config '*.' > *. < BEPFQ1100-5000. < BEPFQ2100-5000. ... < AXXMOD0|1|2|3|4|5|6|7|8|9|10. ``` ## USB Device Access Please note that this tool normally needs to run as root. Alternatively, you can set up a udev rule to grant access to the USB device to non-root users. An example for this can be found in the file `99-honeywell.rules`. Put this file into `/etc/udev/rules.d`, and run `sudo udevadm control --reload` to load the new ruleset. Once you replug the scanner, you should have access to it as a regular user. ## Adapting for Other Scanners The tool currently has hardcoded USB vendor/product IDs for a Honeywell Hyperion 1300G in Keyboard or USBHID modes. If you have a different Honeywell scanner, and the tool doesn't find it, you can try making this tool work for it: 1. Obtain the USB vendor and product IDs for your scanner, e.g. through `lsusb`. 1. Replace the VID/PID in the following line of code in `honeywell-config.c`: ```c libusb_device_handle *devh = libusb_open_device_with_vid_pid(ctx, 0x0c2e, 0x0b07); ``` 1. Recompile the tool with `make` ## License MIT License