[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:


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 

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 

I'll see about getting the pvrusb2 documentation updated with the above 



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