我正在尝试在 Raspberry Pi Zero W 和设备上使用小工具模式g_printer
来模拟打印机,以便我可以捕获数据、处理数据并通过 wi-fi 将其发送到某些 API。我已按照以下说明设置了该板https://gist.github.com/gbaman/50b6cca61dd1c3f88f41。使用该g_ether
设备,该板将在我的 Macbook 上显示为网络设备。但是,如果我将 编辑/etc/modules
为包含g_printer
而不是g_ether
(仅一个,然后重新启动),该板不会显示为 Macbook 可用的打印机。
modinfo 返回:
pi@raspberrypi:~ $ modinfo g_printer
filename: /lib/modules/4.9.65+/kernel/drivers/usb/gadget/legacy/g_printer.ko
license: GPL
author: Craig Nadler
description: Printer Gadget
srcversion: 2F1D50E570B8D48FA4C2DD9
depends: libcomposite,udc-core
intree: Y
vermagic: 4.9.65+ mod_unload modversions ARMv6 p2v8
parm: idVendor:USB Vendor ID (ushort)
parm: idProduct:USB Product ID (ushort)
parm: bcdDevice:USB Device version (BCD) (ushort)
parm: iSerialNumber:SerialNumber string (charp)
parm: iManufacturer:USB Manufacturer string (charp)
parm: iProduct:USB Product string (charp)
parm: iSerialNum:1 (charp)
parm: iPNPstring:MFG:linux;MDL:g_printer;CLS:PRINTER;SN:1; (charp)
parm: qlen:uint
所以看起来已经加载了。开发板还需要什么才能显示为打印机?
答案1
可以使用与模块相同的方式将模块g_printer
添加到其中。cmdline.txt
g_ether
编辑 cmdline.txt 文件并将其直接添加到后面rootwait
modules-load=dwc2,g_printer
编辑 config.txt 文件并将其直接添加到文件的最后一行之后:
dtoverlay=dwc2
当 Raspberry Pi 通过 USB 电缆插入 GNU/Linux 系统启动时,您将在系统消息中收到类似以下内容:
dmesg
[40692.579011] usb 2-1.4.3: New USB device found, idVendor=0525, idProduct=a4a8
[40692.579014] usb 2-1.4.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[40692.579016] usb 2-1.4.3: Product: Printer Gadget
[40692.579018] usb 2-1.4.3: Manufacturer: Linux 4.9.59+ with 20980000.usb
[40692.579020] usb 2-1.4.3: SerialNumber: 1
[40692.600820] usblp 2-1.4.3:1.0: usblp0: USB Bidirectional printer dev 18 if 0 alt 0 proto 2 vid 0x0525 pid 0xA4A8
[40692.600851] usbcore: registered new interface driver usblp
我没有方便测试的 MacOSx 机器,但 Raspberry Pi 应该被视为打印机设备。
查看加载了哪些模块
modinfo
不显示哪些模块正在运行。 lsmod
将显示所有加载的模块。