Xerox Phaser 6010 USB printer not detected

I’m running OpenSuse 11.4 and trying to connect a brand-new Xerox Phaser 6010 printer through USB.

I started by trying Yast>Hardware>Printer>Add, but no printer was detected. I tried “Detect More”, but still no printer was detected.

The USB cable is connected, the printer is turned on, and /dev/usb/lp0 exists. There is only one printer on my system, so this must by my printer device; indeed, it disappears when I turn off the printer. Also, the printer works nicely under Windows, so there is no hardware problem with the printer itself.

I tried removing and reinserting the usblp module (using rmmod usblp; insmod usblp), but still no printer. Cups does not seem to find it.

I also tried explicitly specifying a URI for the printer using ConnectionWizard>SpecifyArbitraryDeviceURI usb:/dev/usb/lp1, selected the Xerox Phaser 6010 driver (which is present in the list) and tried to print a test page, but nothing happens.

What other options are there to figure out what is wrong and get this printer to work under OpenSuse?

Try running the command: lsusb in a terminal and see if the printer is detected.
Does the Xerox site supply any linux software?
Check the openprinting website to see if the printer is supported in linux.

Did you install the driver for it?

Phaser 6010 Drivers & Downloads

You’ll want the RPM package.

Once installed, you may need to plug the printer in and configure manually via your browser

http://localhost:631/admin

Choose ‘Add Printer’>>…

The printer is detected at the USB level. Here is the output of lsusb:

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 013: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 002 Device 002: ID 058f:9254 Alcor Micro Corp. Hub
Bus 002 Device 003: ID 413c:2003 Dell Computer Corp. Keyboard
Bus 002 Device 004: ID 046d:c00e Logitech, Inc. M-BJ58/M-BJ69 Optical Wheel Mouse
Bus 002 Device 005: ID 10d5:55a2 Uni Class Technology Co., Ltd 2Port KVMSwitcher
Bus 001 Device 015: ID 03f0:0205 Hewlett-Packard ScanJet 3300c
Bus 001 Device 016: ID 0924:3d68 Xerox

As deano_ferrari pointed out, Xerox provides a linux driver. However, this driver is already installed on my OpenSuse. It is also shown in the list of drivers under Yast>Hardware>Printer>Add.

Just to be sure, I downloaded the driver from the Xerox site and reinstalled it. Then, I turned the printer off and on. This gave no change. The printer is still not detected by Cups and therefor also not displayed in Yast.

The key question here is: how is it possible that a printer is detected at the USB level but not recognized by Cups. As I do not know the internals of this detection, I have no idea how to continue.

I might be wrong, of course, about what the key question is. But it seems strange that the printer is recognized as a USB device (and more specifically as a printer usb/lp0) but not as a Cups printer.

I tried to search for people with a similar problem, also on forums for other linux flavors, but couldn’t find anything helpful.

Any suggestions on what I could try next would be very welcome.

OK, maybe I was a bit to quick to assume that this printer is supported because Xerox provides a linux driver. It is not listed on Printer List | OpenPrinting - The Linux Foundation. I am sort of confused at this point: does does mean that it is not supported, although a driver exists and it is even available under Yast>Hardware>Printer>Add ? Or does it mean that it is supported, but the openprinting list is not up to date?

I also tried http://localhost:631/admin -> Add Printer, but my printer is not shown there and there seems to be no option to add a USB printer. How does this work? Should USB printers be auto-detected and automatically listed there?

OK, maybe I was a bit to quick to assume that this printer is supported because Xerox provides a linux driver. It is not listed on Printer List | OpenPrinting - The Linux Foundation. I am sort of confused at this point: does does mean that it is not supported, although a driver exists and it is even available under Yast>Hardware>Printer>Add ? Or does it mean that it is supported, but the openprinting list is not up to date?

It probably means the latter. I would be surprised if your printer did not work with direct postscript (many office laser printers do). Anyway, it appears that the driver is not the real problem here.

The first task is to find out why CUPS does not let you add a usb printer. With the printer connected (and turned on), select ‘Add Printer’ via the CUPS http config, do you not see a USB printer option among the ‘Local Printer’ options? If you want to pursue what might be going wrong here, you could also connect the printer and type

dmeg |tail

The output might provide the clue to what is going wrong.

FWIW, I found a LXF thread discussing a similar issue, but it looks like the OP swapped the usb connectivity for ethernet connectivity, and frankly I’d be inclined to do the same! If you connect via a ethernet router, a normal ethernet cable will work fine.

From a pragmatic point of view, I agree completely: using ethernet would be the fastest way to get this to work. But when I started on this, I had no free port in my switch and no ethernet cable at hand, so I decided to go for USB. Then, I got frustrated by the fact that this worked out of the box on Windows but not on Linux. I really would have been happier with the reverse, and if I can do something to make it so, I will. So I decided to go on and figure it out anyway.

No, there there is no USB printer among the Local Printer options. Just SCSI, pipe, HP printer and HP fax options.

