printf("%s\t", file->ucode_version);
if (strlen(file->ucode_version) < 8) printf("\t");
+ printf("%s\t", file->id);
+
printf("%s\n", file->md5);
}
print_banner();
printf("\nExtracting firmware is possible "
- "from these binary driver files:\n\n");
+ "from these binary driver files.\n"
+ "The <ID> column shows the unique identifier string "
+ "for your firmware.\nYou must select the firmware with the "
+ "same ID as printed by the kernel driver on modprobe.\n"
+ "Note that only recent drivers print such a message on modprobe.\n"
+ "Please read http://linuxwireless.org/en/users/Drivers/b43#devicefirmware\n\n");
printf("<driver>\t"
"<filename>\t\t"
"<microcode>\t"
+ "<ID>\t"
"<MD5 checksum>\n\n");
/* print for legacy driver first */
- for (i = 0; i < FILES; i++)
+ for (i = 0; i < ARRAY_SIZE(files); i++)
if (file_ok(&files[i]) && !(files[i].flags & FW_FLAG_V4))
print_file(&files[i]);
- for (i = 0; i < FILES; i++)
+ for (i = 0; i < ARRAY_SIZE(files); i++)
if (file_ok(&files[i]) && files[i].flags & FW_FLAG_V4)
print_file(&files[i]);
printf("\n");
signature[8], signature[9], signature[10], signature[11],
signature[12], signature[13], signature[14], signature[15]);
- for (i = 0; i < FILES; ++i) {
+ for (i = 0; i < ARRAY_SIZE(files); i++) {
if (file_ok(&files[i]) &&
strcasecmp(md5sig, files[i].md5) == 0) {
printf("This file is recognised as:\n");
+ printf(" ID : %s\n", files[i].id);
printf(" filename : %s\n", files[i].name);
printf(" version : %s\n", files[i].ucode_version);
printf(" MD5 : %s\n", files[i].md5);
static void print_usage(int argc, char *argv[])
{
print_banner();
- printf("\nUsage: %s [OPTION] [driver.sys]\n", argv[0]);
+ printf("\nA tool to extract firmware for a Broadcom 43xx device\n");
+ printf("from a proprietary Broadcom 43xx device driver file.\n");
+ printf("\nUsage: %s [OPTION] [proprietary-driver-file]\n", argv[0]);
printf(" --unsupported "
"Allow working on extractable but unsupported drivers\n");
printf(" -l|--list "
"Print b43-fwcutter version\n");
printf(" -h|--help "
"Print this help\n");
- printf("\nExample: %s bcmwl5.sys\n"
- " to extract the firmware blobs from bcmwl5.sys\n",
+ printf("\nExample: %s -w /lib/firmware wl_apsta.o\n"
+ " to extract the firmware blobs from wl_apsta.o and store\n"
+ " the resulting firmware in /lib/firmware\n",
argv[0]);
}