-
-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for newer HP printers (e.g. HP Deskjet 2700) #1107
Comments
Hi @Hariss096 Thanks for creating this new thread. Can you post your EventCapabilities that supports ScanEvent```xml SVN.3295 AlertTableChanged JobEvent PoweringDownEvent PowerUpEvent ScanEvent DeviceCapabilitiesChanged ConsumableEvent OOBEStatusChanged Device UDP 8080 Device XMPP 1126 Device USBRaw FF#04#01 86400 0 32 SubscriptionEventFilter DelayedReplyResponse SubscriptionEventFilter DelayedReplyResponse ```Me device also supports eSCL, but I've not been able spot something similar to the ScanEvent both from reading the doc, looking at protocol_doc/HP PageWide Pro 477dw MFP.md or fetching /eSCL/ScannerStatus after choosing a target on the device. As in #1018 (comment) could you confirm that similar function is available windows ? |
Hi @manuc66, thanks for looking into this. Unfortunately I do not have a windows running on any machine so can't test the scan to computer function. Search engine results were also inconclusive for me on how to do scan to computer for mac. I do have /EventMgmt/EventCapabilities<!--
THIS DATA SUBJECT TO DISCLAIMER(S) INCLUDED WITH THE PRODUCT OF ORIGIN.
-->
<ev:EventCapabilities xsi:schemaLocation="http://www.hp.com/schemas/imaging/con/ledm/events/2007/09/16 ../schemas/LedmEvents.xsd http://www.hp.com/schemas/imaging/con/dictionaries/1.0/ ../schemas/dd/DataDictionaryMasterLEDM.xsd">
<dd:Version>
<dd:Revision>SVN.3295</dd:Revision>
</dd:Version>
<ev:SupportedEventList>
<dd:UnqualifiedEventCategory>AlertTableChanged</dd:UnqualifiedEventCategory>
<dd:UnqualifiedEventCategory>JobEvent</dd:UnqualifiedEventCategory>
<dd:UnqualifiedEventCategory>PoweringDownEvent</dd:UnqualifiedEventCategory>
<dd:UnqualifiedEventCategory>PowerUpEvent</dd:UnqualifiedEventCategory>
<dd:UnqualifiedEventCategory>ScanEvent</dd:UnqualifiedEventCategory>
<dd:UnqualifiedEventCategory>DeviceCapabilitiesChanged</dd:UnqualifiedEventCategory>
<dd:UnqualifiedEventCategory>ConsumableEvent</dd:UnqualifiedEventCategory>
<dd:UnqualifiedEventCategory>OOBEStatusChanged</dd:UnqualifiedEventCategory>
</ev:SupportedEventList>
<ev:KickDeliveryOptionList>
<ev:DeliveryOption>
<dd:ConnectionInitiator>Device</dd:ConnectionInitiator>
<ev:ProtocolType>UDP</ev:ProtocolType>
<dd:DevicePort>8080</dd:DevicePort>
</ev:DeliveryOption>
<ev:DeliveryOption>
<dd:ConnectionInitiator>Device</dd:ConnectionInitiator>
<ev:ProtocolType>XMPP</ev:ProtocolType>
<dd:DevicePort>1126</dd:DevicePort>
</ev:DeliveryOption>
<ev:DeliveryOption>
<dd:ConnectionInitiator>Device</dd:ConnectionInitiator>
<ev:ProtocolType>USBRaw</ev:ProtocolType>
<dd:USBInterface>FF#CC#00</dd:USBInterface>
</ev:DeliveryOption>
<ev:DeliveryOption>
<dd:ConnectionInitiator>Device</dd:ConnectionInitiator>
<ev:ProtocolType>USBRaw</ev:ProtocolType>
<dd:USBInterface>FF#04#01</dd:USBInterface>
</ev:DeliveryOption>
</ev:KickDeliveryOptionList>
<ev:MaxRetryDuration>86400</ev:MaxRetryDuration>
<ev:MaxPersistentSubscriptions>0</ev:MaxPersistentSubscriptions>
<ev:ClientURLMaxSize>32</ev:ClientURLMaxSize>
<ev:EventFeaturesSupported>
<ev:EventFeature>SubscriptionEventFilter</ev:EventFeature>
<ev:EventFeature>DelayedReplyResponse</ev:EventFeature>
</ev:EventFeaturesSupported>
<ev:EventFeaturesEnabled>
<ev:EventFeature>SubscriptionEventFilter</ev:EventFeature>
<ev:EventFeature>DelayedReplyResponse</ev:EventFeature>
</ev:EventFeaturesEnabled>
</ev:EventCapabilities>
|
@Hariss096 Can you confirm you have a touch screen to choose the target or a button dedicated to sending to computer ? |
no I dont. I don't think my printer has support for scan to computer feature. The closest thing I found was WIFI-Direct but even then the scan trigger is manual. Maybe we can think of implementing a kind of hardware switch. Basically a flag that checks scanner state every X seconds and triggers a scan if the scanner state is idle. (I know it will be very different from the current logic but curious to know your opinion) The scan output can be fetched via api /Jobs/ScanJobs/$jobId/NextDocument and saved to the location as specified in config. |
You could possibly use this project and launch the scan with a button that would trigger the CLI or use your phone as a trigger display: https://github.com/arminha/covet I came across some projects, but I can't find the link to the ones where people built a solution using a Raspberry Pi with a push button close to the device. |
thanks @manuc66, I also saw some projects that might have been what I was looking for. But in the end I reverse engineered my printer apis (inspired by this repo 😉 ), turned out to be quite simple implementation for my specific use case: https://github.com/Hariss096/scanner-to-paperless |
Follow up from #1073 (comment).
I have got HP Deskjet 2700 series all in one printer and it does not have support for
/WalkupScan/WalkupScanDestinations
and/WalkupScanToComp/WalkupScanToCompDestinations
endpoints. It works very similar to the reverse engineered printer documented at protocol_doc/HP PageWide Pro 477dw MFP.md.Worth mentioning that HP Deskjet 2700 is Platen (flatbed) and hence does not support adf (However when I run the code with
--adf-autoscan
flag it does fetch the scanner status because those status endpoints still work on my printer at least).Unlike #1073, I could reach
/DevMgmt/DiscoveryTree.xml
and/Prefetch?type=dtree
and the outputs are shared below.I did try to print via printer's embedded web server (EWS) and found out that scan job is placed via
POST /Jobs/ScanJob
which returns the $jobId with a bunch of other metadata like scan status etc. With $jobId, one could fetch the doc byGET /Jobs/ScanJob/$jobId/NextDocument
. However repeatedly accessingGET /Jobs/ScanJob/$jobId/NextDocument
does not return the scanned doc which means there is no temporary storage. The trick I found was to try to fetchGET /Jobs/ScanJob/$jobId/NextDocument
when scan job is underway and not yet finished.Discovery tree /DevMgmt/DiscoveryTree.xml
JSON:
The text was updated successfully, but these errors were encountered: