Aghaster

Lexmark x4690 Reverse Engineering

41 posts in this topic

I passed the evening asking questions on multiple IRC channels, and I really think there's a good chance that the printer is running Linux and not some other form of UNIX using a license other than GNU's GPL. I have just sent Lexmark this mail, hoping it falls in the good hands (I'm dreaming in colors):

Good try, but I fear that it won't get you any where.... unfortunately.

Regaring the hardware, the Marvelll 88W8638 (i believe) is an ARM SOC, probably the Liberates series but their partnumbers are so screwed up.... On the wireless module the FCC ID is not readable, you can find out a whole load of stuff from the FCC search site.

I have a IOMEGA NAS which runs Linux and IOMEGA claims they are not required to release source, their customer support department also says it does not support linux even though Linux is mentioned on the box as a supported OS. Fuckwitts!

Mungewell

That Marvell chip shouldn't be a SOC. Three reasons being that, a) it is on a periphery card, b ) is on a wireless card, c) having two SoCs in a consumer product that does not directly call for it means an increased manufacturing (and development) cost, compared to using a dedicated network/wifi chip. Also, Marvell produces wifi chips.

A Quick search on google for "marvell 88w" (Why didn't I think of that before) show a bunch of hits for it being one of Marvell's Wifi chips. 88e is the ethernet series.

http://markmail.org/message/53x7ynowjdf3sw7g

"3 network controllers, 2 of them are based on Marvell 88E8053-NNC chips supporting 10/100/1000 Mbit/sec Base-T (PCIE Gigabit Ethernet), and the third one (wireless LAN adapter) is based on the Marvell 88W 8310-BAN chip supporting up to 54Mbit/sec WiFi-b/g operating speed (IEEE 802.11b/g)."

http://www.murga-linux.com/puppy/viewtopic...af813236ad35d23

Unfortunately, the Marvell 88W-series is one of the few wifi chipsets not supported by a native Linux driver.

And Aghaster, good luck on getting source code.

0

Share this post


Link to post
Share on other sites
I just sent back this reply, hoping to get a more satisfying answer:
Hi Ranjith,

Thanks for taking the time to reply to my email. I'm afraid I have been misunderstood, I am talking about the software that the printer itself is running in order to receive printing jobs and accomplish other tasks, not the driver I would need to install on my computer or any other software that is installed on my computer. By firmware I am referring to the embedded operating system that the printer is running. For this kind of software it is common to see Linux being used as it is easy to modify and adapt to different embedded devices such as printers (Linksys routers also run Linux, for instance). The reason why I am telling you this is because I have sufficient reasons to believe that my Lexmark x4690 printer is running a Linux-based firmware (the list of processes that I've sent you in my first mail shows processes that only appear on a Linux system). A Linux-based firmware would be covered by the same license as the original Linux kernel, the GNU General Public License (GPL), which would force Lexmark to comply to it. The GPL states clearly that modified versions of code that is released under the GPL must remain in GPL, and that the modified code must be available, along with many other conditions. Failure to comply to the GPL when using GPL-covered code is a violation of the GPL and is illegal.

A famous case of a violation of the GPL has been seen with Linksys routers running Linux. People have noticed that Linksys routers (the WRT54G, for instance) were running a Linux-based firmware, but that the source code for that firmware was unavailable from Linksys. The issue got resolved when Linksys (which is now owned by Cisco) released the source code for its Linux-based firmware. As I'm finding myself in front of a similar situation, I am ringing the alarm. I went on Lexmark's website and I couldn't even find the firmware in its binary form, even less the source code for it. The firmware revision for my printer is NET.AR.N204.

Can you please forward this email to your superiors or anybody that would be the best suited to help me solve this issue? I want proof that my printer isn't running Linux, otherwise I want the source code for it.

Thanks a lot for your time,

-Marc-Andre

I wonder if you should send a note to Lexmark's Legal department too?

0

Share this post


Link to post
Share on other sites
I just sent back this reply, hoping to get a more satisfying answer:
Hi Ranjith,

Thanks for taking the time to reply to my email. I'm afraid I have been misunderstood, I am talking about the software that the printer itself is running in order to receive printing jobs and accomplish other tasks, not the driver I would need to install on my computer or any other software that is installed on my computer. By firmware I am referring to the embedded operating system that the printer is running. For this kind of software it is common to see Linux being used as it is easy to modify and adapt to different embedded devices such as printers (Linksys routers also run Linux, for instance). The reason why I am telling you this is because I have sufficient reasons to believe that my Lexmark x4690 printer is running a Linux-based firmware (the list of processes that I've sent you in my first mail shows processes that only appear on a Linux system). A Linux-based firmware would be covered by the same license as the original Linux kernel, the GNU General Public License (GPL), which would force Lexmark to comply to it. The GPL states clearly that modified versions of code that is released under the GPL must remain in GPL, and that the modified code must be available, along with many other conditions. Failure to comply to the GPL when using GPL-covered code is a violation of the GPL and is illegal.

