OpenWrt printer sever + Android phone + Noko print App = cannot print documents from phone

Hi,

I am to determine what is wrong with OpenWrt print server.
If I use a commercial available branded TP link print server, Noko App on my Android phone can detect the presence of the print server, and subsequently can print out documents from my phone. Printing out a Windows Printer Test page, no issue, it does print out.

However, when I set up my Dlink DIR-842 c2 router(refer to Network B, IP = 192.168.188.51) as a wireless relay bridge, hooked up my HP printer to the usb port of the DIR-842 c2 router, printing out Windows Printer test page, no issue, it does print out.

If I use the Noko print App, I cannot print anything. the App will show the status & it will stop/fail half way, and the App will hang.

I tried to use another android app - PrintHand App, same issue, cannot print.

I tried to use another printer- EPSON ECO TANK L3110 usb printer, same issue, the APP will fail to print anything document from my phone. But as usual, printing out Windows Printer Test Page, no problem at all.

What it is causing the problem? Any idea?

Below are the settings of print server




If you changed all of those settings it would be surpridsing you ever print again.

I can print to hp from android cups or android default provider.
Please post outputs of:

ubus call system board
cat /etc/config/network
cat /etc/config/firewall
cat /etc/config/wireless
cat /etc/config/p910nd
lsusb
logread -e p91

Snaitizing ip addresses mac addresses and passwords before posting.

Here is the result:

login as: root

--------------------------------------------------
root@OpenWrt:~# ubus call system board
{
        "kernel": "5.10.161",
        "hostname": "OpenWrt",
        "system": "Qualcomm Atheros QCA956X ver 1 rev 0",
        "model": "D-Link DIR-842 C2",
        "board_name": "dlink,dir-842-c2",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "22.03.3",
                "revision": "r20028-43d71ad93e",
                "target": "ath79/generic",
                "description": "OpenWrt 22.03.3 r20028-43d71ad93e"
        }
}
root@OpenWrt:~# cat /etc/config/network

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fdb2:7c17:6250::/48'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'eth0.1'

config device
        option name 'eth0.1'
        option macaddr

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option ipaddr '192.168.8.1'

config device
        option name 'eth0.2'
        option macaddr 

config switch
        option name 'switch0'
        option reset '1'
        option enable_vlan '1'

config switch_vlan
        option device 'switch0'
        option vlan '1'
        option ports '1 2 3 4 0t'

config switch_vlan
        option device 'switch0'
        option vlan '2'
        option ports '5 0t'

config interface 'wwan'
        option proto 'static'
        option ipaddr '192.168.188.51'
        option netmask '255.255.255.0'
        list dns '192.168.188.1'
        option gateway '192.168.188.1'

config interface 'WIFI_brridge'
        option proto 'relay'
        option ipaddr '192.168.188.51'
        list network 'lan'
        list network 'wwan'

root@OpenWrt:~# cat /etc/config/firewall

config defaults
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option synflood_protect '1'

config zone
        option name 'lan'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'
        list network 'lan'
        list network 'wwan'

root@OpenWrt:~# cat /etc/config/wireless

config wifi-device 'radio0'
        option type 'mac80211'
        option path 'pci0000:00/0000:00:00.0'
        option channel '36'
        option band '5g'
        option htmode 'VHT80'
        option cell_density '0'

config wifi-device 'radio1'
        option type 'mac80211'
        option path 'platform/ahb/18100000.wmac'
        option band '2g'
        option htmode 'HT20'
        option channel 'auto'
        option cell_density '0'

config wifi-iface 'wifinet2'
        option device 'radio1'
        option mode 'sta'
        option network 'wwan'
        option ssid 'PNGEwifi'
        option bssid 
        option encryption 'psk2'
        option key 

root@OpenWrt:~# cat /etc/config/p910nd

config hotplug
        option driver_home '/opt/p910nd_drivers'

config p910nd
        option enabled '1'
        option device '/dev/usb/lp0'
        option port '0'
        option bind '192.168.188.51'
        option mdns '1'
        option usbvidpid '03f0/0c17'
        option mdns_mfg 'Hewlett-Packard'
        option mdns_note 'Located near router'
        option mdns_sn '00SGFBG06063'
        option mdns_cmd 'PJL,MLC,BIDI-ECP,DW-PCL'
        option mdns_mdl 'hp LaserJet 1010'
        option driver_file '/opt/p910nd_drivers/Hewlett-Packard_hp_LaserJet_1010_03f0_0c17.bin'
        option mdns_cls 'PRINTER'
        option mdns_ty 'Hewlett-Packard LaserJet 1010'
        option mdns_product '(Hewlett-Packard LaserJet 1010)'
        option mdns_cmt 'RES=600x1'
        option runas_root '1'

