It seems that with a 70-printers.rules as follows at least a correct
service name is generated

----------
# Low-level USB device add trigger
ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", 
ENV{ID_USB_INTERFACES}=="*:0701??:*", TAG+="udev-configure-printer", 
TAG+="systemd", PROGRAM="/bin/systemd-escape 
--template=udev-configure-printer@.service %p", ENV{SYSTEMD_WANTS}+="'%c'"
# Low-level USB device remove trigger
ACTION=="remove", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", 
ENV{ID_USB_INTERFACES}=="*:0701*:*", RUN+="udev-configure-printer remove %p"
----------

Note that in the first rule the systemd-escape command has NO "-p"
option and that the %c for ENV{SYSTEMD_WANTS} has extra single quotes.
Compared to the original file only these single quotes got added.

After restarting UDEV with

sudo udevadm control --reload

and re-plugging the printer in most cases the service does not get
started.

systemctl status 'udev-configure-printer@-devices-
pci0000:00-0000:00:14.0-usb2-2\x2d2.service' > status.txt

gives something like

----------
● udev-configure-printer@devices-pci0000:00-0000:00:14.0-usb2-2\x2d2.service - 
Automatic USB/Bluetooth printer setup 
(devices-pci0000:00-0000:00:14.0-usb2-2\x2d2)
   Loaded: loaded (/lib/systemd/system/udev-configure-printer@.service; static; 
vendor preset: enabled)
   Active: inactive (dead)
----------

In such a case one can start the service manually with

sudo systemctl start 'udev-configure-printer@-devices-
pci0000:00-0000:00:14.0-usb2-2\x2d2.service'

and this starts correctly udev-configure printer which sets up the
printer (and starts ippusbxd if needed).

In some very few cases the service actually gets correctly started (and
the printer set up) when one plugs the printer, but this happens rarely
(can there be some kind of race condition?).

So this only rarely happening automatic start of the printer setup
service is now the problem. The escaping seems to be fixed by the extra
single quotes.

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to systemd in Ubuntu.
https://bugs.launchpad.net/bugs/1721839

Title:
  Services asked for by UDEV do not get triggered

Status in systemd package in Ubuntu:
  Confirmed

Bug description:
  The packages system-config-printer-udev and ippusbxd are installed,
  having the following UDEV rule files:

  /lib/udev/rules.d/70-printers.rules

  ----------
  # Low-level USB device add trigger
  ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", 
ENV{ID_USB_INTERFACES}=="*:0701??:*", TAG+="udev-configure-printer", 
TAG+="systemd", PROGRAM="/bin/systemd-escape 
--template=udev-configure-printer@.service %p", ENV{SYSTEMD_WANTS}+="%c"
  # Low-level USB device remove trigger
  ACTION=="remove", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", 
ENV{ID_USB_INTERFACES}=="*:0701*:*", RUN+="udev-configure-printer remove %p"
  ----------

  /lib/udev/rules.d/55-ippusbxd.rules

  ----------
  # ippusbxd udev rules file

  ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device" 
ENV{ID_USB_INTERFACES}=="*:070104:*", OWNER="root", GROUP="lp", MODE="0664", 
PROGRAM="/bin/systemd-escape --template=ippusbxd@.service 
$env{BUSNUM}:$env{DEVNUM}", ENV{SYSTEMD_WANTS}+="%c"
  ----------

  If I turn on an appropriate printer (USB, supporting IPP-over-USB,
  here the HP DeskJet 2540) I get in the output of "udevadm monitor
  --environment"

  ----------
  UDEV  [17527.514150] add      /devices/pci0000:00/0000:00:14.0/usb2/2-2 (usb)
  ACTION=add
  BUSNUM=002
  DEVNAME=/dev/bus/usb/002/033
  DEVNUM=033
  DEVPATH=/devices/pci0000:00/0000:00:14.0/usb2/2-2
  DEVTYPE=usb_device
  DRIVER=usb
  ID_BUS=usb
  ID_MODEL=Deskjet_2540_series
  ID_MODEL_ENC=Deskjet\x202540\x20series
  ID_MODEL_ID=c211
  ID_REVISION=0100
  ID_SERIAL=HP_Deskjet_2540_series_BR54BFB02C05XK
  ID_SERIAL_SHORT=BR54BFB02C05XK
  ID_USB_INTERFACES=:ffcc00:070104:070102:ff0401:
  ID_VENDOR=HP
  ID_VENDOR_ENC=HP
  ID_VENDOR_FROM_DATABASE=Hewlett-Packard
  ID_VENDOR_ID=03f0
  MAJOR=189
  MINOR=160
  PRODUCT=3f0/c211/100
  SEQNUM=9891
  SUBSYSTEM=usb
  SYSTEMD_WANTS=ippusbxd@002:033.service 
