Locating the ProductivityBlocks JAR File for Portable Install

Brian Holt6 min read
AutomationDirectHMI ProgrammingTutorial / How-to
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Overview

ProductivityBlocks is the open-source, Java-based graphical block programming add-on for the Arduino IDE that AutomationDirect bundles with its Productivity Open industrial controller platform. The tool is designed primarily to program the P1AM-100 CPU, which mimics the Arduino MKRZero footprint while exposing industrial-grade I/O, removable terminal blocks, and a ruggedized form factor intended for cabinet mounting.

The ProductivityBlocks tool itself is distributed as a single executable JAR file plus a small set of supporting resources that the Arduino IDE discovers through the standard tools folder convention. When IT policy prevents a standard install, the tool can be relocated to a USB drive and the Arduino IDE launched in portable mode, provided the directory structure is preserved exactly.

Prerequisites

  1. Arduino IDE 1.8.x (ProductivityBlocks is built against the classic IDE toolchain and is not compatible with Arduino IDE 2.x out of the box).
  2. ProductivityBlocks plug-in installed at least once on a reference machine, or the GitHub repository source build.
  3. Java Runtime Environment (JRE) 8 or newer; the ProductivityBlocks JAR is invoked through javaw by the IDE shim.
  4. P1AM-100 CPU and a compatible ProductivityOpen base (P1AM-START or P1AM-ETH).
  5. Write access to a USB drive formatted as NTFS or exFAT with at least 500 MB free.

ProductivityBlocks Installation Architecture

The Arduino IDE enumerates third-party tools by scanning subfolders of tools/<toolname>/tool/ located in the IDE installation directory. ProductivityBlocks follows this exact convention. The default Windows install path is:

Component Default Windows Path
Arduino IDE C:\Program Files (x86)\Arduino\
ProductivityBlocks tool folder C:\Program Files (x86)\Arduino\tools\ProductivityBlocks\tool\
ProductivityBlocks JAR (primary) C:\Program Files (x86)\Arduino\tools\ProductivityBlocks\tool\ProductivityBlocks.jar
Block definitions / resources C:\Program Files (x86)\Arduino\tools\ProductivityBlocks\tool\blocks\
Tool launcher shim C:\Program Files (x86)\Arduino\tools\ProductivityBlocks\tool\productivityblocks.launcher

When the Arduino IDE starts, it looks for any directory under tools/ and registers a menu item under Tools → ProductivityBlocks when it finds the JAR. The JAR exposes a main class that the IDE shells out to via a small wrapper script. The entire tool is self-contained; no registry entries, services, or background processes are created.

Path Note: On 64-bit Windows installations, AutomationDirect still deploys under Program Files (x86) because the supported Arduino IDE 1.8.x line is 32-bit. Do not assume Program Files\Arduino; the legacy 32-bit folder is correct.

Locating the ProductivityBlocks JAR File

To harvest the JAR for relocation:

  1. Open File Explorer and navigate to C:\Program Files (x86)\Arduino\tools\.
  2. Confirm the ProductivityBlocks subdirectory exists. If it is missing, the ProductivityBlocks plug-in was never installed on this machine and you must obtain it from the AutomationDirect Productivity Open programming page or the GitHub repository.
  3. Drill into ProductivityBlocks\tool\. The deliverable you need is ProductivityBlocks.jar.
  4. Verify the file is a valid JAR: right-click → Properties. The file size is typically 1.5–3 MB, and Windows will report it as an Executable Jar File.
  5. Copy the entire ProductivityBlocks folder (not just the JAR) so the IDE retains access to the block-definition resources, language files, and launcher.

Portable Installation Procedure

Arduino IDE 1.8.x supports a portable mode triggered by the presence of a portable directory beside the IDE executable. Combine this with the relocated ProductivityBlocks folder to produce a fully USB-resident environment.

Step 1: Stage the portable IDE

  1. Copy the entire Arduino IDE directory (e.g., C:\Program Files (x86)\Arduino\) to the root of the USB drive, producing E:\Arduino\.
  2. Create a new, empty folder named exactly portable directly inside E:\Arduino\. The IDE checks for this folder on every launch.
  3. Verify the layout: E:\Arduino\arduino.exe and E:\Arduino\portable\ must both exist.

Step 2: Relocate ProductivityBlocks

  1. Copy the harvested ProductivityBlocks folder into E:\Arduino\tools\.
  2. Final layout: E:\Arduino\tools\ProductivityBlocks\tool\ProductivityBlocks.jar.
  3. Do not rename any internal files; the IDE matches on the directory name and the JAR main class.

