<< Pinscape Resources Home

If you're using the Pinscape v2 firmware, you should install these updated versions of the system support library files.

  • DOF (DirectOutput Framework)

    The "Grander Unified" version combines all of the formerly separate third-party versions on GitHub that forked off from SwissLizard's last official release in late 2015. It also features a Windows Setup installer that handles all of the setup automatically rather than requiring the traditional series of error-prone manual steps. More about R3++...

  • LedWiz DLL

    Optional - needed only if you use older, pre-DOF software that's LedWiz-aware. This is a replacement for the manufacturer's LEDWIZ.DLL, which non-DOF applications use to access the device. This version of the DLL lets such older software access more than 32 Pinscape ports by making each Pinscape device appear as multiple LedWiz units. For example, a Pinscape device with 64 output ports would appear as two LedWiz units, allowing older software to access all 64 ports. This DLL isn't needed for DOF-based applications, which can access all Pinscape ports directly, but it's useful if you have older LedWiz-only applications that haven't been updated to use DOF.


DOF

Current version: 1 July 2025: Incorporates the latest version of the PinballX plugin from the PinballX developers; tweaks the config file syntax for compatibility with updates to the DOF online Config Tool.

As always, this is a cumulative update that includes all features from earlier R3++ and R3+ versions.

Windows setup (.msi): 32-bit MSI | 64-bit MSI
ZIP files for manual install: 32-bit ZIP | 64-bit ZIP
Source code: github.com

32-bit and 64-bit DOF: DOF is a DLL, which is a program extension that other programs access. On Windows, 64-bit programs can only access 64-bit DLLs, and 32-bit programs can only use 32-bit DLLs. So you have to install the version of DOF that matches the "bitness" of the other programs you're using (the ones that access DOF, anyway). If your pinball programs are all 64-bit, you only need the 64-bit DOF. If you use a mix of 32-bit and 64-bit programs, you must install both DOF bit versions. If in doubt, just install both.

Quick setup instructions:

If you only need the 32-bit OR 64-bit version, simply run the corresponding MSI file.

To install BOTH the 32-bit AND 64-bit versions:

  • Run each MSI, one at a time. The order doesn't matter.
  • Select the same install folder for both versions. This will allow the two versions to share a single set of configuration files, so that you don't have to keep two sets of files in sync.
  • No manual fixup steps are needed after the dual install. Older tutorials might claim that you have to perform some extra manual steps (renaming and moving files, changing registry keys) for a dual 32/64 install. That's all out of date now. No extra manual steps are required after running the two MSI installs.

More about R3++ | Manual setup instructions