A famous case of a violation of the GPL has been seen with Linksys routers running Linux. People have noticed that Linksys routers (the WRT54G, for instance) were running a Linux-based firmware, but that the source code for that firmware was unavailable from Linksys. The issue got resolved when Linksys (which is now owned by Cisco) released the source code for its Linux-based firmware. As I'm finding myself in front of a similar situation, I am ringing the alarm. I went on Lexmark's website and I couldn't even find the firmware in its binary form, even less the source code for it. The firmware revision for my printer is NET.AR.N204.

Can you please forward this email to your superiors or anybody that would be the best suited to help me solve this issue? I want proof that my printer isn't running Linux, otherwise I want the source code for it.

Thanks a lot for your time,

-Marc-Andre

I wonder if you should send a note to Lexmark's Legal department too?

I'd like to know how to contact their legal department, if any? I tried googling Lexmark + legal department but only got their solutions to print legal documents.

@chaostic: If it's unsupported natively, then they had to make their own, or they are using a proprietary driver from Marvell, I guess?

0

Share this post


Link to post
Share on other sites
I'd like to know how to contact their legal department, if any? I tried googling Lexmark + legal department but only got their solutions to print legal documents.

@chaostic: If it's unsupported natively, then they had to make their own, or they are using a proprietary driver from Marvell, I guess?

First try sending a note to one of their media relations contacts

http://www.lexmark.com/lexmark/sequentiale...76_0_en,00.html

Then if they don't positively respond, ask them for the name and address of their legal process server in your state. That will be the most direct route that you can reach Lexmark's Legal department.

As for the drivers, they could have a binary driver that Marvell provides under nda, so even if you do get the source, it would not be included. (Same thing happened with the zipit wireless communicators. Linux core, binary wifi driver)

0

Share this post


Link to post
Share on other sites
I'd like to know how to contact their legal department, if any? I tried googling Lexmark + legal department but only got their solutions to print legal documents.

@chaostic: If it's unsupported natively, then they had to make their own, or they are using a proprietary driver from Marvell, I guess?

First try sending a note to one of their media relations contacts

http://www.lexmark.com/lexmark/sequentiale...76_0_en,00.html

Then if they don't positively respond, ask them for the name and address of their legal process server in your state. That will be the most direct route that you can reach Lexmark's Legal department.

As for the drivers, they could have a binary driver that Marvell provides under nda, so even if you do get the source, it would not be included. (Same thing happened with the zipit wireless communicators. Linux core, binary wifi driver)

Isn't there something in the GPL that prevents binary drivers to be shipped with GPL software? Or is it just my imagination. I'll have to check that.

0

Share this post


Link to post
Share on other sites
That marvelll chip shouldn't be a SOC.

Totally agree, but it doesn't always work that way in industry. I'm not saying you're wrong, but imagine if the the main printer board does not have enough power to run a wifi perpherial but does has a 'spare' parallel port input. The wifi card might be a re-used design which just spits out print data in the style of a PC parallel port and Lexmark don't need to redesign each print to support Wifi, they just need to make a parallel port available.

The real kicker in this scenario would be that 'we' suspect there is Linux running on the printer/wifi card and yet Lexmark refuse to support Linux on their customers desktops.

@mungewell: Did you try contacting the FSF about it?

Quite honestly, life's too short..... not that I'm putting down your quest. If you've got the time and motivation then good for you. I've got a shitty NAS which just about copes with what I need and no time to follow up on hacking it.

Mungewell.

0

Share this post


Link to post
Share on other sites

Following chaostic's advice, I just mailed the person in charge for media contacts (customers):

Hi,

I recently bought a Lexmark x4690, a nice wifi multifunction printer. I am aware that this printer is unsupported by Linux, but I didn't care that much as I can print from my Windows computer. I did, however, take a closer look at it, in an attempt to find what network protocol it is using, in the case that it would be a Linux-supported network printing protocol. I was out of luck, but doing that I found something else: aside from having an embedded web server, the printer has a special 'LXK' prompt on port 10000. I connected to that LXK prompt that seems to be there for printer management reasons, and listed the available commands. one of them, 'ps', prints the currently running processes in the printer's embedded operating system. I had quite a surprise when I saw the first processes in the list:

PID Uid VmSize Stat Command

1 root 512 S init

2 root SWN [ksoftirqd/0]

3 root SW< [events/0]

4 root SW< [khelper]

5 root SW< [kthread]

8 root SW< [kblockd/0]

11 root SW [khubd]

34 root SW [pdflush]

35 root SW [pdflush]

37 root SW< [aio/0]

36 root SW [kswapd0]

38 root SW [svcerrd]

70 root SW [mtdblockd]

... (list goes on)

Many of these processes are process names that you only see in a Linux system. This means that my Lexmark x4690 is running some kind of embedded Linux distribution in order to receive printing jobs and host an embedded web server that can be used to manage and configure the printer over the network. Assuming that my printer is running a Linux-based firmware, I went on Lexmark's website to get the source code for it. I couldn't even find the firmware in its binary form, and even less the source code for it. The firmware revision for my printer is NET.AR.N204. The Linux kernel and most of the software that runs on Linux is covered under the GNU General Public License (GPL) and one of the conditions of that license is that modified versions of GPL-covered source code must remain in GPL, and that the modified source code must be available.

I first tried contacting the Lexmark technical support, but the person who replied to my email misunderstood me and thought I was asking if there was a Linux driver available for the printer. I replied, making it clearer that I am talking about the firmware (the embedded operating system that the printer is running) and not any kind of software that is installed on my computer in order to use the printer. I am waiting for an answer, but I thought I might not be talking to the right person, so this is why I am emailing you. If you feel like my email has ended up in the wrong mailbox, feel free to forward it to somebody else that would know more about it.

I want to get to the right person in order to either get the proof that my printer isn't running Linux-based firmware, or if it is running a Linux-based firmware, I want Lexmark to comply to the GPL (a condition for Lexmark using GPL-covered code) and to distribute the source code for the firmware to customers.

A similar case has been seen a couple of years ago when Linksys customers noticed that the WRT54G routers were running an embedded Linux distribution, but that the source code for it was not available. The issue got solved when Linksys released the source code for all of its GPL-covered software. (here: http://www.linksysbycisco.com/US/en/supportgplcode).

If you are not familiar with the GPL license, here is the version of the GPL that covers the Linux kernel:

http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt

Thanks a lot for your time,

-Marc-Andre

0

Share this post


Link to post
Share on other sites

We're making progress! :):

Dear MarcAndre,

Thank you for continuing using our electronic support to assist you with this issue,and I hope my suggestions will provide a resolution.

Here is your Service Request # 1-1473012341

Thanks you for explaining all these information to us. But the firmware which you are actually referring to, is the firmware for the network card which is built into the printer. This printer has two firmwares on it, Printer Firmware and Internal Network Card (INA) Firmware. So, are you looking for the source code of the printer or the network card?

If you have any more questions or concerns, please contact me at your convenience and I will be happy to assist you. (If I am not available, another representative may reply to your request.)

To respond, please select "Reply" in your e-mail software, and be sure that the past e-mail is included in this reply.

[AOL Users: In order to include the previous e-mail, you must highlight it with your mouse when you are replying.]

If your e-mail client automatically deletes prior e-mail thread information, it will cause a delay while we look up your support history. If this is the case you may want to save the old e-mails as attachments and attach them to the current e-mail.

Sincerely,

Ranjith

0

Share this post


Link to post
Share on other sites

And my next reply:

Dear Ranjith,

Thanks a lot for your reply. I am talking about the firmware that supports the embedded web server, the print server, as well as the other services that run on the printer. I guess that this would be the printer firmware, and not the internal network card firmware. If the internal network code firmware is using anything licensed under the GPL then the source code should also be made available, but I can't examine the firmware close enough to be able to tell if it is (my affirmations being based on the LXK prompt on port 10000 that provides a command to list the currently running processes, with many of them being known Linux processes). Closer examination of the firmware in its binary form would enable me to know more about potential GPL software being used, but that firmware (and its source code) is unavailable for download from Lexmark's website. So, I am looking for the source code of the printer firmware.

Thanks a lot for your understanding,

-Marc-Andre

0

Share this post


Link to post
Share on other sites
This printer has two firmwares on it, Printer Firmware and Internal Network Card (INA) Firmware.

Smug Grin Ensues.... ;-)

