Printer Device IDs wanted

The new feature in Fedora 13 for installing printer drivers automatically makes it all the more important to have correct IEEE 1284 Device IDs for printers.  Unfortunately many drivers shipped in Fedora do not declare Device IDs for all the printers they support, and some of the ones we do have are wrong.

You can help put this right, whether you are running Fedora 13 Alpha, or Fedora 11/12.

Information on collecting Device IDs is given on the Printing Test Day page but here is a good way of doing it:

  1. Make sure you have the foomatic, gutenprint-cups, and hpijs packages installed
  2. Connect and switch on your printer(s) — yes, even network ones
  3. git clone http://git.fedoraproject.org/git/system-config-printer.git
    cd system-config-printer
    su -c ./check-device-ids.py
  4. If you see “MISSING” in the output, file a bug in Bugzilla against the relevant driver

Incidentally, some statistics on Device IDs in Fedora 13:

  • We have at least 10,100 drivers
  • Of those, over 6,200 have Device IDs associated with them
  • That means we’re missing Device IDs for nearly 40% of all our printer drivers
$ lpinfo -l -m | grep 'device-id = ' | wc -l
10135
$ lpinfo -l -m | grep 'device-id = $' | wc -l
3922

UPDATED: Changed instructions to run check-device-ids.py using su.

