summaryrefslogtreecommitdiff
path: root/README
blob: da8aa2fd9dfc98f7f422fdd61ab4e3137dba7122 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
** INTRODUCTION **

Dmidecode is a tool for dumping a computer's DMI (some say SMBIOS) table
contents in a human-readable format. This table contains a description of the
system's hardware components, as well as other useful pieces of information
such as serial numbers and BIOS revision. Part of its code can be found in
the Linux kernel, because DMI data may be used to enable or disable specific
portions of code depending on the hardware vendor. Thus, dmidecode is mainly
used to detect system "signatures" and add them to the kernel source code
when needed.

Apart from that, dmidecode is only scarcely used. It is said to be used as a
back-end by some hardware detection programs, but DMI data have proven to be
too unreliable to be blindly trusted.


** INSTALLATION **

Dmidecode's home page is hosted on Savannah:
  https://savannah.nongnu.org/projects/dmidecode/
You will find the latest version (including CVS) there, as well as fresh news
and other interesting material, such as a list of related projects.

There's no configure script yet, so simply run "make" to build dmidecode, and
"make install" to install it. You also can use "make uninstall" to remove
all files you installed. By default, files are installed in /usr/local but
you can change this behavior by editing the Makefile file and setting PREFIX
to wherever you want. You may change the C compiler and the compilation
flags as well.

Four parameters can be set in the Makefile to make dmidecode work on
non-i386 systems. The first two (BIGENDIAN and ALIGNMENT_WORKAROND) should
be used if your system uses the big endian byte ordering (Motorola) or
doesn't support unaligned memory accesses, respectively. For example,
compiling for a SPARC processor would require both. The third parameter
(TABLE_LITTLEENDIAN) is there for debugging purposes only and shouldn't be
set by users. And finally, the __IA64__ parameter should be set for
compilation on IA-64 systems. See the COMMON PROBLEMS section below for
more details about compilation on IA-64 systems.


** DOCUMENTATION **

There's no man page nor info page at this time. I don't know if there ever
will be one. I don't really feel a need for it.

This program was first written for Linux, and has since be reported to work
on FreeBSD as well.

For an history of the changes made to dmidecode, see the CHANGELOG file.

If you need help, your best chances are to visit the web page (see the
INSTALLATION section above) or to get in touch with the developpers
directly. Have a look at the AUTHORS file and contact one of the maintainers
(or less likely someone else, but you'd need to have a good reason for doing
so).

The most common problems are detailed in the COMMON PROBLEMS section right
below.


** COMMON PROBLEMS **

MODEL SPECIFIC ISSUES

Dmidecode used not to work on IBM T-series laptops and on Fujitsu-Siemens
S-series laptops under Linux. This was due to the fact that the DMI table
is at a memory location we couldn't seem to reach through /dev/mem. Although
I believe this reveals a problem in the Linux kernel, which should be fixed,
a workaround was found by Smith Chad. See the IA-64 subsection below for
more details. I posted about this problem on the LKML but did not have
any answer.

IA-64

Dmidecode used to have problems on IA-64 systems. The first reason for
this is that dmidecode accesses the DMI table through /dev/mem, and reading
this file on an IA-64 system sometimes leads to a crash. A second reason is
that the method for locating the above-mentioned table differs on IA-64
(compared to IA-32), so dmidecode was likely to miss the table entry point.
This complex issue was reported by Glen Foster and Smith Chad from HP. We
have since been working on a solution, and dmidecode now supports IA-64
systems. Smith Chad noticed that, for some obscure reason, accessing the
/dev/mem file using mmap() instead of read() would work. Then, he wrote a
patch to export the DMI table address from the internal EFI table to /proc,
so dmidecode doesn't have to scan /dev/mem for it anymore. This patch was
since integrated into the main ia64 patch. Finally, I add the requied code
to make it all work. So, in order to have dmidecode work on your IA-64
system, you need three things:
 - dmidecode version 2.2 or later;
 - an ia64 patched kernel, using linux-2.4.21-ia64-030702.diff or any later
   version;
 - the -D__IA64__ compilation flag set in the Makefile.
Chad Smith tested dmidecode successfully on two different IA-64 systems.

MMAP

Note that mmap() is now used by default on all systems, since this seems to
solve a number of problems. If your system does not have the mmap() function,
edit the Makefile and unset USE_MMAP.


** MISCELLANEOUS TOOLS **

Two other tools come along with dmidecode: biosdecode and ownership.

BIOSDECODE

This one prints all BIOS related information it can find in /dev/mem.
It used to be part of dmidecode itself, but as dmidecode was growing,
we felt that the non-DMI part had to be moved to a separate tool.

OWNERSHIP

This tool was written on a request by Luc Van de Velde for use with Novell
tools in his company. It retrieves the "ownership tag" that can be set on
most Compaq computers. Since it uses the same mechanisms dmidecode and
biosdecode use, and could be of some use for other people as well, we
decided to make it part of our project.