I'm trying to print to a USB printer on a Raspberry Pi 3 running Bullseye. Sometimes the script works fine, but usually I get "Errno 16, resource busy". dmesg shows:
I can't seem to fix or trigger the error reliably. What could I be missing?
I've added the user to lp group, tried different ports, claiming and releasing the interface, rebooted, and updated.usb 1-1.3: usbfs: interface 0 claimed by usblp while 'python3' sets config #1
Code:
import usb.coreimport usb.utildef find_printer(vid, pid): dev = usb.core.find(idVendor=vid, idProduct=pid) dev.reset() if dev is None: raise ValueError('Printer not found') return devdef send_to_printer(dev, data): try: interface = 0 endpoint = dev[0][(0,0)][0] dev.set_configuration() usb.util.claim_interface(dev, interface) dev.write(endpoint, data.encode(), 1000) usb.util.release_interface(dev, interface) except usb.core.USBError as e: print("USB error:", e)def main(): # Vendor ID (VID) and Product ID (PID) of the USB printer vid = 0x04b8 pid = 0x0E15 try: printer = find_printer(vid, pid) send_to_printer(printer, "Hello World") print("Printed successfully.") except ValueError as e: print(e)if __name__ == "__main__": main()
Statistics: Posted by Wimbley — Wed Feb 21, 2024 3:20 am