我想为旧款 Brother 网络打印机添加 AirPrint 支持,如果可能的话,还可以将 AirPlay 音频流传输到同一架子上的立体声音响上。我遇到了很棒的教程关于如何通过在 Arch Linux 上安装 CUPS(用于 AirPrint)和 Shairport(用于 AirPlay)来实现这一点。这让我想知道是否可以诱导更具扩展性的 FreeNAS 平台做同样的事情——我已经有一个用于备份的 FreeNAS 服务器,而不是同时运行 Pogoplug 和我的服务器,让所有东西都运行在一个设备上运行似乎更有效率。但是,我找不到任何旨在实现这一目标的教程。
有没有一种相对简单的方法可以在 FreeNAS 9 上获取 CUPS 和 Shairport(也许在“监狱”中)?
答案1
根据@Roland Smith 的建议,我在 FreeNAS 上创建了一个 portsjail。我为 portsjail 提供了一个静态 IP 地址,禁用了 VIMAGE 并设置了默认网关。然后我进入 FreeNAS 基于 Web 的 shell 并执行以下操作:
- 输入
jls
,记下监狱的号码,然后输入jexec [number] sh
。 - 一旦进入监狱类型
pkg install cups hplip py27-cups
。 接下来利用我的问题中提到的教程中的 CUPS.conf:
cd /usr/local/etc/cups mv cupsd.conf cupsd.conf.org wget http://dl.dropbox.com/u/42238/pogoplug/cupsd.conf
按照关于 CUPS 的 FreeBSD 教程,除有关 SMB 共享的部分外,完成 CUPS 的设置。通过启动 CUPS 完成:
/etc/rc.d/devfs restart /usr/local/etc/rc.d/cupsd restart
然后,登录
http://[hostname]:631
并设置打印机(不幸的是,CUPS 自动检测网络设备在我的 BSD jail 中似乎无法工作,因此我不得不使用 HP JetDirect 选项手动设置 Brother MFC-7820N。我打印了一张测试页来确认我的打印机正常工作。我在设置过程中将打印机设置为共享,并在主 CUPS 管理网页上启用共享。为了提供对 iOS 6 及更高版本的支持,请输入以下内容,略有变化对于被监禁的 shell 中最常见的修复:
echo "image/urf urf string(0,UNIRAST<00>)" > /usr/share/cups/mime/airprint.types echo "image/urf application/vnd.cups-postscript 66 pdftops" > /usr/share/cups/mime/airprint.convs
现在,使用方便的 AirPrint 生成器创建 Avahi 服务广告:
cd / wget -O airprint-generate.py --no-check-certificate https://raw.github.com/tjfontaine/airprint-generate/master/airprint-generate.py python AirPrint-generate.py
接下来,
exit
jail 返回到主服务器。然后,我将 AirPrint 服务复制到服务器自己的 avahi 系统中(因为在 jail 中运行 Avahi似乎不太可靠)。但是,由于 /etc/ 文件夹每次 FreeNAS 启动时重新创建,而不是直接复制,我们需要在 FreeNAS 上创建一个 Pre-Init 脚本,以便在启动时复制它。为此,请再次登录 FreeNAS 管理界面,单击系统类别,然后单击“添加初始化/关闭脚本”,将类型设置为“Pre Init”,然后输入以下命令:cp [PathToYourJail]/usr/local/etc/avahi/services/AirPrint-*.service /etc/local/avahi/services
单击“确定”,重新启动,您会发现您的 AirPrint 设备现在正在由 FreeNAS 广播。
从那里开始您就可以出发了!
我已将剩余的两个超级用户问题链接到CUPS 自动发现和Avahi 正在关闭在监禁环境中。如果有人对如何解决这些问题有建议,我将不胜感激,但这些建议并不能阻止上述操作的运行,它们只是使其变得不必要地不优雅。
我还没有尝试过是否有可能让 FreeNAS 支持 AirPlay 音频;但我可能还是会在某个时候尝试一下。
答案2
答案3
关于 pkg 安装错误“没有与‘py27-cups’匹配的软件包。新软件包名为 py27-pycups。应该可以安装。
答案4
Timothy R. Butler 的回答很棒,但在 2021 年,很多事情都发生了变化。我认为现在开始工作要简单得多。以下是我对 TrueNAS 12.0-U1.1 所做的操作(我为 jail 选择了 12.2-RELEASE):
# setup a jail which gets its own IP - I did IPv4 only
pkg install avahi cups python3 py37-pycups ncurses vim
# drivers. you will have to play with ones to find one that works for you. you can try gutenprint:
pkg install gutenprint
# or you can try hplip:
pkg install hplip
# or you can try foomatic - grab a PPD from openprinting.org. this was the only thing
# that worked reliably for me and enabled all supported resolutions without
# advertising it as a duplex color printer, because it uses the ghostscript pxlmono
# driver for my LaserJet 2100... maybe hplip would be great if it actually knew what
# my printer supported properly
# enable services
echo "avahi_daemon_enable=YES" >> /etc/rc.conf
echo "cupsd_enable=YES" >> /etc/rc.conf
echo "dbus_enable=YES" >> /etc/rc.conf
# create an admin account, invite to group "wheel", fill in full name and username, leave rest at defaults
adduser
# Listen on 0.0.0.0:631 instead of 127.0.0.1
# Allow All on /, /admin, /admin/conf, and /admin/log
# Require user @SYSTEM on /admin
# AuthType Default on /admin
vim /usr/local/etc/cups/cupsd.conf
# stop making avahi advertise SSH/SFTP
rm /usr/local/etc/avahi/services/sftp-ssh.service /usr/local/etc/avahi/services/ssh.service
# start services
/usr/local/etc/rc.d/dbus restart
/usr/local/etc/rc.d/avahi-daemon restart
/usr/local/etc/rc.d/cupsd restart
# visit http://jail:631 and setup printer, share it, configure, set as server default, print test page to check proper driver
# with latest CUPS, you do NOT need to add any mime conversions! but because apple,
# you have to publish the right stuff to ZeroConf. this script does this:
fetch -o /usr/local/bin/airprint-generate.py https://raw.githubusercontent.com/tjfontaine/airprint-generate/master/airprint-generate.py
chmod +x /usr/local/bin/airprint-generate.py
cd /usr/local/etc/avahi/services
# You may want to edit the script to add feature flags, see https://wiki.debian.org/CUPSAirPrint for more details.
# You may also want to add application/vnd.cups-pdf to the DOCUMENT_TYPES set to True
/usr/local/bin/airprint-generate.py
Avahi 将立即接收服务并开始发布。如果您想更改内容的呈现方式或所宣布的功能等,请编辑脚本输出的文件。Debian 的文档说,您必须在 URF 记录中包含除“无”之外的内容,但这在 iOS 12 上对我有用。如果您愿意,可以从 Debian wiki 示例中填写 URF 记录。