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:
- Make sure you have the foomatic, gutenprint-cups, and hpijs packages installed
- Connect and switch on your printer(s) — yes, even network ones
-
git clone http://git.fedoraproject.org/git/system-config-printer.git cd system-config-printer su -c ./check-device-ids.py
- 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.
Comments
23 responses to “Printer Device IDs wanted”
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…
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]$
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)
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:
and give it another go? Failing that, does
give any output?
Gianluca: yes, to some degree the same information is also useful from any distribution. Report it here if you like, or on the . The main thing is to know (1) what the make and model of the printer is, and (2) what it reports its Device ID as.
As far as reporting bugs in Bugzilla goes, choosing the component is fairly straight-forward. If it weren’t for a PackageKit bug the check-device-ids.py script would tell you which package the driver is from. As it is though, it will tell you the filename corresponding to that driver, so you can use
(or whatever) to find out the Source RPM name (i.e. Bugzilla component) to file the bug against. The only “gotcha” with it is that if the driver is foomatic, the component to file a bug against is foomatic-db.
But you are right, there are only a few that supply IDs at all, and they are:
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.
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.
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
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 =
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?
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.
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.)
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.
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.
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
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….
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
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.
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)
Martin: thanks… “git pull” and try again.