Fuji-Xerox engine for CUPS

Bug #124442 reported by Steven McCoy
This bug affects 5 people
Affects Status Importance Assigned to Milestone
Fix Released
fxlinuxprint (Ubuntu)
Fix Released

Bug Description

Fuji-Xerox have an open source driver package for the following printer devices:

ApeosPort-II C7500 / C6500 / C5400
DocuCentre-II C7500 / C6500 / C5400
ApeosPort-II C4300 / C3300 / C2200
DocuCentre-II C4300 / C3300 / C2200
ApeosPort-II 7000 / 6000 / 5000
DocuCentre-II 7000 / 6000 / 5000
ApeosPort-II 4000 / 3000
DocuCentre-II 4000 / 3000


direct link to source:


installation document, you can follow the pictures if you cannot read Japanese:


Revision history for this message
Steven McCoy (dsbunny) wrote :

Released under GNU General Public License 2.

Changed in cupsys:
importance: Undecided → Wishlist
status: New → Confirmed
Revision history for this message
Chris D (cdekter) wrote :

Tested successfully on Ubuntu Hardy i386 (released version). I was able to compile and use the driver 100% with no problems.

Revision history for this message
Pascal De Vuyst (pascal-devuyst) wrote :

Instead of packaging the manufacturers driver for Ubuntu it would be better to provide a openprinting distribution independent driver package as described here: http://www.linux-foundation.org/en/OpenPrinting/WritingAndPackagingPrinterDrivers
This would allow automatic download and installation of the manufacturers printer driver by system-config-printer as already implemented by this specification: https://blueprints.launchpad.net/ubuntu/+spec/printerdriverautodownload since Ubuntu Intrepid. Please consider asking to the manufacturer of providing such a package that allows their printer driver to be installed automatically on Linux in general (not only Ubuntu).

tags: added: needs-packaging
affects: cupsys (Ubuntu) → ubuntu
Revision history for this message
Tomas Cassidy (tomas-cassidy) wrote :

I can confirm that the rpm package available on the FujiXerox website installs successfully with alien. The printer driver was not autodetected so I had to manually select the ppd file from /usr/share/cups/model/FujiXerox/en/fxlinuxprint.ppd to get the printer working.

Revision history for this message
hdau (ubu-acct) wrote :

A note for anyone looking for information about printing with fxlinuxprint.ppd and using the 5 digit UserIDs.

Due to not finding any details about how to print with UserIDs turned on, the following hack was put to use.

This is to use "User ID" values to print to a DocuCentre-II C4300 and has been tested and verified.

some fxlinuxprint files can be found here: http://bit.ly/2Wt2iD

From the fxlinuxprint-src-1.0.1 files , edit the file fxlinuxprint.c at line 497 to make the following changes:


                sprintf (str, "%s%d\x0a", PJLSetQty, opt->copies);
        strcat (pjl, str);
        strcat (pjl, PJLSetJobAttribute);
        strcat (pjl, PJLAttributeFstp);

With 2 lines to add User ID ( where XXXXX is a valid 5 digit UserID )

                sprintf (str, "%s%d\x0a", PJLSetQty, opt->copies);
        strcat (pjl, str);
        strcat (pjl, PJLSetJobAttribute);
        strcat (pjl, "\"@JOAU=XXXXX\"\n");
        strcat (pjl, PJLSetJobAttribute);
        strcat (pjl, PJLAttributeFstp);

then compile the ppd as regular --> ./configure , make , make install

and send a test print.

on each PC with a different UserID, the XXXXX value needs to be changed and the driver recompiled.

this hack wouldn't have been possible without the details from users above.

