Embedded scanner Airscan compatible

I need to try to make an embedded scanner AirScan/eSCL compatible. This is a tiny sheetfeed scanner. I have most of the work done, but I am havng issues with the final message exchanges just before the client GETs the scanned image.


I can easily enough initiate the scan up to the point of sending 201 Created location URI from there it gets foggy as I have seen AirScan/eSCL Clients that all seem to behave differently. I can make it work in Vuescan but Vuescan does not come back to check ScannerStatus again , it just initiates the download based on header information froj 201 Created and Location: URI.


It is specifically this point after sending 201 Created and location URI headers where things are falling apart for me on OSX Mojave.


I have seen that OSX mojave requests ScannerStatus again before download but have no idea whet it is looking for


I have identified several status messages but not sure even which one applies when the scan is actually ready for download or already downloaded.


No matter what I can not seem to make OSX Mojave happy. I figure if I can make it work on Mojave it will probably work on iOS .


If anyone has any wireshark traces from a successful scan that may be helpful too. I have a scanner in another city that I was remotely working with but problems with WiFi card not allowing me to see all the traffic on the network so I can see messages to/from real AirScan compatible HP multi function device.


Also looking for info on how to identify correctly a SINGLE sheet feeder scanner to OSX, not a flatbed with ADF option .


Thanks


Mark

Replies

I don't know if you're still working on this, but you might find it useful to look through the open-source AirSane AirScan implementation on GitHub. AirScan does not seem to be fully compliant with eSCL, so you could look through the AirSane code and issues to see what quirks they've specifically had to accommodate. (In particular, sheet-fed scanners do seem to be an issue, but apparently there is a way to make them work. You can look through the AirSane issues to see how the developer has handled them there.)

Obviously, keep in mind that AirSane is only available under the GPL 3.0 license, so if you're planning on publishing your driver under any other license, you can look through the AirSane code to help you understand potential solutions your problem, but you can directly incorporate code from AirSane only if you use the GPL 3.0 license yourself. I am not a lawyer, but it is my understanding that embedded code in commercially distributed hardware still counts as "publication" even if you don't distribute firmware updates after the fact.