[pvrusb2] OnAir firmware extraction for the pvrusb2 driver
Mike Isely
isely at isely.net
Wed Jan 28 20:18:17 CST 2009
I have some good news and some not-so-good news.
First, the good news. I've updated fwextract.pl to include new
signatures that will permit it to extract firmware from various OnAir
driver files. Specifically this includes the firmware contained within
CR_Drv3203.zip currently available on the Autumnwave site. The next
pvrusb2 snapshot will include the updated extractor, however you can get
the update immediately with this link:
http://www.isely.net/downloads/fwextract.pl
The above link always points to the latest version of fwextract.pl and
is useful for people using the pvrusb2 driver from a source other than a
driver snapshot.
So what's the bad news? Autumnwave is shipping their driver package in
a compressed format that can't be dissected with any Linux tools (that I
know of). Basically what they are doing is stuffing all the driver
files into a WISE-style self-extracting archive (called setup.exe).
Since the data is compressed there's no way for fwextract.pl itself to
'see' inside the archive. You must therefore first unpack the archive
before running the extractor. I have yet to find a Linux tool that can
take apart a WISE archive. Thus you need a Windows system nearby to at
least run the self-extracting setup.exe so you can grab the resulting
juicy bits.
Confusing matters further, for downloaded drivers Autumwave is actually
taking that setup.exe and packing THAT into a zip file. It's the only
thing in the zip file. So you have to (1) unzip the zip file (trivial
to do in Linux), then (2) you need to run setup.exe and let it go at
least far enough that it unpacks its payload. Then you can (3) copy the
payload into a convenient spot and run fwextract.pl on it to finally get
at the encoder firmware.
One more wrinkle here - the setup.exe deposits its payload into a funny
spot. It won't be the current directory and it won't be the Windows
temp area either. You'll need to look for it - read on... Here's what
I did:
Step 0. If you can do this in a vmware virtual machine, create a
snapshot of the guest environment (so you can roll it back).
Step 1. Put the setup.exe onto any Windows machine. (I used a Win2K
vmware virtual machine but I imagine anything with Microsoft Windows of
some variant will probably work.) The machine does NOT need any
hardware connected, i.e. you don't need to have the OnAir device
connected or available.
Step 2. Run setup.exe. Hit NEXT when it warns you to disconnect the
device first.
Step 3. Open an explorer window and look in C:\ (leave the setup program
running). Look for a Sasem or OnAirSolutions directory. Hopefully you
will see one or the other. That's the archive payload. Copy the entire
contents off to a safe place back on your Linux system. At this point
you can abort the installation. If neither directory is present, then
answer the next setup.exe prompt and then the directory should
DEFINITELY be present (unfortunately in the next step it's going to
start sprinkling bits of itself into your system). Then kill the
installation.
Step 4. If you're doing this in a vmware virtual machine, now is a good
time to roll back to your saved snapshot, thus erasing all evidence of
what you had to do to get that driver package to crack open...
Why anyone would want to zip up an already-packed archive is a mystery -
especially since it's the only thing in the zip file! Actually, it's a
completely beyond me why Windows systems have to implement 35 different
incompatible archive file formats when the concept of a self-extracting
archive was solved over 15 years ago with the well-documented open zip
format! Unfortunately right now this means you still need a Windows
machine to get at the driver files containing the magic encoder
firmware. Perhaps Autumnwave can be convinced to switch to standard zip
files or maybe a way will be found to make the encoder firmware directly
available.
I'll see about getting the pvrusb2 documentation updated with the above
information.
-Mike
--
Mike Isely
isely @ pobox (dot) com
PGP: 03 54 43 4D 75 E5 CC 92 71 16 01 E2 B5 F5 C1 E8
More information about the pvrusb2
mailing list