1IPP-USB(8) ipp-usb.8 IPP-USB(8)
2
3
4
6 ipp-usb - Daemon for IPP over USB printer support
7
9 ipp-usb daemon enables driver-less printing and scanning on USB-only
10 AirPrint-compatible printers and MFPs.
11
12 It works by connecting to the device by USB using IPP-over-USB proto‐
13 col, and exposing the device to the network, including DNS-SD (Zero‐
14 Conf) advertising.
15
16 IPP printing, eSCL scanning and web console are fully supported.
17
19 Usage:
20 ipp-usb mode [options]
21
22 Modes are:
23 standalone
24 run forever, automatically discover IPP-over-USB devices and
25 serve them all
26
27 udev like standalone, but exit when last IPP-over-USB device is dis‐
28 connected
29
30 debug logs duplicated on console, -bg option is ignored
31
32 check check configuration and exit
33
34 Options are
35 -bg run in background (ignored in debug mode)
36
38 ipp-usb searched for its configuration file in two places: 1.
39 /etc/ipp-usb/ipp-usb.conf 2. ipp-usb.conf in the directory where exe‐
40 cutable file is located
41
42 Configuration file syntax is very similar to .INI files syntax. It con‐
43 sist of named sections, and each section contains a set of named vari‐
44 ables. Comments are started from # or ; characters and continues until
45 end of line:
46
47
48
49 # This is a comment
50 [section 1]
51 variable 1 = value 1 ; and another comment
52 variable 2 = value 2
53
54
55
56 Network parameters
57 Network parameters are all in the [network] section:
58
59
60
61 [network]
62 # TCP ports for HTTP will be automatically allocated in the following range
63 http-min-port = 60000
64 http-max-port = 65535
65
66 # Enable or disable DNS-SD advertisement
67 dns-sd = enable # enable | disable
68
69 # Network interface to use. Set to `all` if you want to expose you
70 # printer to the local network. This way you can share your printer
71 # with other computers in the network, as well as with iOS and Android
72 # devices.
73 interface = loopback # all | loopback
74
75 # Enable or disable IPv6
76 ipv6 = enable # enable | disable
77
78
79
80 Logging configuration
81 Logging parameters are all in the [logging] section:
82
83
84
85 [logging]
86 # device-log - what logs are generated per device
87 # main-log - what common logs are generated
88 # console-log - what of generated logs goes to console
89 #
90 # parameter contains a comma-separated list of
91 # the following keywords:
92 # error - error messages
93 # info - informative messages
94 # debug - debug messages
95 # trace-ipp, trace-escl, trace-http - very detailed per-protocol traces
96 # all - all logs
97 # trace-all - alias to all
98 #
99 # Note, trace-* implies debug, debug implies info, info implies error
100 device-log = all
101 main-log = debug
102 console-log = debug
103
104 # Log rotation parameters:
105 # log-file-size - max log file before rotation. Use suffix M
106 # for megabytes or K for kilobytes
107 # log-backup-files - how many backup files to preserve during rotation
108 #
109 max-file-size = 256K
110 max-backup-files = 5
111
112 # Enable or disable ANSI colors on console
113 console-color = enable # enable | disable
114
115
116
117 Quirks
118 Some devices, due to their firmware bugs, require special handling,
119 called device-specific quirks. ipp-usb loads quirks from the
120 /usr/share/ipp-usb/quirks/*.conf files. These files have .INI-file syn‐
121 tax with the content that looks like this:
122
123
124
125 [HP LaserJet MFP M28-M31]
126 http-connection = keep-alive
127
128 [HP OfficeJet Pro 8730]
129 http-connection = close
130
131 [HP Inc. HP Laser MFP 135a]
132 blacklist = true
133
134 # Default configuration
135 [*]
136 http-connection = ""
137
138
139
140 For each discovered device, its model name is matched against sections
141 of the quirks files. Section name may contain glob-style wildcards: *
142 that matches any sequence of characters and ?, that matches any single
143 character. To match one of these characters (* and ?) literally, use
144 backslash as escape.
145
146 All matching sections from all quirks files are taken in consideration,
147 and applied in priority order. Priority is computed using the following
148 algorithm:
149
150 • When matching model name against section name, amount of non-wild‐
151 card matched characters is counted, and the longer match wins
152
153 • Otherwise, section loaded first wins. Files are loaded in alphabet‐
154 ical order, sections read sequentially
155
156
157
158 If some parameter exist in multiple sections, used its value from the
159 most priority section
160
161 The following parameters are defined:
162
163 blacklist = true | false
164 If true, the matching device is ignored by the ipp-usb
165
166 http-XXX = YYY
167 Set XXX header of the HTTP requests forwarded to device to YYY.
168 If YYY is empty string, XXX header is removed
169
170 usb-max-interfaces = N
171 Don´t use more that N USB interfaces, even if more is available
172
174 • /etc/ipp-usb/ipp-usb.conf: the daemon configuration file
175
176 • /var/log/ipp-usb/main.log: the main log file
177
178 • /var/log/ipp-usb/<DEVICE>.log: per-device log files
179
180 • /var/ipp-usb/dev/<DEVICE>.state: device state (HTTP port alloca‐
181 tion, DNS-SD name)
182
183 • /var/ipp-usb/lock/ipp-usb.lock: lock file, that helps to prevent
184 multiple copies of daemon to run simultaneously
185
186 • /usr/share/ipp-usb/quirks/*.conf: device-specific quirks (see
187 above)
188
189
190
192 Copyright (c) by Alexander Pevzner (pzz@apevzner.com)
193 All rights reserved.
194
195 This program is licensed under 2-Clause BSD license. See LICENSE file
196 for details.
197
199 cups(1)
200
201
202
203 February 2021 IPP-USB(8)