Older releases:

  • 29 March 2025 (v3.2 Official): Fixes some bugs in Pinscape Pico device support.

    Windows setup (.msi): 32-bit MSI | 64-bit MSI
    ZIP files: 32-bit ZIP | 64-bit ZIP
    Source code: github.com

  • 5 November 2024 (v3.2 Beta 3): Adds a fix for Dude's Cab Controller device; adds an installer check that UAC is enabled (since DOF won't work properly when UAC is disabled).

    Windows setup (.msi): 32-bit MSI | 64-bit MSI
    ZIP files: 32-bit ZIP | 64-bit ZIP
    Source code: github.com

  • 27 September 2024 (v3.2 Beta 2): Minor release that adds some updates for the Dude's Cab controller device.

    Windows setup (.msi): 32-bit MSI | 64-bit MSI
    ZIP files: 32-bit ZIP | 64-bit ZIP
    Source code: github.com

  • 1 September 2024 (v3.2 Beta 1): Major update that adds support for combined 32/64-bit installation, plus a few device-specific fixes and updates.
    • Adds support for combined 32-bit and 64-bit installs, with automated .msi setup programs for both versions, installation of both versions in a single folder so that configuration files can be shared between the two versions, and no extra manual install steps required to set up both versions.
    • Fixes a bug in the Pinscape driver that prevented DOF from connecting to the latest Pinscape KL25Z firmware (due to a change in the size of the HID input report data, which DOF should have been sensing dynamically all along, but wasn't).
    • Merges all updates from Vroonsh and philipellesis (CSD) for the drivers for Dude's Cab Controller and Pin One devices.

    Windows setup (.msi): 32-bit MSI | 64-bit MSI
    Zip files: 32-bit ZIP | 64-bit ZIP
    Source code: github.com

  • 16 April 2021: A minor R3++ update, with a few bug fixes and new features:
    • Fixes a DOF startup bug that affected Pinscape controllers on some machines. The most common symptom was that button lights (e.g., the Start button light) that were supposed to remain lit during a game didn't light up at all, or only worked some of the time, at random.
    • Smart LED strips now have gamma correction, to make the apparent brightness better match the programmed percentage level. The gamma is set to 2.2 by default, which should be a good setting for most strips, but it can be changed via the BrightnessGammaCorrection parameter in the cabinet configuration XML file. (Enhancement courtesy of Vroonsh.)
    • Fixes some bugs in matrix bitmap animation effects and fade effects, including a crash bug when an image file was missing. (Fixes courtesy of Vroonsh.)
    • Updates SSFImpactor (DOF device simulation using in-cabinet speakers or exciters) to incorporate features from Kai Cherry's last public release, with an overhaul by njk70 to correct some issues that Kai left unresolved before stopping work on it. Notably, this adds simulated shaker motors and gear motors to the simulated device set. (SSFImpactor by Kai Cherry; updates and fixes courtesy of njk70.)

    Windows Setup (MSI) | ZIP file | Source code

  • January 2021: A minor R3++ update, with special support for using a WeMos as an addressable LED strip controller, courtesy of Vroonsh. The WeMos is an alternative to the Teensy that's cheaper than the Teensy in some regions, and although it's meant to be basically a drop-in replacement for the Teensy, the WeMos hardware has some slight differences that require a few adjustments to the DOF COM port settings. Past DOF versions worked with the WeMos by pretending it was a Teensy, but this version promotes the WeMos to a specifically supported device, which should make it a little easier to set up. This version also adds the ability to adjust LED strip brightness separately for each strip, to compensate for any differences in native brightness from one strip to the next, for a more uniform overall appearance.

    Windows Setup (MSI) | ZIP file | Source code

  • August 2020: A minor R3++ update with two new features, courtesy of Vroonsh. First, table-scoped variables in the config file are expanded before global variables when processing the Config Tool strings. This means that table-scoped variables override global variables, which lets you customize all variables on a per-table basis (which is really the way it should have been originally). The specific use case Vroonsh had in mind is that this lets you easily customize LED matrix effects per table. Second, it adds some new variables to the global config file that let you customize the signal timing for Addressable Light Strips controllers. The default timing is designed to work with SwissLizard's original Teensy-based controller design, so if you're using a Teensy, you can ignore this change and continue using the default settings. Vroonsh added the new variables because some people (especially in Europe) use a Wemos D1 Pro in place of a Teensy, and that device has slightly different signal timing requirements. This change lets you adjust the timing to match your device via the global config file (rather than having to recompile the source code, which is what people using the Wemos were forced to do in the past).

    Windows Setup (MSI) | ZIP file | Source code

  • March 2019: A minor R3++ update that added new code from Kaicherry to simulate DOF effects using Surround Sound Feedback (SSF) with bass shaker or tactile speakers (also known as exciters).

    Windows Setup (MSI) | ZIP file | Source code

  • January 2019: The second major R3++ release, with support for ZB Output Control devices, support for LedWiz+GP devices, fixes for some Sainsmart device recognition problems, support for 64-bit versions of PinballY. The big change in this version is that all components are packed into monolithic DLL files, which should eliminate the mysterious path naming problems that some people ran into in past versions.

    Windows Setup (MSI) | ZIP file | Source code

  • August 2018: Grander Unified R3++ version, merging all of the separate development forks that branched off after 2015, and adding an automated Windows Setup installer. (This isn't quite the original Jan 2018 R3++; it has some minor updates and fixes. This is the last update before the rearrangement of the components into monolithic DLL files, so I'm preserving it as an option just in case the DLL refactoring causes problems on any systems.)

    Windows Setup (MSI) | ZIP file | Source code

  • October 2016: The older DOF R3+ version from 19 Oct 2016, from before the re-unification of development branches described above. This is considered highly stable.

    More about R3+ | Setup instructions | ZIP file | Source code


How to install the DOF update

System requirements: .Net 4.8 is required. This is a core Windows component that DOF requires. It's pre-installed on most Windows systems by default, but it might be missing on older Windows 7 systems, especially if you recently did a fresh install of the operating system. You can install it via Windows Update if it's missing.

UAC must be enabled. The installer checks for this and won't proceed unless UAC is enabled, because DOF won't work properly when it's disabled. DO NOT DISABLE UAC AFTER INSTALLATION. Some older tutorials recommend disabling UAC, but this advice is out of date at this point and should not be followed, because disabling UAC changes some important internal Windows features in ways that break a lot of software. The old advice about disabling UAC comes from the early days of Windows Vista, when a lot of older software was still in use that was written for prior versions of Windows and didn't work properly with modern the Windows APIs, including UAC. These days, the exact opposite situation applies, where disabling UAC will cause compatibility problems for a lot of modern software, because anything written in the last 20 years was designed specifically for the modern Windows APIs, and might not work if you put Windows into an antiquated 20-year-old mode. If you're running some program whose README tells you that you MUST disable UAC for it to work, the problem is with that program, not with UAC. My advice is to ask the author to update the program to work properly on current Window systems, or just don't run that program.

Installing on a new system vs. updating an existing setup: There are no differences in the procedure. Just run the installer or follow the manual install steps. You can update an existing copy without un-installing anything first - simply install the new version in the same folder.

Automatic setup (recommended): Download the Windows Setup (MSI) installer. Double-click the downloaded file and follow the on-screen prompts.

32-bit vs 64-bit: The DOF "bit size" has to match the bit size of the DOF-enabled programs you're using. Most people these days use a mix of 32-bit and 64-bit programs, which requires both DOF setups. The DOF lets you select any combination of 32-bit and 64-bit, separately or together:

  • For 32-bit only, download and run the 32-bit .msi installer
  • For 64-bit only, download and run the 64-bit .msi installer
  • For both 32-bit and 64-bit, download both installers, and run each (one at a time, obviously; the order doesn't matter). Select the same install folder for both. Using the same folder allows the two versions to share all configuration files.

    Note that no manual steps are needed after running both installers, contrary to what you might read in tutorials about the 64-bit setup. You don't have to move any files around or change any registry keys. Older tutorials list extra steps you have to perform to get both versions working, but those were written for older DOF versions, before DOF had built-in support for the combined 32/64-bit installation.

Install folder layout: Most of DOF's config files and other non-program files are stored in the main DOF install folder (the one you selected in the Setup program), with some stored in a Config sub-folder. The program files are stored in separate x86 and x64 sub-folders, to keep the 32-bit and 64-bit files separated and keep track of which is which.

Troubleshooting: The installer is usually reliable, but there are a couple of issues that sometimes come up. If you encounter any error messages that aren't self-explanatory, here are some things to try:

  • Check that UAC is enabled. You should always leave it enabled. Any advice you've seen on the Internet telling you to disable it is badly out of date. UAC is an integral part of Windows now, so turning it off changes system internals and creates lots of headaches. The MSI setup process won't work correctly if UAC is disabled, but it will appear to, which makes it difficult to troubleshoot. Enable UAC and re-run the install if you had UAC disabled before.
  • If you get an error saying that C:\DirectOutput (or your chosen folder) can't be found, can't be created, or can't be written, your C:\ root folder might be "owned" by a special system account like SYSTEM or Trusted Installer. That blocks regular user accounts from writing to it. You can choose another folder that isn't protected like this, or you can work around the permission blockage using "Run as Administrator" mode when running the installer. In the latter case, the new C:\DirectOutput folder will also be created with restricted permissions, which will create problems later on. But you can fix that up by changing its owner to match your regular user account:
    • Right click the C:\DirectOutput folder on the desktop
    • Select Properties from the context menu
    • Go to the Security tab
    • Click the Advanced button
    • Next to the "Owner" listing, click Change
    • In the box, type your regular user account name and click Check Names
    • Make sure that expands your entry properly to "Domain\Username", then click OK

Manual setup (not recommended): If you prefer doing things the hard way, you can install DOF manually from the ZIP file distribution. But I'm serious in recommending against this. DOF is ridiculously difficult to install by hand. There are numerous steps required and many details, and if you get just one little thing wrong, DOF won't work at all, and it won't give you the slightest hint as to why. That's the whole reason I wrote the installer - the forums were always full of pleas for help from people who couldn't figure out what they got wrong. The Setup version has proven to be much more reliable, and it makes the whole process quick and painless. It'll save you a lot of time and aggravation.

But if you really want to try it on your own anyway, follow the instructions in the DOF Setup chapter in the new Pinscape Build Guide.

Note that the dual 32/64-bit situation makes the manual installation even more fraught. My guide doesn't include instructions for manual setup of the 64-bit version, and I don't plan to add any now that the automatic installer is available, but there are tutorials elsewhere if you really want to install 64-bit manually.

LEDWIZ.DLL is not included in DOF any more. That's intentional. DOF no longer uses that file. DOF communicates with LedWiz devices directly for improved reliability. You can delete any old copy from your DOF folder.


About the DOF Grander Unified R3++ update (January 2018)

In January 2018, I merged the DOF development branches from several independent developers who added features to Swiss Lizard's 2015 "R3" beta release. (Swiss Lizard is DOF's original author, and the R3 beta was the last time he worked on the project, so that beta release was for a while the reference point most people worked from.) I called this new merger of branches the "Grander Unified R3++" version, in reference to my earlier "Grand Unified R3+" version from 2016, which was a merger of some changes of my own with Swiss Lizard's final release.

The "Grander Unified R3++" version was intended to get everyone back to a single DOF branch. Before it came out, you were forced to choose which subset of new features you wanted by picking one of those separate branches from different developers. R3++ combines all of the known new features into a single release. It includes Djrobx's fixes for boolean effects with PWM controls; Rambo3's UltimateIO and Philips Hue support, and SainSmart auto-configuration; Freezy's ProPinball bridge; and my own R3+ version, which had updates for Pinscape devices and improved LedWiz support.

New with this version is the option to install automatically with Windows Setup, instead of using the traditional manual procedure. The manual procedure is complex and error-prone, and it's notoriously difficult to troubleshoot if you miss any minor details. The Windows Setup option makes installation easy and almost always gets it right the first time. The installer carries out the whole procedure described in the DOF documentation, so you can skip all of the manual steps described there (unblocking DLL files, creating B2S links, updating B2S settings, setting up the PinballX plug-in, etc). Just run the .MSI file and you should be ready to go as soon as it's done.

To use the automatic Setup installer, just download the .MSI file to your hard disk and double-click the file to run the installer. If you prefer to use the manual ZIP setup instead, you can find instructions in the DOF Setup chapter of the Pinscape Build Guide.

It's completely up to you whether to use the automatic Setup or the manual ZIP install. Both downloads contain the same files, and there should be no difference in the final result installed on your system (assuming you do everything right if you attempt the manual procedure).

You can use the Setup installer for new installations or updates. There's no need to uninstall the old version or do any other preparation first; just run the Setup.

I've continued to update the R3++ branch with minor updates since the initial January 2018 release. See the release list above. As far as I know, there haven't been any other schisms since, so this is still the universal version.

DOFLinx users: You'll need an updated version DOFLinx to go with this updated DOF. DDH69 was kind enough to build that and make it available here.

About the DOF R3+ update (October 2016)

DOF is an open source interface library by SwissLizard that connects Visual Pinball, PinballX, and other programs with most types of output controllers, such as the LedWiz and the Pinscape board. DOF is the key software component for controlling all feedback devices in a virtual pin cab.

The last official release of DOF by SwissLizard was a beta testing version in November 2015, known as version "R3". SwissLizard stopped working on DOF after that beta, so that became the de facto "official" R3 release, even though it was still nominally a beta, meaning an incomplete testing version. "R3+" was my unofficial, modified version of the R3 beta that updated it with some necessary additions for Pinscape compatibility.

I called my unofficial R3+ release the "Grand Unified" version because it unified my Pinscape updates with the last source code that SwissLizard checked in, which included some additions he made for Teensy addressable LED strip support. Up until that time, my own Pinscape code was only available in a branch I had created earlier, from earlier DOF base code that didn't include SL's Teensy additions.

My "Grand Unified" moniker is now as ironic as it is grandiose, in that four independent splinter projects emerged on GitHub in the time since "Grand Unified" was created. That's what led to the "Grander Unified R3++" version above, which restores the status quo ante bellum, in the sense that we once again have a One True DOF that combines all of the features from all of the branches thus far.


LEDWIZ.DLL

This is an open-source replacement for the LEDWIZ.DLL that Groovy Game Gear (the manufacturer of the LedWiz) distributes with their boards. The DLL is the primary interface that most games use to send commands to the device, so it's generally required for any software that uses the device. DOF-based software doesn't require the DLL, since DOF communicates with the device directly via its USB protocol, but older pinball programs that pre-date DOF might still need it, and any LedWiz-aware game that isn't a pinball simulator probably doesn't know anything about DOF and thus also needs it.

The open-source DLL is a full-featured replacement for the original, and in many ways is better than the original. If you have a genuine LedWiz, the replacement DLL will make your device work better because it uses a separate background thread to communicate with the device, so LedWiz commands will never stall the video game you're playing or make it stutter, and because it includes a workaround for a hardware-level bug in the LedWiz that can make it fire ports randomly. That bug has never been fixed in the LedWiz itself, but the DLL has logic that avoids triggering it, which makes the LedWiz more stable than with the original DLL. If you're using a Pinscape device, the replacement DLL has special handling that lets LedWiz-aware programs see your Pinscape device as multiple virtual LedWiz's if you have more than 32 output ports, allowing legacy software to access all of your Pinscape ports.

The 2025-02-12 version adds support for Pinscape Pico. It also adds a 64-bit version of the DLL, although you probably won't need that for anything besides the NewLedTester program, since everything in the virtual pinball world that still uses LEDWIZ.DLL is probably quite old and was never updated to a 64-bit build.


NewLedTester

The LedWiz DLL download includes a spiffy little program for testing your LedWiz setup, called NewLedTester. This is similar to the SimpleLedTest program that a lot of people use to test their LedWiz setup, but this one is a little friendlier and more flexible, and it's 100% open source in case you want to make any customizations. It's also aware of the new "virtual LedWiz" interfaces that the DLL creates for Pinscape units with more than 32 outputs, which lets it display port numbering on the virtual units that's consistent with your Pinscape setup.


How to install the LEDWIZ.DLL update

Note: you don't need LEDWIZ.DLL for DOF's sake. DOF doesn't use it any more. LEDWIZ.DLL is only needed by older, non-DOF software that wants to access your LedWiz on its own, such as Future Pinball.

Download the ZIP above, open it, and extract the contents onto your desktop or any convenient folder.

Right-click on the new LEDWIZ.DLL file. Select Properties, then go to the General tab on the menu. If you see a message saying something like "This file came from another computer and has been blocked", click the Unblock button.

Do the same to unblock LEDWIZ64.DLL as needed.

Now search your system for older copies of LEDWIZ.DLL, and replace each one you find with the new copy. To search your system:

  • On Windows XP, 7, or Vista, click the Start menu, click Search > For Files or Folders..., then type LEDWIZ.DLL into the search box and press Enter
  • On Windows 8 or later, press +F (that is, hold down the " Start" key and press "F"), then type LEDWIZ.DLL into the search box and press Enter

For each file you find, copy the new LEDWIZ.DLL into the same folder location, overwriting the old file. To copy the file, select the new one, press Ctrl+C (Copy), then click on the old file and click Ctrl+V (Paste). Windows will warn you about the duplicate file; choose the option to REPLACE the old file. If you prefer to save a copy of the old file first, just rename it to something else ("LedWiz.dll.old", say) before copying in the new file.

You probably won't need to copy LEDWIZ64.DLL to any other folders, since it's mostly for use with LedWizTester. All of the other software that uses the DLL is probably too old to even know what 64-bit mode is.


About the LEDWIZ.DLL replacement

This version of LEDWIZ.DLL is a fork of the open-source LedWiz DLL replacement in cithraidt's LWCloneU2 project, with many virtual pin cab-related additions. It's a full replacement for the manufacturer's DLL, with numerous improvements over the original:

  • Pinscape device support
  • Support for Pinscape devices with more than 32 ports (client software like Future Pinball will see extra "virtual" LedWiz units to represent the additional ports beyond 32)
  • ZB Output Control device support (new in Oct 2018 update)
  • Multi-threaded USB I/O, so that the calling program doesn't freeze or stutter while waiting for USB commands to complete
  • Workaround for the firmware bugs in real LedWiz devices that cause erratic behavior if commands are sent too quickly

The original and biggest reason to use this replacement DLL is that it solves a big problem with the "factory" DLL if you use a Pinscape Controller. The problem is that the original manufacturer's DLL crashes if you enable the Pinscape keyboard features. You can avoid the DLL crash by disabling the keyboard features, but they're so useful that you probably don't want to do that. The better solution is to use the replacement DLL. It solves the problem, and works whether or not you're using the Pinscape keyboard features.

For Pinscape Controller users, the new DLL has another great new feature: extended output port access. If you have the Pinscape expansion boards, you probably have more than 32 ports in your system, which is beyond what the standard LedWiz interface can handle. The new DLL solves this by making your Pinscape unit appear to be multiple LedWiz units. Legacy client software that's written for the LedWiz will see two or more separate LedWiz units - however many are necessary to cover all of your output ports. This is completely automatic, no configuration necessary; just replace your existing LEDWIZ.DLL with the new one, and your legacy clients will gain access to all of your ports.

Even if you're using a real LedWiz in your system instead of a Pinscape Controller, you still might want to upgrade to this DLL! It has some significant benefits for real LedWiz hardware. For one thing, the new DLL uses multiple threads internally, which greatly improves its performance compared with the original manufacturer's DLL. The original DLL waits for every USB command to complete, which can take up to 10ms per command - that adds up quickly when the game sends multiple commands at once, such as when a big light show display occurs in the game. If you're using Future Pinball with a real LedWiz, and you're experiencing "stutter" when playing LedWiz-enabled games, the new DLL might reduce or eliminate this, thanks to the multi-threading. Another advantage of the replacement DLL is that it has special programming to work around some known timing bugs in the real LedWiz hardware. The manufacturer's DLL is oblivious to the bugs, which can make ports on the device fire randomly when commands are sent too quickly. The workarounds in the replacement DLL should make your LedWiz work more reliably.

The DLL is only a small portion of the LWCloneU2 project, by the way. The overall project is a complete open source LedWiz emulator for Arduinos and other Atmel AVR microcontrollers. In that respect, LWCloneU2 is somewhat similar to the Pinscape Controller project, but it doesn't share Pinscape's special focus on virtual pinball. LWCloneU2 is designed with more general arcade video game emulation in mind instead, like the LedWiz itself. Check out cithraidt's LWCloneU2 repo on github if you're interested in arcade emulation beyond virtual pinball, or if you're looking for another DIY LedWiz alternative besides Pinscape.