I assume you mean dmesg. I’ve included the output below. I’m not an expert, but it looks perfectly normal to me.


[98138.537455] usb 1-3.2: new high speed USB device using ehci_hcd and address 21
[98138.613073] usb 1-3.2: New USB device found, idVendor=0924, idProduct=3d68
[98138.613082] usb 1-3.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[98138.613090] usb 1-3.2: Product: Phaser 6010N
[98138.613095] usb 1-3.2: Manufacturer: Xerox
[98138.613100] usb 1-3.2: SerialNumber: YXR101090
[98138.615039] usblp0: USB Bidirectional printer dev 21 if 0 alt 0 proto 2 vid 0x0924 pid 0x3D68

I assume you mean dmesg. I’ve included the output below. I’m not an expert, but it looks perfectly normal to me.

Yes, sorry about that typo :slight_smile: Output looks good to me too.

You mentioned the ‘usblp’ driver in your first post, but of course for CUPS to correctly detect a usb-connected printer (via libusb), it must not be present. Again with the printer plugged in, make sure it isn’t present (unload it if necessary), then see if CUPS correctly detects the printer. Sorry in advance if you’ve already tried this.

There is a good ArchWiki page concerning CUPS. In particular, read the section concerning ‘USB printers under CUPS 1.4.x’.

It mentions that sometimes, the UDEV rules (designed to detect the attached usb-connected printer), do not trigger correctly, so that a custom rule is necessary. If you think that may be the problem, then we can proceed along the lines of the advice given there. We need to determine the printers device file and permissions. For example if ‘lsusb’ returns

Bus 001 Device 016: ID 0924:3d68 Xerox 

then do

ls -l /dev/bus/usb/001/016

It should have root:lp ownership. If not, we may need to create a custom rule for your printer.

Further to my exploration here, I note that usb printers are detected via the UDEV rule /lib/udev/rules.d/70-printers.rules

# Low-level USB device add trigger
ACTION=="add", SUBSYSTEM=="usb", ATTR{bInterfaceClass}=="07", ATTR{bInterfaceSubClass}=="01", RUN+="udev-configure-printer add %p"
# usblp device add trigger (needed when usblp is already loaded)
ACTION=="add", KERNEL=="lp*", RUN+="udev-configure-printer add %p"

# Low-level USB device remove trigger
ACTION=="remove", SUBSYSTEM=="usb", ENV{ID_USB_INTERFACES}=="*:0701*:*", RUN+="udev-configure-printer remove %p"

This is all part of the udev-configure-printer package, along with the ‘udev-configure-printer’ utility. I’m wondering now if your Xerox printer fails to get detected dynamically because the 0701 class is not announced from this printer. Anyway, it should be possible to include a manually created rule in /etc/udev/rules.d/ to take care of this if need be. (Then CUPS should be able to find it).

Oh … from reading some other post (I don’t remember where exactly), I got the impression that the usblp driver was required. Wrong impression.

OK, I removed it, reconnected the printer and tried http://localhost:631/admin > Add Printer again. Still no luck: no usb printer is shown.

OK; I have to get to work now, but I will read it asap, probably later today.

The ownership is correct:


> ls -l /dev/bus/usb/001/028
crw-rw-r-- 1 root lp 189, 27 Jun 23 08:43 /dev/bus/usb/001/028

This is proving to be a challenge. It is possible to hand-configure /etc/cups/printers.conf (where printer configuration is stored), and that would be the easy part, but first we need to determine the device URI. It will be something like

usb://Xerox/Phaser%206010

With your printer turned on, what does this command return?

/usr/lib/cups/backend/usb
  • I wonder if your laser printer needs to be warmed up and online first, before detection is possible? (Just a guess here).

If you don’t get anything reported here, then we can’t go any further, and that may be where the problem lies. If a useful device URI is returned, then we can proceed manually.

> /usr/lib/cups/backend/usb
direct usb://Xerox/Phaser%206010N "Xerox Phaser 6010N" "Xerox Phaser 6010N" "MFG:Xerox;CMD:HBPL;MDL:Phaser 6010N;DES:Xerox Phaser 6010 Color Laser Printer, Letter/A4 Size;CLS:PRINTER;STS:AAARBAD/AP8AAAAAAAQAAWQDZANkA2QDAAAAAAADUAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAQ
DA==;" ""

I’ve tried again after the printer has been on for some time, and after making sure it is not in stand-by. No change, but it was worth a try.

Inspired by the ArchWiki page you (=deano_ferrari) mentioned earlier, I tried the following:

# tail -n 3 /var/log/cups/error_log
I [23/Jun/2011:18:00:54 +0200] Started "/usr/lib/cups/daemon/cups-deviced" (pid=2695)
E [23/Jun/2011:18:00:54 +0200] [cups-deviced] Bad line from "usb": direct usb://Xerox/Phaser%206010N "Xerox Phaser 6010N" "Xerox Phaser 6010N" "MFG:Xerox;CMD:HBPL;MDL:Phaser 6010N;DES:Xerox Phaser 6010 Color Laser Printer, Letter/A4 Size;CLS:PRINTER;STS:AAAWAQD/AP8AAAAAAAQAAWQDZANkA2QDAAAAAAADUAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAQ
E [23/Jun/2011:18:00:54 +0200] [cups-deviced] Bad line from "usb": DA==;" ""

