Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 4 Jun 2011 16:19:00 -0600 (MDT)
From:      Warren Block <wblock@wonkity.com>
To:        Scott Gasch <scott.gasch@gmail.com>
Cc:        questions@freebsd.org
Subject:   Re: Usb printers take the same port deterministically?
Message-ID:  <alpine.BSF.2.00.1106041610280.34154@wonkity.com>
In-Reply-To: <BANLkTinNzPUtfMa5xbxn-z=sjm6QRBvWNw@mail.gmail.com>
References:  <BANLkTinNzPUtfMa5xbxn-z=sjm6QRBvWNw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 4 Jun 2011, Scott Gasch wrote:

> Hi,
>
> I have two usb printers on my freebsd machine and I'm using cups.  One of
> the things I've done is publish a raw (no driver) printer for each of them
> and use that to share them with other machines in the house that have
> drivers.
>
> My problem is that every once in a while, when I boot up, the order of the
> printers on the usb ports seems to change.  For example, right now I've got:
>
> Jun  4 11:24:34 foo kernel: ulpt0: <Brother HL-2140 series, class 0/0, rev
> 2.00/1.00, addr 2> on uhub1
> Jun  4 11:24:34 foo kernel: ulpt0: using bi-directional mode
> Jun  4 11:28:13 foo kernel: ulpt1: <EPSON USB2.0 Printer (Hi-speed), class
> 0/0, rev 2.00/1.00, addr 2> on uhub7
>
>
> But when I lost power the other night the machine came up with them reversed
> -- the brother on ulpt1 and the epson on ulpt0.
>
> As far as I can tell, cups printers.conf ties to a particular port.  So, you
> can probably see where this is going... when they bind in the wrong order
> and someone prints I get a ton of crap printed out and waste a ton of paper.
> How can I make it so that a particular printer binds to a particular usb
> port deterministically?

devd.conf.  But I don't think there's any control over ulpt.  Instead, 
maybe create links so /dev/ulpt-hl2140 and /dev/ulpt-epson12 are linked 
to the right devices, and use those where static devices are needed. 
Untested...

attach 20 {
         device-name "ulpt[0-9]";
         match "vendor" "0x1234"; # Brother
         match "product" "0x4321"; # HL-2140
         action "ln -s /dev/$device-name /dev/ulpt-hl2140";
};

detach 20 {
         device-name "ulpt[0-9]";
         match "vendor" "0x1234"; # Brother
         match "product" "0x4321"; # HL-2140
         action "rm /dev/ulpt-hl2140";
};



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.BSF.2.00.1106041610280.34154>