K40 Whisperer

K40 Whisperer

K40 Whisperer:
Control software for the stock K40 Laser controller


Controller Boards
Related Links


K40 Whisperer is an alternative to the the Laser Draw (LaserDRW) program that comes with the cheap Chinese laser cutters available on E-Bay and Amazon. K40 Whisperer reads SVG and DXF files interprets the data and sends commands to the K40 controller to move the laser head and control the laser accordingly. K40 Whisperer does not require a USB key (dongle) to function.

K40 Whisperer is a free open source program released under the GNU General Public License (GPL).

K40 Whisperer Features:

- Reads SVG files and DXF files
- Splits input design based on color formating (red,blue)
- In SVG files blue and red paths are interpreted as vectors for vector engraving and cutting everything else is transfered as a raster image
- In DXF files blue paths are interpreted as vectors engrave else is interpreted as vector cut (red)
- Performs cuts on features inside of other features before cutting the outside features. (If you cut the outside first the part might drop out of the stock material)
- Converts gray scale images to halftone images to simulating varying levels of grey (i.e. engraving pictures). The Halftone option needs to be selected under "Raster"-"Settings" to enable halftoning.

Changes in Version 0.01

- Initial Release

Changes in Version 0.02

- Added Min/Max darkness cutoff settings for halftone raster images.
- Fixed bug that could cause raster engraving to start engraving the wrong direction.
- Fixed error messages and added better error messages.
- Removed Numpy dependency.

Changes in Version 0.03

- Added more descriptive text to "No Backend Error" to indicate libUSB is not installed
- Removed debugging code that could have resulted in the head moving 1" away from raster image.
- Updated raster test pattern SVG file.

Changes in Version 0.04

- Improvements to DXF import to prevent import failures
- DXF import now detects blue lines and designates them as engraving lines.
- DXF import looks for layers that have the text "engrave" in the name and designates items on the layer as engraving lines.
- DXF import now detects the units in the file. If no units are specified the user is prompted to select the correct units.
- Stop button now works during all phases of engraving preparation
- Status updates more during engraving preparation and engraving process
- Stop button now pauses job with the option to resume or terminate the job.
- Added error on detection of color coded text in SVG files.
- Deleted Min/Max darkness cutoff settings for halftone raster images.
- Added Levels settings utilizing a Bezier curve to control the levels of gray-scale images
- Changed scan-line step input to always be in inches.

Changes in Version 0.05

- Added option to support homing in the upper right corner (instead of the upper left corner) for some 50W machines
- Changed the final move after vector engrave and vector cutting to be a rapid move to the starting position (was at working speed move).
- Updated code to support more easily running on Mac computers. Instructions added in the src zip file for getting started on Mac.
- Eliminated the requirement for the PIL/Pillow _imaging C module.
- Started updating for compatibility with Python 3 (this is a low priority work in progress)

Changes in Version 0.06

- Added code to DXF class to fix bad knot data in splines.
- Added better status messages during image processing
- Changed half toning to PIL/PILLOW half toning (faster)
- Added better error message for Memory Error which previously resulted in a blank message box.
- Added a 64 bit executable to the list of downloads to address memory limitations with the 32 bit application

Changes in Version 0.07

- Fixed "maximum recursion depth..." error when engraving/cutting.
- Adjusted code for better memory management when generating data for the laser cutter.

Changes in Version 0.08

- Fixed X-axis rapid motion bug that resulted in a engraving/cutting offset after some .003 inch rapid motions.
- Instructions added in the src zip file for getting setup on Linux (README_Linux.txt).
- Added code for B1 controller boards (Not enabled yet still need to be tested.)

Changes in Version 0.09

- Adjusted DXF import to avoid DXF loading fail due to rounding error during calculations.

Changes in Version 0.10

- Added support for SVG "polyline" and "polygon" objects
- Added code to automatically convert text to paths when red/blue vector text outlines are found.
- Hidden layers in Inkscape SVG files now remain hidden.

Changes in Version 0.11

- Added support for reading g-code.
- Enabled option for controller board version B1
- Fixed a bug that resulted in bad design scaling if one of the feed rates were not entered correctly when changing units.
- Added support for SVG "Line" objects