23 Responses to “Printer Device IDs wanted”

  1. gnulinux.mu says:

    Printer Device IDs wanted…

    The new feature in Fedora 13 for installing printer drivers automatically makes it all the more important to have correct IEEE 1284 Device IDs for printers.  Unfortunately many drivers shipped in Fedora do not declare Device IDs for all the printers th…

  2. axet says:

    i got no printer connected (which is not correct):

    [axet@mini system-config-printer]$ sudo ./check-device-ids.py
    Examining connected devices
    No attached devices.
    [axet@mini system-config-printer]$

  3. Could the same info be useful even if it comes from another distro?

    Additionally, can you name which bugzilla components are related to the drivers (I assume there are not many of them)

  4. tim says:

    axet: hmm, that’s weird. What do you have plugged in, and how? I’ve just checked in a change that allows the ‘hp’ backend to report IDs as well. Could you:

    git pull

    and give it another go? Failing that, does

    su -c 'lpinfo -l -v'

    give any output?

  5. mbooth says:

    I tried this from an F11 box, but got “No attached devices” despite having successfully printed a document to a network connected Konica Minolta Bizhub 361 earlier in the day.

  6. John Reiser says:

    The “git clone” step spews many thousands of lines of garbage. Please go a “git gc” to repack the git database, so that the “git clone” looks much nicer to ordinary users.

    Also, check-device-ids.py asked me for the root password; I use only HP JetDirect (port 9100) printers. Asking for the root password is a poor user interface.

  7. mbooth says:

    Same on my F13 box:

    [mbooth@su6951 ~]$ python /usr/share/system-config-printer/check-device-ids.py
    Examining connected devices
    Password for root on localhost?
    Fetching driver list
    [mbooth@su6951 ~]$ rpm -q system-config-printer
    system-config-printer-1.2.0-12.fc13.i686

    My configured printers:

    http://fedorapeople.org/~mbooth/print.png

  8. Clifford says:

    I also get “no connected devices” although I have a Canon MX850 on a network connection.

    Results from su -c ‘lpinfo -l -v’:

    Device: uri = ipp
    class = network
    info = Internet Printing Protocol (ipp)
    make-and-model = Unknown
    device-id =
    location =
    Device: uri = https
    class = network
    info = Internet Printing Protocol (https)
    make-and-model = Unknown
    device-id =
    location =
    Device: uri = http
    class = network
    info = Internet Printing Protocol (http)
    make-and-model = Unknown
    device-id =
    location =
    Device: uri = scsi
    class = direct
    info = SCSI Printer
    make-and-model = Unknown
    device-id =
    location =
    Device: uri = lpd
    class = network
    info = LPD/LPR Host or Printer
    make-and-model = Unknown
    device-id =
    location =
    Device: uri = socket
    class = network
    info = AppSocket/HP JetDirect
    make-and-model = Unknown
    device-id =
    location =
    Device: uri = hp
    class = direct
    info = HP Printer (HPLIP)
    make-and-model = Unknown
    device-id =
    location =
    Device: uri = smb
    class = network
    info = Windows Printer via SAMBA
    make-and-model = Unknown
    device-id =
    location =
    Device: uri = bjnp://192.168.0.2:8611
    class = network
    info = Canon MX850 series 192.168.0.2
    make-and-model = Canon MX850 series
    device-id = MFG:Canon;CMD:BJL,BJRaster3,BSCCe,NCCe,PLI;SOJ:TXT01,BJNP2;MDL:MX850 series;CLS:PRINTER;DES:Canon MX850 series;VER:1.000;STA:10;FSI:06;HRI:OTH;MSI:DAT,E3;
    location =
    Device: uri = beh
    class = network
    info = Backend Error Handler
    make-and-model = Unknown
    device-id =
    location =
    Device: uri = hpfax
    class = direct
    info = HP Fax (HPLIP)
    make-and-model = Unknown
    device-id =
    location =

  9. tim says:

    mbooth: hmm, can you ‘git pull’ and try again? What does “su -c ‘lpinfo -l -v'” say for you? Are you running the script from the actual server the printer is connected to?

    John Reiser: the ‘git gc’ needs to be run at the hosting server which I don’t have a login to; I think that’s done on a cron job.

    Clifford: thanks. Looks like Fedora doesn’t have a driver for that one, so there’s nowhere to put it. Are you using a 3rd party driver, or perhaps it’s a PostScript printer?

  10. tim says:

    John Reiser: oh, about asking for the root password. Yes, this happens via libcups, the same as if running ‘lpadmin -U root …’. Run “su -c ./check-device-ids.py” instead to avoid that — I’ve updated the instructions above now. CUPS won’t give out device-level information without administrative authentication.

  11. Clifford says:

    I’m using a print driver for a Canon PIXMA iP5300 cups + gutenprint v5.2.5. As far as I am aware, there is no drivers for the Canon MX850 other than a proprietary offering. (I’d rather use opensource software.)

  12. fredex says:

    on my F12 netbook, installed git , and here’s what I got:

    [fredex@eeepcbox system-config-printer]$ su -c ./check-device-ids.py
    Password:
    Examining connected devices
    Fetching driver list
    [fredex@eeepcbox system-config-printer]$

    i.e., no (useful) output at all. I forced a test page to my local printer and ran it again and still got nothing.

    printer is a Brother HL2070N using “Brother HL-2060 Foomatic/hl1250” driver.

    I saw the announcement in the fedora list, but I don’t think it said where/how to report results.

  13. tim says:

    fredex: that means the CUPS backend you are using for that printer does not report a Device ID, or that the ID it reports is not reliable (this is the case for the dnssd backend).

    Thanks for trying. If you do get results from using another printer, they should be reported in Bugzilla.

  14. mbooth says:

    Hi Tim,

    Now I’m back at work I can try this again. I did a git pull today (7th April) and I still get no useful output:

    [mbooth@su6951 system-config-printer]$ ./check-device-ids.py
    Examining connected devices
    Password for root on localhost?
    No Device IDs available.
    [mbooth@su6951 system-config-printer]$

    However, I get some information if I do a su -c ‘lpinfo -l -v’ and it looks like this shows all the printers on the network, but I only have the Konica-Minolta one configured up for printing on my workstation.

    Device: uri = dnssd://HP%20Color%20LaserJet%20CP2025dn%20(279963)._pdl-datastream._tcp.local/
    class = network
    info = HP Color LaserJet CP2025dn (279963)
    make-and-model = HP HP Color LaserJet CP2025dn
    device-id = MFG:HP;MDL:Color LaserJet CP2025dn
    location =
    Device: uri = dnssd://HP%20Color%20LaserJet%20CP2025dn%20(279963)._printer._tcp.local/
    class = network
    info = HP Color LaserJet CP2025dn (279963)
    make-and-model = HP HP Color LaserJet CP2025dn
    device-id = MFG:HP;MDL:Color LaserJet CP2025dn
    location =
    Device: uri = dnssd://HP%20LaserJet%20P1505n._pdl-datastream._tcp.local/
    class = network
    info = HP LaserJet P1505n
    make-and-model = Hewlett-Packard HP LaserJet P1505n
    device-id = MFG:Hewlett-Packard;MDL:HP LaserJet P1505n;
    location =
    Device: uri = dnssd://KONICA%20MINOLTA%20bizhub%20421(27%3A87%3AEA)._printer._tcp.local/
    class = network
    info = KONICA MINOLTA bizhub 421(27:87:EA)
    make-and-model = KONICA MINOLTA KONICA MINOLTA 421
    device-id = MFG:KONICA MINOLTA;MDL:501/421/361;
    location =
    Device: uri = dnssd://KONICA%20MINOLTA%20bizhub%20421(27%3A87%3AEA)._ipp._tcp.local/
    class = network
    info = KONICA MINOLTA bizhub 421(27:87:EA)
    make-and-model = KONICA MINOLTA KONICA MINOLTA 421
    device-id = MFG:KONICA MINOLTA;MDL:501/421/361;
    location =
    Device: uri = dnssd://KONICA%20MINOLTA%20bizhub%20421(27%3A87%3AEA)._pdl-datastream._tcp.local/
    class = network
    info = KONICA MINOLTA bizhub 421(27:87:EA)
    make-and-model = KONICA MINOLTA KONICA MINOLTA 421
    device-id = MFG:KONICA MINOLTA;MDL:501/421/361;
    location =
    Device: uri = socket://194.62.153.2
    class = network
    info = Canon iR 3100C EUR 43.03
    make-and-model = Canon iR 3100C EUR 43.03
    device-id =
    location =
    Device: uri = socket://194.62.153.241
    class = network
    info = HP LaserJet 4000 Series
    make-and-model = HP LaserJet 4000 Series
    device-id =
    location = SAFF_PRT6
    Device: uri = socket://194.62.153.246
    class = network
    info = HP LaserJet 4000 Series
    make-and-model = HP LaserJet 4000 Series
    device-id =
    location =
    Device: uri = socket://194.62.153.249
    class = network
    info = Canon iR6000
    make-and-model = Canon iR6000
    device-id =
    location = Admin/Typing

  15. g_remlin says:

    Would have been nice to be warned about the size of the repository (99% of which is not of any use, surely the script could be distributed some other way). Very expensive on my mobile internet allowance….

  16. Jorge says:

    Hello Tim,

    I’m running F12 and I just followed the instructions in order to the the device id but this is what I get when I run check-device-ids.py as root:

    Examining connected devices
    No Device IDs available.

    This is a Network Printer, lpstat -d:
    system default destination: Xerox_Phaser_3250

    Jorge

  17. tim says:

    mbooth: unfortunately the dnssd backend can only guess at what the Device IDs really are. The IDs it reports can be useful in trying to match up a driver for each printer, but they are generally made-up. 🙁

    g_remlin: sorry about that. In Fedora 13 the script will be installed as part of the system-config-printer package so there won’t be anything extra to download.

    Jorge: thanks for trying, looks like we’re out of luck trying to get a reliable Device ID from that device.

  18. Martin Burchell says:

    I get this error with F11

    [23:30:41 system-config-printer]$ su -c ./check-device-ids.py
    Password:

    If you have not already done so, you may get more results
    by temporarily disabling your firewall (or by allowing
    incoming UDP packets on port 161).

    Examining connected devices
    Skipping parallel:/dev/lp0, insufficient data
    Skipping serial:/dev/ttyS0?baud=115200, insufficient data
    Installing relevant drivers using system service
    Ignoring exception: org.freedesktop.DBus.Error.ServiceUnknown: The name com.redhat.PrinterDriversInstaller was not provided by any .service files
    Fetching driver list
    Traceback (most recent call last):
    File “./check-device-ids.py”, line 222, in
    cmd)
    UnicodeEncodeError: ‘latin-1’ codec can’t encode characters in position 0-2: ordinal not in range(256)

  19. tim says:

    Martin: thanks… “git pull” and try again.