Konica_Minolta_Magicolor_2300DL
How to install a Minolta/QMS Magicolor 2300DL as a network-accessible printer
24/12/2006 update - This works for 2400 series as well just replace 2300DL with 2400DL for the manual way
Contents |
Background
A Minolta/QMS Magicolor 2300DL is a relatively small and inexpensive color laser printer. This printer uses the ZjStream protocol to communicate with the computer.
ZjStream is just a way to communicate data across a cable. It is identical in function to postscript, but it is not postscript compatible.
There are a couple of little tricks to get this printer working under Linux. The tech support will not help you, and online documentation seems a little fuzzy and scattered regarding Linux, but once you know what is going on, it is pretty easy to get working.
Introduction
The 2300DL has its own server software, including httpd, lpd, telnet, and a few others. You will probably want to run your own print server, because of the following characteristics of the 2300DL server software:
- No user or client information is given about the print job
- Jobs are separated by page, not by document
- No batch processing or analysis available for the printer
- Cannot produce PDFs or n-up documents
- Cannot control whether or not a document prints in color
For this reason, I will explain how to set up a print server and a print client.
I am also going to make the following assumptions:
- Your printer is called myprinter
- Your print server is called myserver
- Your have a windows client and a linux client
- You have a class-C network (192.168.0.*)
Setting Up the Hardware
Plug in your 2300DL, and connect the ethernet cable to it. Things work best if you have a dhcp server running so that the printer can grab an IP. You probably want to force an IP on it, since you don't want the printer IP to change without warning. If you do not have a dhcp server, you can set the printer's IP address via the small LCD panel and the setup menu. See your printer manual for assistance as this is covered there.
Turn the printer on, and while it is warming up, you can be installing.
Server Installation
Installing the Software
First, set up cups and foomatic printer support.
emerge cups foomatic-db
The zjstream drivers have since been added to portage, so it is recommended you just emerge them. Skip to starting cups if you use this step.
emerge foo2zjs
If, for some reason the portage package does not work for you, you can try to build foo2zjs manually. Get the minolta zjstream drivers and unpack them
wget http://foo2zjs.rkkda.com/foo2zjs.tar.gz tar zxf foo2zjs.tar.gz cd foo2zjs make ./getweb 2300 # Get Minolta 2300 DL .ICM files make install
This will put a bunch of files into /usr/share/doc/foo2zjs/, /usr/share/man/man1/, and /usr/share/cups/model/. Most importantly, it will create the /usr/share/cups/model/Minolta-magicolor_2300_DL.ppd.gz printer definition.
Then start cupsd:
rc-update add cupsd default /etc/init.d/cupsd start
Setting up the Printer Manual Way
Now set up the printer. An easy way is to use the the web interface at http://localhost:631. But I will show you the command line way.
Adding a printer using lpadmin.
| -p 2300dl-mono | name of the printer |
| -v socket://myprinter:9100 | how we connect note: dont try to use ipp or lpd connections on the printer. Even though it claims to be supported, you will pull most of you hair out trying |
| -E | enable the printer |
| -D "Mono Drivers for 2300DL | textual representation of the printer |
| -L "Bob's Room" | physical location of the printer |
| -P /usr/shar...2300_DL.ppd.gz | the PPD definition we are using |
Putting it all together, we get:
lpadmin -p 2300dl-mono -v socket://myprinter:9100/ \ -E -D "Mono Drivers for 2300DL" -L "Bob's Room" \ -P /usr/share/cups/model/Minolta-magicolor_2300_DL.ppd.gz
CUPS uses a monochrome driver by default. To use the color driver, you will have to switch profiles somehow. This can be done using the web interface, under "Configure Printer," and from the command line with:
lpadmin -p 2300dl-mono -o ColorMode=Color
Setting up the Printer Website Configuration way
- First Make sure that cups is running
/etc/init.d/cupsd status
If its not running you can start it with
/etc/init.d/cupsd start
but if you don't want to have to do this each time you reboot you should add it to your default run level with
rc-update add cupsd default
- Next open up http://localhost:631 in your browser this will bring up the cups website configuration page
- Click on add printer, fill in the details and click continue
- Under device pick the first option "AppSocket/HP JetDirect" - don't what ever you do pick the magicolor option - this does NOT work and you will spend way to much time trying to work out why.
- Device URI: enter the location of your printer for me it was socket://192.168.1.3:9100
- Make/Manufacturer: there are two ways you can do this - first you can try and pick the PPD that is included with the latest cups emerge which is done by scrolling down and picking the KonicaMinolta option - i found this not to work for me and ended up with half the options for the printer missing and got a video underun error every time i tried to print something. The better option i believe is to go and download the latest foo2zjs PPD "http://foo2zjs.rkkda.com/foo2zjs.tar.gz" and then select the "Or Provide a PPD File:" option where it asked you for the location of the PPD file. Navigate to where you extracted the foo2zjs files and open up the PDD dir, you will then find the right one for your model in my case it was the 2430dl.
- You will get a message saying that the printer has been added and it will lead you to the printer configuration page
- There are only two things i had to change in the "set printer options" page and that was the "Color Mode:" to use ICM color profile - this is what works for me and when i have tried to pick the "color" option it has not worked but it could be different for you. Last was to change the paper size to A4 - save changes.
- Last step is to do a test print - on the printer configearion page you can click on the test print option - and fingers cross it should print :)
Allowing Network Access
You want clients to be able to print directly from lpr into your remote server. That way you won't have to install CUPS on the client, and you won't have to synchronize your printers on multiple machines.
So open up your /etc/cups/cupsd.conf, and look for something that looks like this:
| File: /etc/cups/cupsd.conf |
# SNIP <Location /> Order Deny,Allow Deny From All Allow From 127.0.0.1 </Location> # SNIP |
Change it to look more like this:
| File: /etc/cups/cupsd.conf |
# SNIP <Location /> Order Deny,Allow Deny From All Allow From 127.0.0.1 # Added to allow remote printing Allow From 192.168.0.* </Location> # SNIP |
Now restart cups:
/etc/init.d/cupsd restart
Testing the Printer
Now it is time to test the printer.
echo "my new printer test page!" > testprint.txt lpr -P 2300dl-mono testprint.txt
Your 2300dl should warm up and spit out a small page. You could also print /usr/share/cups/data/testprint.ps for a graphical test page.
The GIMP
If you have the Gimp on the server, then before you print, make sure you click "Setup Printer..." for the printer you will be using. A popup window will display. Make sure it has the following information:
| -s | Silent mode... don't report the job id |
| -d2300dl-mono | The destination printer |
Printer Model: Postscript Level 2 Command: lp -s -d2300dl-mono
Be sure that you do NOT send '-oraw' output to the gimp. This will result in HUNDREDS of ascii pages coming out of your printer. Should this happen, the only way to stop it is to shut off the printer, remove all the paper, and cancel each page one by one.
SAVE your settings so you don't forget next time.
Troubleshooting
- If your printer says, "Paper Jam: Media Tray 1" or something along those lines, take out all the paper from the loading tray, and press down on the inside of the tray 4 or 5 times, and put a sheet back in. There seems to be a physical irregularity with all 2300DL printers that causes this problem
- If you get a thousand full pages of random letters when printing from the gimp, you are probably sending raw output to the printer directly, or are using the wrong PPD.
The Linux Client
Installing the Software
Since your client is talking to the server, and the server is translating the print queues into zjstream format, the client does not need all the fancy configuration that the server does.
You should be able to access the server's print queues from either CUPS or LPRng.
I'm not entirely sure if the command is the same in lprng, so feel free to correct me.
Install CUPS or LPRng:
emerge cups
OR
emerge lprng
Setting up the Printer
If you really want to create a new queue on the client, you can follow what was done on the server, except perhaps change the printer address to the server address. However, I prefer to print directly to the server on my own network. That way should my network topology changes somehow, I only have to update one machine.
In case you forgot which printers are available on the server, or you don't remember what they are called, try this:
lpstat -h myserver -p
This should produce a list of printers available on the server, and each one's respective status:
printer 2300dl-mono is idle. enabled since Jan 01 00:00
Testing the Printer
Test it out!
Here is where we take advantage of our server print share:
| -d 2300dl-mono | The destination printer |
| -h myserver | The server to connect to |
| -t testprint | The job name |
| /usr/sh...print.ps | The file to print Note that this MUST be a postscript file, since you are sending RAW data to the queue. Otherwise, cups will complain with: "print_job: No file!?!" |
lp -d 2300dl-mono -h myserver -t testprint /usr/share/cups/data/testprint.ps
The GIMP
The client output to the print server should be raw data (since the server formats it), so Gimp can send out raw data from a client machine.
Open up your printer settings by clicking on the "Setup Printer..." button from the print window, and make sure it has the following information:
| -s | Silent mode... don't report job ids |
| -d2300dl-mono | The destination printer |
| -hmyserver | The server to connect to |
| -oraw | Send raw output |
Printer Model: Postscript Level 2 Command: lp -s -d2300dl-mono -hmyserver -oraw
SAVE your settings.
Troubleshooting
- If you get 'client-error-forbidden', then your server does not accept incoming connections. Make sure your /etc/cups/cupsd.conf is correct.
- If you get 'client-error-bad-request', you are probably not sending a postscript file, but check your server's /var/log/cups/error_log for more details.
- If you get cups/backend/ipp failed or client-error-document-format-not-supported in your error logs this means that you have tried to use the IPP or HTTP option when setting up your printer and its not working - i don't know why this does not work but you should try the website configuration approach documented above
- If you get a "video underun" error on the printer console itself and the test page you tried to print comes out all black - this means that you have tried to send too much data to the printer - i got this error when trying to use the included PPD file that comes with cups - i recommend you try the "download your own foo2zjs PPD" option documented above.
The Windows Client
You will need Samba installed and configured for this. Surprisingly there is no wiki on this right now, so just read http://www.samba.org/samba/docs/man/Samba-Guide/index.html for now. Essentially, you need to make sure that Samba talks to CUPS and shares out the printers properly (usually this is very easy).
Just a warning: I don't remember the details, and I cannot seem to confirm this, but if my memory serves me right, it is impossible to use the Point-And-Print feature in Samba with this printer. This has something to do with the Linux PPD or driver compatibility.
Because of this, you need to go to http://www.adobe.com/support/downloads/product.jsp?product=44&platform=Windows and download a version of the Universal Postscript Printer Driver for Windows.
Double-click it, and follow the instructions from there. Make sure you select "its connected to your network (Network Printer)," and select the correct network printer share. If it complains that the printer doesn't seem to use this driver, install anyway... it will work.
Once the printer is set up, everything is pretty straight-forward.
Troubleshooting
- If you get a 'There is a policy in effect on this computer...', it just means that you cannot use the point-and-print feature of samba/windows. Just install the generic postscript printer drivers manually, and they will ask which printer to connect to.
- If no printers show up on the server, then your computer or user does not have access to the printers, or SAMBA is not aware of the printers
Firmware update
WARNING: Only update the firmware if you have problems and you think the firmware update could solve them
If you still want to update the firmware of this printer with GNU/Linux you need to do the following steps
- install wine as the flash-tool is only for dos/windows
emerge wine
- get the firmware
Minolta Printer firmware page select the update via network download -- as we're using this possibility
- unzip the firmware
mkdir firmware_update/ && unzip ~/v286_Update\ via\ network.zip -d firmware_update/
- create script the update script: (this script was created for version v286. For other version please compare the script with UPDATE.bat). Create the script within the same directory as UPDATE.bat:
#!/bin/bash
if [ -z $1 ];then
echo "usage: ./`basename $0` printerip"
echo "no ip given"
exit 1
fi
echo "press ENTER to start flashing"
read
wine flashupdate -b $1 bootrom007p2.flt
wine flashupdate -r $1 vxworks.z
echo "Wait for Reboot"
echo " Wait"
echo " Wait"
echo " Wait"
echo " Wait- 20 sec"
echo "Press ENTER after the Printer has rebooted"
read
wine flashupdate -j $1 demoA4.prn
wine flashupdate -j $1 demoLetter.prn
wine flashupdate -j $1 menuA4.prn
wine flashupdate -j $1 menuLetter.prn
echo "Updated"
- make script executeable
chmod +x update.sh
- do the crucial update
./update.sh yourPrinterIp
Conclusion
A lot of excellent work has been done so that you can print here from Linux. A big thanks goes to Rick Richardson for developing the foo2js driver, the people at linuxprinting.org, and everyone else who contributed.
Be sure to visit their websites and show your appreciation for this and other fine open-source softwares by donating a little money for their hard work.
Thanks.
Other Links
Here are some places I visited in order to set up my own printer and write this article:
Using CUPS from the Command Line
LinuxPrinting Magicolor 2300DL Page
foo2zjs Homepage
Minolta/QMS Magicolor 2300DL Main Page
FreeBSD Lists
A whole lot of trial-and-error.
Created by NickStallman.net, Luxury Homes Australia
Real estate agents should be using interactive floor plans and list their apartments, townhouses and units.