udev-configure-printer@-devices-pci0000:00-0000:00:14.0-usb2-2\x2d2.service 
printer.target
  TAGS=:udev-configure-printer:systemd:
  TYPE=0/0/0
  USEC_INITIALIZED=17527513940

  UDEV  [17527.517724] add      
/devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.0 (usb)
  .MM_USBIFNUM=00
  ACTION=add
  DEVPATH=/devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.0
  DEVTYPE=usb_interface
  ID_VENDOR_FROM_DATABASE=Hewlett-Packard
  INTERFACE=255/204/0
  MODALIAS=usb:v03F0pC211d0100dc00dsc00dp00icFFiscCCip00in00
  PRODUCT=3f0/c211/100
  SEQNUM=9892
  SUBSYSTEM=usb
  TYPE=0/0/0
  USEC_INITIALIZED=17527517478

  UDEV  [17527.522565] add      
/devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.2 (usb)
  .MM_USBIFNUM=02
  ACTION=add
  DEVPATH=/devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.2
  DEVTYPE=usb_interface
  ID_VENDOR_FROM_DATABASE=Hewlett-Packard
  INTERFACE=255/4/1
  MODALIAS=usb:v03F0pC211d0100dc00dsc00dp00icFFisc04ip01in02
  PRODUCT=3f0/c211/100
  SEQNUM=9895
  SUBSYSTEM=usb
  TYPE=0/0/0
  USEC_INITIALIZED=17527522332

  UDEV  [17527.523761] add      
/devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.1 (usb)
  .MM_USBIFNUM=01
  ACTION=add
  DEVPATH=/devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.1
  DEVTYPE=usb_interface
  DRIVER=usblp
  ID_VENDOR_FROM_DATABASE=Hewlett-Packard
  INTERFACE=7/1/2
  MODALIAS=usb:v03F0pC211d0100dc00dsc00dp00ic07isc01ip02in01
  PRODUCT=3f0/c211/100
  SEQNUM=9893
  SUBSYSTEM=usb
  TYPE=0/0/0
  USEC_INITIALIZED=17527523500

  UDEV  [17527.527275] add      
/devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.1/usbmisc/lp1 (usbmisc)
  .MM_USBIFNUM=01
  ACTION=add
  DEVNAME=/dev/usb/lp1
  DEVPATH=/devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.1/usbmisc/lp1
  MAJOR=180
  MINOR=1
  SEQNUM=9894
  SUBSYSTEM=usbmisc
  USEC_INITIALIZED=17527527175
  ----------

  Here one can see that the UDEV rules files are correct, leading to the
  correct systemd services being requested

  SYSTEMD_WANTS=ippusbxd@002:033.service udev-configure-printer
  @-devices-pci0000:00-0000:00:14.0-usb2-2\x2d2.service printer.target

  but neither the service ippusbxd@002:033.service nor the service udev-
  configure-printer@-devices-pci0000:00-0000:00:14.0-usb2-2\x2d2.service
  get started (note that I have put the .service file for ippusbxd in
  place by "sudo cp /usr/share/doc/ippusbxd/examples/ippusbxd@.service
  /lib/systemd/system/").

  I can start each of these services manually though:

  sudo systemctl start 'udev-configure-printer@-devices-
  pci0000:00-0000:00:14.0-usb2-2\x2d2.service'

  sudo systemctl start ippusbxd@002:033.service

  In each case ippusbxd gets started for this printer and a print queue
  auto-created.

  What I expect is that the services get automatically started (and that
  worked in 17.04) so that after plugging in an USB printer I can
  immediately print as the print queue gets created automatically.

  The "udev-configure-printer..." service works for all USB printers,
  not only IPP-over-USB (it automatically recognizes the printer typ and
  does an appropriate setup).

  This is a regression as we had always automatic setup of USB printers.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1721839/+subscriptions

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to