Thanks (c:

Revision history for this message
ryanau (ryan-slowest) wrote :

I did this a few years ago after finding the source code on the Japanese Xerox site in desperation. I only just got around to formally documenting it. I just found this thread so thought I'd add my bit.

I had the same issue as hdau above to make it work with the "Auditron" feature on our ApeosPort-III C3300 and C2200 printers. hdau has hard-coded the JOAU call to get it working. I chose to use the opt structure calls, allowing the PPD to specific the ID ... which requires the header file to be corrected.

The default code in fxlinuxprint.h defines this:

const char PJLAttributeJoau[] = "\"@JOAU=@";

It needs the last @ symbol removed to work on AperosPort units.

diff -rB fxlinuxprint-src-1.0.1/fxlinuxprint.c fxlinuxprint-src-1.0.1-ryan/fxlinuxprint.c
< "(unknown)",
> "5678",
> sprintf (str, "%s%s\"\x0a", PJLAttributeJoau, opt->user_name);
> strcat (pjl, str);
> strcat (pjl, PJLSetJobAttribute);
diff -rB fxlinuxprint-src-1.0.1/fxlinuxprint.h fxlinuxprint-src-1.0.1-ryan/fxlinuxprint.h
< const char PJLAttributeJoau[] = "\"@JOAU=@";
> const char PJLAttributeJoau[] = "\"@JOAU=";

Then, in the PPD you can make a drop-down list of printer IDs for ease of use (I've been unable to find a way to get the PPD to allow a text entry dialog for this purpose - maybe someone else knows better):

*% Generic Accounting
*OpenUI *FXUserName/User Name: PickOne
*OrderDependency: 10.0 AnySetup *FXUserName
*DefaultFXUserName: 5678
*FXUserName 5678/Server: ""
*FXUserName 0873/Ryan: ""
*FXUserName 2534/Bob: ""
*CloseUI: *FXUserName

The line to invoke the pstopdffx binary compiled from the source in the PPD is:

*cupsFilter: "application/vnd.cups-postscript 0 pstopdffx"

And the binary usually lives in: /usr/lib/cups/filter/

Revision history for this message
Steven McCoy (dsbunny) wrote :

I added two printers to the OpenPrinting site so at least the manufacturer appears in a list somewhere,


Note that the string found by /usr/lib/cups/backend/snmp appears to be useless for auto-detection, it will only pickup "Unknown" as the first quoted string:

network socket:// "Unknown" "FUJI XEROX DocuCentre-IV C2260 v 4. 23. 0 Multifunction System" "MANUFACTURER:FUJI XEROX

Revision history for this message
John McPherson (john-mcpherson) wrote :


based on the above comments, I've made some .deb packages:

1) original source code from ftp://download.fujixerox.co.jp/pub/exe/apeosport/c4300series/fxlinuxprint-src-1.0.1.tar.gz, licensed under GNU GPLv2
2) get the driver to output the required headers for printing to printers with mandatory auditing (FXUserName setting)

3) fixed a slight problem with the PPD file that meant the printer wasn't visible in the GUI "add printer" dialogs
4) tried to fix up some potential insecure uses of strcat() function.

.deb packages and my changes to the source code are available at http://www.wlug.org.nz/~jrm/fxlinuxprint/

To set the FXUserName variable for auditing, do one of:

a) [GNOME]
  click on System -> Administration -> Printing
  right-click on the printer, go to Properties, go to Job Options.
  At the bottom, enter "FXUserName" (case-sensitive) into the "add a new option" box, and click Add. Then set the value to the correct printer accounting code.

b) [command line, requires root permissions]
  stop the printing service (CUPS) with '/etc/init.d/cups stop'
   edit /etc/cups/printers.conf, and inside the <Printer> or <DefaultPrinter> blocks, add a new line like 'Option FXUserName 123456'.
  Now restart the printing service with '/etc/init.d/cups start'.

c) (change setting for local user only)
  From the command line, enter "lpoptions -p (printername) FXUserName=123456",
  replacing "123456" with the correct printer accounting code for your department. You can find the printername for the already known printers with 'lpstat -a'
  Note! some applications that don't fully support the CUPS printing system
  (such as Open Office) will not correctly apply the option if it's set using this method.

@ryanau - I couldn't find any way to get the CUPS interface to allow a text entry dialog like that (except for adding your own option like in step a) above). I think the PPD interface only allows "PickOne"-style options.

Revision history for this message
Jörg Frings-Fürst (jff-de) wrote :

last release: 2006-6-15
change status to invalid

Changed in ubuntu:
status: Confirmed → Invalid
affects: ubuntu → fxlinuxprint (Ubuntu)
Changed in fxlinuxprint (Ubuntu):
status: Invalid → Fix Released
Changed in debian:
status: Unknown → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.