P910nd USB printing problem

Hi, let me first share prerequisite information about what have I done so far.

Device:  TP-LINK TL-MR3020 V.3.20
Printer: Canon LBP6020

USB and print over USB supports are installed properly.
They are up and running so that USB memory stick usage is available.
And printer can be seen:

/dev/usb/lp0 is listed when USB printer is on.

uci show p910nd
p910nd.@p910nd[0].mdns_ty='My Printer Manufacturer/Model'

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0*               LISTEN      1921/p9100d

[  756.442122] usb 1-1: new high-speed USB device number 3 using ehci-platform
[  756.653575] usblp 1-1:1.0: usblp0: USB Bidirectional printer dev 3 if 0 alt 0 proto 2 vid 0x04A9 pid 0x2771

In case of:
service firewall stop
Windows firewall is open

Windows printer setup is done according to:
OpenWrt p910nd PrintServer document

I also tried directional, bidirectional 
setting change after rebooting the router.

According to all information I gathered on OpenWrt forum posts and internet, 
I would like to ask help of the community. 

Thank you in advance.

Safak Kayhan

And the problem is....?

Hi, the problem is when I complete the new windows printer setup, I can't print a test page. Then I check the router to double confirm the print server functionality and I shut the printer off then on again to prevent sleep mode issue with no solution.
If the same printer wouldn't work properly on a Linksys router for years as it is now, I would check it's condition.
Safak Kayhan

Check if Archer C7 with usb HUB + old printer + flash drive? Help applies here too.
Different dll, of course.

Hi, thank you for suggestion. I can always get /dev/usb/lp0 immediately when I turn the printer on and lose when printer goes off. And the solution if fits to my case seems printer specific.

Is there a method to test the printer connectivity from command line, simply printing a few characteres from windows command line or within router (I saw such a thing years back but cant recollect details).

Safak Kayhan

Depends on the protocols supported.

You can always make a printout in windows to the specific printer, but use file: as destination port, then cat the printout file to /dev/usb/lp0 on your router.

This should be set to the router ip address ( If not it will not work unless you define in the network config.

268 is def wrong, excellent spotting, @bluewavenet.

Lol, just spotted that :wink:

Hi, I'm sorry for the mistake. Router and printer IP address is of course

On the other hand I noticed a warning message at web console under Services tab at p910nd - Printer server:

First you have to install the packages to get support for USB (kmod-usb-printer)
or parallel port (kmod-lp).

The module of course installed and no error message at dmesg nor during it's installation. Is that a permanent at LuCI web console reminder.

Thank you, regards.
Safak Kayhan

That's the behavior of windows printers too, it's no fool proof way of knowing if it does, or doesn't require the dll "driver".

I have the same, so I presume it's reminder.

Your printer is not among the Not supported printers listed here, but you should probably have a better check...

Have you the chance to configure a Linux or Android client and try to launch a print from there?

Have you tried with ZeroConf? It works for me.

The product specifications show an uncommon print language; CAPT:

According to https://wiki.archlinux.org/title/Canon_CAPT

p910nd, on the router, uses port 9100. It is possible that the Windows driver is sending the print job to 59787/59687? Will Canon's software let you over ride the port?

It looks like the printer listens to port 59787 or 59687 for at least the configuration/web administration. I do not think this will affect the usb port. It may affect notifications (paper out, etc).

I wonder if you could relay the print job using netcat (nc) or possibly set up a samba share.

Connect the printer to a USB port on the Windows computer to install its driver

Then watch this OpenWrt excellent guide -:

?have you configured the windows printer to use the ip port

you have to add the port, then ocnfigure it:


Thank you all. I read and give a try to all suggestions, if not already read/tried.
Despite no solution, there is a better picture also to share with you:

Existing situation with:

  1. A windows 7 computer
  2. A Linksys router with a USB port running on stock firmware.
    2a. Linksys USB Control Center software on Win7
  3. Canon i-Sensys 6020 lazer printer (USB)
    3a. CAPT (Canon Advanced Printing Technology) which is a proprietary
    driver and communicates over 59787 or 59687 ports.
  4. A new TP-LINK TL-MR3020 V3.20 router with USB port, powered by OpenWrt 22.03.2
    4a. p910nd for printing server communicating between 9100 and 9109 ports

Scenario 1 - Computer directly connected to printer - NO PROBLEM

Scenario 2 - Linksys router hosts computer and printer on it's LAN - NO PROBLEM

Scenario 3 - TP-LINK router hosts computer and printer on it's LAN - PROBLEM

As rightfully pointed above:

"p910nd, on the router, uses port 9100. It is possible that the Windows driver 
is sending the print job to 59787/59687? Will Canon's software let you override 
the port?"

The answer is unfortunately no. That's why there is two softwares installed on
Windows to facilitate these communication between devices, I assume.

Same goes for p910nd settings which are limited between 9100 and 9109 TCP ports.

So, as WildCarrot suggested saying:

"Have you tried with ZeroConf? It works for me."

Zero configuration networking in OpenWrt seems also like the best shot to me too.

"All zeroconf enabled devices such as printers, scanners, wireless
speakers, chromecast devices etc. automatically answer to zeroconf enabled
clients via IPv4 or IPv6 multicast messages without a central registry."

Would you also think that zeroconf using umdns (OpenWrt own package) worth to give a try.

Thank you. Regards.
Safak Kayhan

Linksys/Netgear have software that enable access; Access Control List (ACL)

I have not run Windows since XP, but my suspicion is that it enables access to ports 59787/59687 on the router. I also suspect that OpenWrt has most ports closed by default.

You might want to research/experiment w/ this package:

Do as in the documentation there has never been any problem

There is no software to use with windows other than installing the printer driver

For the history of the port it is enough that you use the same (9100) on each side

My p910nd file running at this time:

config p910nd
        option device '/dev/usb/lp0'
        option port '0'
        option bidirectional '1'
        option enabled '1'
        option bind ''

Also a scanner run fine with xinietd + sane & SaneWinDS in my Windows 11 computer

1 Like
  1. Check with these commands, you have to inject usbutils package.
    ps | grep p910nd
    netstat -an |grep 91
  2. If all looks well, you may need a magic trick
    edit /etc/rc.local and add 2 lines like this
    sleep 15
    /etc/init.d/p910nd restart

Hi, thank you for your reply. Can you please check the first message again, since it has to be scrolled up/down, left/write.
Safak Kayhan