[linux-dvb] Extract tool for xc3028 firmware
Mauro Carvalho Chehab
mchehab at infradead.org
Mon Dec 31 15:05:22 CET 2007
On Mon, 31 Dec 2007 03:34:56 -0200
Mauro Carvalho Chehab <mchehab at infradead.org> wrote:
> I've just added an extraction tool to allow retrieving xc2028/3028 firmwares
> from HVR-12x0 windows file.
> In order to use, you need to:
> 1) Download the windows driver with something like:
> wget http://www.steventoth.net/linux/xc5000/HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip
> 2) Extract the file hcw85bda.sys from the zip into the current dir:
> unzip -j HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip Driver85/hcw85bda.sys
> 3) run the script:
> 4) copy the generated file:
> cp xc3028-v27.fw /lib/firmware
> I've also added the tool at linux/Documentation/video4linux.
> This firmware is known to work with most xc2028/xc3028 devices. Please test.
Sorry for a big message like this. Only after sending, I realized that the
extracting tool were so badly optimized.
Anyway, I've optimized the script. It has now only 14Kb. It basically writes
the header for each firmware, with the firmware type, supported standard IDs
and its size. Then, it copies the entire firmwares from HVR driver. Something
# Firmware 9, type: STD FW MTS (0x00000004), id: PAL/BG A2/B (0000000200000007), size: 169
write_le32(4); # Type: MTS (0x00000004)
write_le64(8589934599); # Id: PAL/BG A2/B (0000000200000007)
write_le32(169); # Size: 169
write_hunk_fix_endian(865592, 169); # Get the firmware from position 865592
Since ID has 64 bits, I suspect that this perl script works fine only on 64
bit kernels. Probably, we need to use Math::BigInt for this to work on 32 bit
More information about the linux-dvb