Step 3: First launch

  1. Run E:\Arduino\arduino.exe.
  2. The IDE writes its sketchbook, preferences, and installed library index into E:\Arduino\portable\, keeping the host machine clean.
  3. Open the Tools → Board menu and select Arduino MKRZERO (the board profile the P1AM-100 emulates).
  4. Open Tools → ProductivityBlocks. The block editor should appear within a few seconds.

P1AM-100 CPU Compatibility

The P1AM-100 is the industrial target for ProductivityBlocks. It exposes an MKRZero-compatible MCU section and is paired with discrete and analog I/O modules on a backplane.

Parameter Value
CPU Atmel SAMD21 (ARM Cortex-M0+), MKRZero pinout
Operating voltage 24 VDC (backplane powered)
Logic level 3.3 V
Programming interface USB-C (micro-B on early revs), native Arduino bootloader
Sketch size limit 256 KB flash, 32 KB SRAM
Industrial rating -20 °C to +60 °C operating; UL 508 / CE pending by SKU
Compatibility Warning: ProductivityBlocks generates C++ that targets the SAMD21 core. Compiling against Arduino Uno or other AVR board profiles will produce code that does not run on the P1AM-100. Always select the MKRZero (or the P1AM-specific board definition installed by ProductivityBlocks) before compiling.

Verification

  1. In ProductivityBlocks, drag a Setup block with a digital pin (e.g., D2) to OUTPUT and a Loop block containing Digital Write toggling D2 every 1000 ms.
  2. Click Upload in ProductivityBlocks. The IDE should compile and flash the P1AM-100 over USB.
  3. Open the Arduino Serial Monitor at 9600 baud to confirm the upload banner reports the MKRZero bootloader.
  4. Measure pin D2 on the P1AM-100 with a meter; it should toggle 0–3.3 V at 0.5 Hz.
  5. Close and reopen the IDE from the USB drive with no network access to confirm true portability.

Troubleshooting Matrix

Symptom Likely Cause Remediation
Tools menu does not show ProductivityBlocks JAR copied without parent folder, or folder renamed Ensure tools\ProductivityBlocks\tool\ProductivityBlocks.jar path is intact
Clicking ProductivityBlocks does nothing Java not on PATH; missing JRE Install JRE 8+ on host or carry a portable JRE; verify java -version
IDE settings persist on host machine portable folder missing or misspelled Create portable beside arduino.exe; case sensitive
Compile error: board mkrzero not found SAMD core not installed in portable sketchbook Launch Boards Manager, install Arduino SAMD Boards while online once, then disconnect
Upload fails: No device found on COMx P1AM-100 not in bootloader mode or wrong port Double-tap reset on P1AM-100; select correct COM port in Tools menu
Block editor opens but blocks are blank blocks/ resource folder missing Re-copy the full ProductivityBlocks folder, not just the JAR

Field-Proven Notes

  • The ProductivityBlocks tool folder is safe to copy between machines; there is no machine-bound licensing in the open-source build.
  • Multiple Arduino IDE versions can coexist as long as each carries its own tools\ tree.
  • Always match the ProductivityBlocks plug-in release to the IDE minor version; mismatches occasionally surface as NoClassDefFoundError on launch.
  • The portable install does not require administrator rights on the target machine, which is the principal reason IT departments accept it.

FAQ

Where is the ProductivityBlocks JAR file installed by default?

On Windows the JAR is installed at C:\Program Files (x86)\Arduino\tools\ProductivityBlocks\tool\ProductivityBlocks.jar. The full tool directory under tools\ProductivityBlocks\ must be copied for the IDE to recognize the add-on.

How do I run ProductivityBlocks from a USB drive?

Copy the Arduino IDE folder to the USB root, create a folder named portable beside arduino.exe, and place the ProductivityBlocks folder inside tools\. Launch arduino.exe from the USB drive and open Tools → ProductivityBlocks.

Which Arduino board profile should I select for the P1AM-100?

Select Arduino MKRZERO under Tools → Board. The P1AM-100 mimics the MKRZero pinout and uses the SAMD21 core.

Does ProductivityBlocks work with Arduino IDE 2.x?

No. ProductivityBlocks is built against the classic Arduino IDE 1.8.x toolchain and uses the legacy tools/ folder convention. Use Arduino IDE 1.8.x for portable installs.

Why does ProductivityBlocks not appear in the Tools menu after copying the JAR?

The IDE registers the tool based on the folder name and the tool/ subdirectory, not just the JAR. Verify the path is tools\ProductivityBlocks\tool\ProductivityBlocks.jar and that the ProductivityBlocks folder name has not been renamed.

Back to blog