Reverse Engineering of Laser Cutter Controller RDLxxx and RDCAM Software

LaserWork on Wine

The RDCAM version 6 software package delivered with the laser cutter contains a standalone laser cutting program called LaserWork (version 6). I have been able to install this program on Windows 7, but it could not find the laser cutter device. As the computer in the workshop was anyways running Linux due to other machines controlled by it, I made LaserWork run on Wine.

Linux PC

The Linux PC running Wine and LaserWork has got an Intel Core2 Quad and 4GB of main memory. A standard desktop installation of Debian Wheezy (x86_64 with i386 support) is used as operating system. The Wine version is 1.4.1.

Direct FTDI Driver

RDCAM uses the direct FTDI driver D2XX to communicate with the FTDI chip in the controller via USB. Therefore, the Linux version of the D2XX driver has to be installed. I installed version 1.1.12 of the driver for both i386 and x86_64 architectures.

Allowing Users to Use FTDI Devices

The device files in /dev/ are usually created without read/write permissions for ordinary users. To change that, create a file called /etc/udev/rules.d/99-ftdi.rules with the folling contents:

SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6001", MODE="0666"

Wine Support for FTD2XX.DLL

As the LaserWork/RDCAM software runs under Wine, support for the FTD2XX.DLL has to be enabled by redirecting API calls to the native Linux library. Fortunately, the work of creating a wrapper library had already been done. So I could install the file in /usr/local/lib32. Finally, I created a symbolic link to this file in /usr/lib/i386-linux-gnu/wine/, so that Wine is able to find the D2XX wrapper library when a Windows program wants to load FTD2XX.DLL.

Installing LaserWork on Linux

To make LaserWork run on Luinux under Wine, just copy the LaserWork installation directory to Linux. Afterwards, rename FTD2XX.DLL in this directory to FTD2XX.DL_ to make sure that wine uses the wrapper of the D2XX Linux driver and not the windows driver.