[Nut-upsuser] Apple iMac OS X 10.13.5 | Powershield Defender 1200 UPS

Charles Lepple clepple at gmail.com
Wed Jun 6 14:41:00 BST 2018

On Jun 6, 2018, at 5:18 AM, Walter HILL <hill at ieee.org> wrote:
> Does anyone know of a relatively recent guide to getting this UPS
> running on a newer version of OS X? I am aware that Apple have been
> re-engineering their startup process so I expect that getting the driver
> to work may be the least of my problems.
To be honest, I have not seen much demand for NUT on OS X over the years, so I haven't put a lot of effort into documenting the process end-to-end. I don't mind answering questions, though.

IMHO, the quickest way around the macOS USB mess is probably to run the driver on an embedded Linux or FreeBSD system  (e.g. Raspberry Pi, Beaglebone), and have the iMac connect to the embedded system as a slave. This has the disadvantage of adding another potential point of failure (or two, if you count the network) into the system, and there is a potential issue if the Mac is asleep when the power goes out, but if we had more frequent power failures in my area, that's what I'd do (using Wake-on-LAN to ensure that the Mac gets the shutdown signal).

Whether or not you run the driver on the Mac or elsewhere, you are correct about the startup process (this page is out-of-date: https://github.com/networkupstools/nut/wiki/NUT-on-Mac-OS-X since it refers to StartupItems) If you put a launchd plist in /Library/LaunchDaemons/, it should work with 10.13. Here is some information on that: https://alioth-lists.debian.net/pipermail/nut-upsuser/2012-March/007449.html

Another option for running the driver locally might be to find a Cypress USB-to-serial driver that recognizes your UPS. If that works, it would create a /dev node that makes the device look like a classic serial port to the drivers, so you could use the serial-based "blazer" driver, or "nutdrv_qx" (the latter also can communicate over USB, but on macOS, it will likely run into the same "Can't claim USB device" error).

To have NUT directly access the UPS over USB, you would need a fake kernel extension ("codeless KEXT" in some documentation) to prevent the OS from claiming the device (which is what causes the "Can't claim USB device" error). This can be difficult to debug, since the OS does not easily give up information about the driver matching/claiming process.

For reference, which version of libusb are you using, and did you install it with a package manager such as Fink, MacPorts or Brew?

More information about the Nut-upsuser mailing list