Simons Blog | Newest post | About / Imprint

Printing with the CP-D70DW-U

Posted on: 2024-05-19

UPDATE: The proprietary drivers for the CPD70DW are useless but Solomon Peachy has developed an open source driver which works perfectly. I haven't had a chance to try it it out with the CPD70DW-U yet. But if you just want to print with the CPD70DW, get the open source driver and ignore my post.

So, I recently bought a Mitsubishi CP-D70DW-U. What I actually wanted however was a CP-D70DW without the "-U" suffix. There is another printer with an "-S" suffix which is actually just two printers in one but otherwise the same. So my naïve though was "Meh, that doesn't matter. It's gonna be the same." Big mistake!

The reason why I wanted the CPD70DW is that I'm working on a project for a client which has a CPD70DW and I wanted to write new software. But the printer is sometimes a bit wonky with the Linux driver, doesn't print until USB is reconnected or other has other weird issues. I can't get much work done at the clients location and can't borrow the printer for a couple of days to get everything ironed out, so I had to seek another option. My idea was to just buy a cheap used CPD70DW, play around with it until I'm done - client's happy, I'm happy - and I can sell the printer to my client as a spare or use it for myself.

My eBay original bid on a CPD70DW got sniped three seconds before the end of the auction so I got the CPD70DW-U instead.

Turns out the CPD70DW-U doesn't work with CPD70DW media. So I couldn't use the paper and ink ribbon I borrowed from my client, instead I had to buy another 800 print roll of paper. So the resell aspect was gone. Meh.

Fine, things arrived, I put them in and printed a test page right from the printer. It came out fine. Then I tried a print job from my PC and ... Nothing. Printer accepts print job, prints nothing. Tried it from a Windows VM - nothing, same issue.

On a Dutch Photokiosk rental site I finally found the answer: There is no printer driver for the CPD70DW-U. Well, that info came a bit too late :( The printer is only for the EasyPhoto Kiosk.

So now I've spent a lot of money on something that might never work out, but I wasn't done trying. I ordered an EasyPhoto Kiosk and as mentioned in the previous post, with the Kiosk it worked just fine. But that's not good enough! I need a way to programmatically print photos, not by tapping on a touchscreen! Good thing the software is written in unobfuscated Java which allows for easy decompilation. But first I had to get this thing running in a VM for easier development. This is quite easy. From the base image it's just a few steps to get it working via KVM

Starting the EasyPhoto Software in a VM

Some things first:

Then boot the system. It will drop into a root shell

Delete or rename /etc/X11/xorg.conf as it references the non-existent touchscreen. The default settings will do fine. Then, the system uses the board ID read from dmidecode to determine the hardware version. This does not exist in a VM so it won't work correctly. On my VM I simple renamed /usr/sbin/dmidecode and replaced it with this simple shell script:

#!/bin/sh
echo 00000002

Don't forget to forward the USB device to the VM, then reboot. You should be able to print photos now.

I found it easiest to make an ISO file with mkisofs, attach that to the VM and select the option to print from this "CD".

Adding an API

Next, I wanted to add a simple API which allows me to HTTP-PUT files to the Easyphoto and have it print out with default settings. By decompiling the application and analyzing the classes I came up with this little Java project. The jar file needs to be added to the classpath in /root/runApp.sh and the main class changed from com.mitsubishi.it1000.Main to easyphotorest.Easyphotorest

When sending a JPG via a PUT request to port 8000, the photo will be printed. Or not, there is little error handling, sorry :/

Modified firmware image

I've made the modified image available for download as well. The modifications are:

The SSH Server is quite old and modern SSH clients won't communicate with it unless forced to. This command works:

ssh -oHostKeyAlgorithms=+ssh-dss root@fc00:210::1

Now, on to the download link. If you don't know about mycdntool read my previous blogpost with the command to get the original image. You are only allowed to install this if you own a Mitsubishi EasyPhoto! Use at your own risk, I will not be held liable for damages! This command downloads it:

mycdntool catlf cGfstKb98EXQE9iOIOCG0.coNMs.70kC26Dhg8cIsZ4 > easyphoto-with-api.img

Once it's running and you have set your PC to an IP within the same network you can initiate a test print with:

curl -T some-photo-on-your-disk.jpg 'http://[fc00:210::1]:8000'

Trivia