0

Share this post


Link to post
Share on other sites

Hi Aghaster,

I would suspect that it is the network card firmware which handles the network/wifi connections and that it passes the data the the printer firmware in a distilled version.

This would mean that you end goal of printer support could be broken into two parts:

1) A 'output driver' which would send appropriately formatted data through the ether to the printer. For example this could be used by a windows printer printing through a CUPS shared printer.

2) A 'printer driver' that would be able to produce formatted data for the above. It is highly likely that this would be a similar format to other Lemark printers, as engineers tend to be lazy buggers.

You might be able to infer some information by using the 'dump to file' mode of CUPS where print data is just dropped onto a file on disk rather than sent to the printer. You can then share this 'CUPS' printer with a windows box and tell the windows machine that it is a raw queue for a Lemark x4690 printer. The windows printer should then produce the nicely formated data for the printer.

There's a little write up on how to do this here (yes, I've been doing some hacking on a label printer using the same technique):

http://etc.nkadesign.com/Printers/QL550LabelPrinterRaw

Mungewell.

0

Share this post


Link to post
Share on other sites
Hi Aghaster,

I would suspect that it is the network card firmware which handles the network/wifi connections and that it passes the data the the printer firmware in a distilled version.

This would mean that you end goal of printer support could be broken into two parts:

1) A 'output driver' which would send appropriately formatted data through the ether to the printer. For example this could be used by a windows printer printing through a CUPS shared printer.

2) A 'printer driver' that would be able to produce formatted data for the above. It is highly likely that this would be a similar format to other Lemark printers, as engineers tend to be lazy buggers.

You might be able to infer some information by using the 'dump to file' mode of CUPS where print data is just dropped onto a file on disk rather than sent to the printer. You can then share this 'CUPS' printer with a windows box and tell the windows machine that it is a raw queue for a Lemark x4690 printer. The windows printer should then produce the nicely formated data for the printer.

There's a little write up on how to do this here (yes, I've been doing some hacking on a label printer using the same technique):

http://etc.nkadesign.com/Printers/QL550LabelPrinterRaw

Mungewell.

Yeah, you are probably right, it makes more sense that way. I'll wait to see his reply. I'll take a look at the dump to file mode of CUPS, it would probably be a good thing to reverse engineer the HBN3 protocol (the network printing protocol used by Lexmark printers).

0

Share this post


Link to post
Share on other sites
1) A 'output driver' which would send appropriately formatted data through the ether to the printer. For example this could be used by a windows printer printing through a CUPS shared printer.

So HBN3 seems to mean 'Lexmark "Host Based Networking"', of which there is also a HBN1 variant. Didn't find any more info though....

Mungewell.

0

Share this post


Link to post
Share on other sites
1) A 'output driver' which would send appropriately formatted data through the ether to the printer. For example this could be used by a windows printer printing through a CUPS shared printer.

So HBN3 seems to mean 'Lexmark "Host Based Networking"', of which there is also a HBN1 variant. Didn't find any more info though....

Mungewell.

Thanks for the definition of the acronym :P I've seen HBN3 referred at some places on Lexmark's website, but it seems to be a proprietary protocol.

By the way, I just got a reply from the person for media contacts:

Marc,

Thank you for contacting us about your product purchase. I have done some investigation in regards to your statements and found that the printer and the printers internal network card are coded using a Linux based set of codes. The gpl codes you mentioned are available on our ftp site and can be downloaded at this location: ftp.lexmark.com/swlab/gpl/index.html

