Printing with YSoft on macOS Ventura
By George Gonzalez
- 3 minutes read - 614 wordsCUPS has changed!
And it may have gone unnoticed to some.
One of the many challenges of integrating a new OS is testing compatibility with all of your existing software stack.
Sometimes you know what to expect. For example, an architecture change like Intel to Apple Silicon, or KEXT to System Extensions. But it is the quiet changes that can hurt you the most. The sometimes undocumented deprecations in API, cyphers, etc.
When installed, YSoft\SafeQ creates an application in /Applications and also adds several files into /usr/libexec/cups/backend and /usr/local/lib. One of these is the sqport binary.
Printers created for use with the YSoft solution show up as:
lpstat -v
sqport://DNSNAME/QUEUE
Testing on macOS Ventura showed a generic CUPS error message: Backend Failed on the local printer queue and the jobs never appeared on the Print Server.
Opening the Console showed a crash of the sqport binary. After reaching out to YSoft, their engineers were able to quickly provide an updated driver for macOS Ventura, although this did not initially solve the problem.
The backend error remained, and printing was still not working, but the logs were a little more verbose, and during the handshake with the print server a StartTLS failure was apparent.
default 14:48:31.231846-0500 sqport Crafting ui connector
default 14:48:31.233844-0500 sqport Connected to SafeQ service
default 14:48:31.233920-0500 sqport Crefted
default 14:48:31.234045-0500 sqport Received file with name: Untitled
default 14:48:31.234163-0500 sqport Configuration found
default 14:48:31.234260-0500 sqport SQBackendBroker sendJob
default 14:48:31.234297-0500 sqport DHCPPrintRoamingEnabled is disabled
default 14:48:31.234324-0500 sqport Loading failover configuration
default 14:48:31.234441-0500 sqport Using server address from CUPS
default 14:48:31.234688-0500 sqport Delivering job to server: <REMOVED>
default 14:48:31.235378-0500 sqport Connecting...
default 14:48:31.235428-0500 sqport Connected
default 14:48:31.236411-0500 sqport networkd_settings_read_from_file initialized networkd settings by reading plist directly
default 14:48:31.237164-0500 sqport networkd_settings_read_from_file initialized networkd settings by reading plist directly
default 14:48:31.562671-0500 sqport socket:didConnectToHost:<REMOVED> port:<REMOVED>
default 14:48:31.563158-0500 sqport Sending command Check:
default 14:48:31.563236-0500 sqport Sending command ProtocolLevel:4
default 14:48:31.563322-0500 sqport Connected to SafeQ
default 14:48:31.563379-0500 sqport Sending command Get-Encryption:TLS
default 14:48:32.178272-0500 sqport Line response: %%%SafeQ-Encryption:OK
default 14:48:32.178764-0500 sqport Encrypted connection confirmed.
default 14:48:32.179069-0500 sqport Requesting StartTLS with options:
{
kCFStreamSSLValidatesCertificateChain = 0;
}
default 14:48:32.194672-0500 sqport *** Assertion failure in -[GCDAsyncSocket ssl_startTLS], GCDAsyncSocket.m:7257
default 14:48:32.196171-0500 sqport *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Security option unavailable - kCFStreamSSLValidatesCertificateChain - You must use manual trust evaluation'
*** First throw call stack:
(
0 CoreFoundation 0x00007ff801fe9cb3 __exceptionPreprocess + 242
1 libobjc.A.dylib 0x00007ff801b3a10a objc_exception_throw + 48
2 Foundation 0x00007ff802dc7fb0 -[NSCalendarDate initWithCoder:] + 0
3 sqport 0x00000001022b35a9 -[GCDAsyncSocket ssl_startTLS] + 4931
4 sqport 0x00000001022b1f2f __27-[GCDAsyncSocket startTLS:]_block_invoke + 130
5 libdispatch.dylib 0x00007ff801d167fb _dispatch_call_block_and_release + 12
6 libdispatch.dylib 0x00007ff801d17a44 _dispatch_client_callout + 8
7 libdispatch.dylib 0x00007ff801d1dac4 _dispatch_lane_serial_drain + 694
8 libdispatch.dylib <…>
default 14:48:32.196455-0500 kernel AMFI: Denying core dump for pid 5465 (sqport)
default 14:48:32.196568-0500 kernel sqport[5465] Corpse allowed 1 of 5
default 14:48:32.801192-0500 ReportCrash Formulating fatal 309 report for corpse[5465] sqport
This was enough to lead us to the right root cause and solution.
UPDATE: There has been a lot of interest in this post, I wanted to add that the SafeQ version that is working in Ventura for me is 4.18.
Lessons learned:
- Test every Beta, and every feature with every beta.
- Have a backup plan. In my case, we had a functional workaround for printing within an hour of discovering the bug.
- Have good relationships with your software vendors and parters. Both Apple and YSoft had responded to our tickets the same day they were filed.
- Communicate, Document, Socialize
True, printing on actual paper in this age of WFH and distributed teams may not be as essential for some as it used to be, but upgrading the OS should not leave you with less functionality than you had before.
-G.G