Talking the other day with Caster about his problems with his own DVD burner, I’ve started wondering about that procedure; to be honest I never thought about it because with my current NEC burner I had no problem at all.
While most modern mainboards allows BIOS update without any Windows or DOS system, not even a boot diskette, by using a subsystem inside the BIOS itself and reading the upgrade image from a floppy or a CD (in my case the latter because I don’t have any floppy disk drive on Enterprise), almost every burner, as far as I can see, requires to run some program under Windows.
For my own model, I found an unofficial tool for Linux x86, proprietary and closed source, designed to load modified firmware images, in a notorious site for CD crackers (reason why I won’t link it here right away); unfortunately you actually has to trust the program not to do anything evil, as the page actually suggest you to run it as root. It also requires a binary image of the firmware to upgrade to, and NEC only provides the upgrading tool with the firmware inline.
What I was thinking was to find exactly how the cdfreaks tool work, and then reimplement it, eventually on top of libcdio, so that we had a FLOSS tool to upgrade NEC drives that works on any platform, not only x86. Unfortunately the license of that tool disallows me from decompiling or disassembling it, although it doesn’t speak about dynamic tracing.
Through strace I discovered that the tool uses
ioctl() calls to send commands to the device to dump the firmware it has loaded; the problem is to understand those calls: there doesn’t seem to be any way to trace those calls in detail, and as the tool is statically linked, it’s not possible to just preload a library to hook those calls out.
There is one more problem: reverse engineering the tool will be a risk for the hardware, bricking the device is a more than likely result. So I tried the unlikely way out first and sent a mail to NEC asking them the specs of the device upgrade procedure. I don’t count on receiving an answer, kinda obviously.
If other users have NEC burners, and think implementing burners’ firmware upgrades with FLOSS is important, let me know, I’ll use that to consider the usefulness of such a task.
And for those wondering, I’m currently attaching labels to envelopes, that’s why I’m not developing anything particular. I have plans though, and I’ll try to follow them more closely in the next days, and blog about them more (to allow myself to blog more easily and on spare time, I’m currently using my E61 to email the entry to myself and post it as soon as I reach one of my terminals).
This really has nothing to do with this post, but I was wondering if you were still working on gstreamer. I found your posts on the work you did on gstreamer very interesting and I was curious if you were still improving on it?
Uh, I never actually worked on GStreamer in my life; I didn’t have it merged in my system in the last two to three years at all.My choice of multimedia framework is xine, and yes, I’m still working on it, even if I took May as a break waiting for Matt Messier to complete his work on overhauling the build system; I’ll be testing it out tomorrow hopefully; after that I’ll see to merge his branch into the main xine-lib-1.2 branch, and start taking care of a few issues I wanted to fix as soon as possible.So if you’re looking forward to a new post about xine fixes, you should be able to get one before next week.
Sorry, yes I meant xine.
Diego, tracing ioctls is a common job in development of open source graphics drivers. There are several tools that might help you. Look at http://dri.freedesktop.org/… for details.Bye, Christoph Brill (egore)
FreeDesktop’s tools seems only to be used for memory-mapped IO, rather than generic @ioctl()@ tracing. At least I can’t find any tool that seems useful to do this :/
Do not believe that kind of licenses.No license can forbid you from decompiling a program. Copyright-based licenses deal with acquisition and redistribution of things. (Signed) Contracts deal with the usage of things. And even in a contract, that kind of clause cannot be enforced, “clausola vessatoria” we say in Italian 😉http://www.chillingeffects….http://www.eff.org/wp/eula.php