Browse files

Drop RBU support

Ever since switching BIOS from legacy to UEFI in client the RBU support in
libsmbios has not worked properly.  The future direction for supporting
BIOS flash in Linux on client will not be through fwupd.

Signed-off-by: Mario Limonciello <>
  • Loading branch information...
superm1 committed Aug 23, 2016
1 parent d0a2b37 commit 0a6ba645725a10f78c19f8dde73550ab0093c21c
Showing with 269 additions and 6,010 deletions.
  1. +0 −126 doc/bios_hdr_file.txt
  2. +0 −72 doc/dellBiosUpdate.4
  3. +0 −78 doc/exe-dellBiosUpdate.txt
  4. +0 −240 doc/old_news.txt
  5. +0 −147 doc/
  6. +0 −1 po/
  7. +4 −150 po/de.po
  8. +4 −150 po/en.po
  9. +6 −148 po/en@boldquot.po
  10. +105 −150 po/en@quot.po
  11. +112 −157 po/es.po
  12. +4 −150 po/fr.po
  13. +4 −150 po/it.po
  14. +4 −150 po/ja.po
  15. +4 −150 po/ko.po
  16. +4 −146 po/libsmbios.pot
  17. +4 −150 po/nl.po
  18. +4 −150 po/zh_CN.po
  19. +4 −150 po/zh_TW.po
  20. +3 −17 src/bin/
  21. +0 −155 src/bin/biosacpi.c
  22. +0 −269 src/bin/dellBiosUpdate.cpp
  23. +0 −187 src/bin/smbios-rbu-bios-update
  24. +0 −6 src/cppunit/
  25. +0 −1 src/cppunit/
  26. +0 −352 src/cppunit/testRbu.cpp
  27. +0 −91 src/cppunit/testRbu.h
  28. BIN src/cppunit/test_data/rbu/MLB-000208.HDR
  29. BIN src/cppunit/test_data/rbu/MLB-000209.HDR
  30. BIN src/cppunit/test_data/rbu/MLB-990209.HDR
  31. BIN src/cppunit/test_data/rbu/bad_hdr.hdr
  32. +0 −18 src/cppunit/test_data/rbu/bios-version-rules.txt
  33. +0 −1 src/cppunit/test_data/rbu/cmos.dat
  34. +0 −1 src/cppunit/test_data/rbu/idbyte.dat
  35. +0 −1 src/cppunit/test_data/rbu/smbios.dat
  36. +0 −1 src/cppunit/test_data/rbu/sysstr.dat
  37. BIN src/cppunit/test_data/rbu/system_bios_0x1028_0x0152_version_a09.hdr
  38. BIN src/cppunit/test_data/rbu/system_bios_0x1028_0x0152_version_a10.hdr
  39. BIN src/cppunit/test_data/rbu/system_bios_0x1028_0x0152_version_p09.hdr
  40. BIN src/cppunit/test_data/rbu/system_bios_0x1028_0x0152_version_x09.hdr
  41. +0 −76 src/cppunit/test_data/rbu/testInput.xml
  42. +0 −160 src/include/smbios/DellRbu.h
  43. +0 −141 src/include/smbios/RbuLowLevel.h
  44. +0 −4 src/libsmbios_c++/
  45. +0 −417 src/libsmbios_c++/rbu/RbuHdr.cpp
  46. +0 −86 src/libsmbios_c++/rbu/RbuImpl.h
  47. +0 −528 src/libsmbios_c++/rbu/Rbu_Linux.cpp
  48. +0 −198 src/libsmbios_c++/rbu/Rbu_Solaris.cpp
  49. +0 −1 src/libsmbios_c/TODO.txt
  50. +3 −4 src/py-cli/
  51. +0 −2 src/python/
  52. +0 −2 src/python/libsmbios_c/
  53. +0 −139 src/python/libsmbios_c/
  54. +0 −537 src/python/libsmbios_c/
