= USB Printers - CUPS Printing = Plugged in Star SK1-311 roll tape printer used in Satellite enclosures dmesg response {{{ [ 7953.117705] usb 1-1.4: new full-speed USB device number 8 using xhci-hcd [ 7953.326192] usblp 1-1.4:1.0: usblp0: USB Bidirectional printer dev 8 if 0 alt 0 proto 2 vid 0x0519 pid 0x004D [ 7953.326307] usbcore: registered new interface driver usblp }}} Verified it does work to print text to /dev/usb/lp0 825gen2 has CUPS (Common Unix Printing System) lpinfo does show it {{{ card825gen2:/mnt/nfs/arm825_nand/bin$ /usr/sbin/lpinfo -v network socket network lpd network ipp network http direct usb://SANEI/SK1-311%20Presenter%20(STR-001) network dnssd://Canon%20TX-3000._ipp._tcp.local/?uuid=00000000-0000-1000-8000-001832104e5a network dnssd://Canon%20iPR%20Svr%20G250%20V2.1%20US(64%3A59%3AA5)._printer._tcp.local/ network dnssd://HP%20Designjet%20T520%2024in%20%5BD50233%5D._ipp._tcp.local/?uuid=abcd9e8e-4886-85c2-2167-b143d1c2344a network dnssd://HP%20LaserJet%20P2055dn%20%5B82FCF4%5D._pdl-datastream._tcp.local/ network dnssd://Lexmark%20C2240._ipp._tcp.local/?uuid=584bdd81-d230-49f3-a210-d39ac56492d0 }}} To just show any usb printers {{{ card825gen2:/mnt/nfs/arm825_nand/bin$ /usr/sbin/lpinfo --include-schemes usb -v direct usb://SANEI/SK1-311%20Presenter%20(STR-001) }}} Some research showed that Star printer requires a CUPS driver. 1/5/2023 The Star SK1-311 CUPS driver was compiled for the 825gen2 and will be added to the next OS image. {{{ card825gen2:/usr/libexec/cups/filter$ /usr/sbin/lpadmin -p STARSK1_311 -v usb://SANEI/SK1-311%20Presenter%20\(STR-001\) -m sk1-311_presenter.ppd lpadmin: Printer drivers are deprecated and will stop working in a future version of CUPS. }}} Found it necessary to run cupsaccept to set the printer up to accept jobs. {{{ card825gen2:/usr/libexec/cups/filter$ /usr/sbin/cupsaccept STARSK1_311 }}} {{{ card825gen2:/usr/libexec/cups/filter$ lpstat -W not-completed STARSK1_311-4 admin 115712 Wed Jan 10 16:30:21 2024 }}} {{{ card825gen2:/usr/libexec/cups/filter$ lpstat -t scheduler is running no system default destination device for STARSK1_311: usb://SANEI/SK1-311%20Presenter%20(STR-001) device for STARSK311: usb://SANEI/SK1-311%20Presenter%20(STR-001) STARSK1_311 accepting requests since Wed Jan 10 16:29:32 2024 STARSK311 accepting requests since Wed Jan 10 16:06:30 2024 printer STARSK1_311 disabled since Wed Jan 10 16:29:32 2024 - reason unknown printer STARSK311 disabled since Wed Jan 10 16:06:30 2024 - reason unknown STARSK311-1 admin 1024 Wed Jan 10 16:25:01 2024 STARSK311-2 admin 3072 Wed Jan 10 16:25:55 2024 STARSK311-3 admin 115712 Wed Jan 10 16:27:30 2024 STARSK1_311-4 admin 115712 Wed Jan 10 16:30:21 2024 card825gen2:/usr/libexec/cups/filter$ /usr/sbin/lpadmin -p STARSK1_311 -E }}} {{{ card825gen2:/usr/libexec/cups/filter$ lpstat -t scheduler is running no system default destination device for STARSK1_311: usb://SANEI/SK1-311%20Presenter%20(STR-001) device for STARSK311: usb://SANEI/SK1-311%20Presenter%20(STR-001) STARSK1_311 accepting requests since Wed Jan 10 16:34:59 2024 STARSK311 accepting requests since Wed Jan 10 16:06:30 2024 printer STARSK1_311 is idle. enabled since Wed Jan 10 16:34:59 2024 Sending data to printer. printer STARSK311 disabled since Wed Jan 10 16:06:30 2024 - reason unknown STARSK311-1 admin 1024 Wed Jan 10 16:25:01 2024 STARSK311-2 admin 3072 Wed Jan 10 16:25:55 2024 STARSK311-3 admin 115712 Wed Jan 10 16:27:30 2024 STARSK1_311-4 admin 115712 Wed Jan 10 16:30:21 2024 }}} {{{ card825gen2:/usr/libexec/cups/filter$ lp -d STARSK1_311 /home/admin/test.txt request id is STARSK1_311-5 (1 file(s)) }}} Printed successfully - "test 123" {{{ card825gen2:/usr/libexec/cups/filter$ lp -d STARSK1_311 /usr/images/icon_keyboard.bmp request id is STARSK1_311-6 (1 file(s)) }}} Printed successfully but rotated and enlarged {{{ card825gen2:/usr/libexec/cups/filter$ lp -d STARSK1_311 /usr/images/cardinal_logo.bmp request id is STARSK1_311-9 (1 file(s)) }}} cardinal_logo.bmp Printed successfully but rotated and enlarged The Star printer driver seems to only work for BMP files. Tried other graphics formats such as PNG and JPEG but only black tickets printed. There is some example code of cups printing on stackoverflow.com. This can be compiled for the 825. Some changes were needed to get it to work. {{{ #include #include #include #include #include "cairobmp.h" #define WIDTH 320 #define HEIGHT 500 int main(int argc, char** argv) { int n; char tmpFilepath[] = "/tmp/tktprtXXXXXX"; mkstemp(tmpFilepath); printf("tmpFilename [%s]\n", tmpFilepath); cairo_surface_t* surface = cairo_image_surface_create(CAIRO_FORMAT_A1, WIDTH, HEIGHT); cairo_t *context = cairo_create(surface); LoadBMPToSurface("/usr/images/bird.bmp", surface, 0, 0); // draw some text cairo_select_font_face(context, "Arial Black", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); cairo_set_font_size(context, 30); int x = 20; int y = 140; cairo_move_to(context, x, y); cairo_show_text(context, "Item 1"); // the text we got as a parameter y += 30; cairo_move_to(context, x, y); cairo_show_text(context, "Item 2"); // the text we got as a parameter y += 30; cairo_move_to(context, x, y); cairo_show_text(context, "Item 3"); // the text we got as a parameter // draw a dotted box const double pattern[] = {15.0, 10.0}; cairo_set_dash(context, pattern, 2, 0); cairo_set_line_width(context, 5); cairo_rectangle(context, 5, 105, 280, 300); cairo_stroke(context); // finish up cairo_show_page(context); cairo_destroy(context); cairo_surface_flush(surface); CairoSurfaceToBMP(surface, /*"/tmp/tkt9.bmp"*/ tmpFilepath); // n = cairo_surface_write_to_png (surface, "/tmp/tkt.png"); // printf("write_to_png result %d\n", n); cairo_surface_destroy(surface); const char* printerName = cupsGetDefault(); printf("printer [%s]\n", printerName); // cupsGetDefault is returning NULL printerName = "STARSK1_311"; n = cupsPrintFile(printerName, tmpFilepath, "cairo PS", 0, NULL); // return value is job ID printf("cupsPrintFile result %d\n", n); //unlink(tmpFilepath); return 0; } }}} The CUPS web interface may also be used for and monitoring of USB printers. Refer to [wiki:Docs/825gen2/Dev/Networking/NetworkPrintingCUPS Network Printing]