A similar set of lines is appended to the log every time I connect the printer.

That’s clearly an error, but I don’t know what it means. I’ll do some further research on this error, but this might take some time. If you happen to know what it means, your input is very welcome.

deano_ferrari: it would be nice of course to get this to work with some manual configuration, but I would prefer to find the root cause of the problem (such as a problem with the default udev config files or other), even if that takes more effort, so that things will work out of the box for the next person trying to use this printer through usb. I am too ambitious?

> /usr/lib/cups/backend/usb
direct usb://Xerox/Phaser%206010N "Xerox Phaser 6010N" "Xerox Phaser 6010N" "MFG:Xerox;CMD:HBPL;MDL:Phaser 6010N;DES:Xerox Phaser 6010 Color Laser Printer, Letter/A4 Size;CLS:PRINTER;STS:AAARBAD/AP8AAAAAAAQAAWQDZANkA2QDAAAAAAADUAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAQ
DA==;" ""

Well this is a good sign. At least your printer URI is reported ok. However, CUPS doesn’t like parsing the ‘;’ reported in the string. That’s what the error is. It doesn’t appear to be an actual communication error, which would be a show-stopper. Fortunately, we only need the first part of it, so we should be able to skip past this issue I’m hoping. :slight_smile:

Try adding this to /etc/cups/printers.conf (you’ll need to be root of course). You could use a CLI editor like nano (or vi if you prefer).

<Printer Xerox>
Info Xerox
MakeModel Xerox Phaser 6100 Foomatic/Postscript (recommended)
DeviceURI usb://Xerox/Phaser%206010N
State Idle
StateTime 1301212190
Type 8400916
Filter application/vnd.cups-raw 0 -
Filter application/vnd.cups-postscript 0 foomatic-rip
Filter application/vnd.cups-command 0 commandtops
Accepting Yes
Shared No
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy stop-printer
</Printer>

The ‘MakeModel’ entry points to the driver I chose when ‘hacking’ this up. We’ll make the necessary changes later. Save when done. Now restart CUPS with

rccups restart

Then fire up your browser and head to

http://localhost:631/printers/

Your ‘Xerox’ printer should be in the list. Select it, then ‘Administration’>>‘Modify Printer’. The print queue URI (Current Connection) should be present. Select ‘Continue’, ‘Continue’, until you get to the driver selection. The make is Xerox. Scroll down until you find your preferred model. Select it, then 'Modify Printer.

Now try a test print: Under ‘Maintenance’>>‘Print Test Page’

Crossed fingers…

Good news: it works!!! Thanks a lot for your help.

I’m still wondering: is this an error in the printer, or in cups? Is this something I should mention to the cups developers, so that they can fix it, so that no manual configuration is required in the future?

Good news: it works!!! Thanks a lot for your help.

Good work! We got there :slight_smile:

I’m still wondering: is this an error in the printer, or in cups? Is this something I should mention to the cups developers, so that they can fix it, so that no manual configuration is required in the future?

I was waiting for a successful outcome from all of this first, but now we’ve essentially identified that its an error with CUPS. You should submit a bug report on this.

I want to share a bug report with you titled ‘CUPS cannot detect USB printer Brother MFC 8420’. Your printer is not autodetected by CUPS either. As Johannes Meixner (CUPS developer) mentioned in the bug report

The YaST printer module does not implement any printer
autodetection on its own. It only shows those printer
connections which were already autodetected by CUPS
(i.e. what the CUPS command line tool “lpinfo -l -v”
shows when you run it as root, see
SDB:CUPS in a Nutshell - openSUSE
When CUPS cannot detect a local printer connection,
it cannot send data to it so that it cannot print.
Therefore it would not make sense when the YaST printer
module would somehow show local printer connections
which are not autodetected by CUPS.

In your case the usb backend ‘/usr/lib/cups/backend/usb’ does detect and report your printer ok as we demonstrated.

Edit: Reading the bug report further, I see that Lewis Wolfgang reported a similar issue as you had with his USB-connected Xerox Phaser 6280. Read Comment #15. He used the same workaround. So you probably should add to this bug report (679488).

I’ve submitted a message to the cups.bugs forum at CUPS. See Xerox Phaser 6010 usb id string not recognized by cups - cups.bugs - Forums - CUPS. I hope that’s OK for you.

The bug 679488 seems to be closed (“resolved”). Also, there are several different issues discussed in this bug report, and I am not convinced that our issue has been addressed. On the other hand, the issue with the Xerox Phaser 6280 seems to be identical to our issue. Anyway, the cups.bugs forum seemed to me the right place to submit this.