Using (an unsupported, self-hosted version of) Billings Pro in 2020

Mid-November 2020 Update (Big Sur)

After updating to Apple’s newest operating system, Billings Pro 1.7.14 crashes on launch with a segmentation fault. At this point it is abundantly clear that the self-hosted version of this software is on borrowed time, but I found a workaround:

Download the latest version of the app (currently 1.7.18). Launch it once to make sure the com.apple.quarantine extended attribute is unset. Control-click it and Show Package Contents. Do the same for version 1.7.14. Move the Contents/Frameworks/MCApplication.framework bundle from the 1.7.18 package to the 1.7.14 package, replacing the existing .framework bundle.

The only issue that I have noticed so far is that you cannot email invoices directly from Billings Pro. It opens the Apple Mail app but doesn’t create a new message or attach the invoice. You can still email the PDFs manually.

This solution is sketchy at best and may wreck your data. Have a backup. Good luck!

November 2020 Update

When I wrote this post, I was focused on solving the issue of the then-shipping version of the Billings Pro client connecting to the server on a new computer. After I did all the work below, I realized that there was still an issue loading invoices and that client version 1.7.14 was needed to resolve that. This month I got a new desktop computer and learned that when you start with client version 1.7.14 you don’t need any of the server certificate hackery listed under The Clients below. I am not sure if it is still necessary to have the server certificate generated prior to July 1, 2019 as described in The Server section.

Original Content (March 2020)

Prelude

I have been using Billings Pro by Marketcircle for, lets just say, a long time. When I bought the software I opted for the self-hosted one-time license rather than the cloud-hosted subscription, and many, many years later, I am still capitalizing on that investment. Marketcircle no longer supports the self-hosted version. I do not currently want to migrate to the cloud-hosted version of the application, and this post documents the workarounds I found necessary to keep the client software functioning with the self-hosted server on macOS Catalina.

Disclaimer: This is not intended as a guide. You probably shouldn’t do this, and I’m not responsible if you corrupt your accounting data, your server gets hacked, your computer catches on fire, or your cat runs away as a result of replicating these steps in your own environment. The self-hosted server software is no longer updated or supported. If it were, you wouldn’t need to do these workarounds in the first place.

The Server

I am still running Billings Pro Server Admin on the last version of Mac OS that Marketcircle supported, 10.11.6. I have read accounts of people getting the server software to work on system software versions up to 10.14, but I have not made any attempts at doing so. While troubleshooting the issues I had with running the software on Catalina, I installed the server software on a clean install of Mac OS 10.11.6. While setting up the software, I set the server’s date to June 30, 2019, as Billings Pro Server generates SSL certificates for its own use and macOS Catalina (which I am running on the client computer) imposes additional requirements on SSL certificates that are generated after July 1, 2019. I am not sure that this is a required step.

Owing to the fact that the server software is no longer updated or supported, the server is firewalled from the Internet. A VPN is used to access the server remotely.

The Clients

When I attempted to log into Billings Pro on a clean install of macOS Catalina using the latest available client software from the App Store (version 1.7.16 at the time of writing), I got the vague message, “Error creating the offline DB.” It looked like an SSL connection was failing to establish. Looking through the files on the server machine I found the CA certificate that Billings Pro uses to sign its own certificates. This file is located at /Library/Application Support/Billings Pro Server/Storage.bpsdb/Data/8_3/server.crt. I copied this file to my client machine and added it to the login keychain, then configured the Trust setting for the certificate to “Always Trust.”

At this point the client software would connect to the server, but no invoices, estimates, or statements will load as long as the client software version was 1.7.15 or later. The last version of the software that will connect to the HTTP server that Billings Pro Server hosts PDF content from appears to be 1.7.14. Deprecation of obsolete security protocols seems to be the culprit. Version 1.7.14 was retrieved form a backup and installed.