@@ -1,126 +0,0 @@
// vim:expandtab:autoindent:tabstop=4:shiftwidth=4:filetype=txt:
/*! \page bios_hdr Dell BIOS .HDR files
\subsection hdr_tool Scripted extraction of BIOS .HDR files
There is now an automated tool available to automate the process of extracting
.HDR files from the BIOS update executables that you can download from This tool is called "extract_hdr" and is contained in the
firmware-tools RPM. You can install this RPM from the libsmbios yum repository
by following the instructions here:
\li \ref yum.
or, for quick, scripted, setup:
\li <a href="">Bootstrap script for
quick setup of libsmbios repository</a>
After setting up the libsmbios
yum repository, you can install the firmware tools rpm by running "yum install
It is _HIGHLY_ recommended that you install wine. It is not a strict
dependency, as the extraction methods that use wine will be skipped if wine is
not installed. But, if you have wine installed, you can extract more types of
BIOS images. The downside is that some BIOS images may cause wine to hang. If
this happens, kill the wine and wineserver processes. The extraction process
should not take more than 5-10 seconds. If it takes significantly longer, it
is likely that wine has hung. If you choose to script BIOS extractions in an
automated process, it is recommended that you run a reaping program that
checks for wine processes that are older than 10 seconds and kills them
After you have the tools installed, you can extract a single header like this:
[user@build ~]$ extract_hdr -i sab-a01.exe -o test_output/
attempt extract: /home/user/sab-a01.exe
good: extractHdrFromPrecisionWindowsExe
[user@build ~]$ find test_output/
[user@build ~]$ ll test_output/hdr/
total 1064
-rw-rw-r-- 1 user user 521 Jan 17 23:13 config.ini
lrwxrwxrwx 1 user user 41 Jan 17 23:13 system_bios_0x1028_0x00da_LATEST.hdr -> system_bios_0x1028_0x00da_version_a01.hdr
-rw-rw-r-- 1 user user 524380 Jan 17 23:13 system_bios_0x1028_0x00da_version_a01.hdr
lrwxrwxrwx 1 user user 41 Jan 17 23:13 system_bios_0x1028_0x00df_LATEST.hdr -> system_bios_0x1028_0x00df_version_a01.hdr
-rw-rw-r-- 1 user user 524380 Jan 17 23:13 system_bios_0x1028_0x00df_version_a01.hdr
[user@build ~]$
Note the creation of the hdr/ subdirectory, as well as symlinks corresponding
to the latest BIOS release for each platform. These can come in handy.
\subsection hdr_tool_multiple Extraction of multiple .HDR files at the same time
You do not have to use the "-i input_file" option to specify a single file to
extract. If you create a subdirectory under the output directory (specified
with the '-o' option), and drop any number of BIOS executables, they will all
automatically be extracted if you do not give the '-i' option. Note that the
directory name must be >3 chars, as 3-char dir names are reserved for internal
use by the extraction tool.
For example:
[user@build ~]$ mkdir test_output
[user@build ~]$ mkdir test_output/extract_these_please
[user@build ~]$ mv sab-a01.exe sab-a02.exe WS380A02.EXE WS380A04.EXE test_output/extract_these_please/
[user@build ~]$ extract_hdr -o test_output/
attempt extract: /home/user/test_output/extract_these_please/WS380A02.EXE
good: extractHdrFromPrecisionWindowsExe
attempt extract: /home/user/test_output/extract_these_please/WS380A04.EXE
good: extractHdrFromPrecisionWindowsExe
attempt extract: /home/user/test_output/extract_these_please/sab-a01.exe
good: extractHdrFromPrecisionWindowsExe
attempt extract: /home/user/test_output/extract_these_please/sab-a02.exe
good: extractHdrFromPrecisionWindowsExe
[user@build ~]$ find test_output/
[user@build ~]$ ls -l test_output/hdr/
total 3036
-rw-rw-r-- 1 user user 1330 Jan 17 23:30 config.ini
lrwxrwxrwx 1 user user 41 Jan 17 23:30 system_bios_0x1028_0x00da_LATEST.hdr -> system_bios_0x1028_0x00da_version_a02.hdr
-rw-rw-r-- 1 user user 524380 Jan 17 23:30 system_bios_0x1028_0x00da_version_a01.hdr
-rw-rw-r-- 1 user user 524380 Jan 17 23:30 system_bios_0x1028_0x00da_version_a02.hdr
lrwxrwxrwx 1 user user 41 Jan 17 23:30 system_bios_0x1028_0x00df_LATEST.hdr -> system_bios_0x1028_0x00df_version_a02.hdr
-rw-rw-r-- 1 user user 524380 Jan 17 23:30 system_bios_0x1028_0x00df_version_a01.hdr
-rw-rw-r-- 1 user user 524380 Jan 17 23:30 system_bios_0x1028_0x00df_version_a02.hdr
lrwxrwxrwx 1 user user 41 Jan 17 23:30 system_bios_0x1028_0x01a8_LATEST.hdr -> system_bios_0x1028_0x01a8_version_a04.hdr
-rw-rw-r-- 1 user user 458844 Jan 17 23:30 system_bios_0x1028_0x01a8_version_a02.hdr
-rw-rw-r-- 1 user user 458844 Jan 17 23:30 system_bios_0x1028_0x01a8_version_a04.hdr
[user@build ~]$
@@ -1,72 +0,0 @@
'\" te
.\" Copyright 2010 Dell
.\"|[amp ]
.\"|T Copyright (c) 1983 Regents of the University of California\&. All rights reserved\&. The Berkeley software License Agreement specifies the terms and conditions for redistribution\&. Copyright (c) 2003, Sun Microsystems, Inc\&. All Rights Reserved Portions Copyright (c) 1992, X/Open Company Limited All Rights Reserved
.TH dellBiosUpdate 4 "01 Aug 2010" "SunOS 5.10" "User Commands"
dellBiosUpdate \- Update Dell BIOS
\fBdellBiosUpdate\fR [--\fBhdr\fR | -\fBf\fR] <file> [--\fBupdate\fR | -\fBu\fR]\fI
\fBdellBiosUpdate\fR [--\fBhdr\fR | -\fBf\fR] <file> [--\fBtest\fR | -\fBt\fR]\fI
\fBdellBiosUpdate\fR [--\fBhdr\fR | -\fBf\fR] <file> [--\fBinfo\fR | -\fBi\fR]\fI
\fBdellBiosUpdate\fR [--\fBcancel\fR | -\fBc\fR]\fI
The \fBdellBiosUpdate\fR utility will update the BIOS on a Dell system. The utility does not update the BIOS directly, but causes a BIOS update to occur on the next reboot\&.
The following options are supported:
.ne 2
\fB-\fBf\fR \fR
.in +9n
Specifies the .HDR file to use for the BIOS Update\&. See below for how to obtain the .HDR file for the system\&.
.sp 1
.in -9n
.ne 2
\fB-\fBu\fR \fR
.in +9n
Update the BIOS. Requires the -f <file> header file to be specified\&.
.sp 1
.in -9n
.ne 2
\fB-\fBi\fR \fR
.in +9n
Display information about the BIOS hdr file. Requires the -f <file> header file to be specified\&.
.sp 1
.in -9n
.ne 2
\fB-\fBc\fR \fR
.in +9n
Cancel pending BIOS update\&.
.sp 1
.in -9n
The dellBiosUpdate utility must be run as the superuser\&.
\fBObtaining BIOS .hdr files\fR
.in +9n
The BIOS update utility does not come with the required BIOS .hdr files for the system. These .hdr files must be obtained from the website.
.in -9n
@@ -1,78 +0,0 @@
// vim:expandtab:autoindent:tabstop=4:shiftwidth=4:filetype=txt:
/*! \page dellBiosUpdate Documentation for dellBiosUpdate executable
\section NAME
\section SYNOPSIS
The dellBiosUpdate executable is used to stage BIOS updates. It works across
all Dell platforms that the libsmbios maintainer is aware of. The input to the
dellBiosUpdate executable is a Dell BIOS header (.HDR) file. The instructions
for obtaining this file are below. This update relies on the "dell_rbu" kernel
driver, first available in Linux 2.6.14. This executable supports both
packet-based(*) and the older monolithic RBU methods. For more information on
installing the dell_rbu driver, see here: \ref dell_drivers
*Note: Packet RBU is implemented but untested at this time. Therefore, it is disabled by default.
$ dellBiosUpdate
Usage: dellBiosUpdate [options]
--help, -h Displays this information
--hdr, -f <args> BIOS update file (.HDR file)
--info, -i Dump BIOS update .HDR file info. Does not perform BIOS update
--cancel, -c Cancel a previously-scheduled BIOS update
--update, -u Schedule BIOS update
--test, -t Test this HDR file to see if it is appropriate for this system.
--auto_detect Auto-detect update type
--force_packet Force update type to be packet-based
--force_mono Force update type to be monolithic-based
--override_sysid Attempt BIOS update even if .HDR file does not appear to match this system
--override_bios_version Attempt BIOS update even if .HDR file is older than current system BIOS
--version, -v Display libsmbios version information
\subsection th Theory of operation for RBU
RBU works by separating out the specific code that performs that BIOS update
from the data of the BIOS update. The code that does the actual BIOS update is
stored in BIOS, while the new BIOS data is stored as a header (.hdr) file.
This simplifies BIOS updates because the programming of flash and handling of
myriad flash formats and vendors is simplified.
The OS-specific part of RBU is simplified. The only operation that needs to
happen in the OS is that the BIOS needs to be staged in physical RAM. In the
older "monolithic" method, the entire .hdr file is staged in contiguous
physical RAM. The newer "packet" method allows the OS to break the image up
into similarly-sized packets, each with a header and data. This eases the
requirement for physically contiguous physical RAM. The system is then
rebooted and the existing system BIOS finds the BIOS update and does the
flash programming.
The BIOS uses a bit in CMOS as a flag on bootup to indicate that it should
perform an RBU operation. The OS-based BIOS update program sets this CMOS bit
before rebooting to flag the BIOS that the update needs to be performed.
In this model, the "dell_rbu" Linux kernel driver performs the job of
allocating contiguous physical memory. The dellBiosUpdate executable transfers
the header file to dell_rbu and sets the CMOS RBU flag.
For more information on obtaining BIOS .HDR files, see \ref bios_hdr
\section ERRORS
\section SEE ALSO
Oops, something went wrong.

0 comments on commit 0a6ba64

Please sign in to comment.