Please understand that although the product itself is running Linux based code on board for its internal functions, we do not have print drivers for the X4600 series printer to print from a Linux system. As of today, we market two inkjet models with Linux drivers available on our website; those are the Z2300 series and the X2600 series.

I am sincerely sorry that this information was not provided to you sooner. I will work our inkjet teams to better understand this situation should other customers inquire.

Thanks,

Daniel Lavoie

Lexmark Inkjet Technical Support Lead

They're giving the source code! :D

For my printer model: ftp.lexmark.com/swlab/gpl

For all other source code from Lexmark, it seems to all be in this place: ftp.lexmark.com

0

Share this post


Link to post
Share on other sites

I've just sent a reply, in order to try to make them put a link to the source code on their website:

Hi Daniel,

Thanks a lot for your quick understanding of my situation. This situation could have been easily avoided if there was a link to the source code provided on Lexmark's website, so that when people search for their printer model, they can easily find that the printer is using gpl-covered code and a link to the source code. I was unable to find anything that would even mention that the printer is using gpl-covered code anywhere in the documents that came with my printer and on Lexmark's website. Customers looking for the source code should be able to easily find confirmation that their printer is using gpl-covered code, and also where to get the source code that they have the right to obtain. A good example of access to gpl code made easy is Linksys' GPL code center. If it wasn't of that LXK prompt on port 10000, I would have never suspected that my printer is running Linux, and I wouldn't have emailed you in order to (possibly) get the source code, based on my assumptions.

The GPL (http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt) says something about it in section 3 b ) :

3. You may copy and distribute the Program (or a work based on it,

under Section 2) in object code or executable form under the terms of

Sections 1 and 2 above provided that you also do one of the following:

a) Accompany it with the complete corresponding machine-readable

source code, which must be distributed under the terms of Sections

1 and 2 above on a medium customarily used for software interchange; or,

b ) Accompany it with a written offer, valid for at least three

years, to give any third party, for a charge no more than your

cost of physically performing source distribution, a complete

machine-readable copy of the corresponding source code, to be

distributed under the terms of Sections 1 and 2 above on a medium

customarily used for software interchange; or,

c) Accompany it with the information you received as to the offer

to distribute corresponding source code. (This alternative is

allowed only for noncommercial distribution and only if you

received the program in object code or executable form with such

an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for

making modifications to it. For an executable work, complete source

code means all the source code for all modules it contains, plus any

associated interface definition files, plus the scripts used to

control compilation and installation of the executable. However, as a

special exception, the source code distributed need not include

anything that is normally distributed (in either source or binary

form) with the major components (compiler, kernel, and so on) of the

operating system on which the executable runs, unless that component

itself accompanies the executable.

If distribution of executable or object code is made by offering

access to copy from a designated place, then offering equivalent

access to copy the source code from the same place counts as

distribution of the source code, even though third parties are not

compelled to copy the source along with the object code.

In other words, you can either distribute the source code with the printer, or accompany the printer with a written offer on where to obtain the source code from. As the source code is not provided with the printer, and that there is no mention of where the source code can be obtained either in the documents that come with the printer or on Lexmark's website, section 3 of the GPL isn't respected as it should.

Would it be possible to add a link to the source code on Lexmark's website?

Thanks for your time,

-Marc-Andre

0

Share this post


Link to post
Share on other sites

And a reply from them:

Marc,

I will forward this to our legal and web teams for evaluation and

consideration. Thank you again for contacting us.

Thanks,

Daniel

My new reply, trying to get other stuff:

Hi Daniel,

Thanks for helping me with this. Can you email me when there's anything new about this?

On a different matter, I know that Lexmark provides no Linux driver for this printer, but I was wondering if Lexmark considered releasing the documentation that would be necessary in order to let people from the CUPS project write a driver on their own. For the x4690, documentation on the HBN3 protocol would be very useful in order to write a driver to use the printer over the network. It would cost nothing to Lexmark to release the information, and Linux users would be happy about it. Do you think there's something you could do about it?

Thanks for your time and efforts,

-Marc-Andre

We'll see what it gives.

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now