Next, because it is important that the version of the Billings Pro client on disk not be accidentally updated, I deleted the _MASReceipt from the app bundle by control-clicking the app and selecting Show Package Contents, navigating to the Contents folder inside the bundle, and dragging _MASReceipt to the trash. This prevents the App Store from recognizing the Billings Pro app as having come from the Mac App Store, so it won’t prompt to update the app as new versions are released. Just to be extra careful, I locked the app from the Get Info window.

The last annoyance is that each time the client is launched, it detects that a newer version is available and recommends I update. Looking through the property list keys, there is an option for SUCheckAtStartup, but turning it off has no effect. After spending a few seconds with tcpdump, I found the software contacts currentversion.marketcircle.net. Using the hosts file to blackhole that domain prevents the update screen from appearing.

What’s Left

The Billings Pro client version 1.7.14 is a 64-bit application and will hopefully continue to run on newer macOS versions for a while longer, but this is an increasingly-fragile solution and I am evaluating other solutions to replace Billings Pro.

HP LaserJet CM4540 – 99.05.56 Firmware Install Error

I recently tore down a HP LaserJet CM4540 to fix a different error (59.00.F0) caused by a sticking solenoid. The repair for this is well-documented online, but when I reassembled the printer I got a new error: 99.05.56 Firmware Install Error. I knew this had to have been caused by an error in reassembly since I had done nothing to affect the firmware, and in a few minutes I had found it: a wide, flat ribbon cable on the far right edge of the DC Controller (J105) was left undone. Reconnecting this cable fixed the issue. There are 34 connectors plugged into the DC Controller (J101 and J102 are not used) so it is easy to miss one on reassembly!

Installing Timbuktu Pro 8.8.5 on macOS High Sierra

macOS High Sierra throws another wrench into my preferred remote access software, Timbuktu Pro. A change in the file
/System/Library/Frameworks/ScreenSaver.framework/Versions/A/ScreenSaver prevents the Timbuktu Host application from launching.

Some solutions online suggest copying an older version of the framework, but this requires disabling System Integrity Protection, could be overwritten with a future system update, and may cause unforeseen problems.

I’ve managed to resurrect this software on High Sierra without changing the System Folder or disabling SIP.

First, copy the ScreenSaver.framework from Mac OS 10.11 and placed it at…
/SysTB2/Library/Frameworks/ScreenSaver.framework/
Next, open
/Applications/Timbuktu Pro/Timbuktu Pro.app/Contents/SharedSupport/Timbuktu Host.app/Contents/MacOS/Timbuktu Host
in a Hex Editor, and search for the string
/System/Library/Frameworks/ScreenSaver.framework/Versions/A/ScreenSaver. Change System to SysTB2 and save your changes. Now the Timbuktu Host app will use the older framework in the /SysTB2 folder.

You can then use chflags to hide the SysTB2 folder for appearance’s sake if desired:

$ chflags hidden /SysTB2

Installing Timbuktu Pro 8.8.5 on El Capitan

Security features in Apple’s new OS make it a little hard to get Timbuktu Pro running for the first time. Here’s how I managed:

  1. Copy the Timbuktu Pro folder to your Applications folder.
  2. Open terminal and run the following commands:
    xattr -d com.apple.quarantine /Applications/Timbuktu\ Pro/Timbuktu\ Pro.app/
    xattr -d com.apple.quarantine /Applications/Timbuktu\ Pro/Timbuktu\ Pro.app/\
    Contents/SharedSupport/*.app
    open /Applications/Timbuktu\ Pro/Timbuktu\ Pro.app/Contents/SharedSupport/\
    *Host*.app
    open /Applications/Timbuktu\ Pro/Timbuktu\ Pro.app

After that, you should be good to go!

IBM RS/6000 Microchannel Ethernet Options

I bought a 2994 High-Performance 10/100 Ethernet Adaptor for my POWERstation 7012-32H off eBay in hopes that it would work, even though it isn’t listed as being compatible with the 32H (the compatible adaptor is the 2992 10BaseT).

It turns out the 2994 10/100 works fine though under AIX 4.3.3. I loaded the drivers for the card and assigned it an IP with smit and I’m installing packages over an NFS export without issue.