root@OpenWrt:~# lsusb
-ash: lsusb: not found
root@OpenWrt:~# logread -e p91
Mon Nov 11 04:06:08 2024 daemon.info p910nd hotplug: No driver file: /opt/p910nd_drivers/Hewlett-Packard_hp_LaserJet_1010_03f0_0c17.bin for /dev/usb/lp0 [ 03f0/0c17 ] (upload it if your printer needs a driver loading).
Mon Nov 11 04:06:08 2024 daemon.info p910nd hotplug: (Re)starting p910nd
Mon Nov 11 04:09:22 2024 daemon.info p910nd hotplug: No driver file: /opt/p910nd_drivers/Hewlett-Packard_hp_LaserJet_1010_03f0_0c17.bin for /dev/usb/lp0 [ 03f0/0c17 ] (upload it if your printer needs a driver loading).
Mon Nov 11 04:09:22 2024 daemon.info p910nd hotplug: (Re)starting p910nd
root@OpenWrt:~#

Sorry I don't understand this statement.

even if it probably won't solve your problem, you should start by upgrading to a supported release.

ok thanks, noted

More or less you need to add print server (not IPP) manually in android provider.

Yes, already tried this method, manually added the IP on the phone APP, but the result is the same.

What is IPP?

That might be the problem. I think that is not a real bridge, try to use WDS or mesh

Might work but you need to change the main rather to support WDS & mesh. These 2 features are something is not readily available on a given off-the-shelf-router. Given that the main router does NOT support flashing OpenWrt, then this is not a solution.

Your printer app does not support Appsocket AKA 9100 RAW print protocol
https://www.nokoprint.com/
You can add printer to default print provider to confirm connection is OK.

Referring to the diagram Network A, if my app does not support RAW
9100 print protocol, how did my Noko app was able to grab documents in my phone and printed out on my very old HP Laserjet printer via the TPlink print server?

Anyway, I went back home, tried on my Epson Eco Tank L3110 printer, using another Android app - printhand.com

This App has got lots of drivers, and has the correct printer drivers for my printer. I purchased the App and tried it.

It did print out but as I said before only partial. :sleepy:

The problem is the printer will not finished printing the whole document 100%. It will stop half way maybe.

Here is a the attached picture:

Here is video footage:
Mobile Screen Recording

The footage shows something causing it to load, it just couldn't reach 100%.

Run tcpdump -n -v -i br-lan tcp port 9100 while attempting to print.

I tried to capture the packets using putty, but I don't know why I cannot see any packets being captured, while the printer was printing.
Is it the correct interface you have given me to use?

login as: root


BusyBox v1.35.0 (2023-01-03 00:24:21 UTC) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 22.03.3, r20028-43d71ad93e
 -----------------------------------------------------
=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------
root@OpenWrt:~# tcpdump -n -v -i br-lan tcp port 9100
tcpdump: listening on br-lan, link-type EN10MB (Ethernet), capture size 262144 bytes
^C
0 packets captured
0 packets received by filter
0 packets dropped by kernel
root@OpenWrt:~#

I think the main issue is mainly because the drivers is flaky.

I use the PrintHand app (using its own drivers repository on the app) to print documents >>> using OpenWrt printer sever >>> print documents 100% successful.

I would try to use the same app to print on a Canon Laser printer and see what is the outcome later, when I get the chance to test it at home.

So, it could be flaky drivers (from PrintHand app) of the EPSON Eco Tank L3110 colour printer that is causing the printing half way problem.

@brada4

This is using IPP printing at port 631, correct?
But the print server is listening to port 9100.

Common ground reachable would be samba for windows printer share protocol.
p910nd supports only 9100/RAW protocol supported by default andoid print provider.
There is no IPP server in OpenWRT packages.

1 Like

My existing tp-link usb printer server (runs on ethernet connection only) supports samba. And my PrintHAND android app can easily find it without having to manually entering IP address.

Just a wishful thinking -It be would nice feature to have in OpenWRT, in the future. :slightly_smiling_face:

Scanning the network in progess:

After scanning the device on my local network:

Yeah, a wishful thinking, your app will not start to support AppSocket after that.