HP GGW Server commands - printing

I am trying to find any information on commands for JetDirect/HP GGW Server. The only mention I've been able to find in the past 4 days of searching was at Python socket communication with HP print server. I'm currently working with HP GGW v1.0, but the JetDirect GGW v2 commands in that post seem to work as well. Any help is greatly appreciated.

Sorry for the really late reply, I hope this is useful anyways. Keep in mind, I'm not 100% sure how all these commands work but this is just from experimenting.
*Tested on a HP OfficeJet 6600 printer
*Connected to port 9220 via NetCat or Telnet
*Commands appear to be case insensitive
*Maximum command length appears to be 4
Commands:
data:
Appears to work together with the command open
devi:
Shows device info
mpct:
No idea what it does, it takes numbers as input
noop:
Assembly language do nothing command?
open:
Accepts 4, 9, or 43
quit:
Closes connection
serv:
Appears to be related with the skid command. See skid for more info
220 HP GGW server (version 1.0) ready
serv PRINT
250 2 PRINT
time:
Takes # of seconds as argument and will close the connection after # seconds
skid:
Accepts 1,2,4,6,7,8,9,10,14,15,17,39,43,40,96,97,98, or 99 as an argument. Depending on the number, it will print a message, for example:
220 HP GGW server (version 1.0) ready
skid 2
250 2 PRINT
This is all I figured out so far through different methods of testing I've done over the last couple days. If you have any more questions about certain commands function, I could give you a more in-depth explanation of what I know so far.
EDIT:
After a lot more searching, I found the patent for the HP GGW protocol. This might help us better understand it
https://patents.google.com/patent/US6581098

Related

Why is Quectel BG96 stuck at trying to register the CS service?

I'm trying to get a BG96 up on to the Verizon network to do some MQTT communication.
The Quectel docs say to follow the TCP/IP AT command state machine before doing the MQTT commands. Makes sense to me.
I have an activated SIM card with an M2M data plan for this device, but it never seems to get past the second step, registering for CS service. It gives status of 2, "Not registered, but MT is currently trying to attach or searching an operator to register to." I checked the antenna and moved to a location closer to windows, but no luck.
at
OK
at+cpin?
+CPIN: READY
OK
at+creg?
+CREG: 0,2
OK
The same status is returned for the PS services, FWIW, but that's not surprising I think because the Quectel BG96 AT docs say you must register CS service first.
Any idea why a BG96 would be stuck at status 2 for at+creg??

starting with nodemcu/esp8266 dev board

I have a esp dev board that I've been trying to get to work, but have faild miserably. after spending a few days trying I was able to 'flash' a firmware and up load code(to connect to my wifi) via arduino IDE. the problems are when I open the serial monitor the serial monitor window is nowhere to be seen(it refuses to show up on my desktop, but if I place my mouse over arduino IDE on the task bar I can see a tiny version of the window with what seems like the esp is supposed to tell me). I verified the wifi program was working with advanced ip scanner. The other problem is that when I try to use esplorer I am told the following:
Communication with MCU..Got answer! Communication with MCU established.
AutoDetect firmware...
Can't autodetect firmware, because proper answer not received (may be unknown firmware).
Please, reset module or continue.
à‚3þÿÖ
ü
I've tried reseting via hardware and software and also saving a init.lua to the esp ( which I am told: Waiting answer from ESP - Timeout reached. Command aborted.)
Is there an easy step by step tutorial or something where I can get this thing to work in such a way that it is possible to develop with it? I dont care what language I have to use as long as I dont have to spend more time on trying to get the hardware to work. For something that is Arduino-like hardware it is significantly harder to do the simplest thing, a pic mcu is easier.es
If you are doing serious IoT thing then, I guess its better to go by Espressif IDE. There's a Freetos version also available which makes programming experience better.
To get started step by step you can check lot of videos on youtube, that's my preferred way of getting started. I found these three helpful to get started : here

How to simulate ICMP messages

I would like to know whether there are any programs which will help me to generate ICMP messages. I have a target board running with linux for arm and all of the ICMP messages need to be tested against it.
These all are the messages need to be tested:
3 Destination Unreachable
12 Parameter Problem
11 Time exceeded
4 Source Quench
30 Trace route
5 Re-direct
I shall take the trace of these communications in wireshark as well.
Please help me out guys.
Have a look at scapy. This is a comfortable packet generator written in python. You can integrate it into your python scripts.

HPLIP 3.13-11, A LaserJet 4/4M with a JetDirect: no workie

I'm trying to get a very old, but working great C2001A/J4100A (HP LaserJet 4) to work with the HP Linux Imaging and Printing library, but I'm having an awful time of it.
1) There's no entry in /usr/share/hplip/data/models/models.dat for [hp_laserjet_4]. This is the first problem so far when I used Bonjour discovery through an avahi.service file I put on my OpenWRT router. I don't currently have an iPhone I want it to discover with AirPrint, but this is how I started off and helps CUPS finds printers anyways.
2) SLP discovery is a complete bomb. I've traced it down to the UDP packet the JetDirect sends off in response to the broadcast discovery request. The part that is 'x-hp-p1=0' should be something like 'x-hp-p1=MFG:HP;MDL:LaserJet4;etc..' and it causes hp-probe to fail to see what printer the JetDirect is plugged into.
I can't seem to force HPLIP to bypass the bad discovery methods and it's too smart and wants to verify.
I've posted to the HPLIP help area, but they seem to run a week slow.
Instead of doing JetDirect, try LPR directly to the IP address. And any of the older PCL drivers should work against that printer.

Can my program use Indy 10 at a customer site if I wrote it to use Indy 9?

I have written a program in Delphi 7 (includes a ModBus component that uses Indy). On my machine it uses Indy 9 and works fine. It communicates well with other machines via a ModBus protocol. However, when the program is run on a different machine, I get a CPU 90-100% load. Unfortunately this machine is not in my office but "on the other side of the world". How can I find out whether this machine is using Indy 9 or Indy 10? And, further, If it is running Indy 10, could that be the problem or is this very unlikely?
Definitive answer is No
If you compile your program with indy 9, even if using packages, it shall use INDY 9 to run. AFAIK, there's no way to compile the executable using INDY 9 and use INDY 10 at runtime, even if you want, and no way it happen by accident.
To find out whats causing the high CPU load you might try a profiler like AQTime or SamplingProfiler.
That will get you the method(s) that are running most of the time. Then you will be able to find out whats causing the problem.
Alternatively you could add some logging to your application.
To find the root cause you could prepare a test application which will go through a sequence of actions like opening / closing connections. If it asks the user for confirmation ("Continue ? y/n") before proceeding, the user can check the CPU load for every step to detect the critical operation.
Thanks for answers. I do not think this is an Indy issue though. On my Quad CPU PC the CPU load also goes up from 1-2 % to aprox. 25%. This happens if I keep the line open (connected). If I, however, disconnect the ModBus Server after every poll from the ModBus CLient side and let that PC reconnect, the CPU load is always low. WHat is normal? Having the line open all time, or connect and disconnect for every poll? The polling frequency is: in Idle mode : 2000ms, in active mode 500ms.
you need to add logs to ensure you know whats going on.
is it the connection itself that is causing you the issue? or is it the work performed while connected?
Logs will help you narrow this down and you may be able to alter you code to be less processor hungry.
using AQTime or SamplingProfiler as also suggest earlier will help you.
personally i always add logging to every application by default, alot of them require turning on but its there. Once the software it on site you never know what may change and simply turning the logs on can save you alot of time

Resources