2. Dashlink Print: Known Issues & Troubleshooting
Table of Contents
Pre-requisites
Before installing Dashlink Print you must make sure to have all previous versions of QZ Tray uninstalled.
Each client will need to manually uninstall QZ Tray first, the two applications should not coexist because they will fight for the same port number.
- For Windows, the uninstall can be performed through the Control Panel/System Preferences.
- For Mac, the app can be dragged to the recycling bin, or advanced users may wish to run the uninstall script.
- For Linux, the uninstall script is needed.
1. Known Issues
Conflicting Applications
The following applications may cause issues with Dashlink Print installation.
- Older Java versions: Dashlink Print works best with Java 11 or higher. Older Dashlink Print versions may conflict with Dashlink Print and cause it to fail to start.
- If possible, uninstall all versions of Java, JRE, JDK or OpenJDK from the system.
- If uninstalling old versions of Java is not possible, install Dashlink Print 2.2 or higher, which will come bundled with its own Java version.
- Antivirus Software: Some antivirus applications may prevent Dashlink Print from installing or running.
- Comodo Antivirus will force application containment the Dashlink Print installer and prevent it from being installed, uninstalled and prevent it from running. Moreover, disabling Comodo will have very little effect because it will re-enable itself without warning. Dashlink Print is not supported with Comodo Antivirus.
- Other Antivirus:
- Application containment: If the antivirus forces application containment, please disable this application containment for Dashlink Print and the Java Runtime which it uses.
- Web Filtering: If the antivirus blocks access to local ports or localhost certificates, please disable or whitelist
https://localhost:8181
,http://localhost:8182
. - Temporary File Access: If the antivirus blocks access to the temporary directory, please disable or whitelist the Dashlink Print installer.
- Other issues: QZ Industries does not provide support for issues created by third party antivirus applications. Built-in features (such as Windows Defender) are supported and may be escalated to the various support channels.
2. Troubleshooting
Debugging Dashlink Print
Logs
- To automatically zip logs and place on your desktop:
- Dashlink Print Icon, Advanced, Troubleshooting, Zip Logs (To Desktop)
- Dashlink Print places log files in the following locations:
- Windows:
%APPDATA%\qz
- Mac:
~/Library/Application Support/qz
- Linux:
~/.qz
- Windows:
Console Logs
- The recommended approach for getting verbose output from Dashlink Print is to launch the software from command line. This will expose the Java Console with detailed information about debug messages and exceptions including full backtrace of where a particular exception occurred.
- Dashlink Print launches with
512MB
of memory. We must specify-Xms512M
in the command in order to prevent unexpected behavior and crashing. This unnecessary for Mac unless following the basic syntax (java -jar qz-tray.jar
) . More memory can be allocated but should not be necessary.Basic syntax (after closing all instances of Dashlink Print)java -Xms512M -jar qz-tray.jarWindows (after closing all instances of Dashlink Print)java -Xms512M –add-exports java.desktop/sun.swing=ALL-UNNAMED -jar “%PROGRAMFILES%\Dashlink Print\qz-tray.jar”Mac OS X (after closing all instances of Dashlink Print)/Applications/QZ\ Tray.app/Contents/MacOS/QZ\ TrayLinux/Other (after closing all instances of Dashlink Print)/opt/qz-tray/qz-tray
PKIX Build Path Failed
Sometimes a message java.lang.UnsupportedOperationException: Cannot parse (FILE)
will appear. This is often a failure by Java to download the specific resource and it will be followed by Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed
- To fetch detailed HTTPS/SSL certificate information, append
-verbose -Djava.security.debug=certpath
before the-Xms512
command. The output will be very large, you may redirect it to file using> file.log 2>&1
at the end. - See also https://github.com/qzind/tray/files/2194181/Document.1906321.1.pdf
- Common Causes
- Broken certificate chain Remedy: Check validity sslshopper.com, fix chain per CA instructions.
- Self-signed certificate Remedy: Add an exception to Proxy or Firewall for this address — OR — Install certificate into Java.
- Newly-trusted CA Remedy: Update Java. This is fairly common for LetsEncrypt certificates.
Crash During Printing
Cannot Launch Software
- A corrupt Java installation may prevent the software from installing or loading. A corrupt Java installation is fairly common in Windows, and can be resolved by reinstalling Java using the Java offline installer. The offline installer has been reported to fix many issues with corrupt Java installations. Take a look at this guide for our recommended steps on reinstalling Java on all platforms.
Signs of a corrupt Java install:Creating keystore for ws://localhost...
- [failed] Creating a CA keypair...
… or …java -version
"An error has occurred while processing the shared archive file. Unable to unmap shared space. Error occurred during initialization of VM. Unable to use shared archive."
- Sometimes custom
JAVA_HOME
environmental variables will prevent Dashlink Print from loading. If the software can be launched via the command line this is likely the case. In windows this can be checked by going to System > Advanced system settings > Environment Variables - HTML printing (JavaFX) can cause printing to fail if the following is true:
- Issue: HTML page width is set to 100%.
Remedy: Hard-code an acceptable page with using CSS, e.g.800px
- Issue: Printer resolution for HTML print is high (e.g. 600dpi, 1200dpi).
Remedy: Hard-code a lower DPI (e.g. 300dpi) using{ units: 'in', density: 300 }
. We also recommend setting a sanefallbackDensity
incase 300dpi is unsupported by certain hardware. - Issue: Out of memory issues can occur if running the 32-bit JVM.
Remedy: See 32-bit vs. 64-bit: section below. - Issue:
java.lang.NoClassDefFoundError: javafx/print/PrintColor at qz.printer.PrintOptions$ColorType
Remedy: JavaFX is not distributed with all Java versions. Please install JavaFX for your platform (e.g.openjfx
, etc).
- Issue: HTML page width is set to 100%.
- Images/PDFs cause software to stop working: More commonly
Cannot call method public void qz.ws.PrintSocketClient#onMessage
, this is generally a sign that the JVM has hit an unrecoverable error. The most common cause is large print operations on a 32-bit JVM. A temporary workaround is to specify{ rasterize: false }
in the configuration, but this will only fix PDFs. A permanent solution is to switch to a 64-bit JVM which allocates a larger heap space. If 32-bit is required, additional heap space may be allocated via command-line. - 32-bit vs. 64-bit: Some 64-bit workstations have both 32-bit and 64-bit Java versions installed. If both are needed, make sure both are upgraded, otherwise, removing the 32-bit version is advised to assist with the troubleshooting process.
- Insufficient Java Version
"A Java Exception has occurred"
may appear if attempting to launch against an outdated Java version. For a list of minimum Java requirements see Java Versions. May also be reported asCould not find the main class qz.ws.PrintSocketServer. Program will exit.
- Disk Corrupted: Always try
fsck
(Linux),Disk Utility
(MacOS) orchkdsk
(Windows). Physical drives can show strange symptoms when they are beginning to fail however SSDs hard drives are susceptible to a condition called “worn bits” or more properly “SSD Endurance” which is responsible for re-using NAND flash memory. This process should be self-healing but on occasion can cause issues with certain drive firmwares. Make sure to scan your disk for health when encountering launch issues.
Cannot List Printers
- Mac
- Due to an upstream bug with Java, printer listings may fail on Mac.The current workaround is to:
- Open System PreferencesPrinters and ScannersRight Click > Reset Printing SystemRe-add all printers
- Due to an upstream bug with Java, printer listings may fail on Mac.The current workaround is to:
- Windows
- Although rare, there are scenarios of not being able to list printers, only being able to list one printer, or listing printers takes several minutes to complete. This is likely caused by a driver conflict between the offending printer driver and the print spooler, resulting in the entire print subsystem to hang.The workaround is to remove the offending printer or printer driver.
Raw Printer Queues
If your thermal or label printer has undesired results, it may be improperly configured. Here are our tutorials for setting up a printer to receive raw languages on each platform:
Note: Some Windows drivers, such as Zebra’s ZDesigner driver for Microsoft Windows, will support raw printing alongside pixel-based/PostScript printing. You may use those drivers or a raw-generic/text-only driver to send raw commands, but the generic driver will not be able to print images/PDF/HTML.
Debugging WebSockets
By default, Dashlink Print suppresses verbose websocket information from the console, however occasionally this information may be useful for debugging/troubleshooting connectivity issues.
Debugging WebSockets in 2.0
- 2.0 Only – Using the
qz.api.showDebug(...)
API option, verbose connection details will logged to the browser’s console.qz.api.showDebug(true); // must be called prior to calling qz.websocket.connect()
Socket Disconnected
- This is often a sign of an incompatible version. Please make sure you are using a build correct for your system (e.g. 1.9, 2.0)
Other Errors
- Console logs say
Process finished with exit code 2
- Cause: This indicates another instance of Dashlink Print is already running on the designated ports on that machine. If it has become unresponsive, attempt to kill the Dashlink Prints
java
process and try launching it again.
- Cause: This indicates another instance of Dashlink Print is already running on the designated ports on that machine. If it has become unresponsive, attempt to kill the Dashlink Prints
- Error:
typeerror: _qz.tools.hash is not a function
- Cause: Make sure the page is being rendered with UTF-8
<meta charset='utf-8'>
.
- Cause: Make sure the page is being rendered with UTF-8
- Error:
WebSocket connection to 'wss://localhost:8181/' failed: Error in connection establishment: net::ERR_CONNECTION_CLOSED
- Cause: Java 9 (Beta) is known to cause this error. Please downgraded to a supported Java version.
- Error:
SCRIPT1010: Expected identifier qz-tray.js
- Cause: IE11 may be emulating an older browser. Please use IE10, IE11 or Edge browser emulation. Offending code may look like this
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
- Cause: IE11 may be emulating an older browser. Please use IE10, IE11 or Edge browser emulation. Offending code may look like this
- Error:
Server returned HTTP response code: 403 for URL
- Cause: Assuming permission issues have been ruled out, some servers require a
User Agent String
to be passed to the web controller. Dashlink Print 2.0 sends a blankUser Agent String
. Dashlink Print 2.1+ provides a properUser Agent String
. Alternately, disable theUser Agent Filtering
on the web controller. For example, Cloudfare callls thisBrowser Integrity Check
and can be disabled.
- Cause: Assuming permission issues have been ruled out, some servers require a
Invalid JSON
- If the browser console says
Invalid JSON
, try changing your HTTP headers in the sign-message example to usetext/plain
instead ofapplication/json
. In PHP, this is done via:- header(‘Content-Type: application/json’); + header(‘Content-Type: text/plain’);Note: This technique will vary depending on the server-side language being used.
JScript
- Error:
Automatic certificate installation is not available for this platform
- Cause: Several.
- Note: Dashlink Print 2.1 uses Java for certificate installation and may correct this problem.
- If using Comodo antivirus, use Advanced View, Auto-containment, Disabled before installing.
- If using Windows XP, follow the on-screen instructions.
- This issue may be caused by bad data being returned from
certutil
command. Contact support@qz.io for assistance.
- Cause: Several.
- Error:
Can’t find script engine “VBScript” for script.
- Note: Dashlink Print has removed the
VBScript/JScript
dependency and may correct this problem. - Cause: The Windows desktop installers for Windows use
JScript
engine for certain tasks. On occasion Antivirus Engines may try to replace this engine. To determine if this is the cause run the following commands from Command Prompt:reg query HKCR\CLSID\{cc5bbec3-db4a-4bed-828d-08d78ee3e1ed}\InprocServer32 /ve reg query HKCR\CLSID\{f414c260-6ac0-11cf-b6d1-00aa00bbbb58}\InprocServer32 /ve reg query HKCR\CLSID\{f414c261-6ac0-11cf-b6d1-00aa00bbbb58}\InprocServer32 /ve reg query HKCR\CLSID\{f414c262-6ac0-11cf-b6d1-00aa00bbbb58}\InprocServer32 /ve - If the system is configured properly, each command will return the following value:
(Default) REG_SZ C:\Windows\System32\jscript.dll
- If the system is misconfigured, it will return some other value. This value can be repaired by hand using the Windows Registry Editor.
- Note: Dashlink Print has removed the
3. Support
If you have any questions or issues using the Dashboard, please open up a support case by writing us at: upsplugins@ecommerce.help and include the following information
- Error Description (ideally with video/screenshots)
- Computer Operating System
- Printer Model
Was this article helpful?
Have more questions? Submit a request