Controller Boards:

Only boards that work with LaserDRW will work with K40 Whisperer. (Moshi boards will not work)
To see which board you have you can go to "Properties" from the LaserDRW (or CorelDraw) Engraving Manager window and look at which board is selected for the "Mainboard" option. You can also just at the the controller board. (The controller board is the circuit board the USB cable plugs into)

Controller Boards Known to Work with K40 Whisperer:
- 6C6879-LASER-M2 (M2 Nano)
- 6C6879-LASER-B1
- HT Master5
- HT Master6

Additional Controller Boards That May Work:
- 6C6879-LASER-M1*
- 6C6879-LASER-M*
- 6C6879-LASER-B2*
- 6C6879-LASER-B*
- 6C6879-LASER-A*
* I need users to test the indicated boards. If you want to do the testing you can contact me and I will work on getting the code ready to test. I am not writing the code for each of these boards ahead of time because I don't know if there are any of them in use. (My e-mail address is in the image at the bottom of this page)


This should be considered experimental software. I have tested it but there may still be some unknown issues.

(Right click on the link and select "Save target as" or "Save link as")
K40 Whisperer for Windows (32 bit) K40 Whisperer for Windows (64 bit) K40 Whisperer Source

Installation Instructions:

Setting up K40 Whisperer on Windows

Linux: Setup instructions for Linux are included via the README_Linux.txt file in the "K40_Whisperer-x.xx_src.zip" file.

Mac: Setup instructions for Mac are included via the README_MacOS.md file in the "K40_Whisperer-x.xx_src.zip" file.
(I can't help with Mac specific questions. I have no experience installing software on a Mac.)

Trouble Shooting:

Why blue or red items (or text) are not detected and how to fix it: Vector Colors and Text in K40 Whisperer
Why there are errors on SVG import and how to fix it: Input SVG File Errors

Creating Input for K40 Whisperer

1. Create your a design in Inkscape.
- Use RED lines to indicate cutting.
- Use BLUE lines to indicate vector engraving.
- Use BLACK to indicate raster engraving (this can be shapes, paths or images)
2. Adjust the size of the document to match the area you want to export (You can use "File" - "Document Properties" - "Resize Page to Content" to make the page the same size as your design)
3. Within Inkscape select "Save" to save the design as an SVG file.
4. Open the SVG file you just saved in K40 Whisperer.

Halftone (grayscale) Images with K40 Whisperer

In addition to red blue and black you can also do greyscale with K40 Whisperer. The stock boards that work with K40 Whisperer are not able to controlling the power output by the laser. However, grayscale can be created by creating a halftone image (dithering) of the raster image. below is an example of an image that was engraved with the halftoning option turned on in K40 Whisperer.
The truck photo came from Wikimedia Commons: Madrid_-_Fargo_Power-Wagon

In order to generate the halftone image in K40 Whisperer the Halftone setting in the Reaster settings needs to be selected. When the Halftone option is turned on the image displayed in K40 Whisperer will be shown in grayscale. There are some settings for the output levels. The defaults should work pretty well. Here is a brief explanation of the settings:

Slope, Black: This is the ratio of the output level vs the input level on the dark end of the grayscale spectrum. Increasing this value will make the darker areas of the image get darker at a faster rate but but more of the image will remain lighter. If a lot of your image appears too dark you can increase this value. (A value of 1.0 is no adjustment, The K40 Whisperer default has some adjustment based on my experimenting)

Slope, White: This is the ratio of the output level vs the input level on the white end of the grayscale spectrum. Decreasing this value will result in the lighter parts of the image become lighter at a slower rate as you approach the white side of the grayscale spectrum. (A value of 1.0 is no adjustment, The K40 Whisperer default has some adjustment based on my experimenting)

Transition: This setting determined how abruptly the transition from the black slope to the white slope occurs. The larger the number the sharper the transition.

Overview Video

K40 Whisperer Main Window


Related Links

Laser Draw Inkscape Extension: Save Laser Draw (LYZ) files from Inkscape.

Scorch's Home
Scorch Works Home
Scorch Works Blog
@scorchworks On Twitter