Skip to content

Instantly share code, notes, and snippets.

@Roy-Orbison
Last active July 6, 2026 03:10
Show Gist options
  • Select an option

  • Save Roy-Orbison/96ee54db5df2ed0e449c292ec8498f6a to your computer and use it in GitHub Desktop.

Select an option

Save Roy-Orbison/96ee54db5df2ed0e449c292ec8498f6a to your computer and use it in GitHub Desktop.
Install a DCA printer monitoring solution in a VM running Alpine.

EKM Global DCA on Alpine Linux

Assumes you have Alpine set up and running. I use a little VM so the DCA can have the privileges it wants and not interfere with anything else, but you might want to use Docker, etc.

The default installer failed, and when I got it working, the service would not stay up. This is what I did to get it going.

  1. Copy the relevant installer URL from EKM's updates site.

  2. Fetch it. It's a shell script header with binaries appended, so can take a while, e.g.:

    wget https://updates.ekmglobal.com/dist/DCA/Vanilla/Linux_amd64/DCA-6_20_2_31_b01_Setup_unix-amd64.sh
  3. It comes with its own JRE, but it doesn't work. Install the one from the package manager, which must be v11 and not headless due to a font dependency:

    apk add openjdk11-jre
  4. Run the installer, informing it you have your own JRE, e.g.:

    INSTALL4J_DISABLE_BUNDLED_JRE=true sh DCA-6_20_2_31_b01_Setup_unix-amd64.sh
  5. Stop and disable the built-in service that is not adapted for OpenRC, and uses the s-s-d mode. This is because the service seems to die eventually and won't restart itself, thus you're left without any monitoring.

    1. Check if it's running (explicitly as rc-status may not list it):
      rc-service i2emfw status
    2. Stop it if so:
      rc-service i2emfw stop
    3. See if it has a runlevel set:
      rc-update show
    4. If listed, remove it, e.g.:
      rc-update del i2emfw default
  6. Save this service definition to /etc/init.d/i2emfw-superv, and make it executable:

    #!/sbin/openrc-run
    
    name=$RC_SVCNAME
    description='Wrapper to supervise i2emfw, thus prevent silent failures.'
    # supervisor deliberately defined here, because makes no sense to disable with conf
    supervisor=supervise-daemon
    command=/etc/init.d/i2emfw
    command_args_foreground=start-launchd
    
    depend() {
    	need net
    }

    The start-launchd argument invokes foreground mode in their bundled service control script, present in its last case.

  7. Enable the service (default runlevel):

    rc-update add i2emfw-superv
  8. Start the service:

    rc-service i2emfw-superv start

Good luck.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment