[sane-devel] Add support for old OKI scanners
MOON Sungjoon
sumoon at seoulsaram.org
Wed Jul 10 17:39:45 BST 2024
OKI company contacted to me and they told me they will provide the
source code, but it might take some time because it's really old machine.
On 7/3/24 5:41 PM, MOON Sungjoon via sane-devel wrote:
> Hello, 안녕하세요!
>
>> Repackaging their backend would probably be the easiest
> Yeah, it must be easiest. But it won't be work other archiecture such
> as ARM and musl based system like alpine. But still it would be good
> start.
>
> I will make AUR package first because I use Arch with only
> libsane-oki.so parts and other dependencies. People will be easily
> port this package to other distro.
>
>> If their code is not licensed in a way that is compatible with SANE,
>> then a "clean room" methodology might be OK
> I'm not sure one person can do the "clean room" methodology. Or
> writing only documation of this library and someone might be able to
> build a backend.
>
> And plus I think their library is GPLv2 too. So it might be okay to
> just reverse engineer. I will ask this to FSF.
>
> Though, like you said just using Wireshark might be enough.
>
>> If you take an existing backend, it would be best to start with one
>> that implements the comms protocol that you are going to use (e.g.
>> USB or network).
> I think I will start with USB implementation. Good, thanks.
>
>> I would pick a recent backend such as my brother_mfp one (here:
>> https://gitlab.com/sane-project/backends/-/merge_requests/751) or the
>> canon_lide_70 (which I used for the basis of my own) or the escl
>> backend which has Thierry actively maintaining. My brother one only
>> implements USB at the moment, but escl is primarily network based, so
>> it really depends on where you want to start.
> Thank you for the examples.
>
> Thank you so much.
>
>
> Best,
>
> Sungjoon
>
>
>
> On 7/3/24 7:12 AM, Ralph Little wrote:
>> Hi and 안녕하새요?,
>>
>> On Tue, Jul 2, 2024 at 2:51 PM Sungjoon Moon <sumoon at seoulsaram.org>
>> wrote:
>>
>> Hi, Thank you for your reply
>>
>> It's glad to know you have same model.
>>
>> 1. Do you think porting python2 to python3 would be useful? I
>> think if driver exists we can just use sane without their software.
>>
>>
>> Repackaging their backend would probably be the easiest, low effort
>> option. When I used their backend on an early Linux Mint distro, I
>> found it to be very reliable, one of the better closed-source drivers
>> that I have encountered. What let it down was the python stuff used
>> to package it up and install it. Not entirely their fault mind:
>> Python is a bit of a moving target at the moment.
>>
>> 2. I will use ghidra to decompile library file and try to do
>> reverse engineering. Do you think it would be okay to be merged
>> into upstream (legal issue).
>>
>>
>> If their code is not licensed in a way that is compatible with SANE,
>> then a "clean room" methodology might be OK, that is study of the
>> code to determine the protocol details, then reimplemented from
>> scratch might be OK, but I'm not a lawyer, so take my opinion with a
>> pinch of salt.
>>
>> In a different subproject for Brother MFP machines, I just observed
>> wireshark traces to figure out how to talk to those machines so
>> currently, there is no contamination with Brother's own code. That
>> situation has gotten a little more complicated with the recent
>> discovery of a GPL version of one of their early drivers that is free
>> for all to look at and use. I won't be using their code, but there is
>> a lot of information that I can get from the code to radically
>> improve my backend.
>>
>> 3. I found some guides in official
>> documentation(http://www.sane-project.org/docs.html), is there any
>> resources you recommend?
>>
>>
>> That is tricky. AFAIK, there isn't a very good guide for starting a
>> new backend. Most people take an existing one, rip out the unneeded
>> guts, and start adding what is needed. I would certainly have a good
>> look at the API and protocol docs for SANE here though since you need
>> a good idea of the process flow between the backend and frontend:
>> https://sane-project.gitlab.io/standard/1.01/
>>
>> If you take an existing backend, it would be best to start with one
>> that implements the comms protocol that you are going to use (e.g.
>> USB or network). The escl one would be a good network sample. It's
>> not a simple process, but I found that once the basic framework has
>> been set up and working, moving forward is a lot simpler and
>> straightforward. There is a little bit of a learning curve to
>> providing the right process that the frontend is expecting.
>>
>> 4. What backend codes would you recommend to read as an example.
>>
>>
>> I would pick a recent backend such as my brother_mfp one (here:
>> https://gitlab.com/sane-project/backends/-/merge_requests/751) or the
>> canon_lide_70 (which I used for the basis of my own) or the escl
>> backend which has Thierry actively maintaining. My brother one only
>> implements USB at the moment, but escl is primarily network based, so
>> it really depends on where you want to start.
>>
>> One way to get going to to have a look at a data stream, perhaps with
>> Wireshark, to see how complex it is. If it is very intuitive and
>> straightforward, you might not need to do much analysis at all.
>> Multi-function machine protocols tend to be a lot more high-level
>> which makes them easier to talk to than a lot of the devices that are
>> based on scanner-on-a-chip designs, which can be very, very involved.
>>
>> Cheers,
>> Ralph
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/sane-devel/attachments/20240711/1912c932/attachment.htm>
More information about the sane-devel
mailing list